fix(icom): the SUB dial is always shown, and split aligns the TX mode

The unselected VFO was read only when split was on, so a dual-receiver rig's
second dial sat blank on the console. It is now read on the same slow beat
regardless. And engaging split copies the main's mode (and data flag) onto
the TX VFO with 0x26 01 — a split whose TX VFO still speaks yesterday's mode
transmits FM into a CW pileup; rigs that predate 0x26 NAK it harmlessly.
This commit is contained in:
2026-08-29 21:53:16 +02:00
parent e8b5444fc2
commit da8f60a7b3
5 changed files with 36 additions and 9 deletions
+5 -2
View File
@@ -20,7 +20,7 @@ import { ShiftRow } from '@/components/ShiftRow';
type IcomState = {
available: boolean; model?: string; mode?: string;
transmitting: boolean; split: boolean;
transmitting: boolean; split: boolean; sub_hz?: number;
s_meter: number; power_meter: number; swr_meter: number;
rf_power: number; mic_gain: number;
af_gain: number; rf_gain: number;
@@ -692,7 +692,10 @@ export function IcomPanel({ onReportRST, isNetwork = false }: { onReportRST?: (r
// other is TX (freq_hz); otherwise there's a single VFO (freq_hz).
const split = !!cat?.split;
const mainHz: number = split ? (cat?.freq_rx_hz || 0) : (cat?.freq_hz || 0);
const subHz: number = split ? (cat?.freq_hz || 0) : 0;
// The sub receiver's dial is worth seeing whether or not split is on —
// in split the CAT state's TX freq is the authority, otherwise the panel's
// own sub_hz read.
const subHz: number = split ? (cat?.freq_hz || 0) : (st.sub_hz || 0);
const curMode: string = cat?.mode || st.mode || '';
// Mode-dependent controls: VOX / speech-comp / mic are voice-only (hidden on
// CW and data); APF (audio peak filter) is CW-only. Fold USB/LSB into phone.