fix: log the grid the station sent, and show the SPE going off first press
Grid: RI0FA transmitted QN35 all evening and was logged with its licence holder's home square. WSJT-X's logged ADIF usually carries no GRIDSQUARE, so the lookup was the only source left — and QRZ/HamQTH describe where an operator LIVES, which for an expedition is the wrong side of the planet. The square heard on the air is now applied before the lookup runs, so refineGrid has something to defend. It still upgrades a 4-character square to a 6-character one from the same field, and still refuses a finer square from a different field. SPE: decodeCSV marks the client connected on every frame it parses, and the poll goroutine can be mid-read while PowerOff runs. The frame from a second ago landed after PowerOff had marked the amp offline and put it straight back, which is why OFF had to be pressed twice. Frames are ignored for three seconds after the off key goes out — the window is opened before the key is sent, so nothing already travelling can beat it. Time bounded rather than latched: an amp switched back on at its own front panel has to reappear without being told.
This commit is contained in:
@@ -11880,6 +11880,21 @@ func (a *App) LogUDPLoggedADIF(adifText string) (int64, error) {
|
||||
return 0, fmt.Errorf("record missing required fields (call/band/mode/date)")
|
||||
}
|
||||
|
||||
// The grid the station SENT beats any directory.
|
||||
//
|
||||
// A CQ in FT8 carries the operator's square, and it is where they are right
|
||||
// now. QRZ and HamQTH describe where they LIVE, which for an expedition is
|
||||
// the wrong side of the planet: RI0FA transmitted QN35 all evening and was
|
||||
// logged with its licence-holder's home square, because WSJT-X's ADIF carries
|
||||
// no GRIDSQUARE and the lookup was the only source left.
|
||||
//
|
||||
// Applied BEFORE the lookup, so refineGrid below sees a grid it must not
|
||||
// replace. It still upgrades a 4-character square to a 6-character one from
|
||||
// the same field.
|
||||
if g := a.lookupDecodeGrid(q.Callsign); g != "" {
|
||||
q.Grid = refineGrid(q.Grid, g)
|
||||
}
|
||||
|
||||
// ── Lookup-based enrichment ──
|
||||
// WSJT sends only call/freq/mode/RST/date. Fill Name/QTH/Country/
|
||||
// Grid/CQZ/ITUZ/DXCC/Continent via the lookup chain (QRZ/HamQTH/
|
||||
|
||||
Reference in New Issue
Block a user