fix(sat): both antennas on both satellite slices
A slice has an rxant and a txant, and each pair belongs to that slice's own band. Only two of the four were being set — the downlink's receive antenna and the uplink's transmit one — so the downlink slice was left with an empty txant. It never keys, so nothing was wrong on the air, but the slice was half-configured: move transmit focus to it and the radio uses whatever antenna it happened to be left on. Reported with XVTA on 2 m and XVTB on 70 cm, where the 70 cm slice showed one antenna and the 2 m slice showed two. SatAntennas now takes all four, and the late-slice replay in adoptSatSlice hands the uplink its own pair instead of putting the transmit antenna on both of its ports.
This commit is contained in:
+11
-7
@@ -697,21 +697,25 @@ func (a *App) applySatRadio(tp sat.Transponder) {
|
||||
if err != nil || len(m) == 0 {
|
||||
return
|
||||
}
|
||||
// The downlink is received, so it takes that band's RX antenna; the uplink
|
||||
// is transmitted, so it takes that band's TX antenna.
|
||||
// Each slice gets BOTH antennas of ITS OWN band. Only two of the four were
|
||||
// set — the downlink's receive and the uplink's transmit — which left the
|
||||
// downlink slice with no txant. It never keys, so nothing was wrong on the
|
||||
// air, but a half-configured slice uses whatever antenna it was last left
|
||||
// on the moment transmit focus moves to it.
|
||||
downBand, upBand := flexBandAntKey(tp.DownLo), flexBandAntKey(tp.UpLo)
|
||||
rxAnt := m[downBand].RX
|
||||
txAnt := m[upBand].TX
|
||||
if strings.TrimSpace(rxAnt) == "" && strings.TrimSpace(txAnt) == "" {
|
||||
down, up := m[downBand], m[upBand]
|
||||
if strings.TrimSpace(down.RX) == "" && strings.TrimSpace(down.TX) == "" &&
|
||||
strings.TrimSpace(up.RX) == "" && strings.TrimSpace(up.TX) == "" {
|
||||
// Worth a line: an operator who HAS configured the pair and still sees
|
||||
// the wrong antenna has no other way to tell a setting he never made
|
||||
// from a lookup that missed.
|
||||
applog.Printf("sat: no antenna configured for this pass (down %s, up %s)", downBand, upBand)
|
||||
return
|
||||
}
|
||||
applog.Printf("sat: antennas rx=%q (%s) tx=%q (%s)", rxAnt, downBand, txAnt, upBand)
|
||||
applog.Printf("sat: antennas down %s rx=%q tx=%q, up %s rx=%q tx=%q",
|
||||
downBand, down.RX, down.TX, upBand, up.RX, up.TX)
|
||||
if err := a.cat.FlexDo(func(fc cat.FlexController) error {
|
||||
return fc.SatAntennas(rxAnt, txAnt)
|
||||
return fc.SatAntennas(down.RX, down.TX, up.RX, up.TX)
|
||||
}); err != nil {
|
||||
// Not fatal: a rig that is not a Flex has no such thing, and a pass with
|
||||
// the wrong antenna is still a pass.
|
||||
|
||||
Reference in New Issue
Block a user