+
+# clx remote cmd send
+sub pc84
+{
+ my($fromnode, $tonode, $call, $msg) = @_;
+ return "PC84^$tonode^$fromnode^$call^$msg^~";
+}
+
+# clx remote cmd reply
+sub pc85
+{
+ my($fromnode, $tonode, $call, $msg) = @_;
+ return "PC85^$tonode^$fromnode^$call^$msg^~";
+}
+
+# spider route broadcasts
+#
+
+my $_last_time;
+my $_last_occurs;
+
+sub _gen_time
+{
+ if (!$_last_time || $_last_time != $main::systime) {
+ $_last_time = $main::systime;
+ $_last_occurs = 0;
+ return $_last_time;
+ } else {
+ $_last_occurs++;
+ return sprintf "$_last_time.%02d", $_last_occurs;
+ }
+}
+
+sub _gen_pc92
+{
+ my $sort = shift;
+ my $ext = $sort eq 'C';
+ my $s = "PC92^" . _encode_pc92_call($main::me, $ext) . "^" . _gen_time . "^$sort";
+ for (@_) {
+ $s .= "^" . _encode_pc92_call($_, $ext);
+ }
+ return $s . '^H99^';
+}
+
+# add a local one
+sub pc92a
+{
+ return _gen_pc92('A', @_);
+}
+
+# delete a local one
+sub pc92d
+{
+ return _gen_pc92('D', @_);
+}
+
+# send a config
+sub pc92c
+{
+ return _gen_pc92('C', @_);
+}
+