Show the other computers, and apply the ten-minute rule
Three pieces on top of the link: **The network status window**, on the entry window's Window menu. A row per station, this computer included the way N1MM shows it: number, address, operator, band, mode, run, transmit, pass frequency, the last message type, how long ago it arrived, the counts each way and the echo round trip. A station that broadcast the wrong version is named under the table in red — that is the one fault where everything looks connected and nothing arrives. The box at the bottom sends a line of chat, and Echo asks every station whether it is there. **Where this station is** goes out once a second when it has changed. The frequency, the mode and run have a dozen places they can change from — the radio moving, a band button, a QSY typed into the callsign box — so it is read and compared rather than announced from each of them. **The ten-minute rule.** `BandChangeRules` already counted changes and the stay on a band, and the entry window already showed the countdown, but only a user-defined contest carried a rule, so every built-in contest allowed anything. `ForCategory` gives a multi-operator entry with one or two transmitters a ten-minute stay, which is N1MM's fallback in `ContestInstance.BandChangeTimerDuration` for every contest that does not name its own. Its per-contest table is a few hundred cases in a decompiled hash switch and is not repeated. Config ▸ Edit Networked-Computer Names now covers both networks: the 12060 broadcast to other programs and the 12070 link, with the station number, the port, the version to claim and stations named by address for a network where a broadcast does not reach. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PdAYHcdRktqKry7nk414TU
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using System.Reflection;
|
||||
using System.Text.Json;
|
||||
using Nonemm.Core;
|
||||
using Nonemm.Network;
|
||||
using Nonemm.Session;
|
||||
|
||||
namespace Nonemm.App.Configuration;
|
||||
@@ -118,6 +119,29 @@ public sealed record Settings
|
||||
|
||||
public IReadOnlyList<string> NetworkPeers { get; init; } = [];
|
||||
|
||||
/// The link to the other logging computers of a multi-operator entry, on
|
||||
/// N1MM's port 12070. It is not the same thing as `NetworkEnabled`, which
|
||||
/// is the XML broadcast on 12060 that other programs read; a station can
|
||||
/// want either, or both.
|
||||
public bool StationLinkEnabled { get; init; }
|
||||
|
||||
public int StationLinkPort { get; init; } = StationBeacon.DefaultPort;
|
||||
|
||||
/// Which station of the entry this computer is. It goes into every message
|
||||
/// and lets a contact say which position made it.
|
||||
public int StationNumber { get; init; } = 1;
|
||||
|
||||
/// The version this program claims to be on the network. N1MM refuses a
|
||||
/// station whose version is not its own, so to work beside N1MM this has to
|
||||
/// be the version those copies are running. The default is the version of
|
||||
/// the N1MM this program was written against.
|
||||
public string StationLinkVersion { get; init; } = "1.0.11364";
|
||||
|
||||
/// Stations named by hand, for a network where a broadcast does not reach
|
||||
/// every computer. Each is a name and an address — `RUN-PC@192.168.1.5`,
|
||||
/// with `:port` on the end when that station is not on the usual port.
|
||||
public IReadOnlyList<string> StationLinkPeers { get; init; } = [];
|
||||
|
||||
/// The call history file for this contest, or empty for none. They are
|
||||
/// published per contest, so this is not a fixed name.
|
||||
public string CallHistoryFile { get; init; } = "";
|
||||
|
||||
Reference in New Issue
Block a user