fix: Icom over LAN froze on the last frequency after WSJT-X released the rig
The network backend treated "control link alive but no CI-V reply" as the rig being in standby, and tolerated it WITHOUT BOUND. When another program takes the CI-V session — WSJT-X through OmniRig, or the Remote Utility — the rig goes on answering pings on the control stream while sending us nothing at all. Alive() stayed true, so ReadState returned the cached frequency with err == nil, the Manager never saw a failure, never reconnected, and re-published a frozen number with a fresh timestamp on every poll. Only restarting OpsLog cleared it. Bounded now, on the last SUCCESSFUL read. Past the grace the error is reported so the Manager tears the session down and reconnects, which re-takes the CI-V stream. Also fatal immediately: the CI-V reader goroutine having exited — no read can ever succeed after that, however healthy the control link looks. The grace backs off to minutes when the silence persists, because the two cases pull opposite ways: a stolen session recovers on the first attempt, while a rig switched OFF is silent for hours and re-tearing its session every 30 s would blink the panel — and its ON button — away continuously. A good read resets it. The decision table is pinned by a test; the standby case (never answered since connect) keeps the old tolerate-for-ever behaviour.
This commit is contained in:
@@ -3,10 +3,12 @@
|
||||
"version": "0.21.9",
|
||||
"date": "2026-07-28",
|
||||
"en": [
|
||||
"Icom over the LAN: the frequency no longer stays frozen after another program (WSJT-X through OmniRig, the Remote Utility) takes the CI-V session. The rig kept answering pings while sending nothing, so OpsLog showed the last known frequency until it was restarted; it now reconnects on its own.",
|
||||
"The offline FCC (ULS) database now answers while you type a US callsign, filling state, county and a 6-character grid. It was only applied when the QSO was saved, so without a QRZ.com or HamQTH account you saw nothing but the country and a coarse grid. Online lookups still win — ULS only fills what is blank.",
|
||||
"CQ and ITU zones you correct by hand in your profile stay corrected. They are derived from cty.dat, which gives the zones of the whole entity — in a country spanning several, the automatic value is wrong and it came back at every restart. They now only fill in when empty, and recompute when the callsign or grid changes."
|
||||
],
|
||||
"fr": [
|
||||
"Icom via le réseau : la fréquence ne reste plus figée après qu'un autre programme (WSJT-X via OmniRig, la Remote Utility) a pris la session CI-V. La radio continuait de répondre aux pings sans rien émettre, si bien qu'OpsLog affichait la dernière fréquence connue jusqu'à son redémarrage ; il se reconnecte désormais tout seul.",
|
||||
"La base FCC (ULS) hors ligne répond désormais pendant la saisie d'un indicatif américain, en remplissant l'état, le comté et un locator 6 caractères. Elle n'était appliquée qu'à l'enregistrement du QSO : sans compte QRZ.com ou HamQTH, vous ne voyiez que le pays et un locator approximatif. Les recherches en ligne restent prioritaires — l'ULS ne comble que ce qui est vide.",
|
||||
"Les zones CQ et ITU corrigées à la main dans votre profil restent corrigées. Elles proviennent de cty.dat, qui donne les zones de l'entité entière — dans un pays qui en couvre plusieurs, la valeur automatique est fausse et revenait à chaque redémarrage. Elles ne se remplissent désormais que si le champ est vide, et se recalculent quand l'indicatif ou le locator change."
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user