Decision

The throttle's transport is chosen at runtime, not compiled in

The ESP32 throttle speaks both WiThrottle (to JMRI) and the orchestrator's WebSocket, as equal peers selectable from its settings screen. With no over-the-air updates, a compile-time switch would mean a cable at the layout.

Status
accepted
Decided
Affects
ESP Layout Controller

Context

The 7” touchscreen throttle was built to talk WiThrottle to JMRI. It needed a second transport to talk to the orchestrator directly (over WebSocket).

The device has a 1500K factory partition and no OTA partition, so every firmware change is a USB cable at the layout. Adding OTA later would halve the remaining flash headroom.

Decision

Alternatives considered

Option Why not
Compile-time (Kconfig) switch With no OTA, A/B-testing a bug means reflashing by cable, and it multiplies an already-forked build matrix.

Consequences

Source: esp-layout-controller CLAUDE.md.