feat(cluster): self-spot on the master node while logging
Settings -> DX Cluster: a toggle and an interval. When it is on, logging a QSO announces the station on the master cluster — the QSO's own station callsign as the DX, on the frequency the contact was made on — so callers find the run without waiting for someone else to spot it. The node fills the DE field from the login, so the spotter is us too: a self-spot. It fires on the FIRST QSO of a frequency and then at most once per interval. Both halves matter: announcing every QSO would flood the node and get the station filtered out, while a pure timer would stay silent for minutes after a band change. A drift of up to 500 Hz still counts as the same run, so nudging the VFO mid-pileup does not re-announce. Five minutes is the floor, clamped in SaveSelfSpotSettings as well as in the input: the limit protects the node from us, so it must not depend on the frontend. The interval input keeps raw text and clamps on blur — clamping per keystroke rewrote "10" to "5" as soon as the "1" landed. Wired into both log paths (manual entry and UDP auto-log) on the async side, so a cluster that is slow or down never holds up logging. A send failure restores the previous throttle state, so the next QSO retries instead of sitting out an interval that produced no spot.
This commit is contained in:
@@ -2914,6 +2914,20 @@ export namespace main {
|
||||
this.unlocked = source["unlocked"];
|
||||
}
|
||||
}
|
||||
export class SelfSpotSettings {
|
||||
enabled: boolean;
|
||||
minutes: number;
|
||||
|
||||
static createFrom(source: any = {}) {
|
||||
return new SelfSpotSettings(source);
|
||||
}
|
||||
|
||||
constructor(source: any = {}) {
|
||||
if ('string' === typeof source) source = JSON.parse(source);
|
||||
this.enabled = source["enabled"];
|
||||
this.minutes = source["minutes"];
|
||||
}
|
||||
}
|
||||
export class SpotQuery {
|
||||
call: string;
|
||||
band: string;
|
||||
|
||||
Reference in New Issue
Block a user