add skeletons for new commands Rt, Ping and T.
[spider.git] / perl / VE7CC.pm
index 2e931777969820577dcdadf8c74d7f7f0b13e087..14ef213105541600bb806abcd3e380b7c899a879 100644 (file)
@@ -15,6 +15,7 @@ use DXDebug;
 use DXUtil;
 use Julian;
 use Prefix;
+use DXUser;
 
 use strict;
 
@@ -27,17 +28,34 @@ $main::branch += $BRANCH;
 sub dx_spot
 {
        my $self = shift;                       # this may be useful some day
-       my $freq = shift;
-       my $spotted = shift;
-       my $t = shift;
+       my $spot = ref $_[0] ? shift : \@_;
+       my $freq = $spot->[0];
+       my $spotted = $spot->[1];
+       my $t = $spot->[2];
+       my $loc_spotted = '';
+       my $loc_spotter = '';
+       my $ref = DXUser->get_current($spotted);
+       if ($ref) {
+               my $loc = $ref->qra || '';
+               $loc_spotted =substr($loc, 0, 4) if $loc;
+       }
+
+       # remove any items above the top of the max spot data
+       pop while @_ > 14;
        
-       # remove interface callsign;
-       pop;
+       # make sure both US states are defined
+       $_[12] ||= '';
+       $_[13] ||= '';
        
-       my $spotter_cc = (Prefix::cty_data($spotted))[5];
-       my $spotted_cc = (Prefix::cty_data($_[1]))[5];
+       my $spotted_cc = (Prefix::cty_data($spotted))[5];
+       my $spotter_cc = (Prefix::cty_data($_[4]))[5];
+       $ref = DXUser->get_current($_[4]);
+       if ($ref) {
+               my $loc = $ref->qra || '';
+               $loc_spotter = substr($loc, 0, 4) if $loc;
+       }
        
-       return sprintf("CC11^%0.1f^%s^", $freq, $spotted) . join('^', cldate($t), ztime($t), @_, $spotter_cc, $spotted_cc);
+       return sprintf("CC11^%0.1f^%s^", $freq, $spotted) . join('^', cldate($t), ztime($t), @$spot[3..-1], $spotted_cc, $spotter_cc, $loc_spotted, $loc_spotter);
 }
 
 1;