fix(tci): send the tone near full scale, and log both levels
The transmit path works: six passes, the radio asked 231 times and was answered 231 times, none missed, and the tone was there on the panadapter. What was missing was power on the meter, and the cause was the level. The tone went out at a quarter of full scale, out of caution, into a radio set to 15% drive — enough to draw a clean signal and not enough to move a needle. In a digital mode the radio expects a line level it can drive to full output; the POWER is its own drive control, so sending quietly only wastes the range. Now 0.7, short of 1.0 to leave room for the peaks. The start line carries both numbers — ours and the radio's drive — because a quiet transmission has two possible causes and one line should settle which, rather than an evening of guessing. Reading 'drive' off the radio is the only reason it is parsed at all.
This commit is contained in:
+11
-1
@@ -66,7 +66,11 @@ type TCI struct {
|
||||
// txAllowedKnown keeps an OLDER ExpertSDR, or a TCI-compatible program that
|
||||
// never sends TX_ENABLE at all, from being treated as refusing: without a
|
||||
// word from the radio we key and let it decide.
|
||||
txAllowed bool
|
||||
txAllowed bool
|
||||
// drive is the radio's transmit drive, 0-100. Kept because a quiet
|
||||
// transmission has two possible causes — our level or the radio's — and a
|
||||
// log that names both settles it in one line instead of an evening.
|
||||
drive int
|
||||
txAllowedKnown bool
|
||||
|
||||
lastSig string // last logged state signature (log only on change)
|
||||
@@ -462,6 +466,12 @@ func (t *TCI) handle(msg string) {
|
||||
t.noteTXTransition(t.tx)
|
||||
}
|
||||
}
|
||||
case "drive":
|
||||
if get(0) == "0" {
|
||||
if v, err := strconv.Atoi(get(1)); err == nil {
|
||||
t.drive = v
|
||||
}
|
||||
}
|
||||
case "tx_enable":
|
||||
if get(0) == "0" {
|
||||
allowed := get(1) == "true"
|
||||
|
||||
Reference in New Issue
Block a user