Abstract Message Packet Format
Every message packet consists of a three byte header followed by an optional variable length data
block. The maximum packet size is 64 bytes.
Destination device (uint8)
Command length (uint8)
Command id (uint8)
Reserved (uint8)
Command data (uint8[])
Padding (uint8[])
Receiving devices should use the destination device address and or the command identifier to
determine which messages to process. The receiver should use the command length to skip
irrelevant or unknown commands and should be careful to skip the implicit padding as well.
Defined Commands
Command 0 : change configuration
Category (uint8)
Parameter (uint8)
Data type (uint8)
Currently defined values are:
0: void / boolean
1: signed byte
2: signed 16 bit integer
3: signed 32 bit integer
4: signed 64 bit integer
Device addresses are represented as an 8 bit unsigned integer. Individual
devices are numbered 0 through 254 with the value 255 reserved to indicate a
broadcast message to all devices.
The command length is an 8 bit unsigned integer which specifies the length
of the included command data. The length does NOT include the length of the
header or any trailing padding bytes.
The command id is an 8 bit unsigned integer which indicates the message type
being sent. Receiving devices should ignore any commands that they do not
understand. Commands 0 through 127 are reserved for commands that apply to
multiple types of devices. Commands 128 through 255 are device specific.
This byte is reserved for alignment and expansion purposes. It should be set
to zero.
The command data may contain between 0 and 60 bytes of data. The format of
the data section is defined by the command itself.
Messages must be padded up to a 32 bit boundary with 0x0 bytes. Any padding
bytes are NOT included in the command length.
The category number specifies one of up to 256 configuration categories
available on the device.
The parameter number specifies one of 256 potential configuration
parameters available on the device. Parameters 0 through 127 are device
specific parameters. Parameters 128 though 255 are reserved for parameters
that apply to multiple types of devices.
The data type specifies the type of the remaining data. The packet length is
used to determine the number of elements in the message. Each message
must contain an integral number of data elements.
A void value is represented as a boolean array of length zero.
The data field is a 8 bit value with 0 meaning false and all other values
meaning true.
Data elements are signed bytes
Data elements are signed 16 bit values
Data elements are signed 32 bit values
Data elements are signed 64 bit values
Developer Information
291