fix: CW speed drove the wrong keyer; survey the meters to find the SWR one

Speed: with DTR/RTS line keying the PC does the timing, so the Yaesu console's
slider — which sets the rig's internal keyer — changed nothing audible and looked
broken. Both entry points now go through one handler that drives the engine
actually sending, and additionally sets the rig's own keyer whenever a Yaesu is
on CAT, so the radio's front panel shows the same figure.

SWR: an operator reads 80 on the bar with a real SWR of 1.1. That is the shape of
reading the WRONG METER — ALC, say — not of a scaling error, and which RM index
carries which meter is not consistent across the family. Rather than guess again
and move the wrong number somewhere else, the first transmission now logs RM1
through RM6 raw, once. The log will say which index is which on this radio, and
the mapping can then be corrected as a fact.
This commit is contained in:
2026-07-29 13:32:29 +02:00
parent adadb632fa
commit 48d92ff547
5 changed files with 58 additions and 11 deletions
+9 -2
View File
@@ -223,7 +223,14 @@ function Row({ label, children }: { label: string; children: React.ReactNode })
);
}
export function YaesuPanel({ onReportRST }: { onReportRST?: (rst: string) => void }) {
export function YaesuPanel({ onReportRST, onKeySpeed }: {
onReportRST?: (rst: string) => void;
// Told whenever the operator moves the CW speed here, so the app can keep the
// keyer that is ACTUALLY sending in step. With DTR/RTS line keying the PC does
// the timing and the rig's internal keyer speed changes nothing audible — the
// slider looked broken because it was driving the wrong keyer.
onKeySpeed?: (wpm: number) => void;
}) {
const { t } = useI18n();
const [st, setSt] = useState<YaesuState>(ZERO);
// The frequency being LISTENED to. RigState follows ADIF, where freq_hz is the
@@ -465,7 +472,7 @@ export function YaesuPanel({ onReportRST }: { onReportRST?: (rst: string) => voi
<Card icon={Radio} title={t('yaesu.cw')}>
<Row label="SPEED">
<Slider value={view.key_speed || 20} min={4} max={60} accent="var(--primary)"
onChange={(v) => push('key_speed', v, () => SetYaesuKeySpeed(v))} />
onChange={(v) => { push('key_speed', v, () => SetYaesuKeySpeed(v)); onKeySpeed?.(v); }} />
<span className="w-12 text-right text-xs font-mono tabular-nums text-muted-foreground">{view.key_speed || 20} wpm</span>
</Row>
<div className="flex items-center gap-2 flex-wrap">