Fix UART pin detach: pinMatrixOutDetach() instead of no-op uart_set_pin(ALL_NO_CHANGE). Fix timeout underflow in readResponse() with remainingMs() helper. Add checksum validation on received frames. Echo verification in clearEcho() detects bus contention. Flush RX buffers after init sequences. Structural ISO 14230 frame parsing replaces byte-scanning. TesterPresent keepalive prevents P3 session timeout. Scanner re-initializes after consecutive failures.
Description
BMW I/K-Bus + OBD-II K-line interface board (ESP32, optocoupler isolated)
Languages
MDX
60.4%
C++
35.7%
C
1.2%
JavaScript
0.8%
Makefile
0.7%
Other
1.2%