X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=decoders%2Fmodbus%2Fpd.py;h=81aaf2a3117d18719b0d5649113d61cc70bad6bb;hb=81bf080fdb9d6ef9b0357148a41e0610df75ab61;hp=d5cb811ef1794c226851fb3c6d8bde16c52568f3;hpb=d4364948d0356f0659e1777cf771ed5bfc1f2072;p=libsigrokdecode.git diff --git a/decoders/modbus/pd.py b/decoders/modbus/pd.py index d5cb811..81aaf2a 100644 --- a/decoders/modbus/pd.py +++ b/decoders/modbus/pd.py @@ -822,33 +822,33 @@ class Decoder(srd.Decoder): outputs = ['modbus'] tags = ['Embedded/industrial'] annotations = ( - ('sc-server-id', ''), - ('sc-function', ''), - ('sc-crc', ''), - ('sc-address', ''), - ('sc-data', ''), - ('sc-length', ''), - ('sc-error', ''), - ('cs-server-id', ''), - ('cs-function', ''), - ('cs-crc', ''), - ('cs-address', ''), - ('cs-data', ''), - ('cs-length', ''), - ('cs-error', ''), - ('error-indication', ''), + ('sc-server-id', 'SC server ID'), + ('sc-function', 'SC function'), + ('sc-crc', 'SC CRC'), + ('sc-address', 'SC address'), + ('sc-data', 'SC data'), + ('sc-length', 'SC length'), + ('sc-error', 'SC error'), + ('cs-server-id', 'CS server ID'), + ('cs-function', 'CS function'), + ('cs-crc', 'CS CRC'), + ('cs-address', 'CS address'), + ('cs-data', 'CS data'), + ('cs-length', 'CS length'), + ('cs-error', 'CS error'), + ('error-indication', 'Error indication'), ) annotation_rows = ( ('sc', 'Server->client', (0, 1, 2, 3, 4, 5, 6)), ('cs', 'Client->server', (7, 8, 9, 10, 11, 12, 13)), - ('error-indicator', 'Errors in frame', (14,)), + ('error-indicators', 'Errors in frame', (14,)), ) options = ( {'id': 'scchannel', 'desc': 'Server -> client channel', 'default': rxtx_channels[0], 'values': rxtx_channels}, {'id': 'cschannel', 'desc': 'Client -> server channel', 'default': rxtx_channels[1], 'values': rxtx_channels}, - {'id': 'framegap', 'desc': 'Inter-frame bit gap', 'default': '28'}, + {'id': 'framegap', 'desc': 'Inter-frame bit gap', 'default': 28}, ) def __init__(self): @@ -912,7 +912,7 @@ class Decoder(srd.Decoder): # somewhere between seems fine. # A character is 11 bits long, so (3.5 + 1.5)/2 * 11 ~= 28 # TODO: Display error for too short or too long. - if (ss - ADU.last_read) <= self.bitlength * int(self.options['framegap']): + if (ss - ADU.last_read) <= self.bitlength * self.options['framegap']: ADU.add_data(ss, es, data) else: # It's been too long since the last part of the ADU! @@ -929,6 +929,10 @@ class Decoder(srd.Decoder): def decode(self, ss, es, data): ptype, rxtx, pdata = data + # Ignore unknown/unsupported ptypes. + if ptype not in ('STARTBIT', 'DATA', 'STOPBIT'): + return + # Decide what ADU(s) we need this packet to go to. # Note that it's possible to go to both ADUs. if rxtx_channels[rxtx] == self.options['scchannel']: