chore: release v0.27.12
This commit is contained in:
+27
-4
@@ -93,14 +93,27 @@ func keepKnownBands(want []string) []string {
|
||||
return out
|
||||
}
|
||||
|
||||
// pskrMaxGrids bounds the receiver squares the broker is asked to filter on.
|
||||
// Each is one subscription, and the traffic follows the area: 2000 km is about
|
||||
// 615 squares, which the broker takes in batches without complaint. The cap is
|
||||
// there so an absurd radius cannot turn into thousands of subscriptions — past
|
||||
// it the nearest squares are kept, and the log says how many.
|
||||
const pskrMaxGrids = 900
|
||||
|
||||
// bandOpenNearKm reads the stored receiver radius, falling back to the default
|
||||
// for anything unset or out of range. The bounds are the two ways to make the
|
||||
// watch useless: below 25 km almost nobody is ever near enough to hear anything,
|
||||
// and past 1000 km the reports stop being about the operator's own path — which
|
||||
// is the entire premise of measuring from a receiver rather than a transmitter.
|
||||
// and past 3000 km a "nearby" receiver is on the far side of a continent, which
|
||||
// says nothing about the operator's own path.
|
||||
//
|
||||
// The ceiling was 1000 km, chosen with Europe in mind, where that radius holds a
|
||||
// dozen countries' worth of receivers. It is the wrong number in VK: a station
|
||||
// there can have almost nobody inside 300 km, and the chase list stayed empty
|
||||
// not because nothing was on the air but because nothing was listening close
|
||||
// enough to count.
|
||||
func bandOpenNearKm(raw string) int {
|
||||
n, err := strconv.Atoi(strings.TrimSpace(raw))
|
||||
if err != nil || n < 25 || n > 1000 {
|
||||
if err != nil || n < 25 || n > 3000 {
|
||||
return pskr.DefaultNearKm
|
||||
}
|
||||
return n
|
||||
@@ -194,7 +207,17 @@ func (a *App) startBandOpenFeed() {
|
||||
// hundred survived the NearKm test below. One ring of squares — about the
|
||||
// same 300 km — is 0.2 to 1.2 a second, and the same for every operator,
|
||||
// where filtering by DXCC ranged from 1.2 (OH) to 72.5 (K).
|
||||
rxGrids := geo.NeighbourGrids(a.opLat, a.opLon, 1)
|
||||
//
|
||||
// The set follows the radius the operator asked for. It was one fixed ring
|
||||
// whatever they set — about 300 km — so raising the radius bought nothing:
|
||||
// the reports that would have satisfied it were never sent to us in the
|
||||
// first place, and an operator in a thinly-populated region who widened the
|
||||
// circle to find some receivers saw no change at all.
|
||||
rxGrids := geo.GridsWithin(a.opLat, a.opLon, float64(s.NearKm), pskrMaxGrids)
|
||||
if len(rxGrids) == 0 {
|
||||
rxGrids = geo.NeighbourGrids(a.opLat, a.opLon, 1)
|
||||
}
|
||||
applog.Printf("pskr: receiver filter — %d squares within %d km of the station", len(rxGrids), s.NearKm)
|
||||
|
||||
var onGrid func(call, grid string)
|
||||
if chaseGrids {
|
||||
|
||||
Reference in New Issue
Block a user