![Bose AV20 Installer'S Manual Download Page 12](http://html1.mh-extra.com/html/bose/av20/av20_installers-manual_2792059012.webp)
Installers Guide to the Bose® Serial interface
June 28, 2011
Bose Confidential Information
Page 12/42
Do Not Redistribute
5 The Communication Protocol
The Client only sends
Command
packets, which are of two types:
1) A Control packet which requests the Console to do something
2) A Query packet which requests information from the Console
The Console sends four types of packets:
1) A Ready packet which indicates the Client can send another packet.
2) A Response packet which contains information requested by a Query packet
3) A Notification packet which indicates an event that occurred on the Console
4) An Error packet which indicates a problem with a packet sent by the Client.
The Command packets and the Response packet associated with them are listed in section 6
Client Commands and Console Responses.
5.1 Notational Conventions
Base 16 (hexadecimal) is used to represent the contents of packets. Base 10 is used everywhere
else unless the number is preceded by 0x which indicates hexadecimal.
Numbers occurring in the Payload field which are two or more bytes in length are sent using the
so called little-endian byte ordering, which sends the least significant byte (LSB) first. Thus the
number 350 decimal (0x015E) when sent, for example as the key hold time for the key press
command (see section 6.4KP - Simulate a Key Press), would be sent as 0x5E01.
The Exclusive Or (XOR)
operation is indicated by the ―^‖ character. This is a bitwise operation on
two bytes, which results in a 1 if the two corresponding bits are different and a 0 if they are the
same (see Table 4-3 The XOR Operator.)
5.2 Issuing Commands to the Console
To control or query the Console, the Client sends a Command packet and waits for packets from
the Console. The Console does not send a Response packet for all commands but will always
send a Ready packet. In rare circumstances an Error packet is sent instead of a response, but
will always be followed by the Ready packet. The commands and their responses are described
in section
Commands and Console Responses. (See also section
The Ready
Packet
and
section
Note: The Console sometimes sends Notification or Error packets, which can come at any time
including immediately after the Client issues a command packet. To understand how to parse
Console packets, see section
Interpreting Packets from the Console.
Regardless of whether the Console sends a response packet or not, the Console always sends a
Ready Packet after every Client command packet. The Ready Packet indicates the current
command has been accepted and the Client can send another command subject to protocol
timing (see section 5.4 Protocol Timings). The Client must wait for the Console's response and
must not issue another command until it receives a Ready Packet. See Section
The Ready
Packet.
In general, the resulting Console state change to a control command (e.g. source change, Room
On/Off) has not been performed by the time the Ready command is sent. A query command can
be used if needed to determine when the state change has occurred.
5.3 Interpreting Packets from the Console
A Client should receive a packet by first examining the value of the next nonzero byte of the input
stream. This value is the length of the incoming packet. If length-1 additional bytes are not