Custom analyzers

Hi,

Is it possible to implement custom analyzers with the current Logic 2.1 alpha releases?
Is the API compliant with Logic 1.x SDK, or is there a new API (existing or planned)?

Thanks,
Emmanuel.

1 Like

Unfortunately, it’s not possible at the moment. However, it’s high on our radar and we plan to add that soon. We’ll probably support both Python analyzer (with a new SDK) and the old C++ SDK, but I can’t promise that :slight_smile:

There is no API yet. Is there any thing that you’d like to see in the API once we build it? We’d love to hear your needs.

Thanks!
Rani

Ok, so I’ll keep going with Logic 1.x for now.
Python API will be a great addition.

What I think is definitely missing with Logic 1.x:

  1. the ability to stack decoded protocols. It would be nice to have several “bubble” row on top of signals, so that low level bitstream data could be shown, and high protocol level (gathering several low level data) could be shown as well - let me know if this seems fuzzy.
  2. the ability to show more complex info (which is currently limited to ASCII/byte/word/…) in the decoded protocol pane.
  3. Debugged/more reliable markers. There are many cases where the markers do not show up - I keep failing to understand why… If something is wrong (invalid API call?), there should be a way to understand why the call is rejected, as for now they seem simply silently ignored.
  4. Extended markers: it would be nice to provide unicode char rather than predefined, limited markers.
  5. Ability to select a background color for bubbles, which could help depicting an error, for example from a recognized data pattern. It would also be nice to report this in the decoded protocol pane one way or another.
  6. I think that a dedicated “start generator” button or alternative UI item to make clear what is actually generated: random data, protocol-specific data, …

As an example, I’ve implemented a RFID PIE command decoder:

  1. It would be nice to show up the parameter of each command in the first bubble level, and the overall command extent in the second, top most level
  2. I’d like to show the command names in this pane, rather than a single char for each command.
  3. Being able to signal preamble from real data with marker would be great
  4. Using a red-colored bubble on CRC error would help the user find the frames that are invalid more easily than with small red cross characters.

Thanks,
Emmanuel.

1 Like

Thanks for the detailed feedback. It’s super helpful!!!

  1. Not fuzzy at all. We’re already working on that :slight_smile:
  2. What kind of complex info would you like to show?
  3. We’d love to look into that. Can you provide me an example (steps to reproduce or a capture that we can load)?
  4. Interesting. We’re now planning the new analyzers API and we’ll take that into account.
  5. I’m afraid it’d look a bit too messy, as we set a different color for each analyzer. I’ll discuss that with our designer. We can also make it configurable in the API later on.
  6. I’m not sure that I understand. Are you talking about the demo capture?

We’ll share the planned API here in a few weeks and we’d to get your feedback on it :slight_smile:
Thanks again,
Rani

  1. Complex information:
    The best would be to have expandable trees, with arbitrary unicode strings as items. Example: for now I can only print out “Q” for “Query” (and “q” for invalid ones), as the only available format is an ASCII char. It is quite hard to interpret.

  2. I’ll try to reproduce the error and send you the data. Is there a private channel available to send you the data?

  3. If background color selection is not possible, maybe some kind of bezel/outline? Anything that easily identify issues would do it, as with Logic 1.x, there is no easy way to locate such errors.

  4. Yes: it is is not clear whether the demo generates random data or data from the selected protocol … analyzer which acts as a generator/synthesizer.

I will be nice to have something like:
Screenshot 2019-12-09 at 12.37.12

Sorry for the stamp size, macOS is becoming a pile of s… and timemachine now fails miserably.

  1. I believe that it would be possible to do that.
  2. Can you email it to me rani(@)saleae.com?
  3. We’ll find a way to add that feature, no worries :slight_smile:
  4. You’re right, the demo generates random data for now, however, we’re planning to generate “real” protocols data.

Thanks a lot for the ideas and feedback!

I was also wondering if custom analyzers were supported on these alpha builds. So far it does not look like it is.

I have one that I have done most of the development on, that I use when I am working with Servos by Robotis (Dynamixel Servos), which is up at: https://github.com/KurtE/SaleaeDynamixelAnalyzer

Would be great to be able to port that over to the new system. Or better yet if Saleae did :smiley:

Officially, not yet, unfortunately. If you’ll drop the DLL at the right place it would probably work though :slight_smile:
We’re working on supporting custom analyzers, both for raw data and high-level analyzers. I’m hoping to share our roadmap soon so you’ll know which features are still in the pipeline.

Thanks,

I have copied in the DLL and it does appear to load :D, I have not done any real tests with it yet, as have been busy with other projects. But will be back to it soon.

1 Like

Thought I would mention that I tried loading up my Dynamixel analyzer again today on Beta 16 and it appears to be working. At least the on screen stuff As you can see in the picture:

The top two channels are the raw Serial Tx and RX pins, and the third line is the Serial direction channel (as the communications is half duplex)

The bottom line is the one out of my Analyzer code, showing some ping commands and response back from servo.

The data is also showing up in the decoded protocols as well. Obviously can not test if the export functions work here yet.

1 Like

This is awesome!
We’ll add a proper way to add custom analyzers soon :slight_smile:

Hi folks,

Could you please add an option to specify a search path to the analyzer plugins just in the 1.x version:
kép

Yes, we’ll add an option to load custom analyzers in a couple of weeks

Cool thanks!

1 Like

Hi, is there any news regarding / documentation for any custom analyzer API (Python or C++) for the Logic 2.x software in the meantime?

Hi @cg1, custom analyzers that were created using our Protocol Analyzer SDK below are compatible with Logic 2.

Instructions for installing custom analyzers in Logic 2 are below:

Hope this helps!

Hi timreyes, thank you for your reply. I already have an analyzer that works well with the 1.x software. It also works for the 2.x software, bubble text is visible and the data table is populated. The data table content is what I have an issue with. In the Logic 1.x software there is no true table but just the results window pane where you add strings. In the Logic 2.x software, however, is a true table with multiple columns but my results are always shown as type “framev1” and the value column has the string that is generated in my analyzer for the logic 1.x results window output. See screenshot.

When you code an HLA every property of the data object you return as a result type gets turned into a column and the “Type” column is chosen from the result type name. See here:

What I would like to do is have this true results table data output in my “normal” analyzer, not in a high level analyzer. Is this possible?

@cg1 Sorry for my late reply with this. We reviewed this feature with the team recently. We plan to eventually support this, but not for quite some time.

v1frame is the simple frame type (single column value) that was supported in Logic 1 for all of our analyzers. The next-gen frame type (multi-column) is only supported by a handful of our pre-installed analyzers, but not currently available for custom analyzers unfortunately.

I went ahead and logged this idea below:

Please feel free to add your vote/comments on it! We’ll monitor interest in it here for now.