parse_dtcs CAN branch flattens all lines and strips the SID/count once, so when multiple ECUs respond the pairs misalign and it fabricates phantom DTCs. Fix: message-aware parse (per-ECU-message, detect ISO-TP frame-index prefix before _line_bytes strips it). Note: 0x43 is a legal DTC first byte (C03xx) so do NOT blind-scan the flat stream for the SID.
read_freeze_frame sends a malformed Mode 02 request (0202 instead of 020200) and mis-parses the DTC with an off-by-one. Fix: send 020200, skip SID+PID+frame (+3).
From the review (logic). `obdcore/link.py`:
1. `parse_dtcs` CAN branch flattens all lines and strips the SID/count once, so when **multiple ECUs respond** the pairs misalign and it fabricates phantom DTCs. Fix: message-aware parse (per-ECU-message, detect ISO-TP frame-index prefix before `_line_bytes` strips it). Note: `0x43` is a legal DTC first byte (C03xx) so do NOT blind-scan the flat stream for the SID.
2. `read_freeze_frame` sends a malformed Mode 02 request (`0202` instead of `020200`) and mis-parses the DTC with an off-by-one. Fix: send `020200`, skip SID+PID+frame (`+3`).
3. `_line_bytes` only strips single-digit `0-9` ISO-TP frame indices, dropping consecutive frames indexed `A:`-`F:`. Fix: accept hex `0-9A-Fa-f`.
claude
added the bugP1 labels 2026-07-01 19:22:47 -04:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
From the review (logic).
obdcore/link.py:parse_dtcsCAN branch flattens all lines and strips the SID/count once, so when multiple ECUs respond the pairs misalign and it fabricates phantom DTCs. Fix: message-aware parse (per-ECU-message, detect ISO-TP frame-index prefix before_line_bytesstrips it). Note:0x43is a legal DTC first byte (C03xx) so do NOT blind-scan the flat stream for the SID.read_freeze_framesends a malformed Mode 02 request (0202instead of020200) and mis-parses the DTC with an off-by-one. Fix: send020200, skip SID+PID+frame (+3)._line_bytesonly strips single-digit0-9ISO-TP frame indices, dropping consecutive frames indexedA:-F:. Fix: accept hex0-9A-Fa-f.