fix(winkeyer): perform K1EL's full opening handshake
An operator's log showed the whole fault in its first line: "connected on
COM3 — no reply — the keyer did not answer Host Open", followed by seven
configuration commands and two calls sent as Morse. Nothing was listening.
Reporting a link as up and then writing to it regardless is the part worth
fixing; the handshake is why it was down.
K1EL's Application Interface Guide gives the sequence, and we did one step
of it. Now all of it:
- DTR on, RTS OFF. K1EL's own init sets DTR_CONTROL_ENABLE with
RTS_CONTROL_DISABLE, and on a serial WinKeyer those lines ARE the power
supply — DTR feeds the 3.3 V regulator, RTS provides the negative rail.
go.bug.st/serial defaults both to true, so we drove RTS high on every
connect without a line of code saying so.
- 400 ms after the lines come up, for a WK1 still booting off DTR.
- Three 0x13 nulls to resync the command parser. A keyer left part-way
through a command by whoever spoke to it last would absorb Host Open as
a parameter — the everyday cause of a silent WinKeyer, and one the
operator can do nothing about from the outside.
- An echo test (0x00 0x04 0x55) before trusting the port at all. This is
the step that answers "is there a keyer here", and connecting now fails
on it, with the byte that came back when something else replied.
The whole handshake is retried once, since the first attempt's nulls are
what clear a confused parser. Tested against a fake port that reproduces
each failure: absent, mid-command, and echoing but versionless.
This commit is contained in:
+6
-2
@@ -15,7 +15,9 @@
|
||||
"ADIF import: QSL_SENT_VIA no longer lands in the manager field, and QSL_RCVD_VIA is no longer discarded. Both are exported.",
|
||||
"QSL: logs where a routing word sits in the manager field are counted at startup and corrected only if you accept.",
|
||||
"QSL designer: copying a design from another profile failed with \"hero photo not found\" — the pictures were never copied.",
|
||||
"QSL designer: duplicating a profile cloned its card designs without their pictures, leaving designs that could not be printed."
|
||||
"QSL designer: duplicating a profile cloned its card designs without their pictures, leaving designs that could not be printed.",
|
||||
"WinKeyer: the opening handshake now follows K1EL’s own sequence (RTS off, parser resync, echo test), which fixes keyers that stayed silent.",
|
||||
"WinKeyer: a port where no keyer answers now reports the failure instead of showing “connected” and sending everything into the void."
|
||||
],
|
||||
"fr": [
|
||||
"Amplificateurs : coche ceux qui partagent un combiner et ON, OFF et OPERATE agissent sur tous à la fois. Chacun garde ses mesures.",
|
||||
@@ -30,7 +32,9 @@
|
||||
"Import ADIF : QSL_SENT_VIA ne se retrouve plus dans le champ manager, et QSL_RCVD_VIA n’est plus perdu. Les deux sont exportés.",
|
||||
"QSL : les logs où un mode d’envoi occupe le champ manager sont comptés au démarrage et corrigés seulement si vous acceptez.",
|
||||
"Concepteur QSL : copier un design depuis un autre profil échouait sur « photo introuvable » — les images n’étaient jamais copiées.",
|
||||
"Concepteur QSL : dupliquer un profil clonait ses designs sans leurs images, donnant des cartes impossibles à imprimer."
|
||||
"Concepteur QSL : dupliquer un profil clonait ses designs sans leurs images, donnant des cartes impossibles à imprimer.",
|
||||
"WinKeyer : la séquence d’ouverture suit désormais celle de K1EL (RTS bas, resync, test d’écho), ce qui réveille les manipulateurs muets.",
|
||||
"WinKeyer : un port où aucun manipulateur ne répond signale l’échec au lieu d’afficher « connecté » et d’émettre dans le vide."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user