Last active
February 21, 2020 05:17
-
-
Save dlareau/85b89099bf0651dcba68f70d910d744a to your computer and use it in GitHub Desktop.
sigrok decoder can rtr fix
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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