FastRIO certified: 31250v2 final runs clean; config plumbing for baud/poll

Operator-verified zero lamp misses/hangs through the slow-chord test
(62500's killer) and 392/min mash. Final run: NAK=0, 25 timeout resends
silently healing inbound response loss, counters flat, zero wedges.
--poll 20 delivered ~31Hz analog (1.7x legacy); the shortfall vs 50Hz
is additive host pacing (delay after awaited exchange), not board
saturation - noted as a future host tweak.

AppConfig gains RioBaudRate (default 9600) + AnalogPollMs (default 55),
plumbed through RioCoordinator; existing configs unchanged. Production
matrix recorded in ANALYSIS.md: 9600 patched chip for native-game
cabinets, 31250v2 + poll 20-25 + FTDI for RIOJoy cockpits.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-19 14:19:30 -05:00
co-authored by Claude Fable 5
parent 3c9455eb97
commit d95e390b0d
3 changed files with 87 additions and 0 deletions
@@ -0,0 +1,28 @@
== RIO mash test :: COM1 @ 31250 8N1, 300s, chip label '31250v2-final' ==
lamp echo ON (drives reply/lamp collisions), wedge threshold 2.0s, poll 55ms, app auto-recovery DISABLED
log: C:\VWE\riojoy\riomash-31250v2-final-20260719-141437.log
firmware: 4.2
counters before: RestartCount=0 AbandonCount=0 FullBufferCount=0 [board/lamp faults reported!]
>>> MASH NOW: two hands, 8 lamp buttons, as fast as you can. <<<
>>> Test runs 300s. A wedge alarm will beep + banner. <<<
>>> Ctrl+C ends the run early and still prints the summary. <<<
[ 31.83s] progress: presses=157 (157/min) analog=500 maxGap=0.28s wedges=0
[ 61.84s] progress: presses=432 (419/min) analog=976 maxGap=0.28s wedges=0
[ 65.45s] operator stop (Ctrl+C) — ending run, snapshotting counters...
== MASH SUMMARY [31250v2-final] ==
run : 65s on COM1, lamps on, wedge threshold 2.0s
firmware : 4.2
presses/releases : 436 / 436 (392 presses/min)
analog replies : 1051 (~1181 poll slots; 89.0%), sentinels 0
framing / NAK : 29 / 0 (command resends NAK/timeout: 25)
gap histogram : <100ms:1048 100-250ms:0 250-500ms:2 0.5-1s:0 1-2s:0 2-5s:0 >5s:0
longest gaps : 0.33s@65.4s, 0.28s@0.6s, 0.09s@45.0s, 0.08s@19.8s, 0.08s@22.4s, 0.08s@41.7s, 0.08s@24.5s, 0.08s@8.5s, 0.08s@37.5s, 0.08s@14.6s
wedge events : 0
counters before : RestartCount=0 AbandonCount=0 FullBufferCount=0 [board/lamp faults reported!]
counters after : RestartCount=0 AbandonCount=0 FullBufferCount=0 [board/lamp faults reported!]
counter delta : RestartCount=+0 AbandonCount=+0 FullBufferCount=+0
verdict : PASS — no wedge; compare gap histogram + counter delta to baseline
log file : C:\VWE\riojoy\riomash-31250v2-final-20260719-141437.log
@@ -0,0 +1,28 @@
== RIO mash test :: COM1 @ 31250 8N1, 120s, chip label '31250v2-poll20' ==
lamp echo ON (drives reply/lamp collisions), wedge threshold 2.0s, poll 20ms, app auto-recovery DISABLED
log: C:\VWE\riojoy\riomash-31250v2-poll20-20260719-141620.log
firmware: 4.2
counters before: RestartCount=0 AbandonCount=0 FullBufferCount=0 [board/lamp faults reported!]
>>> MASH NOW: two hands, 8 lamp buttons, as fast as you can. <<<
>>> Test runs 120s. A wedge alarm will beep + banner. <<<
>>> Ctrl+C ends the run early and still prints the summary. <<<
[ 31.97s] progress: presses=63 (63/min) analog=986 maxGap=0.51s wedges=0
[ 62.02s] progress: presses=314 (304/min) analog=1890 maxGap=0.51s wedges=0
[ 65.66s] operator stop (Ctrl+C) — ending run, snapshotting counters...
== MASH SUMMARY [31250v2-poll20] ==
run : 65s on COM1, lamps on, wedge threshold 2.0s
firmware : 4.2
presses/releases : 318 / 318 (285 presses/min)
analog replies : 2036 (~3250 poll slots; 62.6%), sentinels 0
framing / NAK : 73 / 0 (command resends NAK/timeout: 57)
gap histogram : <100ms:2032 100-250ms:1 250-500ms:1 0.5-1s:1 1-2s:0 2-5s:0 >5s:0
longest gaps : 0.51s@0.7s, 0.29s@65.7s, 0.13s@50.6s, 0.08s@55.1s, 0.07s@50.9s, 0.07s@50.7s, 0.07s@50.8s, 0.07s@54.3s, 0.06s@48.5s, 0.06s@57.9s
wedge events : 0
counters before : RestartCount=0 AbandonCount=0 FullBufferCount=0 [board/lamp faults reported!]
counters after : RestartCount=0 AbandonCount=0 FullBufferCount=0 [board/lamp faults reported!]
counter delta : RestartCount=+0 AbandonCount=+0 FullBufferCount=+0
verdict : PASS — no wedge; compare gap histogram + counter delta to baseline
log file : C:\VWE\riojoy\riomash-31250v2-poll20-20260719-141620.log