fiddle with pc20/22 some more
authorminima <minima>
Tue, 16 Jan 2007 01:50:19 +0000 (01:50 +0000)
committerminima <minima>
Tue, 16 Jan 2007 01:50:19 +0000 (01:50 +0000)
perl/DXProt.pm
perl/DXProtHandle.pm

index 843b927270166788c4232f090c79dc379165153c..baaea72dde04b32fe8edd7565d935c5dd288264a 100644 (file)
@@ -774,13 +774,18 @@ sub send_local_config
 
 sub gen_my_pc92_config
 {
-       my $self = shift;
+       my $node = shift;
        
-       my @dxchan = grep { $_->call ne $main::mycall && $_ != $self && !$_->{isolate} } DXChannel::get_all();
-       dbg("ROUTE: all dxchan: " . join(',', map{$_->{call}} @dxchan)) if isdbg('routelow');
-       my @localnodes = map { my $r = Route::get($_->{call}); $r ? $r : () } @dxchan;
-       dbg("ROUTE: localnodes: " . join(',', map{$_->{call}} @localnodes)) if isdbg('routelow');
-       return pc92c($main::routeroot, @localnodes);
+       if ($node->{call} eq $main::mycall) {
+               my @dxchan = grep { $_->call ne $main::mycall && !$_->{isolate} } DXChannel::get_all();
+               dbg("ROUTE: all dxchan: " . join(',', map{$_->{call}} @dxchan)) if isdbg('routelow');
+               my @localnodes = map { my $r = Route::get($_->{call}); $r ? $r : () } @dxchan;
+               dbg("ROUTE: localnodes: " . join(',', map{$_->{call}} @localnodes)) if isdbg('routelow');
+               return pc92c($main::routeroot, @localnodes);
+       } else {
+               my @rout = map {my $r = Route::User::get($_); $r ? ($r) : ()} $node->users;
+               return pc92c($node, @rout);
+       }
 }
 
 sub gen_pc92_update
@@ -795,7 +800,7 @@ sub gen_pc92_update
        dbg('ROUTE: DXProt::gen_pc92_update start') if isdbg('routelow');
 
        # send 'my' configuration for all channels
-       push @lines, $self->gen_my_pc92_config;
+       push @lines, gen_my_pc92_config($main::routeroot);
        
        if ($with_pc92_nodes) {
                # send out the configuration of all the directly connected PC92 nodes with current configuration
@@ -820,8 +825,7 @@ sub gen_pc92_update
        dbg("ROUTE: non pc92 localnodes: " . join(',', map{$_->{call}} @localnodes)) if isdbg('routelow');
        foreach $node (@localnodes) {
                if ($node) {
-                       my @rout = map {my $r = Route::User::get($_); $r ? ($r) : ()} $node->users;
-                       push @lines, pc92c($node, @rout);
+                       push @lines, gen_my_pc92_config($node);
                } 
        }
 
index fcc30cfe2255ce9b71cf9db3d935b8b50b413e6d..a62c6bef77de07b90cbf6a41711cc6f58708e6e5 100644 (file)
@@ -776,9 +776,15 @@ sub send_delayed_pc92
 {
        my $self = shift;
        
-       # send out delayed PC92 config for this node if it is external
-       my $line = $main::me->gen_my_pc92_config;
+       # send out new PC92 config to everyone else 
+       my $line = gen_my_pc92_config($main::me);
        $self->broadcast_route_pc9x($main::mycall, undef, $line, 0);
+
+       # if this is an external node then send out the external config
+       unless ($self->{do_pc92}) {
+               $line = gen_my_pc92_config(Route::Node::get($self->{call}));
+               $self->broadcast_route_pc9x($main::mycall, undef, $line, 0);
+       }
 }
 
 # send local configuration
@@ -881,19 +887,10 @@ sub handle_22
                        $self->disconnect;
                        return;
                }
-#              my $ref = Route::Node::get($self->{call});
-#              if ($ref) {
-#                      $main::me->route_pc92a($main::mycall, undef, $main::routeroot, $ref);
-#              } else {
-#                      dbg("PCPROT: disconnecting because pc92 for $self->{call} received") if isdbg('chanerr');
-#                      $self->disconnect;
-#                      return;
-#              }
-#      } else {
-               $self->send_delayed_pc92;
        }
        $self->{lastping} = 0;
        $self->state('normal');
+       $self->send_delayed_pc92;
 }
                                
 # WWV info