feat(elecraft): the rest of the main controls on the K3/K4 console

So the tester can exercise everything in one session instead of one
control per build: RF and mic gain, squelch, preamp, attenuator, NB, NR,
AGC, filter width, antenna, RIT/XIT with a clear, and the keyer speed.

The analogue scales differ between an Elecraft and a Kenwood — RF gain
000-250, mic 000-060, squelch 000-029 against 0-255 — so each is mapped
through its own full scale and shown as a percentage. Using one rig's
range on the other silently halves or doubles every setting.

Antenna only appears when the radio answers AN: a K3 without the internal
ATU has one socket, and a switch that goes nowhere is worse than none.
This commit is contained in:
2026-08-24 14:29:38 +02:00
parent 60dad353ce
commit dd77e7f467
8 changed files with 502 additions and 7 deletions
+54
View File
@@ -32,6 +32,60 @@ func (a *App) SetKenwoodAFGain(p int) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodAFGain(p) })
}
func (a *App) SetKenwoodRFGain(p int) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodRFGain(p) })
}
func (a *App) SetKenwoodMicGain(p int) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodMicGain(p) })
}
func (a *App) SetKenwoodSquelch(p int) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodSquelch(p) })
}
func (a *App) SetKenwoodPreamp(on bool) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodPreamp(on) })
}
func (a *App) SetKenwoodAtt(on bool) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodAtt(on) })
}
func (a *App) SetKenwoodNB(on bool) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodNB(on) })
}
func (a *App) SetKenwoodNR(on bool) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodNR(on) })
}
func (a *App) SetKenwoodAGC(name string) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodAGC(name) })
}
func (a *App) SetKenwoodFilter(hz int) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodFilter(hz) })
}
func (a *App) SetKenwoodAntenna(n int) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodAntenna(n) })
}
func (a *App) SetKenwoodRIT(on bool) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodRIT(on) })
}
func (a *App) SetKenwoodXIT(on bool) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodXIT(on) })
}
// ClearKenwoodRIT zeroes the RIT and XIT offsets together, which is what the
// radio's own RC does and what an operator means by "clear it".
func (a *App) ClearKenwoodRIT() error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.ClearKenwoodRIT() })
}
// SetKenwoodTX is the panel's MOX.
func (a *App) SetKenwoodTX(on bool) error {
return a.kenwoodPanelDo(func(k cat.KenwoodPanelController) error { return k.SetKenwoodTX(on) })