KB: step-2 closeout -- verification matrix + ledger detail (glass cockpit)
docs/GLASS_COCKPIT.md gains the 2b-2e detail + the full verification matrix (purity build + seam audit, pod forced-walk, 2-node loopback MP via btconsole relay on the POD build -- both nodes reach the running mission, PadRIO authentic-path input, panel-click survival). context/glass-cockpit.md status updated: step 2 DONE [T2]; steps 3-4 pending. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -58,3 +58,51 @@ zoom-blip), so no consumer shifts.
|
||||
weapons unchanged. Regression: headless forced-walk run (`BT_FORCE_THROTTLE=1`) drives normally
|
||||
— `[mppr] thr=1 -> speedDemand=61.501`, gait cycles, position advances, 31/31 subsystems
|
||||
simulated, no faults.
|
||||
|
||||
## 2026-07-17 — Steps 2b-2e: PadRIO, stand-downs, displays, preset — DONE + verified
|
||||
|
||||
**2b (RIOBase + PadRIO, commit ac57a47):** `L4RIO.h` splits abstract `RIOBase` (enums, the five
|
||||
analog Scalars, pure `GetNextEvent`/`SetLamp`, no-op serial ops, NEW `IsOperational()`) out of
|
||||
serial `RIO` (`: PCSerialPacket, RIOBase` — ctor assigns as before, zero behavioral delta);
|
||||
`L4CTRL.h` `rioPointer` retyped `RIOBase*`; gated `L4CONTROLS=PAD` factory arm. NEW gated TUs
|
||||
`L4PADRIO.*` (XInput+keyboard → the surface; 3s hot-plug; focus-guarded keys; per-poll
|
||||
AnalogEvent heartbeat time-gated so the manager's drain loop terminates; `lampState[]`;
|
||||
static `SetScreenButton` — button addresses AND the keypad space 0x50-0x6F → KeyEvents) and
|
||||
`L4PADBINDINGS.*` (`content\bindings.txt`, default written on first run; deflect/slew/set axis
|
||||
model; addresses validated vs ButtonCount).
|
||||
|
||||
**2c (stand-downs, commit 9f35a80):** engine query `BTRIODevicePresent()` (ungated —
|
||||
pod-correct); both dev bridges (`mech4.cpp` attr writes, `mechmppr.cpp` BT_KEY_BRIDGE) gate
|
||||
their WRITES: unset=auto / "0"=off / else on; forced harness always rides. **Definitive live
|
||||
test:** OS-injected LSHIFT hold slewed PadRIO throttle 0→0.33→1.0 with `pre==thr` every frame —
|
||||
the value arrives via the ENGINE push through the streamed `.CTL` binding (bridge stood down),
|
||||
`speedDemand=61.501` from authentic InterpretControls.
|
||||
|
||||
**2d/2e (displays + preset, commits db9ac94 + 418acf0):** the on-screen panel follows **vRIO**
|
||||
(`C:\VWE\vrio` — `CockpitLayout.cs`/`PanelCanvas.cs`, per Cyd): five 4x2 MFD clusters
|
||||
(descending addresses), Throttle/Secondary/Screen/Joystick 1x8 columns, two 4x4 hex keypads
|
||||
(0x50 internal→pilot unit, 0x60 external→operator unit), physical names, red/yellow/blue
|
||||
coloration, 500/250/125ms flash, right-click latch — 104 controls. `PlasmaWindow :
|
||||
Video8BitBuffered` renders the 128x32 plasma via the SAME gauge-renderer path as serial
|
||||
(buffer is TOP-DOWN — the flip rendered it upside down, user-reported + fixed). MFD surfaces =
|
||||
the EXISTING dev-gauge modes (no new code, no L4VB16 exposure). `-platform glass` preset +
|
||||
run.cmd token. **Button-trap guard (e2c21c4 pattern):** the authentic base
|
||||
`ConfigureMappableMessageHandler` FAIL trap is `abort()` under DEBUGOFF — any aux/zoom button
|
||||
without its reconstructed L4 override KILLED the game on press (panel makes all reachable).
|
||||
Default now log+ignore; `BT_BUTTON_TRAP=1` restores the hard trap. Verified: synthetic panel
|
||||
click → 2 `[FAIL]` (press+release through panel→PadRIO→ProcessRIOEvent→streamed mapping), game
|
||||
survives. NOTE: each `[FAIL]` marks a missing L4 override — reconstruction backlog, see
|
||||
[[open-questions]].
|
||||
|
||||
**Step-2 verification matrix (all passed 2026-07-17):**
|
||||
1. Purity: defaults `build-pod/` compiles (known mech3 /FORCE externals only); seam audit —
|
||||
`BT_GLASS`/`BT_STEAM` mentions ONLY in CMakeLists, btl4main.cpp preset region, L4CTRL.cpp
|
||||
(include+PAD arm), L4GREND.cpp (include+SCREEN branch), gated TUs, run.cmd docs.
|
||||
2. Pod solo forced-walk clean (§2a).
|
||||
3. **2-node loopback MP on the pod build:** A `-egg MP.EGG -net 1501` + B `-net 1601` +
|
||||
`btconsole.py` relay — both nodes launch into the running mission (77/76 ticks, mechs at
|
||||
their drop zones, gait/target loops live).
|
||||
4. Glass build: PadRIO drives through the authentic mapper path; panel click path live; plasma
|
||||
window; all boot lines present.
|
||||
Deferred to the user (visual-only): panel/plasma appearance vs vRIO on screen, XInput stick
|
||||
feel, `L4PADFLIP` polarity.
|
||||
|
||||
Reference in New Issue
Block a user