Skip to content

Commit 0de8ca8

Browse files
Support CANdapter extended length arbitration ID (#1528)
* Support CANdapter extended length arbitration ID * Update can/interfaces/slcan.py More efficient check of arbitration ID Co-authored-by: zariiii9003 <[email protected]> * Add description of x extended arbitration identifier * Add test for CANDapter extended arbitration ID * Update test/test_slcan.py Type fix in slcan test Co-authored-by: zariiii9003 <[email protected]> * format black --------- Co-authored-by: zariiii9003 <[email protected]>
1 parent 70901ea commit 0de8ca8

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

can/interfaces/slcan.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,10 @@ def _recv_internal(
215215

216216
if not string:
217217
pass
218-
elif string[0] == "T":
218+
elif string[0] in (
219+
"T",
220+
"x", # x is an alternative extended message identifier for CANDapter
221+
):
219222
# extended frame
220223
canId = int(string[1:9], 16)
221224
dlc = int(string[9])

test/test_slcan.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,16 @@ def test_recv_extended(self):
4343
self.assertEqual(msg.dlc, 2)
4444
self.assertSequenceEqual(msg.data, [0xAA, 0x55])
4545

46+
# Ewert Energy Systems CANDapter specific
47+
self.serial.write(b"x12ABCDEF2AA55\r")
48+
msg = self.bus.recv(TIMEOUT)
49+
self.assertIsNotNone(msg)
50+
self.assertEqual(msg.arbitration_id, 0x12ABCDEF)
51+
self.assertEqual(msg.is_extended_id, True)
52+
self.assertEqual(msg.is_remote_frame, False)
53+
self.assertEqual(msg.dlc, 2)
54+
self.assertSequenceEqual(msg.data, [0xAA, 0x55])
55+
4656
def test_send_extended(self):
4757
msg = can.Message(
4858
arbitration_id=0x12ABCDEF, is_extended_id=True, data=[0xAA, 0x55]

0 commit comments

Comments
 (0)