From ee55bc4f9cf0763f17c9698ab4c7d47a4e7008ce Mon Sep 17 00:00:00 2001 From: Dirk Koopman Date: Mon, 31 Jan 2022 16:01:24 +0000 Subject: [PATCH] use base call for rbn set/seeme --- Changes | 3 +++ perl/DXProtHandle.pm | 9 ++++++--- perl/RBN.pm | 19 ++++++++++++------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/Changes b/Changes index f44a0b65..39877aa3 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,6 @@ +31Jan22======================================================================= +1. Fix set/seeme to use the basecall (so all of G1TLH, G1TLH-1, G1TLH-2 will + get CW RBN spots for G1TLH). 29Jan22======================================================================= 1. Implement RBN set/seeme which displays any passing RBN spots for your callsign in "raw" format. diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index 2b0a491b..6ba38a43 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -1578,13 +1578,16 @@ sub _decode_pc92_call $version = 0; } $version =~ s/\D//g; + $version = 0 unless $version && $version =~ /^[0-9]+$/; $build =~ s/^0\.//; $build =~ s/\D//g; + $build = 0 unless $build && $build =~ /^[0-9]+$/; if ($ip) { $ip =~ s/,/:/g; $ip =~ s/^::ffff://i; + $ip = '' unless is_ipaddr($ip); } - dbg("$icall = '" . join("', '", $call, $is_node, $is_extnode, $here, $version, $build, $ip) . "'") if isdbg('pc92'); + dbg("'$icall' = '" . join("', '", $call, $is_node, $is_extnode, $here, $version, $build, $ip) . "'") if isdbg('pc92'); return ($call, $is_node, $is_extnode, $here, $version+0, $build+0, $ip); } @@ -1666,9 +1669,9 @@ sub _add_thingy $user->sort('S'); dbg("PCProt::_add_thingy node $call v: $version b: $build sort ($old) updated to " . $user->sort); } elsif ($user->is_spider && ($version < 3000 || ($version > 4000 && $version < 5455))) { - unless ($version == 5000 && $build == 0) { + unless ($version > 0 && $build == 0) { $user->sort('A'); - $build //= 0; + $build ||= 0; dbg("PCProt::_add_thingy node $call v: $version b: $build sort ($old) downgraded to " . $user->sort); } } diff --git a/perl/RBN.pm b/perl/RBN.pm index 7ad9093b..804813d4 100644 --- a/perl/RBN.pm +++ b/perl/RBN.pm @@ -75,10 +75,11 @@ our $startup_delay = 5*60; # don't send anything out until this timer has expir # this is to allow the feed to "warm up" with duplicates # so that the "big rush" doesn't happen. -our $minspottime = 30*60; # the time between respots of a callsign - if a call is +our $respottime = 30*60; # the time between respots of a callsign - if a call is # still being spotted (on the same freq) and it has been # spotted before, it's spotted again after this time - # until the next minspottime has passed. + # until the next respottime has passed. + our $beacontime = 5*60; # same as minspottime, but for beacons (and shorter) @@ -90,9 +91,13 @@ our $limbotime = 5*60; # if there are fewer than $minqual candidates and $dwe # simply be that it is not in standard spot coverage. (ask G4PIQ # about this). +our $cachetime = 60*60; # The length of time spot data is cached + our $filterdef = $Spot::filterdef; # we use the same filter as the Spot system. Can't think why :-). my $spots; # the GLOBAL spot cache +my $qrg; # the GlOBAL (ephemeral) qrg cache (generated on re-read of cache) + my %runtime; # how long each channel has been running @@ -149,7 +154,7 @@ sub new $self->{norawhour} = 0; $self->{sort} = 'N'; $self->{lasttime} = $main::systime; - $self->{minspottime} = $minspottime; + $self->{respottime} = $respottime; $self->{beacontime} = $beacontime; $self->{showstats} = 0; $self->{pingint} = 0; @@ -389,7 +394,7 @@ sub normal my $respot = 0; if ($cand && ref $cand) { if (@$cand <= CData) { - if ($self->{minspottime} > 0 && $now - $cand->[CTime] < $self->{minspottime}) { + if ($self->{respottime} > 0 && $now - $cand->[CTime] < $self->{respottime}) { dbg("RBN: key: '$sp' call: $call qrg: $qrg DUPE \@ ". atime(int $cand->[CTime])) if $dbgrbn && isdbg('rbn'); return; } @@ -854,7 +859,7 @@ sub per_10_minute next if $k =~ /^O\|/; next if $k =~ /^SKIM\|/; - if ($main::systime - $cand->[CTime] > $minspottime*2) { + if ($main::systime - $cand->[CTime] > $cachetime) { delete $spots->{$k}; ++$removed; } @@ -959,12 +964,12 @@ sub check_cache sub add_seeme { my $call = shift; - $seeme{$call} = 1; + $seeme{basecall($call)} = 1; } sub del_seeme { my $call = shift; - delete $seeme{$call}; + delete $seeme{basecall($call)}; } 1; -- 2.34.1