X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=decoders%2Fmodbus%2Fpd.py;h=1d012e4560170aa05b3cebfc47defa2f3a9d3b8f;hb=7714a23058fcf1fbffa1208fb02f854947f0617f;hp=d5cb811ef1794c226851fb3c6d8bde16c52568f3;hpb=d4364948d0356f0659e1777cf771ed5bfc1f2072;p=libsigrokdecode.git diff --git a/decoders/modbus/pd.py b/decoders/modbus/pd.py index d5cb811..1d012e4 100644 --- a/decoders/modbus/pd.py +++ b/decoders/modbus/pd.py @@ -848,7 +848,7 @@ class Decoder(srd.Decoder): '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']: