add beginnings of a route find command.
[spider.git] / perl / DXProt.pm
index 220c689c2ed2333f9ad7f155b01fe7358f441841..b1c084fd52d6712e3af3eb5247cce33e69c3becb 100644 (file)
@@ -45,6 +45,7 @@ use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restim
                        %nodehops $baddx $badspotter $badnode $censorpc $rspfcheck
                        $allowzero $decode_dk0wcy $send_opernam @checklist
                        $eph_pc15_restime $pc92_update_period $last_pc92_update
+                       %pc92_find $pc92_find_timeout
                   );
 
 ($VERSION, $BRANCH) = dxver(q$Revision$);
@@ -77,6 +78,9 @@ $investigation_int = 12*60*60;        # time between checks to see if we can see this n
 $pc19_version = 5466;                  # the visible version no for outgoing PC19s generated from pc59
 $pc92_update_period = 30*60;   # the period between PC92 C updates
 $last_pc92_update = time + int rand(180);              # the last time a PC92 config update
+%pc92_find = ();                               # outstanding pc92 find operations
+$pc92_find_timeout = 30;               # maximum time to wait for a reply
+
 
 
 @checklist = 
@@ -432,6 +436,7 @@ sub process
        }
 
        Investigate::process();
+       clean_pc92_find();
 
        # every ten seconds
        if ($t - $last10 >= 10) {       
@@ -444,7 +449,7 @@ sub process
                        dbg("ROUTE: sending pc92 update") if isdbg('route');
                        send_pc92_update();
                        time_out_pc92_routes();
-                       $last_pc92_update = $main::systime + int rand(180);
+                       $last_pc92_update = $main::systime + int rand(5*60);
                }
                
                $last10 = $t;
@@ -585,10 +590,11 @@ sub wcy
 sub send_announce
 {
        my $self = shift;
+       my $from_pc9x = shift;
        my $line = shift;
        my @dxchan = DXChannel::get_all();
        my $dxchan;
-       my $target;
+       my $target = $_[6];
        my $to = 'To ';
        my $text = unpad($_[2]);
                                
@@ -597,7 +603,7 @@ sub send_announce
        } elsif ($_[3] gt ' ') { # speciality list handling
                my ($name) = split /\./, $_[3]; 
                $target = "$name"; # put the rest in later (if bothered) 
-       } 
+       }  
        
        if ($_[5] eq '1') {
                $target = "WX"; 
@@ -632,6 +638,8 @@ sub send_announce
        foreach $dxchan (@dxchan) {
                next if $dxchan == $main::me;
                next if $dxchan == $self && $self->is_node;
+               next if $from_pc9x && $dxchan->{do_pc9x};
+               next if $target eq 'LOCAL' && $dxchan->is_node;
                $dxchan->announce($line, $self->{isolate}, $to, $target, $text, @_, $self->{call},
                                                  @a[0..2], @b[0..2]);
        }
@@ -650,6 +658,7 @@ sub nextchatmsgid
 sub send_chat
 {
        my $self = shift;
+       my $from_pc9x = shift;
        my $line = shift;
        my @dxchan = DXChannel::get_all();
        my $dxchan;
@@ -692,10 +701,11 @@ sub send_chat
                if ($dxchan->is_node) {
                        next if $dxchan == $main::me;
                        next if $dxchan == $self;
+                       next if $from_pc9x && $dxchan->{do_pc9x};
                        next unless $dxchan->is_spider || $is_ak1a;
                        next if $target eq 'LOCAL';
                        if (!$ak1a_line && $is_ak1a) {
-                               $ak1a_line = DXProt::pc12($_[0], $text, $_[1], "$target.LST");
+                               $ak1a_line = pc12($_[0], $text, $_[1], "$target.LST");
                        }
                }
                
@@ -1492,5 +1502,28 @@ sub import_chat
        }
 }
 
+# start a pc92 find operation
+sub start_pc92_find
+{
+       my $dxchan = shift;
+       my $target = shift;
+       my $key = "$dxchan->{call}|$target";
+       if ($pc92_find{$key}) {
+               
+       }
+}
+
+# function (not method) to handle pc92 find returns
+sub handle_pc92_find_reply
+{
+       my ($dxchan, $node, $from, $target, $flag, $ms) = @_;
+       
+       $dxchan->print_pc92_find_reply($node, $target, $flag, $ms) if $dxchan->can('print_pc92_find_return');
+}
+
+sub clean_pc92_find
+{
+
+}
 1;
 __END__