feat: native Yaesu CAT backend (FTDX10 / FTDX101), no OmniRig
Every Yaesu fault reported so far came from OmniRig's interpretation layer, not from the radio: a rig file that never exposes the VFO, a Freq property meaning A on one model and B on another, a split flag that alternates between polls. This talks to the rig directly, so what the radio answers is what is shown. Modern Yaesu CAT is plain ASCII with a ';' terminator — FA/FB for the VFOs, MD0 for the mode, VS for the selected VFO, TX to key. Frequency is written to the VFO the operator is actually on, not always to A, which is the failure that made a display disagree with the radio. Two things are genuinely uncertain across the family and are treated as such rather than guessed. SPLIT is read through ST, then FT if the rig ignores ST — whichever answers wins and the choice is remembered, because the two commands say DIFFERENT things (a split flag vs which VFO transmits). If neither answers, split is reported OFF and the fact is logged, rather than invented. Unknown model ids and mode bytes are logged raw for the same reason. Split resolution, frequency parsing and the mode mapping are pure functions with a table test — the OmniRig equivalent is where every Yaesu bug lived, and it had no test until late. Written from the CAT reference; NOT yet verified on a radio.
This commit is contained in:
@@ -1835,6 +1835,8 @@ export namespace main {
|
||||
flex_spots: boolean;
|
||||
flex_decode_spots: boolean;
|
||||
flex_decode_secs: number;
|
||||
yaesu_port: string;
|
||||
yaesu_baud: number;
|
||||
icom_port: string;
|
||||
icom_baud: number;
|
||||
icom_addr: number;
|
||||
@@ -1864,6 +1866,8 @@ export namespace main {
|
||||
this.flex_spots = source["flex_spots"];
|
||||
this.flex_decode_spots = source["flex_decode_spots"];
|
||||
this.flex_decode_secs = source["flex_decode_secs"];
|
||||
this.yaesu_port = source["yaesu_port"];
|
||||
this.yaesu_baud = source["yaesu_baud"];
|
||||
this.icom_port = source["icom_port"];
|
||||
this.icom_baud = source["icom_baud"];
|
||||
this.icom_addr = source["icom_addr"];
|
||||
|
||||
Reference in New Issue
Block a user