}
$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);
}
# 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 .. $#_];
# send a config
sub pc92c
{
- return _gen_pc92('C', 1, @_);
+ return _gen_pc92('C', 0, @_);
}
# send a keep alive
# recursion detector
return () if $seen->{$call};
+
+ # return immediately if we are directly connected
if (my $dxchan = DXChannel::get($call)) {
$seen->{$call}++;
push @out, $level ? [$level, $dxchan] : $dxchan;
return () unless $nref;
foreach my $ncall (@{$nref->{parent}}) {
unless ($seen->{$ncall}) {
- dbg("recursing from $call -> $ncall") if isdbg('routec');
- my @rout = findroutes($ncall, $level+1, $seen);
+
+ # put non-pc9x nodes to the back of the queue
+ my $l = $level + ($nref->{do_pc9x} ? 0 : 30);
+ dbg("recursing from $call -> $ncall level $l") if isdbg('routec');
+ my @rout = findroutes($ncall, $l+1, $seen);
push @out, @rout;
}
}
$version = '1.54';
$subversion = '0';
-$build = '167';
+$build = '168';
1;