X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtout.pm;h=840c4edec4f9b90213b7f970e3e1ff34e96cf663;hb=a931b090e0be3329bcbf7deddb7c17c30fa0e74a;hp=b31eacdfe111942ded8607bc9759d85e1179a56c;hpb=f47bc72134852f42fe03ab6afe91a9ba1b0ff705;p=spider.git diff --git a/perl/DXProtout.pm b/perl/DXProtout.pm index b31eacdf..840c4ede 100644 --- a/perl/DXProtout.pm +++ b/perl/DXProtout.pm @@ -25,9 +25,10 @@ $BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ || (0,0)) $main::build += $VERSION; $main::branch += $BRANCH; -use vars qw($sentencelth); +use vars qw($sentencelth $use_newroute); $sentencelth = 180; +$use_newroute = 1; # # All the PCxx generation routines @@ -123,7 +124,8 @@ sub pc17 # Request init string sub pc18 { - return "PC18^DXSpider Version: $main::version Build: $main::build^$DXProt::myprot_version^"; + my $nr = $use_newroute ? ' !NRt' : ''; + return "PC18^DXSpider Version: $main::version Build: $main::build$nr^$DXProt::myprot_version^"; } # @@ -358,6 +360,78 @@ sub pc51 return "PC51^$to^$from^$val^"; } +my $hexlasttime = 0; +my $hexlastlet = 'A'; +my $hexoverflow = ''; + +sub hexstamp +{ + my $t = shift || $main::systime; + if ($t ne $hexlasttime) { + $hexlasttime = $t; + $hexoverflow = ''; + $hexlastlet = 'A'; + } else { + do { + $hexlastlet = chr(ord($hexlastlet) + 1); + if ($hexlastlet ge '~') { + $hexlastlet = 'A'; + $hexoverflow ||= '@'; + do { + $hexoverflow = chr(ord($hexoverflow) + 1); + } while ($hexoverflow eq '^'); + } + } while ($hexlastlet eq '^'); + } + return sprintf "%08X%s%s", $hexlasttime, $hexoverflow, $hexlastlet; +} + +sub pc58 +{ + my $sort = shift; + my $hexstamp = shift || hexstamp(); + my $from = shift; + my $to = shift; + my $text = unpad(shift); + $text = ' ' if !$text; + $text =~ s/\^/%5E/g; + return "PC58^$sort^$hexstamp^$from^$to^$text" . sprintf "^%s^", get_hops(58); +} + +sub pc59 +{ + my @out; + my $sort = shift; + my $hexstamp = shift || hexstamp(); + my $node = shift; + + my $s = "PC59^$sort^$hexstamp^$node"; + for (@_) { + next unless $_; + my $ref = $_; + my $call = $ref->call; + my $here = $ref->here; + $s .= '^' . $ref->enc_pc59; + } + push @out, sprintf "$s^%s^", get_hops(59); + return @out; +} + +sub PC59c +{ + return PC59('C', @_); +} + +sub PC59a +{ + return PC59('A', @_); +} + +sub PC59d +{ + return PC59('D', @_); +} + # clx remote cmd send sub pc84 {