X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtout.pm;h=cacf60e0c756a67612452ab192bb07c50be157c6;hb=5564fb00052dcfaf183fe6b4c0c55ad674f6c467;hp=95c1981359262202c5e255752327453540f640a7;hpb=6624dcdf07d628e8d6a16fc6549edf40be25b7b2;p=spider.git diff --git a/perl/DXProtout.pm b/perl/DXProtout.pm index 95c19813..cacf60e0 100644 --- a/perl/DXProtout.pm +++ b/perl/DXProtout.pm @@ -19,6 +19,12 @@ use DXDebug; use strict; +use vars qw($VERSION $BRANCH); +$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); +$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0; +$main::build += $VERSION; +$main::branch += $BRANCH; + # # All the PCxx generation routines # @@ -26,7 +32,7 @@ use strict; # create a talk string ($from, $to, $via, $text) sub pc10 { - my ($from, $to, $via, $text) = @_; + my ($from, $to, $via, $text, $origin) = @_; my ($user1, $user2); if ($via && $via ne $to) { $user1 = $via; @@ -35,10 +41,11 @@ sub pc10 $user2 = ' '; $user1 = $to; } + $origin ||= $main::mycall; $text = unpad($text); $text = ' ' unless $text && length $text > 0; $text =~ s/\^/%5E/g; - return "PC10^$from^$user1^$text^*^$user2^$main::mycall^~"; + return "PC10^$from^$user1^$text^*^$user2^$origin^~"; } # create a dx message (call, freq, dxcall, text) @@ -353,6 +360,37 @@ sub pc85 return "PC85^$tonode^$fromnode^$call^$msg^~"; } +# spider route broadcast +sub pc90 +{ + my $node = shift; + my $sort = shift; + my @out; + my $dxchan; + my $n = @_; + + while (@_) { + my $str = sprintf "PC90^%s^%X^%s%d", $node->call, $main::systime, $sort, $n-1 ; + for (; @_ && length $str < 200;) { + my $ref = shift; + next if $ref == $main::me; + my $call = $ref->call; + my $flag = 0; + $flag += 1 if $ref->here; + $flag += 2 if $ref->conf; + if ($ref->is_node) { + my $ping = int($ref->pingave * 10); + $str .= "^N$flag$call,$ping"; + } else { + $str .= "^U$flag$call"; + } + } + $str .= sprintf "^%s^", get_hops(90); + push @out, $str; + } + return @out; +} + 1; __END__