}
$self->state('init');
$self->pc50_t(time);
+
Log('DXProt', "$call connected");
}
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;
$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;
}
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
} 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]);
}
# 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;
}