HLAs - Overlapping frames

I am working on an HLA to parse serial packets, and had this idea to show parts of the packet, and then an additional frame that says what the entire packet is generally. Right now it seems that returning frames in the same time, whichever one is return last will get painted on top. The idea being that in the case of fragments or bad packets, I can still at least display whatever data was successfully parsed.

Does this exist somehow already, or could it be planned?


It doesn’t exist but it’s planned :slight_smile:

Would you rather have a single “channel” with multiple rows as a single block (e.g. re-ordering will move the entire block) or multiple separate “channels” in this case?

EDIT: We’re leaning towards the latter as it simplifies show/hiding channels (once we implement that feature) and the merging algorithm that combines results.

I think the latter you’re describing is this?

If that is the case, I am completely in favor of that. I managed to implement this using a setting, and just adding a ternary on my returns. Adding two analyzers, each choosing one setting seems to make it work.


Yes, exactly that. This is awesome!

I can’t wait to launch the marketplace and allow everyone to share their HLAs :hugs:

Maybe the specification could be done in the dict returned from set_settings(…)? Something like:

def set_settings(self, settings):
    return {
        "result_types": {
            "packet_text": {"format": "{{{data.text}}}"},
            "part_text": {"format": "{{{data.text}}}"},
        "channels": {
            "packets": "packet_text",
            "parts": "part_text"

Without a “channels” entry everything goes to a single channel of output as it does now so legacy and simple HLAs need no change.



Has there been any progress on this per chance (planned or implemented)?

I just ran into the exact same situation and it would be fantastic to be able to output overlapping frames (instead of it just hanging Logic like it does now).


@ralim Unfortunately, we don’t have an update on this feature :disappointed:

We had to prioritize other things on our backlog in the meantime. Would you mind creating an idea post about this using the link below?

I noticed we’re not officially tracking user interest in this. It would be great to get this up there to help with prioritization. Feel free to link to this discuss page as well.

I was trying to do this just now. I have clock channel where I’m trying to identify wider frames (consisting of multiple components), and a data channel where I’m trying to identify the individual components. I have it mostly working, however intermittantly, when I enable the clock frames, the software automatically combines all the data frames into one bubble text. For instance, normally, I would expect this:

Instead, I get something like this:

I have spent some time debugging it. If I simply do not add the clock frames, the data frames appear as expected. Also, everything appears as expected, and I have been doing this for a while using Logic 1.2.29, so this is behavior introduced some time before the release of Logic 2.3.31.

@jafeucht Thanks for reporting this behavior to us. In Logic 2.x, we did in fact add an auto-bubble-merging feature when you zoom out of your capture enough. This wasn’t present in Logic 1.x, which is why all the bubbles are always separated as expected.

The strange behavior you noted is below:

I have it mostly working, however intermittantly, when I enable the clock frames, the software automatically combines all the data frames into one bubble text…
…If I simply do not add the clock frames, the data frames appear as expected.

Some questions:

  • How are you enabling clock frames exactly?
  • What analyzer are you using?
  • Does the zoom level change at all when enabling clock frames? The zoom level can be found at the bottom right of the software.
  • Are you able to share you .sal capture file with me? I’d like to try out this behavior on my end.
    Capture & Preset File Management - Saleae Support

If I disable clock frames, I’m simply commenting out the code which calls AddFrame and CommitResults after a clock frame is created. This has absolutely no effect on data frames.

Logic Pro 8 (USB 3.0 version) with Logic v. 2.3.31, using my own custom-made Infineon DAP analyzer brached off from SaleaAnalyzerSDK-1.1.32.

Yes, I can still zoom down to 8 ns resolution.

I have attached my *.sal file. If you want, I can provide you my Infineon DAP Analyzer source code. If you provide me an email address, I’ll zip it up and send it to you, as well as test captures.

@jafeucht Yes, if you can send me a message using the link below, you can attach your source files and analyzer lib file.

Once we get your files, I can run some tests this Monday when we return from the weekend.

By the way, can you also include your .sal in the attachment to your message to us? It looks like it wasn’t attached in your last reply. In case you need to make it smaller, you can delete portions of your capture using the instructions below.

Otherwise, I can also provide a custom upload link via email if it’s still too large once you send your support message in.

Here is the DAP capture sample. I have already attached the source code using the link you provided. Refer to support ticket #62155.

DAP_Sample.sal (255.1 KB)

Got it, thanks! We’ll continue our chat over email.