package Thingy::Dx;
use vars qw($VERSION $BRANCH);
-$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ );
-$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0));
-$main::build += $VERSION;
-$main::branch += $BRANCH;
+
+main::mkver($VERSION = q$Revision$);
use DXChannel;
use DXDebug;
my $thing = shift;
unless ($thing->{Aranea}) {
my $sd = $thing->{spotdata};
- my @items = (
- f=>$sd->[0],
- c=>$sd->[1],
- );
- push @items, ('b', $sd->[4]) unless $thing->{user};
- push @items, ('st', sprintf("%X", $sd->[2] / 60), 'o', $sd->[7]) unless $sd->[7] eq $main::mycall;
- push @items, ('i', $sd->[3]) if $sd->[3];
- $thing->{Aranea} = Aranea::genmsg($thing, 'DX', @items);
+ $thing->{f} = $sd->[0];
+ $thing->{c} = $sd->[1];
+ $thing->{b} = $sd->[4] unless $thing->{user};
+ my $t = int($sd->[2] / 60);
+ $thing->{t} = sprintf("%X", $t) unless $t eq int($main::systime / 60);
+ $thing->{o} = $sd->[7] unless $sd->[7] eq $main::mycall;
+ $thing->{i} = $sd->[3] if $sd->[3];
+ $thing->{Aranea} = Aranea::genmsg($thing, [qw(f c b t o i)]);
}
return $thing->{Aranea};
}
{
my $thing = shift;
return unless $thing;
- my $t = hex($thing->{st}) if exists $thing->{st};
- $t ||= $thing->{time} / 60;
+ my $t = hex($thing->{t}) if exists $thing->{t};
+ $t ||= int($thing->{time} / 60); # if it is an aranea generated
+ my $by = $thing->{b} || $thing->{fromuser} || $thing->{user} || $thing->{origin};
my @spot = Spot::prepare(
$thing->{f},
$thing->{c},
$t*60,
($thing->{i} || ''),
- ($thing->{b} || $thing->{fromuser} || $thing->{user} || $thing->{origin}),
+ $by,
($thing->{o} || $thing->{origin}),
);
+ $spot[4] = $by; # don't modify the spotter SSID
$thing->{spotdata} = \@spot;
return $thing;
}
unless ($thing->{DXProt}) {
my $sd = $thing->{spotdata};
my $hops = $thing->{hops} || DXProt::get_hops(11);
+ $hops = "H$hops" unless $hops =~ /^H/;
my $text = $sd->[3] || ' ';
- $text =~ s/\^/%5E/g;
+ $text =~ s/\^/\%5E/g;
my $t = $sd->[2];
- $thing->{DXProt} = sprintf "PC11^%.1f^$sd->[1]^%s^%s^$text^$sd->[4]^$sd->[7]^$hops^~", $sd->[0], cldate($t), ztime($t);
+ $thing->{DXProt} = sprintf "PC11^%.1f^$sd->[1]^%s^%s^%s^$sd->[4]^$sd->[7]^$hops^~", $sd->[0], cldate($t), ztime($t), $text;
}
return $thing->{DXProt};
}
my $dxchan = shift;
my $spot = $thing->{spotdata};
- if (Spot::dup(@$spot[0..4])) {
+ if (Spot::dup(@$spot[0..4,5])) {
dbg("PCPROT: Duplicate Spot ignored\n") if isdbg('chanerr');
return;
}
my $thing = shift;
my $dxchan = shift;
- # global spot filtering on INPUT
+ # global spot filtering on OUTPUT
if ($dxchan->{spotsfilter}) {
my ($filter, $hops) = $dxchan->{spotsfilter}->it($thing->{spotdata});
unless ($filter) {