Skip to content

docs: add Future — LIN Bus Simulator roadmap section - #14

Merged
SoundMatt merged 2 commits into
mainfrom
feat/lin-bus-simulator-roadmap
Jul 28, 2026
Merged

docs: add Future — LIN Bus Simulator roadmap section#14
SoundMatt merged 2 commits into
mainfrom
feat/lin-bus-simulator-roadmap

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

Summary

  • Adds a "Future — LIN Bus Simulator" planning section to ROADMAP.md (planning only, no code).
  • Grounds the plan in what actually exists today: lin::virt::Bus (aliased lin::mock::Bus), master::Node::run()'s schedule-table loop, slave::Node::set_response(), and lin::ldf::DB::schedule() — and identifies the concrete gaps in src/virtual/bus.cpp (flat responses_ map with silent ID-collision clobbering, send_header() always computing a correct PID/checksum with no fault-injection path, and a strictly in-process transport).
  • Frames why this matters more for LIN than for CAN (vcan) or DDS (CycloneDDS): no OS-native virtual bus, no third-party LIN stack in this ecosystem to test against.
  • Scopes four phases: (1) minimal in-process multi-slave simulator with real slave identities via a new sim::ISlaveBehavior interface and registration-conflict detection, (2) fault injection (wrong checksum/PID, no response, jitter) via a sim::FaultInjector decorator, (3) multi-slave scheduling conflict modeling (slot overruns, diagnostic ID arbitration), and (4) a stretch-goal cross-process transport (lin::ipc::Bus over a Unix domain socket) that would make this the mechanism for real go-LIN/cpp-LIN/rust-LIN interop testing — mirroring rust-DDS's two-process self-interop pattern and the go-DDS/cpp-DDS CycloneDDS-peer harness shape, but explicitly not a prerequisite for the simulator's core dev/test value.

Test plan

  • Docs-only change (ROADMAP.md); no code touched.
  • CI expected to pass trivially — confirm green before merge.

LIN has no OS-native virtual bus (unlike CAN's vcan) and no third-party
LIN stack in this ecosystem (unlike DDS's CycloneDDS), so a well-designed
simulator matters more here than for either. Scopes a phased plan grounded
in the current virt::Bus/master::Node/slave::Node/ldf::parser code: a
minimal in-process multi-slave simulator with real slave identities and
registration-conflict detection (Phase 1), fault injection for wrong
checksum/PID/no-response testing (Phase 2), multi-slave schedule conflict
modeling (Phase 3), and a stretch-goal cross-process transport that would
make this the mechanism for real go-LIN/cpp-LIN/rust-LIN interop testing,
mirroring rust-DDS's two-process self-interop pattern (Phase 4).

Signed-off-by: Matt Jones <47545907+SoundMatt@users.noreply.github.com>
RELAY v1.13 fixed relay conform to reject --strict placed after the
binary path instead of silently ignoring it (the exact bug that made
this repo's misordered invocation appear to work before). Flags must
precede the positional <binary> argument.

Signed-off-by: Matt Jones <47545907+SoundMatt@users.noreply.github.com>
@SoundMatt
SoundMatt merged commit afe7f03 into main Jul 28, 2026
15 checks passed
@SoundMatt
SoundMatt deleted the feat/lin-bus-simulator-roadmap branch July 28, 2026 01:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant