-
Notifications
You must be signed in to change notification settings - Fork 11
Description
Apple has renamed the protocol to AACP, still don't know what it stands for, maybe Apple Audio Configuration Protocol? Either way, here's the basic framing info for the AACP messages.
An AACP packet has a u16 type field, a u16 service ID field, and a payload. The service ID is always 4 after the connection has been established, other service IDs have not been observed so far.
There are five packet types:
- 0: Connect, payload:
u16 major, u16 minor, u64 features - 1: Connection Response, payload:
u16 status, u16 major, u16 minor, u64 features - 2: Disconnect, payload:
u16 status - 3: Disconnection Response, no payload
- 4: Message, payload:
u16 opcode, payload
Payload for the AACP message packet varies depends on the opcode, they are either fixed size or will have a size field somewhere. For example, opcode 0x9 is a configuration message with a fixed payload of 5 bytes. The first byte is the configuration type, and the following 4 bytes are the values. Not all settings use all the 4 bytes, most will leave the unused bytes as 0x00.
More docs will follow in a few weeks, I just don't have time to write them yet. Handoff seems to be iCloud related and probably beyond my capabilities to figure out, most of my efforts so far have been centered around parsing all the AACP messages I can capture.