fix(elecraft): read the TX meters when the RADIO says it is transmitting

The transmit meters were read on k.tx, which records only that OpsLog
keyed the radio. An operator using the front-panel PTT, a footswitch or
the mic button therefore had a panel that believed the rig was receiving
— and since the power and SWR bars are read only while transmitting,
they were never read at all. IF carries the radio's own transmit bit;
that is what decides now.

The meter probe logs RAW answers rather than parsed numbers, and asks a
wider set (SM, SMH, BG, SW, PO, TQ). A command answering in a shape we
did not expect is the interesting case, and parsing hid it behind the
same dash as a command the radio refused — which is what still stands
between us and a working SWR reading on a K3.
This commit is contained in:
2026-08-24 22:16:53 +02:00
parent e168ab4148
commit f9113b6ad3
3 changed files with 22 additions and 19 deletions
+6 -1
View File
@@ -451,7 +451,12 @@ func (k *Kenwood) ReadState() (RigState, error) {
// The panel rides on the same poll and the same held mutex: its own reader
// would have to take turns on the serial port, and the K3 is slow enough
// that two readers taking turns is what makes a dial lag.
k.readPanel(s.Mode, s.Split, s.FreqHz)
// f.TX, not k.tx: the radio is the one that knows it is transmitting. k.tx
// only records that OPSLOG keyed it, so a carrier raised with the front-panel
// PTT, a footswitch or the mic button left the panel showing a receiver — and
// the transmit meters, which are read only while transmitting, were never
// read at all for anyone who keys the radio by hand.
k.readPanel(s.Mode, s.Split, s.FreqHz, f.TX)
return s, nil
}