feat: Yaesu panel — sideband on re-click, split readout, one-touch up 1/up 5

Three corrections from the operator's second pass.

The sideband gesture was wrong: I used double-click, which hides the action.
Clicking a button that is ALREADY active now flips its sideband — CW-U → CW-L →
CW-U. One button, one finger, nothing to discover.

A lit SPLIT chip does not tell an operator anything useful: it says split is on,
not where they transmit. The header now shows the TX frequency and the offset in
kHz whenever split is active.

And the offset that matters is set in one action: up 1 kHz on CW, up 5 kHz on
phone. Doing it by hand means swapping VFOs, retuning and swapping back — exactly
the fumbling a panel exists to remove. Both are offered rather than picked from
the mode, because which one is idiomatic is the operator's call, and the button
turns split on at the same time.

The offset is measured from the RECEIVE frequency and written to the VFO we are
not listening on, so it stays correct when the operator works on VFO B, where the
roles are mirrored.
This commit is contained in:
2026-07-29 11:46:54 +02:00
parent df4155108f
commit 7153768579
9 changed files with 115 additions and 17 deletions
+6
View File
@@ -14985,3 +14985,9 @@ func (a *App) yaesuDo(fn func(cat.YaesuController) error) error {
func (a *App) SetYaesuModeRaw(mode string) error {
return a.yaesuDo(func(y cat.YaesuController) error { return y.SetYaesuModeRaw(mode) })
}
// SetYaesuSplitOffset turns split on with the TX VFO a fixed distance up — the
// classic "listen down, transmit up 5" of a phone pile-up, or up 1 on CW.
func (a *App) SetYaesuSplitOffset(offsetHz int64) error {
return a.yaesuDo(func(y cat.YaesuController) error { return y.SetYaesuSplitOffset(offsetHz) })
}