X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtHandle.pm;h=4c7ccf4b256d869e4b6f57910d11e24a1b2214a7;hb=7b35ba0ffde25a7ef028c82b77021bab4b010900;hp=cd4cdd44cba2f915374fe220b6ba400803b48ccd;hpb=b72f2581870f11b7e78ca7add1e9fea856145f02;p=spider.git diff --git a/perl/DXProtHandle.pm b/perl/DXProtHandle.pm index cd4cdd44..4c7ccf4b 100644 --- a/perl/DXProtHandle.pm +++ b/perl/DXProtHandle.pm @@ -2,7 +2,7 @@ # # This module impliments the handlers for the protocal mode for a dx cluster # -# Copyright (c) 1998-2006 Dirk Koopman G1TLH +# Copyright (c) 1998-2007 Dirk Koopman G1TLH # # # @@ -45,6 +45,7 @@ use vars qw($pc11_max_age $pc23_max_age $last_pc50 $eph_restime $eph_info_restim $allowzero $decode_dk0wcy $send_opernam @checklist $eph_pc15_restime $pc9x_past_age $pc9x_future_age $pc10_dupe_age $pc92_slug_changes $last_pc92_slug + $pc92Ain $pc92Cin $pc92Din $pc92Kin ); $pc9x_past_age = 62*60; # maximum age in the past of a px9x (a config record might be the only @@ -1559,7 +1560,7 @@ sub pc92_handle_first_slot } $parent->here(Route::here($here)); $parent->version($version || $pc19_version) if $version; - $parent->build($build) if $build && $build > $parent->build; + $parent->build($build) if $build; $parent->PC92C_dxchan($self->{call}) unless $self->{call} eq $parent->call; return ($parent, @radd); } @@ -1651,6 +1652,8 @@ sub handle_92 } } elsif ($sort eq 'K') { + $pc92Kin += length $line if $sort eq 'K'; + # remember the last channel we arrived on $parent->PC92C_dxchan($self->{call}) unless $self->{call} eq $parent->call; @@ -1664,26 +1667,26 @@ sub handle_92 push @radd, $add if $add; $parent->reset_obs; + $parent->version($ent[4]) if $ent[4]; + $parent->build($ent[5]) if $ent[5]; + dbg("ROUTE: reset obscount on $parent->{call} now " . $parent->obscount) if isdbg('obscount'); } } elsif ($sort eq 'A' || $sort eq 'D' || $sort eq 'C') { + $pc92Ain += length $line if $sort eq 'A'; + $pc92Cin += length $line if $sort eq 'C'; + $pc92Din += length $line if $sort eq 'D'; + # remember the last channel we arrived on $parent->PC92C_dxchan($self->{call}) unless $self->{call} eq $parent->call; # this is the main route section # here is where all the routes are created and destroyed - # cope with missing duplicate node calls in the first slot for A or D + # cope with missing duplicate node calls in the first slot my $me = $_[4] || ''; - if (($sort eq 'A' || $sort eq 'D')) { - $me ||= _encode_pc92_call($parent) unless $me ; - } else { - unless ($me) { - dbg("PCPROT: this type of PC92 *must* have a node call in the first slot, ignored") if is_dbg('chanerr'); - return; - } - } + $me ||= _encode_pc92_call($parent) unless $me ; my @ent = map {my @a = _decode_pc92_call($_); @a ? \@a : ()} grep {$_ && /^[0-7]/} $me, @_[5 .. $#_];