]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/can/pd.py
Add PD tags handling and some tags
[libsigrokdecode.git] / decoders / can / pd.py
index 5be3e993e0db522548a851e1fc4cc2316fd0d5e7..1084fe896fbe4c1f12d32e896c2a2f58caf61aef 100644 (file)
@@ -31,6 +31,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['can']
+    tags = ['Logic', 'Bus']
     channels = (
         {'id': 'can_rx', 'name': 'CAN RX', 'desc': 'CAN bus line'},
     )
@@ -65,6 +66,9 @@ class Decoder(srd.Decoder):
     )
 
     def __init__(self):
+        self.reset()
+
+    def reset(self):
         self.samplerate = None
         self.reset_variables()
 
@@ -129,7 +133,7 @@ class Decoder(srd.Decoder):
         # CAN uses NRZ encoding and bit stuffing.
         # After 5 identical bits, a stuff bit of opposite value is added.
         # But not in the CRC delimiter, ACK, and end of frame fields.
-        if len(self.bits) > self.last_databit + 16:
+        if len(self.bits) > self.last_databit + 17:
             return False
         last_6_bits = self.rawbits[-6:]
         if last_6_bits not in ([0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 0]):