+31Jan22=======================================================================
+1. Set $RBN::respottime to 3 minutes. NOTE change of name from
+ $RBN::minspottime.
+2. Allow callsigns connected to a node with an SSID to get SEEME RBN spots
+ for their base callsigns. So G1TLH-2, G1TLH-7 will get **SEEME** RBN spots
+ if G1TLH is spotted on the RBN system - even is are both connected to the
+ node and G1TLH is not. Each call is unique and each callsign (variation)
+ must have done a set/seeme + set/skimmer. .
29Jan22=======================================================================
1. Implement RBN set/seeme which displays any passing RBN spots for your
callsign in "raw" format.
# this is to allow the feed to "warm up" with duplicates
# so that the "big rush" doesn't happen.
-our $respottime = 30*60; # the time between respots of a callsign - if a call is
+our $respottime = 3*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 respottime has passed.
#
# But before we do anything, if this call is in the seeme hash then just send the spot to them
#
- if (exists $seeme{$call} && (my $scall = $seeme{basecall($call)})) {
- my $uchan = DXChannel::get($call);
- if ($uchan) {
- if ($uchan->is_user) {
- if (isdbg('seeme')) {
- dbg("seeme: $line");
- dbg( qq{seemme:decode or:$origin qr:$qrg ca:$call mo:$mode s:$s m:$m sp:$spd u:$u sort:$sort t:$t tx:$tx qra:$qra});
+ if (exists $seeme{$call} && (my $ref = $seeme{$call})) {
+ foreach my $rcall ( @$ref) {
+ my $uchan = DXChannel::get($rcall);
+ if ($uchan) {
+ if ($uchan->is_user) {
+ if (isdbg('seeme')) {
+ dbg("seeme: $line");
+ dbg( qq{seemme:decode or:$origin qr:$qrg ca:$call mo:$mode s:$s m:$m sp:$spd u:$u sort:$sort t:$t tx:$tx qra:$qra});
+ }
+ my @s = Spot::prepare($qrg, $call, $utz, sprintf("%-3s %2ddB **SEEME**", $mode, $s), $origin.'-#');
+ my $buf = $uchan->format_dx_spot(@s);
+ dbg("seeme: result '$buf'") if isdbg('seeme');
+ $uchan->local_send('S', $buf);
+ } else {
+ LogDbg("RBN Someone is playing silly persons $rcall is not a user and cannot do 'seeme', ignored and reset");
+ del_seeme($rcall);
}
- my @s = Spot::prepare($qrg, $call, $utz, sprintf("%-3s %2ddB **SEEME**", $mode, $s), $origin.'-#');
- my $buf = $uchan->format_dx_spot(@s);
- dbg("seeme: result '$buf'") if isdbg('seeme');
- $uchan->local_send('S', $buf) if $scall;
- } else {
- LogDbg("RBN Someone is playing silly persons $call is not a user and cannot do 'seeme', ignored and reset");
- delete $seeme{$call};
}
}
}
+
# find it?
my $cand = $spots->{$sp};
unless ($cand) {
my $self = shift;
my $quality = shift;
my $cand = shift;
-
+
++$self->{norbn};
++$self->{norbn10};
++$self->{norbnhour};
sub add_seeme
{
my $call = shift;
- $seeme{basecall($call)} = 1;
+ my $base = basecall($call);
+ my $ref = $seeme{$base} || [];
+ push @$ref, $call unless grep $_ eq $call, @$ref;
+ $seeme{$base} = $ref;
}
sub del_seeme
{
my $call = shift;
- delete $seeme{basecall($call)};
+ my $base = basecall($call);
+ my $ref = $seeme{$base};
+ return unless @$ref;
+
+ @$ref = grep {$_ ne $call} @$ref;
+ if (@$ref) {
+ $seeme{$base} = $ref;
+ } else {
+ delete $seeme{basecall($call)};
+ }
}
1;