+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.
$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);
}
$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);
}
}
# 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)
# 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
$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;
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;
}
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;
}
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;