K-Line → CAN gateway: makes a 2017 Suzuki V-Strom DL650 (SDS diagnostics, ISO 14230 over K-Line) speak OBD-II over CAN (ISO 15765-4) so a RideLink WingMan Pro can read live data from it.
Suzuki ECU ── K-Line/SDS ── [ESP32-C3 gateway] ── CAN/OBD-II ── WingMan Pro
continuous ~10 Hz answered from cache
background polling in <5 ms
| Path | What |
|---|---|
crates/sds |
SDS/KWP2000 codec + session state machine (no_std, host-tested) |
crates/obd |
OBD-II server logic + minimal ISO-TP (no_std, host-tested) |
firmware/ |
ESP32-C3 binary — embassy tasks: K-Line poller, OBD server, Wi-Fi console (own workspace, cross-compiles) |
hardware/ |
Netlist, BOM, wiring ground truth for the rev A PCB |
case/ |
Parametric OpenSCAD enclosure |
docs/ |
Plan, protocol notes, tunables index, bring-up checklist |
cargo test # host tests for the protocol crates
cd firmware && cargo build --release # needs: rustup target add riscv32imc-unknown-none-elf
cargo run --release # flash + monitor (needs: cargo install espflash)Code-complete for the bench, nothing verified against the bike yet. Every assumption made blind is indexed in docs/05-tunables.md; start at docs/04-bringup-checklist.md.