From: Gerhard Sittig Date: Sun, 14 May 2017 17:08:37 +0000 (+0200) Subject: can: Skip stuff bit inspection where not applicable X-Git-Tag: libsigrokdecode-0.5.0~17 X-Git-Url: http://sigrok.org/gitweb/?p=libsigrokdecode.git;a=commitdiff_plain;h=a0128522e5fb4ee50fe10450ad8255cd1729bde4 can: Skip stuff bit inspection where not applicable Bit stuffing does not apply to the last fields of a frame, specifically the CRC delimiter, the ACK, and the end-of-frame fields. Adjust the respective bit handling logic. This fixes bug #656. --- diff --git a/decoders/can/pd.py b/decoders/can/pd.py index 46054cd..375069f 100644 --- a/decoders/can/pd.py +++ b/decoders/can/pd.py @@ -113,6 +113,9 @@ class Decoder(srd.Decoder): def is_stuff_bit(self): # 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: + 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]): return False