+
+# spider route broadcasts
+#
+
+
+sub _gen_pc92
+{
+ my $sort = shift;
+ my $ext = shift;
+ my $s = "PC92^$main::mycall^" . gen_pc9x_t() . "^$sort";
+ if ($pc9x_nodupe_first_slot && ($sort eq 'A' || $sort eq 'D') && $_[0]->call eq $main::mycall) {
+ shift;
+ $s .= '^';
+ }
+ for (@_) {
+ $s .= '^' . _encode_pc92_call($_, $ext);
+ $ext = 0 unless $sort eq 'A'; # only the first slot has an 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";
+ if ($pc9x_nodupe_first_slot && ($sort eq 'A' || $sort eq 'D') && $_[0]->call eq $main::mycall) {
+ shift;
+ $s .= '^';
+ }
+ for (@_) {
+ $s .= "^" . _encode_pc92_call($_, $ext);
+ }
+ return $s . '^H99^';
+}
+
+# add a local one
+sub pc92a
+{
+ return _gen_pc92('A', 2, @_);
+}
+
+# delete a local one
+sub pc92d
+{
+ return _gen_pc92('D', 0, @_);
+}
+
+# send a config
+sub pc92c
+{
+ return _gen_pc92('C', 1, @_);
+}
+
+# send a keep alive
+sub pc92k
+{
+ my $nref = shift;
+ my $s = "PC92^$main::mycall^" . gen_pc9x_t() . "^K";
+ $s .= "^" . _encode_pc92_call($nref, 1) . ":$main::me->{build}";
+ $s .= "^" . scalar $nref->nodes;
+ $s .= "^" . scalar $nref->users;
+ return $s . '^H99^';
+}
+
+# send a 'find' message
+sub pc92f
+{
+ my $target = shift;
+ my $from = shift;
+ return "PC92^$main::mycall^" . gen_pc9x_t() . "^F^$from^$target^H99^"
+}
+
+# send a 'reply' message
+sub pc92r
+{
+ my $to = shift;
+ my $target = shift;
+ my $flag = shift;
+ my $ms = shift;
+ return "PC92^$main::mycall^" . gen_pc9x_t() . "^R^$to^$target^$flag^$ms^H99^"
+}
+
+sub pc93
+{
+ my $to = shift; # *, callsign, chat group name, sysop
+ my $from = shift; # from user callsign
+ my $via = shift || '*'; # *, node call
+ my $line = shift; # the text
+ my $origin = shift; # this will be present on proxying from PC10
+
+ $line = unpad($line);
+ $line =~ s/\^/\\5E/g; # remove any ^ characters
+ my $s = "PC93^$main::mycall^" . gen_pc9x_t() . "^$to^$from^$via^$line";
+ $s .= "^$origin" if $origin;
+ $s .= "^H99^";
+ return $s;
+}
+