Skip to content

Instantly share code, notes, and snippets.

@dlareau
Last active February 21, 2020 05:17
Show Gist options
  • Save dlareau/85b89099bf0651dcba68f70d910d744a to your computer and use it in GitHub Desktop.
Save dlareau/85b89099bf0651dcba68f70d910d744a to your computer and use it in GitHub Desktop.
sigrok decoder can rtr fix
iff --git a/decoders/can/pd.py b/decoders/can/pd.py
index 3dbadc0..e47018f 100644
--- a/decoders/can/pd.py
+++ b/decoders/can/pd.py
@@ -263,6 +263,7 @@ def decode_standard_frame(self, can_rx, bitnum):
# Bit 12: Remote transmission request (RTR) bit
# Data frame: dominant, remote frame: recessive
# Remote frames do not contain a data field.
+ self.rtr = self.bits[12]
rtr = 'remote' if self.bits[12] == 1 else 'data'
self.put12([8, ['Remote transmission request: %s frame' % rtr,
'RTR: %s frame' % rtr, 'RTR']])
@@ -286,7 +287,11 @@ def decode_standard_frame(self, can_rx, bitnum):
self.dlc = int(''.join(str(d) for d in self.bits[self.dlc_start:self.dlc_start + 4]), 2)
self.putb([10, ['Data length code: %d' % self.dlc,
'DLC: %d' % self.dlc, 'DLC']])
- self.last_databit = self.dlc_start + 3 + (dlc2len(self.dlc) * 8)
+ if(self.rtr == 1):
+ self.last_databit = self.dlc_start + 3
+ else:
+ self.last_databit = self.dlc_start + 3 + (dlc2len(self.dlc) * 8)
+
if self.dlc > 8 and not self.fd:
self.putb([16, ['Data length code (DLC) > 8 is not allowed']])
@@ -386,7 +391,10 @@ def decode_extended_frame(self, can_rx, bitnum):
self.dlc = int(''.join(str(d) for d in self.bits[self.dlc_start:self.dlc_start + 4]), 2)
self.putb([10, ['Data length code: %d' % self.dlc,
'DLC: %d' % self.dlc, 'DLC']])
- self.last_databit = self.dlc_start + 3 + (dlc2len(self.dlc) * 8)
+ if(self.rtr == 1):
+ self.last_databit = self.dlc_start + 3
+ else:
+ self.last_databit = self.dlc_start + 3 + (dlc2len(self.dlc) * 8)
# Remember all databyte bits, except the very last one.
elif bitnum in range(self.dlc_start + 4, self.last_databit):
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment