feat(udp): speak WSJT-X to Logger32, and lighten Sahara
"sent 1153 bytes to 127.0.0.1:2250" and nothing in Logger32. Both true: the line the operator screenshotted is titled "Setup additional WSJT/JTDX UDP sockets", and those receivers take UDP LOGGING PACKETS — the WSJT-X v2 protocol. A bare ADIF record posted to them is dropped without a word. So there is a new outbound service rather than a change to the existing one: "WSJT-X logged QSO (Logger32)" sends the same ADIF wrapped in a Logged ADIF datagram (magic 0xadbccbda, schema 2, type 12), defaulting to port 2250. The plain-text row stays for JTAlert/GridTracker-style receivers, because the two really are different wire formats and one row cannot be both. The id string is "OpsLog", not "WSJT-X": a receiver uses it to tell instances apart, and impersonating the real thing would make a second WSJT-X indistinguishable from us. Tested both ways — the header byte for byte, and a round trip back through our own ParseWSJT, since that is the same decoding every receiver applies. Sahara moves to the parchment an operator asked for: page #e6ded0, panels #f3eee2, toolbars #ded5c4, terracotta #c4501e on the buttons and the focus ring. Lighter and less saturated than the deep sand it was.
This commit is contained in:
@@ -103,6 +103,18 @@ func (m *Manager) EmitLoggedADIF(adif string) {
|
||||
}
|
||||
}
|
||||
|
||||
// EmitLoggedADIFWSJT sends the same record wrapped as a WSJT-X "Logged ADIF"
|
||||
// datagram, for receivers that speak that interface rather than plain text —
|
||||
// Logger32's additional UDP sockets among them.
|
||||
func (m *Manager) EmitLoggedADIFWSJT(adifRec string) {
|
||||
if strings.TrimSpace(adifRec) == "" {
|
||||
return
|
||||
}
|
||||
for _, c := range m.Outbound(ServiceWSJTLog) {
|
||||
m.sendTo(c, BuildWSJTLoggedADIF("OpsLog", adifRec))
|
||||
}
|
||||
}
|
||||
|
||||
// sendTo resolves the row's destination (host:port) and fires one datagram.
|
||||
//
|
||||
// A successful send is logged, not just a failure. UDP has no delivery report:
|
||||
|
||||
Reference in New Issue
Block a user