feat: Support for Antenna Genius
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
package antgenius
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestHandleAntennaList(t *testing.T) {
|
||||
c := New("x", 9007)
|
||||
// Names may contain spaces — must be captured up to " tx=".
|
||||
c.handleLine("R3|0|antenna 1 name=UB VL2.3 tx=ffff rx=ffff inband=0000")
|
||||
c.handleLine("R3|0|antenna 2 name=DX Commander tx=00ff rx=00ff inband=0000")
|
||||
st := c.GetStatus()
|
||||
if len(st.Antennas) != 2 {
|
||||
t.Fatalf("got %d antennas, want 2: %+v", len(st.Antennas), st.Antennas)
|
||||
}
|
||||
if st.Antennas[0].Index != 1 || st.Antennas[0].Name != "UB VL2.3" {
|
||||
t.Errorf("antenna 1 = %+v", st.Antennas[0])
|
||||
}
|
||||
if st.Antennas[1].Name != "DX Commander" {
|
||||
t.Errorf("antenna 2 name = %q", st.Antennas[1].Name)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAntennaUnderscoreAndPlaceholder(t *testing.T) {
|
||||
c := New("x", 9007)
|
||||
c.handleLine("R3|0|antenna 1 name=Hex_Beam tx=ffff rx=ffff inband=0000") // underscore → space
|
||||
c.handleLine("R3|0|antenna 4 name=Antenna_4 tx=0000 rx=0000 inband=0000") // default → filtered
|
||||
c.handleLine("R3|0|antenna 5 name=antenna 5 tx=0000 rx=0000 inband=0000") // default → filtered
|
||||
st := c.GetStatus()
|
||||
if len(st.Antennas) != 1 || st.Antennas[0].Name != "Hex Beam" {
|
||||
t.Fatalf("want only [Hex Beam], got %+v", st.Antennas)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandlePortStatus(t *testing.T) {
|
||||
c := New("x", 9007)
|
||||
// Async push after "sub port all": active antenna is txant (fallback rxant).
|
||||
c.handleLine("S0|port 1 source=MANUAL band=6 rxant=2 txant=2 inband=0 inhibit=0")
|
||||
c.handleLine("S0|port 2 source=AUTO band=0 rxant=0 txant=0 inband=0 inhibit=0")
|
||||
st := c.GetStatus()
|
||||
if st.PortA != 2 {
|
||||
t.Errorf("PortA = %d, want 2", st.PortA)
|
||||
}
|
||||
if st.PortB != 0 {
|
||||
t.Errorf("PortB = %d, want 0 (none)", st.PortB)
|
||||
}
|
||||
// A "port get" reply (R-line) must parse the same way.
|
||||
c.handleLine("R15|0|port 2 source=MANUAL band=3 rxant=5 txant=5 inband=0 inhibit=0")
|
||||
if st = c.GetStatus(); st.PortB != 5 {
|
||||
t.Errorf("PortB after port get = %d, want 5", st.PortB)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPortTxFallbackToRx(t *testing.T) {
|
||||
c := New("x", 9007)
|
||||
c.handleLine("S0|port 1 source=MANUAL band=6 rxant=3 txant=0 inband=0 inhibit=0")
|
||||
if st := c.GetStatus(); st.PortA != 3 {
|
||||
t.Errorf("PortA = %d, want 3 (rx fallback when tx=0)", st.PortA)
|
||||
}
|
||||
}
|
||||
|
||||
func TestKvInt(t *testing.T) {
|
||||
s := "port 1 source=MANUAL band=6 rxant=2 txant=7 inhibit=0"
|
||||
if v := kvInt(s, "txant"); v != 7 {
|
||||
t.Errorf("txant = %d, want 7", v)
|
||||
}
|
||||
if v := kvInt(s, "rxant"); v != 2 {
|
||||
t.Errorf("rxant = %d, want 2", v)
|
||||
}
|
||||
if v := kvInt(s, "missing"); v != 0 {
|
||||
t.Errorf("missing = %d, want 0", v)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user