diff --git a/changelog.json b/changelog.json index 6cc4f8a..4ba65f7 100644 --- a/changelog.json +++ b/changelog.json @@ -5,13 +5,13 @@ "en": [ "Digital decodes: a station's grid square could be logged as its callsign when the message text was unusual. A grid in the callsign position is now refused.", "CW over CAT now works on a Kenwood. The KY command was sent in Elecraft's variable-length form; a Kenwood needs exactly 24 characters, so every message was refused.", - "Shared CAT is steadier and now diagnoses itself. It survives a rig answering \"busy\" just after transmit instead of dropping the link, stops repeating a PTT state the client never changed, and logs a plain explanation when another program has taken its port or when a client is set to a rig model instead of Hamlib NET rigctl.", + "Shared CAT is steadier and now diagnoses itself. It survives a rig answering \"busy\" just after transmit instead of dropping the link, stops repeating a PTT state the client never changed, and logs a plain explanation when another program has taken its port or when a client is set to a rig model instead of Hamlib NET rigctl. It also answers the lock-mode and stop-morse commands some clients send around every transmit, instead of refusing them.", "Web publishing now offers every field a QSO carries, awards included — 123 instead of 23 — from a searchable dropdown, with the chosen columns listed above it in publication order. Choose carefully: the page is public and the list includes addresses and e-mail." ], "fr": [ "Décodes digitaux : le carré locator d une station pouvait être enregistré comme son indicatif quand le texte du message sortait de l ordinaire. Un grid à la place de l indicatif est maintenant refusé.", "Le CW par CAT fonctionne sur Kenwood. La commande KY partait sous la forme Elecraft à longueur libre ; un Kenwood exige exactement 24 caractères, donc chaque message était refusé.", - "Le CAT partagé est plus solide et se diagnostique tout seul. Il survit à un rig qui répond « occupé » juste après une émission au lieu de lâcher le lien, cesse de répéter un état PTT que le client n a pas changé, et écrit une explication claire quand un autre programme lui a pris son port ou qu un client est réglé sur un modèle de rig au lieu de Hamlib NET rigctl.", + "Le CAT partagé est plus solide et se diagnostique tout seul. Il survit à un rig qui répond « occupé » juste après une émission au lieu de lâcher le lien, cesse de répéter un état PTT que le client n a pas changé, et écrit une explication claire quand un autre programme lui a pris son port ou qu un client est réglé sur un modèle de rig au lieu de Hamlib NET rigctl. Il répond aussi aux commandes de verrouillage et d arrêt du morse que certains logiciels envoient à chaque émission, au lieu de les refuser.", "La publication web propose désormais tous les champs d un QSO, awards compris — 123 au lieu de 23 — depuis une liste déroulante cherchable, les colonnes choisies étant listées au-dessus dans l ordre de publication. À choisir avec soin : la page est publique et la liste contient adresses et e-mails." ] }, diff --git a/internal/rigctld/rigctld.go b/internal/rigctld/rigctld.go index 078f971..91e76ab 100644 --- a/internal/rigctld/rigctld.go +++ b/internal/rigctld/rigctld.go @@ -276,6 +276,24 @@ func (s *Server) handle(line string) (resp string, quit bool) { return "CHKVFO 0\n", false case "\\get_powerstat", "get_powerstat": return "1\n", false + + // Three commands a client may issue as a matter of course. Refusing them with + // RPRT -11 is allowed, and a tolerant client carries on — but nothing obliges + // it to, and Nexus sends all three around every transmit. Answering costs + // nothing and removes them as suspects when something really is wrong. + case "\\get_lock_mode", "get_lock_mode": + // Truthful: OpsLog never locks the dial against its own clients. + return "0\n", false + case "\\set_lock_mode", "set_lock_mode": + // Accepted and ignored, like set_vfo below: there is no lock to set, and + // failing here would abort a client's whole transmit sequence over a + // setting that has no effect either way. + return rprt(0), false + case "\\stop_morse", "stop_morse": + // Nothing is queued here — CW over CAT is keyed by the rig's own keyer + // through the backend, not buffered in this server. "Stopped" is therefore + // accurate rather than polite. + return rprt(0), false case "q", "Q", "\\quit": return "", true