Going down N1MM's published list, the ones a contest operator would miss:
| | |
|---|---|
| `{LASTEXCH}` | what the last station sent, built from the boxes the contest asks for |
| `{ROVERQTH}` | where a rover is now |
| `{TIME}`, `{DATE}`, `{TIMEGMT}`, `{DATEGMT}` | the clock and the calendar |
| `{ESC}`, `{CTRL-A}` to `{CTRL-Z}` | the control characters a TNC reads as commands |
| `{CTRLHOME}` | the cursor back in the callsign box |
| `{F1}` to `{F12}` | another of this radio's keys, where `{CTRLF1}` is the other radio's |
| `{CQ}` | makes any key a CQ key: it starts running and carries alternating CQ on |
| `{DIGQTCS}`, `{DIGQTCR}` | opens the WAE QTC window the way asked for |
| `{CLEARRIT}` | the receive offset back to zero, which is rigctld's `J 0` |
| `{FORCELOG}` | logs what is in the boxes, holes and all |
`{FORCELOG}` is the one that gives something up. `LogContact` refuses an entry
that is short or holds a value the contest will not take, so that a caller who
has not checked cannot log nonsense; `LogContactAnyway` is the way past it,
because a contact in the log with a hole in it can be filled in afterwards and
one that was never logged cannot. It still needs a callsign, and the status
line says the row will need fixing before the log goes in.
A key that names itself would send for ever, so a key sending another key
ignores the macro a second time down.
What is still passed over is written down in the README and unfinished.md.
Advanced voicing is the one that matters: N1MM says a callsign or a serial by
playing a recording per letter out of `LettersFiles`, which is why `!` and `#`
say nothing on phone here and why F5 is empty in N1MM's own SSB file too. The
three packet BBS date formats are passed over because there is nothing here to
check a guess at them against.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0157i7PiZyqBkquxS9A6FTdQ
101 lines
2.6 KiB
C#
101 lines
2.6 KiB
C#
namespace Nonemm.Session;
|
|
|
|
/// What an action macro in a function key message does. N1MM's action macros
|
|
/// that this program has nothing to do — the CAT families, audio, rotators —
|
|
/// are not here; they are read and passed over.
|
|
public enum MessageCommand
|
|
{
|
|
/// Clears the entry boxes, as Escape and N1MM's `{WIPE}` do.
|
|
Wipe,
|
|
|
|
/// Logs the contact, as the Log It button does.
|
|
Log,
|
|
|
|
Run,
|
|
|
|
SearchAndPounce,
|
|
|
|
/// The same as pressing space in an entry box: move to the next field.
|
|
Space,
|
|
|
|
/// Puts this station on the cluster.
|
|
SpotMe,
|
|
|
|
/// Says the exchange has gone out, for a key that sends it in some other
|
|
/// form than F2. ESM reads it.
|
|
ExchangeSent,
|
|
|
|
FrequencyUp,
|
|
|
|
FrequencyDown,
|
|
|
|
PageUp,
|
|
|
|
PageDown,
|
|
|
|
/// Stops sending, as Escape does mid-message.
|
|
StopSending,
|
|
|
|
/// Sends its argument to the cluster node.
|
|
Telnet,
|
|
|
|
/// Moves the keyboard to the other radio; `WithTransmit` moves the
|
|
/// transmitter as well.
|
|
JumpToOtherRadio,
|
|
|
|
JumpToOtherRadioWithTransmit,
|
|
|
|
/// Sends one of the other radio's function key messages. The argument is
|
|
/// the key number, so `{CTRLF9}` sends F9 there.
|
|
SendOnOtherRadio,
|
|
|
|
/// Sends its argument to the SO2R box.
|
|
Otrsp,
|
|
|
|
/// Puts the call being typed on the call stack and clears the entry, so
|
|
/// the next caller can be copied.
|
|
StackAnother,
|
|
|
|
/// Swaps the call being typed for the one on top of the call stack, or
|
|
/// stacks it when the stack is empty, or takes the top call when the box
|
|
/// is.
|
|
SwapWithStack,
|
|
|
|
/// Logs the contact and takes the next call off the stack.
|
|
LogThenPop,
|
|
|
|
/// Empties the call stack.
|
|
ClearStack,
|
|
|
|
/// N1MM's `{TX}`: the digital engine starts transmitting.
|
|
StartTransmit,
|
|
|
|
/// N1MM's `{RX}`: the engine goes back to receive once the buffer is
|
|
/// empty.
|
|
ReturnToReceive,
|
|
|
|
/// Puts the cursor back in the callsign box, wherever it was. N1MM's
|
|
/// `{CTRLHOME}`.
|
|
CursorToCall,
|
|
|
|
/// Sends one of this radio's own function key messages. The argument is
|
|
/// the key number, so `{F9}` sends F9.
|
|
SendKey,
|
|
|
|
/// Says this key is a CQ, for a station whose CQ is not on F1: it starts
|
|
/// running and carries alternating CQ on, which F1 does by itself.
|
|
CallCq,
|
|
|
|
/// Opens the WAE QTC window to read traffic out, or to take it down.
|
|
SendQtc,
|
|
|
|
ReceiveQtc,
|
|
|
|
/// Puts the radio's receive offset back to zero.
|
|
ClearRit,
|
|
|
|
/// Logs the contact even though the exchange is short or a box holds
|
|
/// something the contest will not take. N1MM's `{FORCELOG}`.
|
|
LogAnyway,
|
|
}
|