Bluetooth Audio Plugin ====================== The audio plugin happen to be in a different socket but all the rules for HAL socket apply here as well, the abstract socket name is "\0bluez_audio_socket" (tentative): .---Audio---. .--Android--. | Plugin | | Daemon | | | Command | | | | --------------------------> | | | | | | | | <-------------------------- | | | | Response | | | | | | | | | | | | | | '-----------' '-----------' Audio HAL Daemon ---------------------------------------------------- call dev->open() --> command 0x01 return dev->open() <-- response 0x01 call dev->open_output_stream() --> command 0x03 return dev->open_output_stream() <-- response 0x03 call stream->write() --> command 0x05 return stream->write() <-- response 0x05 call stream->common.standby() --> command 0x06 return stream->common.standby() <-- response 0x06 call dev->close_output_stream() --> command 0x04 return dev->close_output_stream() <-- response 0x04 call dev->close() --> command 0x02 return dev->close() <-- response 0x02 Identifier: "audio" (BT_AUDIO_ID) Opcode 0x00 - Error response Response parameters: Status (1 octet) Opcode 0x01 - Open Audio Endpoint commmand Command parameters: Service UUID (16 octets) Codec ID (1 octet) Codec capabilities length (1 octet) Codec capabilities (variable) Number of codec presets (1 octet) Codec preset # length (1 octet) Codec preset # configuration (variable) ... Response parameters: Endpoint ID (1 octet) Opcode 0x02 - Close Audio Endpoint command Command parameters: Endpoint ID (1 octet) Response parameters: Opcode 0x03 - Open Stream command Command parameters: Endpoint ID (1 octet) Response parameters: Codec configuration length (1 octet) Codec configuration (1 octet) File descriptor (inline) Opcode 0x04 - Close Stream command Command parameters: Endpoint ID (1 octet) Response parameters: Opcode 0x05 - Resume Stream command Command parameters: Endpoint ID (1 octet) Response parameters: Opcode 0x06 - Suspend Stream command Command parameters: Endpoint ID (1 octet) Response parameters: