X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProt.pm;h=9831e3965c4d47ee17797b550772ee1d6cf5d9ee;hb=4c59d1c82c05dd8dd36fcf5a6c9375f91fafa69d;hp=ec49fedd3e61069b5921ab3b4e26c37603182b91;hpb=4d3067793942b3f4518615906dde50db5b76464a;p=spider.git diff --git a/perl/DXProt.pm b/perl/DXProt.pm index ec49fedd..9831e396 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -38,6 +38,7 @@ sub init { my $user = DXUser->get($main::mycall); $me = DXProt->new($main::mycall, undef, $user); + $me->{here} = 1; # $me->{sort} = 'M'; # M for me } @@ -79,6 +80,7 @@ sub start } $self->state('init'); $self->pc50_t(time); + Log('DXProt', "$call connected"); } @@ -203,6 +205,7 @@ sub normal last SWITCH if !$node; # ignore if havn't seen a PC19 for this one yet my $i; + for ($i = 2; $i < $#field; $i++) { my ($call, $confmode, $here) = $field[$i] =~ /^(\S+) (-) (\d)/o; next if length $call < 3; @@ -217,8 +220,9 @@ sub normal $call =~ s/-\d+$//o; # remove ssid for users my $user = DXUser->get_current($call); $user = DXUser->new($call) if !$user; - $user->node($node->call); $user->homenode($node->call) if !$user->homenode; + $user->node($node->call); + $user->lastin($main::systime); $user->put; } @@ -266,10 +270,11 @@ sub normal if (!$user) { $user = DXUser->new($call); $user->sort('A'); - $user->node($call); $user->homenode($call); - $user->put; + $user->node($call); } + $user->lastin($main::systime); + $user->put; } # queue up any messages @@ -387,13 +392,9 @@ sub normal } elsif ($field[2] == 2) { $user->qth($field[3]); } elsif ($field[2] == 3) { - my ($latd, $latm, $latl, $longd, $longm, $longl) = split /\s+/, $field[3]; - $longd += ($longm/60); - $longd = 0-$longd if (uc $longl) eq 'W'; - $user->long($longd); - $latd += ($latm/60); - $latd = 0-$latd if (uc $latl) eq 'S'; - $user->lat($latd); + my ($lat, $long) = DXBearing::stoll($field[3]); + $user->lat($lat); + $user->long($long); } elsif ($field[2] == 4) { $user->homenode($field[3]); } @@ -531,6 +532,7 @@ sub finish # now broadcast to all other ak1a nodes that I have gone broadcast_ak1a(pc21($call, 'Gone.'), $self); + Log('DXProt', $call . " Disconnected"); $ref->del() if $ref; } @@ -606,6 +608,7 @@ sub broadcast_users foreach $chan (@chan) { next if grep $chan == $_, @except; + $s =~ s/\a//og if !$chan->{beep}; $chan->send($s); # send it if it isn't the except list } }