The command identifier is a 21-bit unsigned integer encoded in up to three bytes using the packed unsigned integer format described in Section 3.2. This encoding allows for up to 2,097,152 individual commands, with the first 127 commands represented as a single byte. Command identifiers larger than 2,097,151 are explicitly forbidden.
+-----------------------+----------------------------+ | CID Range | Description | +-----------------------+----------------------------+ | 0 - 63 | Reserved for core commands | | 64 - 15,359 | UNALLOCATED | | 15,360 - 16,383 | Vendor-specific | | 16,384 - 1,999,999 | UNALLOCATED | | 2,000,000 - 2,097,151 | Experimental use only | +-----------------------+----------------------------+
Depending on the semantics of the command in question, a payload MAY be included in the frame. The exact composition and length of the payload is defined by the command identifier.
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HEADER | COMMAND ID | PAYLOAD ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+