feat(flex): chase a split pile-up on the skimmer's report marker
Working a DXpedition split means guessing where it listens. The useful information is not the callsign the DX answered but the FREQUENCY that station was calling on, and a CW skimmer already marks it: SDC posts each decoded report to the panadapter as a spot. Those spots reach OpsLog through the radio's spot feed. On a marker, the TRANSMIT slice moves there plus a signed offset; the receive slice never moves, because losing the DX is worse than missing a call. The marker text is a setting -- it is chosen in SDC by the operator, so any constant here would be wrong for whoever chose otherwise -- and the switch is a button beside SPLIT, since it is turned on when a DXpedition appears and off when it is worked. Moves are throttled and ignore a marker landing where the slice already is: a busy pile-up produces several reports a second and the slice would otherwise never be anywhere long enough to call. The spot feed is now subscribed to unconditionally. It was tied to OpsLog's own spot overlay, so an operator running SDC with the overlay off received nothing -- the reason no foreign spot was ever logged. The connect-time 'spot clear' stays behind the overlay flag: it wipes every spot on the radio, a skimmer's included.
This commit is contained in:
Vendored
+6
@@ -471,6 +471,8 @@ export function GetFlexBandAntennas():Promise<Record<string, main.FlexBandAnt>>;
|
||||
|
||||
export function GetFlexBandPower():Promise<Record<string, main.FlexBandPower>>;
|
||||
|
||||
export function GetFlexRSTChase():Promise<main.FlexRSTChase>;
|
||||
|
||||
export function GetFlexState():Promise<cat.FlexTXState>;
|
||||
|
||||
export function GetFlexZoom():Promise<main.FlexZoomSettings>;
|
||||
@@ -991,6 +993,8 @@ export function SaveFlexBandAntennas(arg1:Record<string, main.FlexBandAnt>):Prom
|
||||
|
||||
export function SaveFlexBandPower(arg1:Record<string, main.FlexBandPower>):Promise<void>;
|
||||
|
||||
export function SaveFlexRSTChase(arg1:main.FlexRSTChase):Promise<void>;
|
||||
|
||||
export function SaveFlexZoom(arg1:main.FlexZoomSettings):Promise<void>;
|
||||
|
||||
export function SaveFolderSync(arg1:main.FolderSyncConfig):Promise<void>;
|
||||
@@ -1093,6 +1097,8 @@ export function SetCompactMode(arg1:boolean):Promise<void>;
|
||||
|
||||
export function SetDVKLabel(arg1:number,arg2:string):Promise<void>;
|
||||
|
||||
export function SetFlexRSTChaseEnabled(arg1:boolean):Promise<void>;
|
||||
|
||||
export function SetKenwoodKeySpeed(arg1:number):Promise<void>;
|
||||
|
||||
export function SetLinkedAmps(arg1:Array<string>):Promise<void>;
|
||||
|
||||
@@ -882,6 +882,10 @@ export function GetFlexBandPower() {
|
||||
return window['go']['main']['App']['GetFlexBandPower']();
|
||||
}
|
||||
|
||||
export function GetFlexRSTChase() {
|
||||
return window['go']['main']['App']['GetFlexRSTChase']();
|
||||
}
|
||||
|
||||
export function GetFlexState() {
|
||||
return window['go']['main']['App']['GetFlexState']();
|
||||
}
|
||||
@@ -1922,6 +1926,10 @@ export function SaveFlexBandPower(arg1) {
|
||||
return window['go']['main']['App']['SaveFlexBandPower'](arg1);
|
||||
}
|
||||
|
||||
export function SaveFlexRSTChase(arg1) {
|
||||
return window['go']['main']['App']['SaveFlexRSTChase'](arg1);
|
||||
}
|
||||
|
||||
export function SaveFlexZoom(arg1) {
|
||||
return window['go']['main']['App']['SaveFlexZoom'](arg1);
|
||||
}
|
||||
@@ -2126,6 +2134,10 @@ export function SetDVKLabel(arg1, arg2) {
|
||||
return window['go']['main']['App']['SetDVKLabel'](arg1, arg2);
|
||||
}
|
||||
|
||||
export function SetFlexRSTChaseEnabled(arg1) {
|
||||
return window['go']['main']['App']['SetFlexRSTChaseEnabled'](arg1);
|
||||
}
|
||||
|
||||
export function SetKenwoodKeySpeed(arg1) {
|
||||
return window['go']['main']['App']['SetKenwoodKeySpeed'](arg1);
|
||||
}
|
||||
|
||||
@@ -2537,6 +2537,24 @@ export namespace main {
|
||||
this.body = source["body"];
|
||||
}
|
||||
}
|
||||
export class FlexRSTChase {
|
||||
enabled: boolean;
|
||||
markers: string;
|
||||
offset_hz: number;
|
||||
split_only: boolean;
|
||||
|
||||
static createFrom(source: any = {}) {
|
||||
return new FlexRSTChase(source);
|
||||
}
|
||||
|
||||
constructor(source: any = {}) {
|
||||
if ('string' === typeof source) source = JSON.parse(source);
|
||||
this.enabled = source["enabled"];
|
||||
this.markers = source["markers"];
|
||||
this.offset_hz = source["offset_hz"];
|
||||
this.split_only = source["split_only"];
|
||||
}
|
||||
}
|
||||
export class FlexZoomSettings {
|
||||
enabled: boolean;
|
||||
cw_khz: number;
|
||||
|
||||
Reference in New Issue
Block a user