1. Incorporated sh/st, (un)set/lockout, forward/opername from Iain G0RDI
[spider.git] / perl / DXProt.pm
index 5fb684189dc67811db0e8df4eb9aafce30cbf8db..4fce82985ecb0a57c656f63ccf6c9b86e7adb757 100644 (file)
@@ -80,6 +80,7 @@ sub start
        }
        $self->state('init');
        $self->pc50_t(time);
+
        Log('DXProt', "$call connected");
 }
 
@@ -219,6 +220,7 @@ sub normal
                                my $user = DXUser->get_current($call);
                                $user = DXUser->new($call) if !$user;
                                $user->node($node->call);
+                               $user->lastin($main::systime);
                                $user->homenode($node->call) if !$user->homenode;
                                $user->put;
                        }
@@ -269,6 +271,7 @@ sub normal
                                        $user->sort('A');
                                        $user->node($call);
                                        $user->homenode($call);
+                                       $user->lastin($main::systime);
                                        $user->put;
                                }
                        }
@@ -388,13 +391,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]);
                        }
@@ -532,6 +531,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;
 }