fix(winkeyer): send the probe the way a working client sends it

Logger32's WinKeyer debug against the K3NG that will not answer OpsLog is a
capture of the exchange working, on the same keyer and the same port:

    Sent: 13 13 13 00 04 55
    Rcvd: 55            (72 ms)
    Sent: 00 02  Host open
    Rcvd: 23            (WK2 v23)

That is the sequence I already send. The difference is the grouping: Logger32
puts the three nulls and the echo probe in ONE write, and we split them with a
50 ms pause and a buffer purge in between. On a keyer that reboots when the
port opens, that pause is a window for it to come up mid-sequence and swallow
half of it — and there was nothing to wait for, since a null produces no reply.

The handshake bytes are now logged unconditionally, not behind the diagnostic
option. "No WinKeyer answered" cannot be told apart from a wrong port, a wrong
baud rate, a keyer still booting, or another program holding the line. The
bytes can, and it is four lines per connect attempt.
This commit is contained in:
2026-08-15 10:28:11 +02:00
parent 92ea98bcfa
commit 3def789742
3 changed files with 50 additions and 16 deletions
+2
View File
@@ -102,6 +102,8 @@ func TestHostOpenFollowsK1ELSequence(t *testing.T) {
if ver != 23 {
t.Errorf("version = %d, want 23", ver)
}
// One write for the six probe bytes, then Host Open — the order and the
// grouping of a Logger32 capture against a real K3NG.
want := []byte{
cmdNull, cmdNull, cmdNull,
cmdAdmin, adminEcho, echoProbe,