From: Uwe Hermann Date: Thu, 12 Apr 2018 07:02:38 +0000 (+0200) Subject: can: Fix incorrect stuff bit handling. X-Git-Url: http://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commitdiff_plain;h=cffb6592f4cff804745b8456e2c9f8abc6571603 can: Fix incorrect stuff bit handling. The decoder assumed a CRC cannot end with a stuffed bit but it actually can, and the CRC delimiter then comes after the stuffed bit. Patch by IRC/github user celeron55, wide testing by PeterMortensen, thanks! --- diff --git a/decoders/can/pd.py b/decoders/can/pd.py index 056736b..d76d649 100644 --- a/decoders/can/pd.py +++ b/decoders/can/pd.py @@ -132,7 +132,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]):