X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXProtout.pm;h=6b06fb13440d615f40f9cba4d16702bc7be8000b;hb=2c7556025be203a53e85ee7b8e2f799834cc71f6;hp=1ef9c022a24d996c865ab162200f280cf4dc01f8;hpb=0dc47d7ba34d8ea89f210c024863d01b2b32122b;p=spider.git diff --git a/perl/DXProtout.pm b/perl/DXProtout.pm index 1ef9c022..6b06fb13 100644 --- a/perl/DXProtout.pm +++ b/perl/DXProtout.pm @@ -27,8 +27,8 @@ $main::branch += $BRANCH; use vars qw($sentencelth); -$sentencelth = 200; - +$sentencelth = 180; + # # All the PCxx generation routines # @@ -66,14 +66,15 @@ sub pc11 # create an announce message sub pc12 { - my ($call, $text, $tonode, $sysop, $wx) = @_; + my ($call, $text, $tonode, $sysop, $wx, $origin) = @_; my $hops = get_hops(12); - $sysop = ' ' if !$sysop; - $text = ' ' if !$text; - $wx = '0' if !$wx; - $tonode = '*' if !$tonode; + $text ||= ' '; $text =~ s/\^/%5E/g; - return "PC12^$call^$tonode^$text^$sysop^$main::mycall^$wx^$hops^~"; + $tonode ||= '*'; + $sysop ||= ' '; + $wx ||= '0'; + $origin ||= $main::mycall; + return "PC12^$call^$tonode^$text^$sysop^$origin^$wx^$hops^~"; } # @@ -94,13 +95,13 @@ sub pc16 next unless $_; my $ref = $_; my $str = sprintf "^%s %s %d", $ref->call, $ref->conf ? '*' : '-', $ref->here; - if (length($s) + length($str) >= $sentencelth) { + if (length($s) + length($str) > $sentencelth) { push @out, "PC16^$ncall" . $s . sprintf "^%s^", get_hops(16); $s = ""; } $s .= $str; } - push @out, "PC16^$ncall" . $s . sprintf "^%s^", get_hops(16) if length $s; + push @out, "PC16^$ncall" . $s . sprintf "^%s^", get_hops(16); return @out; } @@ -122,7 +123,9 @@ sub pc17 # Request init string sub pc18 { - return "PC18^DXSpider Version: $main::version Build: $main::build^$DXProt::myprot_version^"; + my $flags = " pc92"; + $flags .= " xml" if DXXml::available(); + return "PC18^DXSpider Version: $main::version Build: $main::build$flags^$DXProt::myprot_version^"; } # @@ -141,14 +144,14 @@ sub pc19 my $here = $ref->here; my $conf = $ref->conf; my $version = $ref->version; - my $str = "^$here^$call^$conf^$version"; - if (length($s) + length($str) >= $sentencelth) { + my $str = "^$here^$call^$conf^$version"; + if (length($s) + length($str) > $sentencelth) { push @out, "PC19" . $s . sprintf "^%s^", get_hops(19); $s = ""; } $s .= $str; } - push @out, "PC19" . $s . sprintf "^%s^", get_hops(19) if length $s; + push @out, "PC19" . $s . sprintf "^%s^", get_hops(19); return @out; } @@ -371,9 +374,50 @@ sub pc85 return "PC85^$tonode^$fromnode^$call^$msg^~"; } -# spider route broadcast -sub pc90 +# spider route broadcasts +# + + +sub _gen_pc92 +{ + my $sort = shift; + my $ext = shift; + my $s = "PC92^$main::mycall^" . gen_pc9x_t() . "^$sort"; + for (@_) { + $s .= "^" . _encode_pc92_call($_, $ext); + } + return $s . '^H99^'; +} + +sub gen_pc92_with_time +{ + my $call = shift; + my $sort = shift; + my $t = shift; + my $ext = 1; + my $s = "PC92^$call^$t^$sort"; + for (@_) { + $s .= "^" . _encode_pc92_call($_, $ext); + } + return $s . '^H99^'; +} + +# add a local one +sub pc92a +{ + return _gen_pc92('A', 0, @_); +} + +# delete a local one +sub pc92d +{ + return _gen_pc92('D', 0, @_); +} + +# send a config +sub pc92c { + return _gen_pc92('C', 1, @_); } 1;