Skip to content

Commit 0246b70

Browse files
committed
proper DLC handling for FD frames in slcan
1 parent f9e8a3c commit 0246b70

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

can/interfaces/slcan.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
CanOperationError,
1717
error_check,
1818
)
19-
from can.util import CAN_FD_DLC, check_or_adjust_timing_clock, deprecated_args_alias
19+
from can.util import CAN_FD_DLC, check_or_adjust_timing_clock, deprecated_args_alias, len2dlc
2020

2121
logger = logging.getLogger(__name__)
2222

@@ -319,7 +319,7 @@ def _recv_internal(
319319
is_remote_frame=remote,
320320
is_fd=isFd,
321321
bitrate_switch=fdBrs,
322-
dlc=dlc,
322+
dlc=CAN_FD_DLC[dlc],
323323
data=data,
324324
)
325325
return msg, False
@@ -334,17 +334,18 @@ def send(self, msg: Message, timeout: Optional[float] = None) -> None:
334334
else:
335335
sendStr = f"r{msg.arbitration_id:03X}{msg.dlc:d}"
336336
elif msg.is_fd:
337+
fd_dlc = len2dlc(msg.dlc)
337338
if msg.bitrate_switch:
338339
if msg.is_extended_id:
339-
sendStr = f"B{msg.arbitration_id:08X}{msg.dlc:d}"
340+
sendStr = f"B{msg.arbitration_id:08X}{fd_dlc:X}"
340341
else:
341-
sendStr = f"b{msg.arbitration_id:03X}{msg.dlc:d}"
342+
sendStr = f"b{msg.arbitration_id:03X}{fd_dlc:X}"
342343
sendStr += msg.data.hex().upper()
343344
else:
344345
if msg.is_extended_id:
345-
sendStr = f"D{msg.arbitration_id:08X}{msg.dlc:d}"
346+
sendStr = f"D{msg.arbitration_id:08X}{fd_dlc:X}"
346347
else:
347-
sendStr = f"d{msg.arbitration_id:03X}{msg.dlc:d}"
348+
sendStr = f"d{msg.arbitration_id:03X}{fd_dlc:X}"
348349
sendStr += msg.data.hex().upper()
349350
else:
350351
if msg.is_extended_id:

0 commit comments

Comments
 (0)