Count from the log again on Reset Serial Numbers

The button started the numbers again at one. N1MM's manual says it "sets
serial numbers on all computers to the highest value in any of the logs,
plus 1", and its own handler re-reads the highest number per band out of
the log, so a mixed network came apart at exactly the point the button is
meant to repair: the N1MM stations counted on from the highest number and
this one started at one, sending numbers that had already gone out.

ContestSession.RestartNumbers fills the pool from the log, which is where
the reset now lands. SerialNumbersFrom is gone with it, and so is the pool
this station sent afterwards: N1MM sends none, because each station works
the same number out of its own copy of the log.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015NZkFxHde1iifAQemFTHxf
This commit is contained in:
2026-09-10 12:28:03 +00:00
co-authored by Claude Opus 5
parent 7ba0b44fc1
commit 980ddb586f
8 changed files with 50 additions and 35 deletions
+8 -5
View File
@@ -451,11 +451,14 @@ the station list, and what arrives goes on the call stack of the radio the
operator is on, sorted by whether it is a multiplier here.
**Serial numbers.** Reset Serial Numbers at all Stations sends `RESETQSONRS`
and every station starts again at one. The contacts already logged keep the
numbers they were sent with; the reset lasts as long as the program is open,
the way N1MM's does. The shared number pool — `RESERVENR`, `QSONRS`, `REJECTNR`,
where stations claim numbers in advance so two positions cannot send the same
one — is not written.
and every station counts from its own log again: the next number is the highest
one in it plus one, which is what the N1MM manual says the button does. The
contacts already logged keep the numbers they were sent with.
The shared pool is written: `ReserveNr` claims a number at the first character
of the callsign and `QSONRS` carries the whole pool when a station has fallen
behind. `RejectNr` is not — N1MM sends it and reads nothing, so there is
nothing on the other end to agree with.
**The ten-minute rule.** `BandChangeRules` counts band changes and the stay on a
band, and the entry window shows the countdown. What was missing was the rule