feat: Yaesu control panel (meters, bands, DSP, TX), and drop a stale Flex hint
A console pane for the native Yaesu backend, in the same shape as the Icom and Flex ones: S/PO/SWR meters, band and mode rows, AF/RF/squelch, AGC, the IPO/AMP1/ AMP2 front-end selector, ATT, NB, DNR + level, narrow filter, power in watts, mic gain, VOX, split and ATU tune. Three decisions worth keeping: Panel reads are STAGGERED and live in their own file, away from ReadState. Meters poll every cycle; settings only change when someone turns a knob, so they refresh every 8th cycle and right after any set. Polling all of it every cycle would put twenty queries a second on the serial link the frequency display shares. Band buttons use the rig's own band memory (BS) rather than a frequency we pick, so 20 m lands where the operator last was on 20 m — what the radio's own band keys do. A set is followed by a read-back, so the panel shows what the RIG ended up with, not what we asked for; the two differ whenever a value is out of range or the mode forbids the control. And a control the model lacks keeps its previous value instead of dropping to zero, which reads as a setting that reset itself. The S9 point of the S-meter scale is a hypothesis (the manual does not state it) and is commented as such — one number to correct if reports come out an S unit off, rather than a fudge spread through the RST helper. Also removes the FlexRadio settings blurb, which explained the backend to someone who had already chosen it.
This commit is contained in:
Vendored
+36
@@ -499,6 +499,8 @@ export function GetWinkeyerSettings():Promise<main.WinkeyerSettings>;
|
||||
|
||||
export function GetWinkeyerStatus():Promise<winkeyer.Status>;
|
||||
|
||||
export function GetYaesuState():Promise<cat.YaesuTXState>;
|
||||
|
||||
export function HasBuiltinReferences(arg1:string):Promise<boolean>;
|
||||
|
||||
export function IcomRefresh():Promise<void>;
|
||||
@@ -755,6 +757,8 @@ export function RefreshCtyDat():Promise<main.CtyDatInfo>;
|
||||
|
||||
export function RefreshSolar():Promise<void>;
|
||||
|
||||
export function RefreshYaesuPanel():Promise<void>;
|
||||
|
||||
export function ReloadUDPIntegrations():Promise<Array<string>>;
|
||||
|
||||
export function RemovePassphrase(arg1:string):Promise<void>;
|
||||
@@ -911,6 +915,36 @@ export function SetUltrabeamDirection(arg1:number):Promise<void>;
|
||||
|
||||
export function SetWinkeyerTrace(arg1:boolean):Promise<void>;
|
||||
|
||||
export function SetYaesuAFGain(arg1:number):Promise<void>;
|
||||
|
||||
export function SetYaesuAGC(arg1:string):Promise<void>;
|
||||
|
||||
export function SetYaesuAtt(arg1:number):Promise<void>;
|
||||
|
||||
export function SetYaesuBand(arg1:string):Promise<void>;
|
||||
|
||||
export function SetYaesuMicGain(arg1:number):Promise<void>;
|
||||
|
||||
export function SetYaesuNB(arg1:boolean):Promise<void>;
|
||||
|
||||
export function SetYaesuNR(arg1:boolean):Promise<void>;
|
||||
|
||||
export function SetYaesuNRLevel(arg1:number):Promise<void>;
|
||||
|
||||
export function SetYaesuNarrow(arg1:boolean):Promise<void>;
|
||||
|
||||
export function SetYaesuPower(arg1:number):Promise<void>;
|
||||
|
||||
export function SetYaesuPreamp(arg1:number):Promise<void>;
|
||||
|
||||
export function SetYaesuRFGain(arg1:number):Promise<void>;
|
||||
|
||||
export function SetYaesuSplit(arg1:boolean):Promise<void>;
|
||||
|
||||
export function SetYaesuSquelch(arg1:number):Promise<void>;
|
||||
|
||||
export function SetYaesuVOX(arg1:boolean):Promise<void>;
|
||||
|
||||
export function StartCWDecoder():Promise<void>;
|
||||
|
||||
export function StationSetRelay(arg1:string,arg2:number,arg3:boolean):Promise<void>;
|
||||
@@ -947,6 +981,8 @@ export function TestStationDevice(arg1:main.StationDevice):Promise<main.StationT
|
||||
|
||||
export function TestUltrabeam(arg1:main.UltrabeamSettings):Promise<void>;
|
||||
|
||||
export function TuneYaesuATU():Promise<void>;
|
||||
|
||||
export function TunerGeniusActivate(arg1:number):Promise<void>;
|
||||
|
||||
export function TunerGeniusAutotune():Promise<void>;
|
||||
|
||||
@@ -946,6 +946,10 @@ export function GetWinkeyerStatus() {
|
||||
return window['go']['main']['App']['GetWinkeyerStatus']();
|
||||
}
|
||||
|
||||
export function GetYaesuState() {
|
||||
return window['go']['main']['App']['GetYaesuState']();
|
||||
}
|
||||
|
||||
export function HasBuiltinReferences(arg1) {
|
||||
return window['go']['main']['App']['HasBuiltinReferences'](arg1);
|
||||
}
|
||||
@@ -1458,6 +1462,10 @@ export function RefreshSolar() {
|
||||
return window['go']['main']['App']['RefreshSolar']();
|
||||
}
|
||||
|
||||
export function RefreshYaesuPanel() {
|
||||
return window['go']['main']['App']['RefreshYaesuPanel']();
|
||||
}
|
||||
|
||||
export function ReloadUDPIntegrations() {
|
||||
return window['go']['main']['App']['ReloadUDPIntegrations']();
|
||||
}
|
||||
@@ -1770,6 +1778,66 @@ export function SetWinkeyerTrace(arg1) {
|
||||
return window['go']['main']['App']['SetWinkeyerTrace'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuAFGain(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuAFGain'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuAGC(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuAGC'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuAtt(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuAtt'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuBand(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuBand'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuMicGain(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuMicGain'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuNB(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuNB'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuNR(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuNR'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuNRLevel(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuNRLevel'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuNarrow(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuNarrow'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuPower(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuPower'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuPreamp(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuPreamp'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuRFGain(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuRFGain'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuSplit(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuSplit'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuSquelch(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuSquelch'](arg1);
|
||||
}
|
||||
|
||||
export function SetYaesuVOX(arg1) {
|
||||
return window['go']['main']['App']['SetYaesuVOX'](arg1);
|
||||
}
|
||||
|
||||
export function StartCWDecoder() {
|
||||
return window['go']['main']['App']['StartCWDecoder']();
|
||||
}
|
||||
@@ -1842,6 +1910,10 @@ export function TestUltrabeam(arg1) {
|
||||
return window['go']['main']['App']['TestUltrabeam'](arg1);
|
||||
}
|
||||
|
||||
export function TuneYaesuATU() {
|
||||
return window['go']['main']['App']['TuneYaesuATU']();
|
||||
}
|
||||
|
||||
export function TunerGeniusActivate(arg1) {
|
||||
return window['go']['main']['App']['TunerGeniusActivate'](arg1);
|
||||
}
|
||||
|
||||
@@ -1074,6 +1074,58 @@ export namespace cat {
|
||||
this.fixed = source["fixed"];
|
||||
}
|
||||
}
|
||||
export class YaesuTXState {
|
||||
available: boolean;
|
||||
model?: string;
|
||||
mode?: string;
|
||||
transmitting: boolean;
|
||||
split: boolean;
|
||||
s_meter: number;
|
||||
power_meter: number;
|
||||
swr_meter: number;
|
||||
rf_power: number;
|
||||
mic_gain: number;
|
||||
af_gain: number;
|
||||
rf_gain: number;
|
||||
squelch: number;
|
||||
agc?: string;
|
||||
preamp: number;
|
||||
att: number;
|
||||
nb: boolean;
|
||||
nr: boolean;
|
||||
nr_level: number;
|
||||
narrow: boolean;
|
||||
vox: boolean;
|
||||
|
||||
static createFrom(source: any = {}) {
|
||||
return new YaesuTXState(source);
|
||||
}
|
||||
|
||||
constructor(source: any = {}) {
|
||||
if ('string' === typeof source) source = JSON.parse(source);
|
||||
this.available = source["available"];
|
||||
this.model = source["model"];
|
||||
this.mode = source["mode"];
|
||||
this.transmitting = source["transmitting"];
|
||||
this.split = source["split"];
|
||||
this.s_meter = source["s_meter"];
|
||||
this.power_meter = source["power_meter"];
|
||||
this.swr_meter = source["swr_meter"];
|
||||
this.rf_power = source["rf_power"];
|
||||
this.mic_gain = source["mic_gain"];
|
||||
this.af_gain = source["af_gain"];
|
||||
this.rf_gain = source["rf_gain"];
|
||||
this.squelch = source["squelch"];
|
||||
this.agc = source["agc"];
|
||||
this.preamp = source["preamp"];
|
||||
this.att = source["att"];
|
||||
this.nb = source["nb"];
|
||||
this.nr = source["nr"];
|
||||
this.nr_level = source["nr_level"];
|
||||
this.narrow = source["narrow"];
|
||||
this.vox = source["vox"];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user