feat(k3): align RIT/XIT and the power step with the other consoles

'None of the consoles look alike' is the complaint ShiftRow exists to answer,
and the Elecraft panel was still driving its offset with a row of nudge buttons.
It now uses the shared control — ±, wheel, typed value — plus the same
Ctrl+←/→ 10 Hz clarifier the Icom and TCI panels have. The K3 keeps ONE offset
for RIT and XIT, so both rows show it, exactly like the Icom's.

The backend gains the absolute setter the shared control speaks
(SetKenwoodRITOffset, funnelled through the same RO write as the nudge), and
the power slider moves in 1 W steps — nobody asks a K3 for 'between 10 and 15
watts' in fives.

Also per review: the chase switches are labelled 'Chase POTA' / 'Chase SOTA',
matching 'Chase new grids' beside them.
This commit is contained in:
2026-08-28 23:56:49 +02:00
parent bd8719ce99
commit 10ef984962
7 changed files with 57 additions and 20 deletions
+11
View File
@@ -112,6 +112,7 @@ type KenwoodPanelController interface {
SetKenwoodRIT(bool) error
SetKenwoodXIT(bool) error
NudgeKenwoodRIT(int) error
SetKenwoodRITOffset(int) error
ClearKenwoodRIT() error
SetKenwoodTX(bool) error
TuneKenwoodATU() error
@@ -578,6 +579,16 @@ func (k *Kenwood) SetKenwoodXIT(on bool) error {
// ClearKenwoodRIT zeroes the RIT/XIT offset, both at once — which is what RC
// does and what the operator means by "clear it".
// SetKenwoodRITOffset writes the offset as an ABSOLUTE value — what the shared
// ShiftRow control speaks. Nudge stays for the keyboard clarifier; both funnel
// into the same RO write.
func (k *Kenwood) SetKenwoodRITOffset(hz int) error {
k.mu.Lock()
cur := k.panel.RITOffset
k.mu.Unlock()
return k.NudgeKenwoodRIT(hz - cur)
}
func (k *Kenwood) ClearKenwoodRIT() error {
return k.setPanel("RC;")
}