RioSerialMonitor: --e0test mode — on-hardware E0-threshold verification

Two-phase test against a DTR-reset board: phase A forces sub-threshold
retransmits (NAK the completed reply frame -> exactly one counted
retransmit, then ACK the retry), where the display must hold F0000000;
phase B withholds ACKs for a full give-up cycle to cross the threshold,
with the expected E0 readout predicted from observed traffic.

Bench findings while building it (9600, e0t5 chip): the reply-retry
machine sends 5 retransmits per cycle (not 4); responses are honored
only after the complete reply frame (mid-frame ACK/NAK/RESTART is
ignored); once the first retry fires the cycle runs blind to give-up;
a host NAK triggers an immediate counted retransmit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-19 15:32:21 -05:00
co-authored by Claude Fable 5
parent 2e727a4c1c
commit 6b02eb4d1b
2 changed files with 278 additions and 0 deletions
+5
View File
@@ -15,6 +15,11 @@ using RioJoy.Core.Serial;
// --baud: 31250 for the retuned firmware variant (rio-firmware --baud31250).
// Exit: 0 = ran, 2 = could not open the port (mash: 1 = wedge detected).
// E0-threshold firmware verification (rio-firmware --e0thresh images, see E0Test.cs):
// dotnet run --project tools/RioSerialMonitor -- --e0test [port] [--baud rate] [--events n]
if (args.Contains("--e0test"))
return await RioSerialMonitor.E0Test.RunAsync(args);
if (args.Contains("--mash"))
return await RioSerialMonitor.MashTest.RunAsync(args);