]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/modbus/pd.py
modbus: Ignore unknown/unsupported types.
[libsigrokdecode.git] / decoders / modbus / pd.py
index d5cb811ef1794c226851fb3c6d8bde16c52568f3..1d012e4560170aa05b3cebfc47defa2f3a9d3b8f 100644 (file)
@@ -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']: