feat(sat): Doppler tracking on the radio
The hard part of satellite tuning is not the arithmetic, it is deciding who owns the dial. A tracker that forces both frequencies fights the operator every time they turn the knob to follow a station across a linear transponder; one that never touches the receiver leaves them chasing a signal that slides nine kilohertz across a 70 cm pass. So the operator owns the receiver and the tracker follows them. Every second it asks the radio where the receiver actually is. Where it put it, nothing has changed. Further than a dial-turn's tolerance, and the operator has chosen a station: what they landed on is converted back into a nominal frequency, and the transmitter is derived from that. Which is the division of labour on a linear bird — the operator listens, the radio does the sums. Three ways to reach the radio, because a satellite pair is a shape of operating rather than a manufacturer's feature. An IC-9700 or IC-9100 is asked for its OWN satellite mode: it pairs main and sub, gives full duplex, and keeps the dials linked the way its designers meant, which is always better than an imitation built out of split. A Flex gets two slices, A the downlink and B the uplink, created when missing, because "slice B does not exist" is not something to make an operator fix at the start of a ten-minute pass. Everything else gets the downlink, and is told so — half the job announced beats half the job hidden. What goes in the log is the NOMINAL pair. Two stations working each other through a transponder read different numbers off their dials at the same instant; the only figure they can both agree on is the transponder's own. FREQ is the uplink and FREQ_RX the downlink — the one place a satellite QSO differs from every other kind, and the reason FREQ alone cannot describe one.
This commit is contained in:
@@ -49,6 +49,11 @@ const (
|
||||
CmdScope = 0x27 // spectrum-scope waveform stream (sub 0x00 = data, 0x11 = on/off)
|
||||
CmdRIT = 0x21 // RIT/ΔTX: sub 0x00 offset freq, 0x01 RIT on/off, 0x02 ΔTX(XIT) on/off
|
||||
CmdSendCW = 0x17 // send a CW message (ASCII, ≤30 chars) via the rig's keyer; data 0xFF = stop
|
||||
// CmdVFO selects which receiver subsequent commands address. On the two-band
|
||||
// satellite rigs (IC-9700, IC-9100) the MAIN band is the downlink and the SUB
|
||||
// band the uplink, so every satellite frequency set is "point at a band, then
|
||||
// tune it".
|
||||
CmdVFO = 0x07
|
||||
|
||||
SubLevelKeySpeed = 0x0C // CmdLevel: CW keying speed (0-255 → KeyMinWPM..KeyMaxWPM)
|
||||
|
||||
@@ -112,6 +117,17 @@ const (
|
||||
SubSwBreakIn = 0x47 // CW break-in: 0=OFF, 1=SEMI, 2=FULL (needed so 0x17 CW keys TX)
|
||||
SubSwMN = 0x48 // manual notch on/off
|
||||
SubSwAPF = 0x32 // audio peak filter on/off (CW only)
|
||||
// Satellite mode (IC-9700 / IC-9100). The rig's OWN satellite mode, not an
|
||||
// imitation of one: it pairs main and sub, gives full duplex, and keeps the
|
||||
// two dials linked the way the radio's designers meant. Asking it to do that
|
||||
// is always better than building the same thing out of split.
|
||||
SubSwSatellite = 0x5A
|
||||
|
||||
// CmdVFO sub-commands: which of a two-receiver rig's bands the next command
|
||||
// addresses.
|
||||
SubVFOMain = 0xD0 // MAIN band — the downlink in satellite mode
|
||||
SubVFOSub = 0xD1 // SUB band — the uplink
|
||||
SubVFOExchange = 0xB0 // swap main and sub
|
||||
)
|
||||
|
||||
// CW break-in modes (CmdSwitch 0x47).
|
||||
|
||||
Reference in New Issue
Block a user