Firmware validation harness: instrumented RIO_TAP mash test in RioSerialMonitor
New --mash mode (tools/RioSerialMonitor/MashTest.cs) mechanizes the wedge-patch validation plan from RIOv4_2-ANALYSIS.md: - Runs the live link with the app's >5s reset-recovery DISABLED so a board wedge stays observable, and echoes lamps on every press (lamp/reply collisions are the wedge trigger). - Gap timing uses ANY AnalogReply packet (0xFE sentinels included - a sentinel still proves the reply path is alive); logs a gap histogram + top-10 longest gaps with timestamps. - WEDGE detector: analog silent past the threshold (default 2s) -> beep + banner; on resume, classifies self-recovered (patched expectation) vs button-revived (button event within 300ms of resume, the unpatched signature) vs unresolved at run end. - Board self-reported RestartCount/AbandonCount/FullBufferCount snapshotted before/after via CheckRequest, delta printed (7-bit wrap-aware). - Fixed-layout summary teed to riomash-<label>-<stamp>.log so baseline-vs-patched runs diff directly. Exit 0 = no wedge, 1 = wedge. --mash --selftest drives the whole instrument against a scripted in-memory board (SelftestTransport) that goes silent at t=4.0s and revives 200ms after a button at t=6.5s: verified end-to-end - alarm at 6.0s, wedge classified button-revived (2.75s), counter delta +4/+0/+1, verdict FAIL, exit 1. Use it to sanity-check the alarm at the cabinet. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,13 @@ using RioJoy.Core.Serial;
|
||||
// It flashes all lamps once to prove the PC -> RIO output path, then echoes a lamp
|
||||
// on each button press so a physical press lights up.
|
||||
// dotnet run --project tools/RioSerialMonitor -- [port] [seconds]
|
||||
// Exit: 0 = ran, 2 = could not open the port.
|
||||
// Firmware wedge-patch validation (RIO_TAP mash test, see MashTest.cs):
|
||||
// dotnet run --project tools/RioSerialMonitor -- --mash [port] [seconds]
|
||||
// [--label baseline|patched] [--no-lamps] [--wedge seconds]
|
||||
// Exit: 0 = ran, 2 = could not open the port (mash: 1 = wedge detected).
|
||||
|
||||
if (args.Contains("--mash"))
|
||||
return await RioSerialMonitor.MashTest.RunAsync(args);
|
||||
|
||||
string port = args.Length > 0 ? args[0] : "COM1";
|
||||
int seconds = args.Length > 1 && int.TryParse(args[1], out int s) ? s : 30;
|
||||
|
||||
Reference in New Issue
Block a user