Async Serial does not call HLA with correct bytes

The Async Serial is set up to decode a 9 bit protocol with a 9th bit indicating an address.

This works fine and the bytes are decoded correctly ( Green in image ), but when they are fed to my HLA, they are something else…?!? (last gray printouts show the green bytes, image was cut a bit)

0x11 is 0x11 (adress)
0x33 is 0x03 (WRONG!)
0x81 is 0x81
0x00 is 0x00
0x63 is 0x0C (WRONG!)
0x95 is 0x95
0x03 is 0x03
0xFA is 0xFA

Code in my HLA ( built upon the example, som extra code has been removed to protect company):

   def decode(self, frame: AnalyzerFrame):
        print(frame.data)

Any suggestions?!?

Thanks for reporting this! I don’t think we ever tested MDB mode with HLAs!

We will need to look into this more closely.

A quick scan of the analyzer source code, it does look like we remove the MSB from the data before adding it to FrameV2 for HLAs here:

However, I think we need to adjust the number of bits per transfer before we add the data to the FrameV2 object here:

I’ll need to take a closer look, could you save a capture and send it to us, so we can load it into the software over here and take a look?

Salea_9_bit_HLA_problem.sal (3.8 KB)

Thanks for looking into it, I think this is the thing I can send you on a public forum (these protocols originate in vending machines payment systems, so they are a bit sensitive to share) In the pictures are the settings, and the correct values that are decoded by Async, but when my HLA receives them, the values are partly different on some bytes. So it sort of works, but not always.