fix(rotator): the Rotator Genius is a 360° controller, and OpsLog says so

Correcting the previous commit, which offered a 450° rotator range for the
Rotator Genius. It cannot do it.

The evidence is the operator's own box and 4O3A's manual together. His Rotator
Configuration reads "Limits: 5 to 4" — that is where the mechanical stop sits
within ONE turn, a dead zone at four and a half degrees, not a range of travel.
The manual is unambiguous about what happens past it: "you will not be able to
give it a target beyond the limits". A 450° mast on a Rotator Genius is a 450°
mast used as a 360° one, and that limit belongs to the controller.

So the setting goes. Offering an operator a 450° option that the box can only
ever refuse is worse than not offering one — it spends their evening proving
that the software was wrong about their station.

What stays is the half that was genuinely ours: GoTo no longer clamps to 360
before sending, and the limits the Genius reports on every heading query are now
read instead of skipped over. The overlap branch is driven entirely by what the
device answers — no setting, no assumption — so a controller that one day
reports a range past 360 is driven through it without a line changing here.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
2026-09-09 23:58:49 +02:00
co-authored by Claude Opus 5
parent 3dad00f8ad
commit 3c93684b2b
3 changed files with 32 additions and 59 deletions
+9 -5
View File
@@ -5136,11 +5136,15 @@ function SettingsModalImpl({ onClose, onSaved, initialSection, onMainPaneChanged
// does its own overlap; two programs each deciding to go the long
// way round is how an antenna unwinds mid-pass.
//
// A Rotator Genius is in between: it has its OWN limits, and they
// win — this setting only tells OpsLog it may ask for the far side
// of the overlap at all. If the Genius is configured 360°, it says
// so in the log rather than sending commands the box refuses.
const ownsOverlap = isERC || isEasycomm || isRG;
// NOT offered for a Rotator Genius. Its manual is plain — "you will
// not be able to give it a target beyond the limits" — and its
// Limits fields say where the mechanical stop sits within ONE turn
// ("5 to 4" is a dead zone at four and a half degrees), not how far
// the mast travels. Offering 450° there would be offering a setting
// that can only ever be refused by the box. Whether the overlap is
// used is decided from what the Genius itself reports, in
// rotgeniusGoTo, and needs no setting at all.
const ownsOverlap = isERC || isEasycomm;
return (
<div key={dev.id || i} className="rounded-xl border border-border bg-card/40 p-3 space-y-3">
<div className="flex items-center gap-2">