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:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user