fix(tci): pick the sideband from the frequency just commanded
Clicking a spot sets the frequency, then the mode 150 ms later, and SetMode chose USB or LSB from t.freqA — the frequency the radio had ECHOED. From 7 MHz onto a 14 MHz spot that echo has often not landed, so the sideband was computed for the band being left: LSB on 20 m. Clicking the same spot again, the echo having arrived, gave USB. Reported from a SunSDR as 'the frequency is right, the mode is wrong until I click twice'. SetFrequency now records what was asked for and SetMode prefers it until the radio's own echo confirms the move. The server's 'protocol:' announcement is also kept instead of being filed under unhandled: it names the ExpertSDR and its TCI version, and panorama spots need TCI 1.5 — older servers accept the spot commands and silently drop them, which is indistinguishable from a broken logger. Now it says so.
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
package cat
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestTCISpotsUnsupported(t *testing.T) {
|
||||
// SPOT arrived in TCI 1.5. The SunSDR2 PRO report that prompted this was an
|
||||
// ExpertSDR announcing 1.3 — spots accepted and silently dropped.
|
||||
for _, c := range []struct {
|
||||
version string
|
||||
old bool
|
||||
}{
|
||||
{"1.3", true},
|
||||
{"1.4", true},
|
||||
{"1.5", false},
|
||||
{"1.9", false},
|
||||
{"2.0", false},
|
||||
{"", false}, // unparseable → assume it works
|
||||
{"weird", false}, // refusing to draw on a doubt is the worse mistake
|
||||
} {
|
||||
if got := tciSpotsUnsupported(c.version); got != c.old {
|
||||
t.Errorf("tciSpotsUnsupported(%q) = %v, want %v", c.version, got, c.old)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user