From cffb6592f4cff804745b8456e2c9f8abc6571603 Mon Sep 17 00:00:00 2001 From: Uwe Hermann Date: Thu, 12 Apr 2018 09:02:38 +0200 Subject: 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! --- decoders/can/pd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'decoders') 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]): -- cgit v1.2.3-70-g09d2