feat(flex): send SmartSDR's spot priority; fix(chase): the same station on the same slot has nothing left to give
The panadapter has finite room: spots close in frequency are stacked behind a '+' and only one is drawn, chosen by PRIORITY — a parameter 'spot add' accepts and OpsLog never sent. So a new entity sat invisible behind three stations already in the log. DXHunter has sent it for years; the tiers here are the same idea in the operator's own words: the entity never worked (with my own callsign, for a multi-op), then band/mode/slot, then the reference hunts, then everything else. And a callsign already worked on this exact band and mode stops advertising a need. Working it again cannot turn a missing QSL into a confirmation — the QSO is already there — so shouting NEW DXCC over a station worked an hour ago only teaches an operator to distrust the colour. The need is real and stays on every OTHER station of the entity, which is where it can be answered. Applied on both paths out of the verdict, including the early one that leaves the loop first.
This commit is contained in:
@@ -1557,6 +1557,10 @@ func (f *Flex) SendSpot(s SpotInfo) error {
|
||||
if hadOld {
|
||||
f.send(fmt.Sprintf("spot remove %d", old))
|
||||
}
|
||||
prio := ""
|
||||
if s.Priority >= 1 && s.Priority <= 5 {
|
||||
prio = fmt.Sprintf(" priority=%d", s.Priority)
|
||||
}
|
||||
cmd := fmt.Sprintf("spot add rx_freq=%.6f callsign=%s color=%s source=OpsLog lifetime_seconds=%d trigger_action=Tune timestamp=%d",
|
||||
float64(s.FreqHz)/1e6, call, color, life, time.Now().Unix())
|
||||
// Convert to a real Flex mode (USB/LSB/CW/DIGU/…): SmartSDR only switches the
|
||||
@@ -1575,6 +1579,7 @@ func (f *Flex) SendSpot(s SpotInfo) error {
|
||||
if c := flexEncode(s.Comment); c != "" {
|
||||
cmd += " comment=" + c
|
||||
}
|
||||
cmd += prio
|
||||
seq := f.send(cmd)
|
||||
if seq > 0 {
|
||||
// Remember which call this add was for; the R<seq> response carries the
|
||||
|
||||
Reference in New Issue
Block a user