fix(yaesu): mic gain scale, 200 W models, and a NAR button that did nothing
Reported from a real FTDX101, and each one is a different kind of wrong. MIC GAIN was read and written through the 0-255 scale the audio gains use, but the CAT reference gives MG000-100. A rig set to 80 therefore showed 38, and moving the slider sent 204 — outside the range the radio accepts, so it refused the command and the slider sprang back. That snap-back was the symptom; the scale was the cause. POWER was capped at 100 W by the slider, not by the radio. There is no CAT command for 'how much power can you make', so the ceiling comes from the model name, with the rig believed if it ever reports more than the table expects — it has just proved what it can do. NAR is the narrow IF filter, and on a rig that does not implement NA the button showed a state the radio never gave and did nothing when pressed, which reads as a fault in the radio. Now shown only when the rig answers, with a tooltip saying what it is. Also: the frequency readout steps the Hz digits under the wheel, not just the kHz ones. Zero-beating a CW signal is a few tens of Hz and it was the one move the display would not make. And the split chaser is CW-only — its marker comes from a CW skimmer.
This commit is contained in:
+19
-5
@@ -244,10 +244,15 @@ function fmtFreqDots(mhzStr: string): string {
|
||||
}
|
||||
|
||||
// FreqWheelDisplay renders a frequency (MHz string) like fmtFreqDots — MHz.kHz.Hz
|
||||
// — but makes the three kHz digits scroll-sensitive: rolling the mouse wheel over
|
||||
// the hundreds / tens / units-of-kHz digit steps the frequency by 100 / 10 / 1 kHz
|
||||
// (up = wheel up). onNudge receives the delta in Hz. The MHz and Hz digits are
|
||||
// static (only kHz stepping was requested). Used in the header + compact top bar.
|
||||
// — and makes the kHz AND Hz digits scroll-sensitive: rolling the wheel over a
|
||||
// digit steps the frequency by that digit (100/10/1 kHz, then 100/10/1 Hz; up =
|
||||
// wheel up). onNudge receives the delta in Hz.
|
||||
//
|
||||
// The Hz digits were static at first, on the grounds that only kHz stepping had
|
||||
// been asked for. An FTDX101 operator put it plainly: the fine tuning is exactly
|
||||
// what a mouse is wanted for — zero-beating a CW signal or nudging onto an SSB
|
||||
// voice is a few tens of Hz, and it was the one move the display would not make.
|
||||
// The MHz digits stay static: a wheel notch that changes band is not fine tuning.
|
||||
function FreqWheelDisplay({ mhz, onNudge, className, placeholder = '—.———.———' }: {
|
||||
mhz: string; onNudge: (deltaHz: number) => void; className?: string; placeholder?: string;
|
||||
}) {
|
||||
@@ -257,6 +262,7 @@ function FreqWheelDisplay({ mhz, onNudge, className, placeholder = '—.——
|
||||
const khz = frac.slice(0, 3); // [hundreds, tens, units] of kHz
|
||||
const hz = frac.slice(3, 6);
|
||||
const stepHz = [100_000, 10_000, 1_000]; // per kHz digit: 100 / 10 / 1 kHz
|
||||
const stepHzFine = [100, 10, 1]; // per Hz digit
|
||||
return (
|
||||
<span className={className}>
|
||||
{intPart}.
|
||||
@@ -268,7 +274,15 @@ function FreqWheelDisplay({ mhz, onNudge, className, placeholder = '—.——
|
||||
{d}
|
||||
</span>
|
||||
))}
|
||||
.{hz}
|
||||
.
|
||||
{hz.split('').map((d, i) => (
|
||||
<span key={'h' + i}
|
||||
onWheel={(e) => { if (e.ctrlKey || e.metaKey) return; e.preventDefault(); e.stopPropagation(); onNudge(e.deltaY < 0 ? stepHzFine[i] : -stepHzFine[i]); }}
|
||||
className="cursor-ns-resize rounded-[2px] hover:bg-primary/25 transition-colors"
|
||||
title="Scroll to change frequency">
|
||||
{d}
|
||||
</span>
|
||||
))}
|
||||
</span>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user