Behind the bandmap scale, the CW part of the band is one shade and the phone part another, with a third for a digital block. That is what N1MM's graphical bandmap does: ResizeBandPanels puts a CW, a Digi and an SSB panel behind the scale, sized from its CWBands, DigiBands and SSBBands tables. Anything past a band edge is shaded red, which is the only place the edges themselves show, and it only appears now that the slice can reach past an edge. The defaults are N1MM's: CW ends at 1840, 3600, 7125, 14150 and so on, and the digital pair is empty until somebody fills it in, exactly as N1MM ships. They are one worldwide set rather than one per ITU region, which is also N1MM's answer — the reason recorded for leaving this out, that the segments differ by region, was wrong about what N1MM holds. 60M and everything above 2M get no entry, because N1MM's own numbers there contradict themselves: its 1.25M CW top is below its phone start, and its 70CM CW top is above the band. Config ▸ Sub bands edits them, one row per band in kilohertz, with a Defaults button. Only the rows that differ are written to the settings file, so a plan nobody has touched leaves nothing behind. BandPlan is an object rather than a static table, so the stored changes layer over the defaults and the bandmap picks up a save without a restart. The numbers are a drawing aid, not a licence. Nothing stops a contact being logged either side of a boundary. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.3 KiB
What is not finished, and what has not been tested
Two separate lists. A feature can be finished and untested, or half-built and exercised every day. Written 2026-08-27.
Never run against the real thing
Everything below is written from a published protocol or from N1MM's source and tested against a fake that speaks the same protocol. A fake agrees with whatever the person who wrote it believed, so these are the places where a wrong belief is still sitting there undiscovered.
| What | Tested against | What has never happened |
|---|---|---|
RigctldRadio |
a stand-in for rigctld over a real socket |
no real rigctld, no real radio. The extended answer format, the + prefix and the split commands are from the documented protocol. If the format is wrong, nothing works rather than something being subtly off — check this first. |
OtrspBox |
a MemoryStream, checking the bytes |
no real SO2R box. Command forms are from N1MM's N1MMPort.cs. |
ClusterClient |
a node fake over a real socket, sending the telnet negotiation, the login prompt and spot lines | no live cluster node. Which nodes send bare CR, and which send option negotiation, is guessed from N1MM's code. |
StationNetwork |
the message format, round-tripped | no second station, and no N1MM on the same network. |
CwDaemonSender |
the UDP messages | no cwdaemon, no radio keyed. |
WinkeyerSender |
nothing | no test at all, and no WinKeyer. The host-mode open sequence is from the WinKeyer datasheet. |
The Cabrillo output has not been put in front of a contest sponsor's robot.
Half-built
Alternating CQ (SO2R). Needs to know when the keyer has finished sending.
MessageSender is fire-and-forget: it has SendAsync, AbortAsync and
SetSpeedAsync and no completion signal. Both cwdaemon and a WinKeyer can
report completion, so the interface has to grow first. Timing it from the length
of the text would be a guess that goes wrong exactly when the contest is busy.
Voice keying. MessageSender was written to cover a voice keyer playing a
recording, and nothing implements it. No DVK support either, so the second radio
of an SO2R station cannot call CQ by voice.
Call history: the section-validating directives. !!Validate50State!!,
!!ValidateArrlSection!!, !!MapOnSection!! and !!GTA2GH_NT2TER!! are read
and passed over. Acting on them means holding N1MM's section lists and its
rules about which sections are retired, and getting that wrong throws away good
data. The file is read without them.
QTC handling for WAE. Not started. WAE logs will not be complete without it.
Digital modes. A contact can be logged as RTTY or another digital mode, and the contest rules score it, but there is no digital window: no decoding, no transmitting, no interface to fldigi, MMTTY or similar.
Contest coverage. Eight contests are built in, plus whatever .udc files
are in the user-defined folder. N1MM ships well over a hundred. Opening a log
from a contest not in the registry fails with the contest name, which is the
right answer but it is still a wall.
Known rough edges
The log window's column widths are the grid's own automatic sizing with a character-count floor. A column can change width as rows scroll into view.
Contacts arriving over the station network are applied from the socket
thread, and AppSession.TakeFromNetwork reopens the whole contest to do it.
That is correct but heavy, and it discards what is typed in an entry window on
another radio.
The band plan covers 160M to 2M only. 60M and everything above 2M get no CW, digital or phone shading on the bandmap, because N1MM's own numbers for those bands contradict themselves — its CW top for 1.25M is below its phone start, and its 70CM CW top is above the band. Config ▸ Sub bands cannot add a band that has no default.
Available mults and Qs is only as good as the bandmap. It lists what is spotted, so a multiplier nobody has spotted is not there. N1MM's window also shows the mults a contest has and nobody has worked, which needs a list of every multiplier the contest counts. Only the section and state lists are held here, so the zone and country lists would have to come from the country file first.
Two entry windows and one keyer. The SO2R box is told which radio to key before each message, but nothing stops both radios sending at once if the operator asks them to.