a80d0ec9e64329273efde7b434ac5467645cc93b
[spider.git] / cmd / forward / opername.pl
1 #
2 # Cause node to send PC41 info frames
3 #
4 # Copyright (c) 1998 - Iain Philipps G0RDI
5 #
6 # Mods by Dirk Koopman G1TLH 12Dec98
7 #
8
9 my ($self, $line) = @_;
10 my @f = split /\s+/, uc $line;
11 my @out;
12
13 if ($self->priv < 1) {
14         if (@f == 0) {
15                 push @f, $self->call;
16         } else {
17                 return (1, $self->msg('e5'));
18         }
19 } elsif (@f == 0) {
20         return (1, $self->msg('e6'));
21 }
22
23 my $call;
24 foreach $call (@f) {
25         my $ref = DXUser->get_current($call);
26         if ($ref) {
27                 my $name = $ref->name;  
28                 my $qth = $ref->qth;
29                 my $lat = $ref->lat;
30                 my $long = $ref->long;
31                 my $node = $ref->homenode;
32                 my $latlong = DXBearing::lltos($lat, $long) if $lat && $long;
33                 if ($name) {
34                         my $l = DXProt::pc41($DXProt::me, $call, 1, $name);
35                         DXProt::eph_dup($l);
36                         DXProt::broadcast_all_ak1a($l, $DXProt::me) ;
37                 }
38                 if ($qth) {
39                         my $l = DXProt::pc41($call, 2, $qth);
40                         DXProt::eph_dup($l);
41                         DXProt::broadcast_all_ak1a($l, $DXProt::me) ;
42                 }
43                 if ($latlong) {
44                         my $l = DXProt::pc41($call, 3, $latlong);
45                         DXProt::eph_dup($l);
46                         DXProt::broadcast_all_ak1a($l, $DXProt::me) ;
47                 }
48                 if ($node) {
49                         my $l = DXProt::pc41($call, 4, $node);
50                         DXProt::eph_dup($l);
51                         DXProt::broadcast_all_ak1a($l, $DXProt::me) ;
52                 }
53         }
54 }
55
56 return (1, @out);