public bus protocols

The public bus operates on channel -9999999, and is received by a wide range of Nanite Systems products, including controllers running Companion and ATOS.

Commands sent over the public and private channels

The primary use of the public bus is to send system commands, and under Companion, these can also be sent under the private bus channel, which is the negative integer corresponding to the unit's serial number. For example, if the unit's serial number is 100-00-0001 then its private bus channel is -100000001.

System commands sent using either channel are interpreted as being from the agent that owns the sending object. To send a command on behalf of another user, use the internal active message over the light bus.

The following commands do not function over this method:

@boot and @onOnly available directly to the unit while it is powered down; triggers start_task(SEC_POWER_SWITCH, "on", id)
start, stop, wait, disable, enable, set, randset, unset, ifeq, ifexists, evar, report, broadcastThese are Arabesque language statements only
commands starting with ! and .Cortex commands must be prefixed with relay
sayArabesque language statement equivalent to relay command; attempting to use this over public or private bus will activate the Chorus API instead
safewordOnly possible via direct command-line input

Public bus protocols

The public bus also carries a number of messages that are exclusive to it. These are specified below.

identify <response-channel>
repair start|stop|<amount>
navigate <event>
As the navigate system command, but the source object is regarded as the origin of the message rather than the source object's owner. This allows navigation routing system nodes to remain distinct.

The navigate command has several sub-messages not included in the command reference. They are intended to be sent by navigation nodes rather than users. These are arrive, seek <next-node-UUID>, warp <next-node-UUID>, and wait <seconds>.
sxdwm <...>
As the sxdwm system command, but the source object is regarded as the origin of the message rather than the owner of that object. This makes session multiplexing easier.
trigger <event>
Equivalent to the system command @trigger, but exempt from usual permissions checks. The activator of the event will be the object that sent the message, rather than its owner.
charge <amount>
Gives the unit a one-time burst of <amount> kilojoules of battery power. Not all units will receive charged battery power with perfect efficiency (see chassis specification settings), and larger amounts will cause overheating under ATOS. Amounts over 100 kJ require consent or they will be rejected.

If <amount> is negative, then the unit will respond with a positive charge message of the same format.
ping <response-channel>
The receiving device, if able, will send a message on <response-channel>. The message will contain the following:

<serial> <OS> <owner> <controller-model> <authority>

Under Companion, the <owner> field will usually be populated with the unit's first user that has rank 2.

If the unit's authority tag contains spaces, then <authority> will replace these characters with underscores.

<OS> is "Companion/<version>" under Companion, or "ATOS/CX_<version>" under ATOS.