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.
25 lines
654 B
Go
25 lines
654 B
Go
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)
|
|
}
|
|
}
|
|
}
|