| Android HAL protocol for Bluetooth |
| ================================== |
| |
| The Android HAL daemon for Bluetooth functionality implements the Unix socket |
| server protocol around /run/bluetooth/daemon (tentative location) or Linux |
| abstract sockets (tentative name). |
| |
| The daemon is single threaded and uses a mainloop for scheduling and general |
| operation. |
| |
| The protocol is SOCK_SEQPACKET based and follows a strict PDU specification |
| with a generic header and initial registration exchange. The communication |
| is driven from the HAL with command/response exchanges. The daemon will use |
| notification to signal events. The protocol is single PDU exchanged based, |
| meaning every command requires a response. Notification does not require |
| any confirmation. Not handling this PDU exchange leads to a disconnection of |
| the socket. |
| |
| Command/response and notification use separate sockets. First connected socket |
| is used for command/response, second for notification. All services are |
| multi-plexed over same pair of sockets. Separation is done to ease |
| implementation of simple HAL library with dedicated thread for handling |
| notification. |
| |
| This strict protocol requirement is done to match C based callbacks and |
| callout functions that are running in a thread inside the HAL and might |
| block. |
| |
| .--Android--. .--Android--. |
| | daemon | | HAL | |
| | | Command | | |
| | | <-------------------------- | | |
| | | | | |
| | | --------------------------> | | |
| | | Response | | |
| | | | | |
| | | | | |
| | | Notification | | |
| | | --------------------------> | | |
| | | | | |
| '-----------' '-----------' |
| |
| Every packet will follow the basic header to support simple multi-plexing |
| over the same socket. It will also support a basic control channel with service |
| id 0. |
| |
| 0 8 16 24 31 |
| +--------------+--------------+--------------+--------------+ |
| | Service ID | Opcode | Data Length | |
| +--------------+--------------+-----------------------------+ |
| | | |
| |
| The unique service ID is assigned by this specification for each HAL. |
| |
| As general rule of thumb, the opcode for command matches the opcode for a |
| response. Or the opcode 0x00 for an error is returned. |
| |
| Notification opcodes start from 0x80. |
| |
| All command/response opcodes have the least significant bit not set. And all |
| notifications have the least significant bit set. |
| |
| The HAL modules only have the job to map the callback and event functions |
| to the protocol. They do not need to do anything else. Below is an example |
| of a sample transaction for the Bluetooth Core HAL and enabling of an |
| adapter. |
| |
| HAL Daemon |
| ---------------------------------------------------- |
| |
| call enable() --> command 0x01 |
| return enable() <-- response 0x01 |
| |
| call adapter_state_changed() <-- notification 0x81 |
| return adapter_state_changed() |
| |
| When the Android hardware framework calls into the Bluetooth Core HAL |
| and executes the enable() callback, the HAL module sends the enable |
| command with opcode 0x01 to the daemon. As soon as the daemon responds, |
| the callback will return with the appropriate result. |
| |
| After the daemon switched on the adapter, it will send a notification |
| with opcode 0x81 to the HAL module. |
| |
| The Bluetooth Core HAL and Bluetooth Socket HAL are guaranteed to be |
| available from the daemon. All other HAL modules are optional. |
| |
| When the Bluetooth Core HAL init() function is called, it should open |
| the socket and register both "bluetooth" and "socket" service modules. It is |
| required to register "socket" service at the same time since the HAL module |
| does not have its own init() function. |
| |
| When new profiles are initiated, the get_profile_interface() callback |
| will load the profile and during init() of the profile, it should register the |
| specific service. |
| |
| Bluetooth main thread Daemon |
| ------------------------------------------------------- |
| |
| init() --> open command socket |
| --> open notification socket |
| --> register module "bluetooth" |
| --> register module "socket" |
| |
| get_profile_interface() --> return profile struct |
| --> continue on Handsfree thread |
| |
| |
| Handsfree thread Daemon |
| -------------------------------------------------------- |
| |
| init() --> register module handsfree |
| |
| |
| Core Service (ID 0) |
| =================== |
| |
| Opcode 0x00 - Error response |
| |
| Response parameters: Status (1 octet) |
| |
| Valid status values: 0x01 Failed |
| |
| Opcode 0x01 - Register module command/response |
| |
| Command parameters: Service id (1 octet) |
| Mode (1 octet) |
| Response parameters: <none> |
| |
| In case a command is sent for an undeclared service ID, it will |
| be rejected. Also there will be no notifications for undeclared |
| service ID. |
| |
| Valid Mode values: 0x00 = Default Mode |
| 0xXX = as defined by service |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x02 - Unregister module command/response |
| |
| Command parameters: Service id (1 octet) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| |
| Bluetooth Core HAL (ID 1) |
| ========================= |
| |
| Android HAL name: "bluetooth" (BT_HARDWARE_MODULE_ID) |
| |
| Commands and responses: |
| |
| Opcode 0x00 - Error response |
| |
| Response parameters: Status (1 octet) |
| |
| Opcode 0x01 - Enable command/response |
| |
| Command parameters: <none> |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x02 - Disable command/response |
| |
| Command parameters: <none> |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x03 - Get Adapter Properties command/response |
| |
| Command parameters: <none> |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x04 - Get Adapter Property command/response |
| |
| Command parameters: Property type (1 octet) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x05 - Set Adapter Property command/response |
| |
| Command parameters: Property type (1 octet) |
| Property length (2 octets) |
| Property value (variable) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x06 - Get Remote Device Properties command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x07 - Get Remote Device Property command/response |
| |
| Command parameters: Remote address (6 octets) |
| Property type (1 octet) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x08 - Set Remote Device Property command/response |
| |
| Command parameters: Remote address (6 octets) |
| Property type (1 octet) |
| Property length (2 octets) |
| Property value (variable) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x09 - Get Remote Service Record command/response |
| |
| Command parameters: Remote address (6 octets) |
| UUID (16 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0a - Get Remote Services command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0b - Start Discovery command/response |
| |
| Command parameters: <none> |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0c - Cancel Discovery command/response |
| |
| Command parameters: <none> |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0d - Create Bond command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0e - Remove Bond command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0f - Cancel Bond command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x10 - PIN Reply command/response |
| |
| Command parameters: Remote address (6 octets) |
| Accept (1 octet) |
| PIN length (1 octet) |
| PIN code (16 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x11 - SSP Reply command/response |
| |
| Command parameters: Remote address (6 octets) |
| SSP variant (1 octet) |
| Accept (1 octet) |
| Passkey (4 octets) |
| Response parameters: <none> |
| |
| Valid SSP variant values: 0x00 = Passkey Confirmation |
| 0x01 = Passkey Entry |
| 0x02 = Consent (for Just Works) |
| 0x03 = Passkey Notification |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x12 - DUT Mode Configure command/response |
| |
| Command parameters: Enable (1 octet) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x13 - DUT Mode Send command/response |
| |
| Command parameters: Opcode (2 octets) |
| Length (1 octet) |
| Data (variable) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x14 - LE Test Mode command/response |
| |
| Command parameters: Opcode (2 octets) |
| Length (1 octet) |
| Data (variable) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Notifications: |
| |
| Opcode 0x81 - Adapter State Changed notification |
| |
| Notifications parameters: State (1 octet) |
| |
| Valid state values: 0x00 = Off |
| 0x01 = On |
| |
| Opcode 0x82 - Adapter Properties Changed notification |
| |
| Notification parameters: Status (1 octet) |
| Num properties (1 octet) |
| Type # (1 octet) |
| Length # (2 octets) |
| Value # (variable) |
| ... |
| |
| Opcode 0x83 - Remote Device Properties notification |
| |
| Notification parameters: Status (1 octet) |
| Remote address (6 octets) |
| Num properties (1 octet) |
| Type # (1 octet) |
| Length # (2 octets) |
| Value # (variable) |
| ... |
| |
| Opcode 0x84 - Device Found notification |
| |
| Notification parameters: Num properties (1 octet) |
| Type # (1 octet) |
| Length # (2 octets) |
| Value # (variable) |
| ... |
| |
| Opcode 0x85 - Discovery State Changed notification |
| |
| Notifications parameters: State (1 octet) |
| |
| Opcode 0x86 - PIN Request notification |
| |
| Notification parameters: Remote address (6 octets) |
| Remote name (249 octets) |
| Class of device (4 octets) |
| |
| Opcode 0x87 - SSP Request notification |
| |
| Notification parameters: Remote address (6 octets) |
| Remote name (249 octets) |
| Class of device (4 octets) |
| Pairing variant (1 octet) |
| Passkey (4 octets) |
| |
| Opcode 0x88 - Bond State Changed notification |
| |
| Notification parameters: Status (1 octet) |
| Remote address (6 octets) |
| Bond state (1 octet) |
| |
| Valid bond state values: 0x00 = None |
| 0x01 = Bonding |
| 0x02 = Bonded |
| |
| Opcode 0x89 - ACL State Changed notification |
| |
| Notification parameters: Status (1 octet) |
| Remote address (6 octets) |
| ACL state (1 octet) |
| |
| Opcode 0x8a - DUT Mode Receive notification |
| |
| Notification parameters: Opcode (2 octets) |
| Length (1 octet) |
| Data (variable) |
| |
| Opcode 0x8b - LE Test Mode notification |
| |
| Notification parameters: Status (1 octet) |
| Num packets (2 octets) |
| |
| |
| Bluetooth Socket HAL (ID 2) |
| =========================== |
| |
| Android HAL name:: "socket" (BT_PROFILE_SOCKETS_ID) |
| |
| Commands and responses: |
| |
| Opcode 0x00 - Error response |
| |
| Response parameters: Status (1 octet) |
| |
| Valid status values: 0x01 = Fail |
| 0x02 = Not ready |
| 0x03 = No memory |
| 0x04 = Busy |
| 0x05 = Done (already completed) |
| 0x06 = Unsupported |
| 0x07 = Parameter invalid |
| 0x08 = Unhandled |
| 0x09 = Authentication failure |
| 0x0a = Remote device down |
| |
| Opcode 0x01 - Listen command/response |
| |
| Command parameters: Socket type (1 octet) |
| Service name (256 octets) |
| Service UUID (16 octets) |
| Channel (2 octets) |
| Socket flags (1 octet) |
| Response parameters: File descriptor (inline) |
| |
| Valid socket types: 0x01 = RFCOMM |
| 0x02 = SCO |
| 0x03 = L2CAP |
| |
| Valid socket flags: 0x01 = Encrypt |
| 0x02 = Auth |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x02 - Connect command/response |
| |
| Command parameters: Remote address (6 octets) |
| Socket type (1 octet) |
| Service UUID (16 octets) |
| Channel (2 octets) |
| Socket flags (1 octet) |
| Response parameters: File descriptor (inline) |
| |
| Valid socket types: 0x01 = RFCOMM |
| 0x02 = SCO |
| 0x03 = L2CAP |
| |
| Valid socket flags: 0x01 = Encrypt |
| 0x02 = Auth |
| |
| In case of an error, the error response will be returned. |
| |
| |
| Bluetooth HID Host HAL (ID 3) |
| ============================ |
| |
| Android HAL name: "hidhost" (BT_PROFILE_HIDHOST_ID) |
| |
| Commands and responses: |
| |
| Opcode 0x00 - Error response |
| |
| Response parameters: Status (1 octet) |
| |
| Valid status values: 0x01 = Fail |
| 0x02 = Not ready |
| 0x03 = No memory |
| 0x04 = Busy |
| 0x05 = Done (already completed) |
| 0x06 = Unsupported |
| 0x07 = Parameter invalid |
| 0x08 = Unhandled |
| 0x09 = Authentication failure |
| 0x0a = Remote device down |
| |
| Opcode 0x01 - Connect command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x02 - Disconnect command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x03 - Virtual Unplug command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x04 - Set Info command/response |
| |
| Command parameters: Remote address (6 octets) |
| Attribute mask (2 octets) |
| Subclass (1 octet) |
| Application ID (1 octet) |
| Vendor ID (2 octets) |
| Product ID (2 octets) |
| Version (2 octets) |
| Country code (1 octet) |
| Descriptor length (2 octet) |
| Descriptor value (884 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x05 - Get Protocol command/response |
| |
| Command parameters: Remote address (6 octets) |
| Protocol mode (1 octet) |
| Response parameters: <none> |
| |
| Valid protocol modes: 0x00 = Report |
| 0x01 = Boot |
| 0xff = Unsupported |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x06 - Set Protocol command/response |
| |
| Command parameters: Remote address (6 octets) |
| Protocol mode (1 octet) |
| Response parameters: <none> |
| |
| Valid protocol modes: 0x00 = Report |
| 0x01 = Boot |
| 0xff = Unsupported |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x07 - Get Report command/response |
| |
| Command parameters: Remote address (6 octets) |
| Report type (1 octet) |
| Report ID (1 octet) |
| Buffer size (2 octet) |
| Response parameters: <none> |
| |
| Valid report types: 0x01 = Input |
| 0x02 = Output |
| 0x03 = Feature |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x08 - Set Report command/response |
| |
| Command parameters: Remote address (6 octets) |
| Report type (1 octet) |
| Report length (2 octets) |
| Report data (Report length) |
| |
| Response parameters: <none> |
| |
| Valid report types: 0x01 = Input |
| 0x02 = Output |
| 0x03 = Feature |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x09 - Send Data command/response |
| |
| Command parameters: Remote address (6 octets) |
| Data length (2 octets) |
| Data (Data length) |
| |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Notifications: |
| |
| Opcode 0x81 - Connection State notification |
| |
| Notification parameters: Remote address (6 octets) |
| Connection State (1 octets) |
| |
| Valid connection states: 0x00 = Connected |
| 0x01 = Connecting |
| 0x02 = Disconnected |
| 0x03 = Disconnecting |
| 0x04 = Failed - Mouse from host |
| 0x05 = Failed - Keyboard from host |
| 0x06 = Failed - Too many devices |
| 0x07 = Failed - No HID driver |
| 0x08 = Failed - generic |
| 0x09 = Unknown |
| |
| Opcode 0x82 - HID Info notification |
| |
| Notification parameters: Remote address (6 octets) |
| Attribute mask (2 octets) |
| Subclass (1 octet) |
| Application ID (1 octet) |
| Vendor ID (2 octets) |
| Product ID (2 octets) |
| Version (2 octets) |
| Country code (1 octet) |
| Descriptor length (2 octet) |
| Descriptor value (884 octets) |
| |
| Opcode 0x83 - Protocol Mode notification |
| |
| Notification parameters: Remote address (6 octets) |
| Status (1 octet) |
| Protocol mode (1 octet) |
| |
| Valid protocol modes: 0x00 = Report |
| 0x01 = Boot |
| 0xff = Unsupported |
| |
| Opcode 0x84 - Idle Time notification |
| |
| Notification parameters: Remote address (6 octets) |
| Status (1 octet) |
| Idle time (2 octets) |
| |
| Opcode 0x85 - Get Report notification |
| |
| Notification parameters: Remote address (6 octets) |
| Status (1 octet) |
| Report length (2 octets) |
| Report data (variable) |
| |
| Opcode 0x86 - Virtual Unplug notification |
| |
| Notification parameters: Remote address (6 octets) |
| Status (1 octet) |
| |
| Valid status values: 0x00 = Ok |
| 0x01 = Handshake - Device not ready |
| 0x02 = Handshake - Invalid report ID |
| 0x03 = Handshake - Transaction not SPT |
| 0x04 = Handshake - Invalid parameter |
| 0x05 = Handshake - Generic error |
| 0x06 = General error |
| 0x07 = SDP error |
| 0x08 = Set protocol error |
| 0x09 = Device database full |
| 0x0a = Device type not supported |
| 0x0b = No resources |
| 0x0c = Authentication failed |
| 0x0d = HDL |
| |
| |
| Bluetooth PAN HAL (ID 4) |
| ======================== |
| |
| Android HAL name: "pan" (BT_PROFILE_PAN_ID) |
| |
| Commands and responses: |
| |
| Opcode 0x00 - Error response |
| |
| Response parameters: Status (1 octet) |
| |
| Valid status values: 0x01 = Fail |
| 0x02 = Not ready |
| 0x03 = No memory |
| 0x04 = Busy |
| 0x05 = Done (already completed) |
| 0x06 = Unsupported |
| 0x07 = Parameter invalid |
| 0x08 = Unhandled |
| 0x09 = Authentication failure |
| 0x0a = Remote device down |
| |
| Opcode 0x01 - Enable command/response |
| |
| Command parameters: Local role (1 octet) |
| Response parameters: <none> |
| |
| Valid role values: 0x00 = None |
| 0x01 = NAP |
| 0x02 = PANU |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x02 - Get Local Role command/response |
| |
| Command parameters: <none> |
| Response parameters: Local role (1 octet) |
| |
| Valid role values: 0x00 = None |
| 0x01 = NAP |
| 0x02 = PANU |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x03 - Connect command/response |
| |
| Command parameters: Remote address (6 octets) |
| Local role (1 octet) |
| Remote role (1 octet) |
| Response parameters: <none> |
| |
| Valid role values: 0x01 = NAP |
| 0x02 = PANU |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x04 - Disconnect command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Notifications: |
| |
| Opcode 0x81 - Control State notification |
| |
| Notification parameters: Control state (1 octet) |
| Status (1 octet) |
| Local role (1 octet) |
| Interface name (17 octet) |
| |
| Valid control states: 0x00 = Enabled |
| 0x01 = Disabled |
| |
| Valid role values: 0x00 = None |
| 0x01 = NAP |
| 0x02 = PANU |
| |
| Opcode 0x82 - Connection State notification |
| |
| Notification parameters: Connection state (1 octet) |
| Status (1 octet) |
| Remote address (6 octets) |
| Local role (1 octet) |
| Remote role (1 octet) |
| |
| Valid connection states: 0x00 = Connected |
| 0x01 = Connecting |
| 0x02 = Disconnected |
| 0x03 = Disconnecting |
| |
| Valid role values: 0x01 = NAP |
| 0x02 = PANU |
| |
| |
| Bluetooth Handsfree HAL (ID 5) |
| ============================== |
| |
| Android HAL name: "handsfree" (BT_PROFILE_HANDSFREE_ID) |
| |
| Service modes: 0x00 = Headset Profile only mode (default) |
| 0x01 = Handsfree Profile (narrowband speech) |
| 0x02 = Handsfree Profile (narrowband and wideband speech) |
| |
| Commands and responses: |
| |
| Opcode 0x00 - Error response |
| |
| Response parameters: Status (1 octet) |
| |
| Valid status values: 0x01 = Fail |
| 0x02 = Not ready |
| 0x03 = No memory |
| 0x04 = Busy |
| 0x05 = Done (already completed) |
| 0x06 = Unsupported |
| 0x07 = Parameter invalid |
| 0x08 = Unhandled |
| 0x09 = Authentication failure |
| 0x0a = Remote device down |
| |
| Opcode 0x01 - Connect command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x02 - Disconnect command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x03 - Connect Audio command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x04 - Disconnect Audio command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x05 - Start Voice Recognition command/response |
| |
| Command parameters: <none> |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x06 - Stop Voice Recognition command/response |
| |
| Command parameters: <none> |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x07 - Volume Control command/response |
| |
| Command parameters: Volume type (1 octet) |
| Volume (1 octet) |
| Response parameters: <none> |
| |
| Valid volume types: 0x00 = Speaker |
| 0x01 = Microphone |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x08 - Device Status Notification command/response |
| |
| Command parameters: Network state (1 octet) |
| Service type (1 octet) |
| Signal strength (1 octet) |
| Battery level (1 octet) |
| Response parameters: <none> |
| |
| Valid network states: 0x00 = Not available |
| 0x01 = Available |
| |
| Valid service types: 0x00 = Home network |
| 0x01 = Roaming network |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x09 - COPS Response command/response |
| |
| Command parameters: COPS command response (string) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0a - CIND Response command/response |
| |
| Command parameters: Service (1 octet) |
| Number of active calls (1 octet) |
| Number of held calls (1 octet) |
| Call setup state (1 octet) |
| Signal strength (1 octet) |
| Roaming indicator (1 octet) |
| Battery level (1 octet) |
| Response parameters: <none> |
| |
| Valid call setup states: 0x00 = Active |
| 0x01 = Held |
| 0x02 = Dialing |
| 0x03 = Alerting |
| 0x04 = Incoming |
| 0x05 = Waiting |
| 0x06 = Idle |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0b - Formatted AT Response command/response |
| |
| Command parameters: Pre-formatted AT response (string) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0c - AT Response command/response |
| |
| Command parameters: Response code (1 octet) |
| Error code (1 octet) |
| Response parameters: <none> |
| |
| Valid response codes: 0x00 = ERROR |
| 0x01 = OK |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0d - CLCC Response command/response |
| |
| Command parameters: Call index (1 octet) |
| Call direction (1 octet) |
| Call state (1 octet) |
| Call mode (1 octet) |
| Call multiparty type (1 octet) |
| Call number type (1 octet) |
| Call number (string) |
| Response parameters: <none> |
| |
| Valid call directions: 0x00 = Outgoing |
| 0x01 = Incoming |
| |
| Valid call states: 0x00 = Active |
| 0x01 = Held |
| 0x02 = Dialing |
| 0x03 = Alerting |
| 0x04 = Incoming |
| 0x05 = Waiting |
| 0x06 = Idle |
| |
| Valid call modes: 0x00 = Voice |
| 0x01 = Data |
| 0x02 = Fax |
| |
| Valid multiparty types: 0x00 = Single call |
| 0x01 = Multiparty call |
| |
| Valid number types: 0x81 = Unknown |
| 0x91 = International |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0e - Phone Status Change command/response |
| |
| Command parameters: Number of active calls (1 octet) |
| Number of held calls (1 octet) |
| Call setup state (1 octet) |
| Call number type (1 octet) |
| Call number (string) |
| Response parameters: <none> |
| |
| Valid call setup states: 0x00 = Active |
| 0x01 = Held |
| 0x02 = Dialing |
| 0x03 = Alerting |
| 0x04 = Incoming |
| 0x05 = Waiting |
| 0x06 = Idle |
| |
| Valid number types: 0x81 = Unknown |
| 0x91 = International |
| |
| In case of an error, the error response will be returned. |
| |
| Notifications: |
| |
| Opcode 0x81 - Connection State notification |
| |
| Notification parameters: Connection state (1 octet) |
| Remote address (6 octets) |
| |
| Valid connection states: 0x00 = Disconnected |
| 0x01 = Connecting |
| 0x02 = Connected |
| 0x03 = SLC connected |
| 0x04 = Disconnecting |
| |
| Opcode 0x82 - Audio State notification |
| |
| Notification parameters: Audio state (1 octet) |
| Remote address (6 octets) |
| |
| Valid audio states: 0x00 = Disconnected |
| 0x01 = Connecting |
| 0x02 = Connected |
| 0x03 = Disconnecting |
| |
| Opcode 0x83 - Voice Recognition Command notification |
| |
| Notification parameters: Voice recognition state (1 octet) |
| |
| Valid voice recognition states: 0x00 = Stopped |
| 0x01 = Started |
| |
| Opcode 0x84 - Answer Call Command notification |
| |
| Notification parameters: <none> |
| |
| Opcode 0x85 - Hangup Call Command notification |
| |
| Notification parameters: <none> |
| |
| Opcode 0x86 - Volume Command notification |
| |
| Notification parameters: Volume type (1 octet) |
| Volume (1 octet) |
| |
| Valid volume types: 0x00 = Speaker |
| 0x01 = Microphone |
| |
| Opcode 0x87 - Dial Call Command notification |
| |
| Notification parameters: Number (string) |
| |
| Opcode 0x88 - DTMF Command notification |
| |
| Notification parameters: Tone (1 octet) |
| |
| Opcode 0x89 - NREC Command notification |
| |
| Notification parameters: NREC types (1 octet) |
| |
| Valid NREC types: 0x00 = Stop |
| 0x01 = Start |
| |
| Opcode 0x8a - CHLD Command notification |
| |
| Notification parameters: NREC types (1 octet) |
| |
| Valid CHLD types: 0x00 = Release and hold |
| 0x01 = Release active and accept held |
| 0x02 = Hold active and accept held |
| 0x03 = Add held call to conference |
| |
| Opcode 0x8b - CNUM Command notification |
| |
| Notification parameters: <none> |
| |
| Opcode 0x8c - CIND Command notification |
| |
| Notification parameters: <none> |
| |
| Opcode 0x8d - COPS Command notification |
| |
| Notification parameters: <none> |
| |
| Opcode 0x8e - CLCC Command notification |
| |
| Notification parameters: <none> |
| |
| Opcode 0x8f - Unknown AT Command notification |
| |
| Notification parameters: AT command (string) |
| |
| Opcode 0x90 - Key Pressed Command notification |
| |
| Notification parameters: <none> |
| |
| |
| Bluetooth Advanced Audio HAL (ID 6) |
| =================================== |
| |
| Android HAL name: "a2dp" (BT_PROFILE_ADVANCED_AUDIO_ID) |
| |
| Commands and responses: |
| |
| Opcode 0x00 - Error response |
| |
| Response parameters: Status (1 octet) |
| |
| Valid status values: 0x01 = Fail |
| 0x02 = Not ready |
| 0x03 = No memory |
| 0x04 = Busy |
| 0x05 = Done (already completed) |
| 0x06 = Unsupported |
| 0x07 = Parameter invalid |
| 0x08 = Unhandled |
| 0x09 = Authentication failure |
| 0x0a = Remote device down |
| |
| Opcode 0x01 - Connect command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x02 - Disconnect command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Notifications: |
| |
| Opcode 0x81 - Connection State notification |
| |
| Notification parameters: Connection state (1 octet) |
| Remote address (6 octets) |
| |
| Valid connection states: 0x00 = Disconnected |
| 0x01 = Connecting |
| 0x02 = Connected |
| 0x03 = Disconnecting |
| |
| Opcode 0x82 - Audio State notification |
| |
| Notification parameters: Audio state (1 octet) |
| Remote address (6 octets) |
| |
| Valid connection states: 0x00 = Remote suspend |
| 0x01 = Stopped |
| 0x02 = Started |
| |
| |
| Bluetooth Health HAL (ID 7) |
| =========================== |
| |
| Android HAL name: "health" (BT_PROFILE_HEALTH_ID) |
| |
| Commands and responses: |
| |
| Opcode 0x00 - Error response |
| |
| Response parameters: Status (1 octet) |
| |
| Valid status values: 0x01 = Fail |
| 0x02 = Not ready |
| 0x03 = No memory |
| 0x04 = Busy |
| 0x05 = Done (already completed) |
| 0x06 = Unsupported |
| 0x07 = Parameter invalid |
| 0x08 = Unhandled |
| 0x09 = Authentication failure |
| 0x0a = Remote device down |
| |
| Opcode 0x01 - Register Application command/response |
| |
| Command parameters: Application name (string) |
| Provider name (string) |
| Service name (string) |
| Service description (string) |
| Number of MDEP (1 octet) |
| MDEP Role # (1 octet) |
| Data type # (1 octet) |
| Channel type # (1 octet) |
| MDEP description # (string) |
| ... |
| Response parameters: Application ID (2 octets) |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x02 - Unregister Application command/response |
| |
| Command parameters: Application ID (2 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x03 - Connect Channel command/response |
| |
| Command parameters: Application ID (2 octets) |
| Remote address (6 octets) |
| MDEP index (1 octet) |
| Response parameters: Channel ID (2 octets) |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x04 - Destroy Channel command/response |
| |
| Command parameters: Channel ID (2 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Notifications: |
| |
| Opcode 0x81 - Application Registration State notification |
| |
| Notification parameters: Application ID (2 octets) |
| Application state (1 octet) |
| |
| Valid application states: 0x00 = Registration success |
| 0x01 = Registration failed |
| 0x02 = Deregistration success |
| 0x03 = Deregistration failed |
| |
| Opcode 0x82 - Channel State notification |
| |
| Notification parameters: Application ID (2 octets) |
| Remote address (6 octets) |
| MDEP index (1 octet) |
| Channel ID (2 octets) |
| Channel state (1 octet) |
| File descriptor (inline) |
| |
| Valid channel states: 0x00 = Connecting |
| 0x01 = Connected |
| 0x02 = Disconnecting |
| 0x03 = Disconnected |
| 0x04 = Destroyed |
| |
| |
| Bluetooth Remote Control HAL (ID 8) |
| =================================== |
| |
| Android HAL name: "avrcp" (BT_PROFILE_AV_RC_ID) |
| |
| Commands and responses: |
| |
| Opcode 0x00 - Error response |
| |
| Response parameters: Status (1 octet) |
| |
| Valid status values: 0x01 = Fail |
| 0x02 = Not ready |
| 0x03 = No memory |
| 0x04 = Busy |
| 0x05 = Done (already completed) |
| 0x06 = Unsupported |
| 0x07 = Parameter invalid |
| 0x08 = Unhandled |
| 0x09 = Authentication failure |
| 0x0a = Remote device down |
| |
| Opcode 0x01 - Get Play Status Response command/response |
| |
| Command parameters: Status (1 octet) |
| Duration (4 octets) |
| Position (4 octets) |
| |
| In case of an error, the error response will be returned. |
| |
| Valid status values: 0x00 = Stopped |
| 0x01 = Playing |
| 0x02 = Paused |
| 0x03 = Fwd seek |
| 0x04 = Rev seek |
| 0xff = Error |
| |
| Opcode 0x02 - List Player Attributes Response command/response |
| |
| Command parameters: Number of attributes (1 octet) |
| Attribute # (1 octet) |
| ... |
| |
| In case of an error, the error response will be returned. |
| |
| Valid attributes: 0x01 = Equalizer |
| 0x02 = Repead |
| 0x03 = Shuffle |
| 0x04 = Scan |
| |
| Opcode 0x03 - List Player Values Response command/response |
| |
| Command parameters: Number of values (1 octet) |
| Value # (1 octet) |
| ... |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x04 - Get Player Values Response command/response |
| |
| Command parameters: Number of attributes (1 octet) |
| Attribute # (1 octet) |
| Value # (1 octet) |
| ... |
| |
| In case of an error, the error response will be returned. |
| |
| Valid attributes: Same as in List Player Attributes |
| |
| Opcode 0x05 - Get Player Attributes Text Response command/response |
| |
| Command parameters: Number of attributes (1 octet) |
| Attribute # (1 octet) |
| Attribute # text length (1 octet) |
| Attribute # text (variable) |
| ... |
| |
| In case of an error, the error response will be returned. |
| |
| Valid attributes: Same as in List Player Attributes |
| |
| Opcode 0x06 - Get Player Values Text Response command/response |
| |
| Command parameters: Number of values (1 octet) |
| Value # (1 octet) |
| Value # text length (1 octet) |
| Value # text (variable) |
| ... |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x07 - Get Element Attributes Text Response command/response |
| |
| Command parameters: Number of elements (1 octet) |
| Element # (1 octet) |
| Element # text length (1 octet) |
| Element # text (variable) |
| ... |
| |
| In case of an error, the error response will be returned. |
| |
| Valid elements: 0x01 = Title |
| 0x02 = Artist |
| 0x03 = Album |
| 0x04 = Track Number |
| 0x05 = Number of Tracks |
| 0x06 = Genre |
| 0x06 = Duration |
| |
| Opcode 0x08 - Set Player Attributes Value Response command/response |
| |
| Command parameters: Status (1 octet) |
| |
| In case of an error, the error response will be returned. |
| |
| Valid status values: Same as in Get Play Status Response |
| |
| Opcode 0x09 - Register Notification Response command/response |
| |
| Command parameters: Event (1 octet) |
| Type (1 octet) |
| Data length (1 octet) |
| Data (variable) |
| |
| In case of an error, the error response will be returned. |
| |
| Valid event values: 0x01 = Status Changed |
| 0x02 = Track Changed |
| 0x03 = Track Reached End |
| 0x04 = Track Reached Start |
| 0x05 = Position Changed |
| 0x08 = Setting Changed |
| |
| Valid type values : 0x00 = Interim |
| 0x01 = Changed |
| |
| Opcode 0x0a - Set Volume command/response |
| |
| Command parameters: Value (1 octet) |
| |
| In case of an error, the error response will be returned. |
| |
| Notifications: |
| |
| Opcode 0x81 - Remote Features notification |
| |
| Notification parameters: Remote address (6 octets) |
| Features (1 octet) |
| |
| Valid features values : 0x00 = None |
| 0x01 = Metadata |
| 0x02 = Absolute Volume |
| 0x03 = Browse |
| |
| Opcode 0x82 - Get Play Status notification |
| |
| Notification parameters: <none> |
| |
| Opcode 0x83 - List Player Attributes notification |
| |
| Notification parameters: <none> |
| |
| Opcode 0x84 - List Player Values notification |
| |
| Notification parameters: Attribute (1 octet) |
| |
| Valid attribute values: Same as in List Player Attributes |
| |
| Opcode 0x85 - Get Player Values notification |
| |
| Notification parameters: Number of attributes (1 octet) |
| Attribute # (1 octet) |
| ... |
| |
| Valid attribute values: Same as in List Player Attributes |
| |
| Opcode 0x86 - Get Player Attributes Text notification |
| |
| Notification parameters: Number of attributes (1 octet) |
| Attribute # (1 octet) |
| ... |
| |
| Valid attribute values: Same as in List Player Attributes |
| |
| Opcode 0x87 - Get Player Values Text notification |
| |
| Notification parameters: Attribute (1 octet) |
| Number of values (1 octet) |
| Value # (1 octet) |
| ... |
| |
| Valid attribute values: Same as in List Player Attributes |
| |
| Opcode 0x88 - Set Player Values notification |
| |
| Notification parameters: Number of attributes (1 octet) |
| Attribute # (1 octet) |
| Value # (1 octet) |
| ... |
| |
| Valid attribute values: Same as in List Player Attributes |
| |
| Opcode 0x89 - Get Element Attributes notification |
| |
| Notification parameters: Number of attributes (1 octet) |
| Attribute # (1 octet) |
| ... |
| |
| Valid attribute values: Same as in Get Element Attribute |
| |
| Opcode 0x8a - Register Notification notification |
| |
| Notification parameters: Event (1 octet) |
| Parameter (4 octets) |
| |
| Valid event values: Same as in Register Notification |
| |
| Opcode 0x8b - Volume Changed notification |
| |
| Notification parameters: Volume (1 octet) |
| Type (1 octet) |
| |
| Valid type values: Same as in Register Notification |
| |
| Opcode 0x8c - Passthrough Command notification |
| |
| Notification parameters: ID (1 octet) |
| State (1 octet) |
| |
| |
| Bluetooth GATT HAL (ID 9) |
| ========================= |
| |
| Android HAL name: "gatt" (BT_PROFILE_GATT_ID) |
| |
| Commands and responses: |
| |
| Opcode 0x00 - Error response |
| |
| Response parameters: Status (1 octet) |
| |
| Valid status values: 0x01 = Fail |
| 0x02 = Not ready |
| 0x03 = No memory |
| 0x04 = Busy |
| 0x05 = Done (already completed) |
| 0x06 = Unsupported |
| 0x07 = Parameter invalid |
| 0x08 = Unhandled |
| 0x09 = Authentication failure |
| 0x0a = Remote device down |
| |
| Opcode 0x01 - Register Client command/response |
| |
| Command parameters: Service UUID (16 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x02 - Unregister Client command/response |
| |
| Command parameters: Client Interface (4 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x03 - Scan command/response |
| |
| Command parameters: Client Interface (4 octets) |
| Start (1 octet) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x04 - Connect Device command/response |
| |
| Command parameters: Client Interface (4 octets) |
| Remote address (6 octets) |
| Is Direct (1 octet) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x05 - Disconnect Device command/response |
| |
| Command parameters: Client Interface (4 octets) |
| Remote address (6 octets) |
| Connection ID (4 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x06 - Listen command/response |
| |
| Command parameters: Client Interface (4 octets) |
| Start (1 octet) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x07 - Refresh command/response |
| |
| Command parameters: Client Interface (4 octets) |
| Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x08 - Search Service command/response |
| |
| Command parameters: Connection ID (4 octets) |
| Number of UUID Filters (1 octet) |
| UUID Filter # (16 octets) |
| ... |
| Response parameters: <none> |
| |
| Valid Number of UUID Filters: 0x00 |
| 0x01 |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x09 - Get Included Service command/response |
| |
| Command parameters: Connection ID (4 octets) |
| Number of GATT Service ID Elements (1 octet) |
| GATT Service ID # UUID (16 octets) |
| GATT Service ID # Instance ID (1 octet) |
| GATT Service ID # Is Primary (1 octet) |
| ... |
| Response parameters: <none> |
| |
| Valid Number of GATT Service ID Elements: 0x01 |
| 0x02 |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0a - Get Characteristic command/response |
| |
| Command parameters: Connection ID (4 octets) |
| GATT Service ID (18 octets) |
| Number of GATT ID Elements (1 octet) |
| GATT ID # UUID (16 octets) |
| GATT ID # Instance ID (1 octet) |
| ... |
| Response parameters: <none> |
| |
| Valid GATT Service ID: UUID (16 octets) |
| Instance ID (1 octet) |
| Is Primary (1 octet) |
| |
| Valid Number of GATT ID Elements: 0x00 |
| 0x01 |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0b - Get Descriptor command/response |
| |
| Command parameters: Connection ID (4 octets) |
| GATT Service ID (18 octets) |
| Number of GATT ID Elements (1 octet) |
| GATT ID # UUID (16 octets) |
| GATT ID # Instance ID (1 octet) |
| ... |
| Response parameters: <none> |
| |
| Valid GATT Service ID: UUID (16 octets) |
| Instance ID (1 octet) |
| Is Primary (1 octet) |
| |
| Valid Number of GATT ID Elements: 0x01 |
| 0x02 |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0c - Read Characteristic command/response |
| |
| Command parameters: Connection ID (4 octets) |
| GATT Service ID (18 octets) |
| GATT ID (17 octets) |
| Authorization (4 octets) |
| Response parameters: <none> |
| |
| Valid GATT Service ID: UUID (16 octets) |
| Instance ID (1 octet) |
| Is Primary (1 octet) |
| |
| Valid GATT ID: UUID (16 octets) |
| Instance ID (1 octet) |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0d - Write Characteristic command/response |
| |
| Command parameters: Connection ID (4 octets) |
| GATT Service ID (18 octets) |
| GATT ID (17 octets) |
| Write Type (4 octets) |
| Length (4 octets) |
| Authorization Req. (4 octets) |
| Value (variable) |
| Response parameters: <none> |
| |
| Valid GATT Service ID: UUID (16 octets) |
| Instance ID (1 octet) |
| Is Primary (1 octet) |
| |
| Valid GATT ID: UUID (16 octets) |
| Instance ID (1 octet) |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0e - Read Descriptor command/response |
| |
| Command parameters: Connection ID (4 octets) |
| GATT Service ID (18 octets) |
| GATT ID (17 octets) |
| Descr. GATT ID (17 octets) |
| Authorization Req. (4 octets) |
| Response parameters: <none> |
| |
| Valid GATT Service ID: UUID (16 octets) |
| Instance ID (1 octet) |
| Is Primary (1 octet) |
| |
| Valid GATT ID: UUID (16 octets) |
| Instance ID (1 octet) |
| |
| Valid Descr. GATT ID: UUID (16 octets) |
| Instance ID (1 octet) |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x0f - Write Descriptor command/response |
| |
| Command parameters: Connection ID (4 octets) |
| GATT Service ID (18 octets) |
| GATT ID (17 octets) |
| Descr. GATT ID (17 octets) |
| Write Type (4 octets) |
| Length (4 octets) |
| Authorization Req. (4 octets) |
| Value (variable) |
| Response parameters: <none> |
| |
| Valid GATT Service ID: UUID (16 octets) |
| Instance ID (1 octet) |
| Is Primary (1 octet) |
| |
| Valid GATT ID: UUID (16 octets) |
| Instance ID (1 octet) |
| |
| Valid Descr. GATT ID: UUID (16 octets) |
| Instance ID (1 octet) |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x10 - Execute Write command/response |
| |
| Command parameters: Connection ID (4 octets) |
| Execute (4 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x11 - Register For Notification command/response |
| |
| Command parameters: Client Interface (4 octets) |
| Remote address (6 octets) |
| GATT Service ID (18 octets) |
| GATT ID (17 octets) |
| Response parameters: <none> |
| |
| Valid GATT Service ID: UUID (16 octets) |
| Instance ID (1 octet) |
| Is Primary (1 octet) |
| |
| Valid GATT ID: UUID (16 octets) |
| Instance ID (1 octet) |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x12 - Deregister For Notification command/response |
| |
| Command parameters: Client Interface (4 octets) |
| Remote address (6 octets) |
| GATT Service ID (18 octets) |
| GATT ID (17 octets) |
| Response parameters: <none> |
| |
| Valid GATT Service ID: UUID (16 octets) |
| Instance ID (1 octet) |
| Is Primary (1 octet) |
| |
| Valid GATT ID: UUID (16 octets) |
| Instance ID (1 octet) |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x13 - Read Remote RSSI command/response |
| |
| Command parameters: Client Interface (4 octets) |
| Remote address (6 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x14 - Get Device Type command/response |
| |
| Command parameters: Remote address (6 octets) |
| Response parameters: Device Type |
| |
| Valid Device Type: 0x01 = BREDR |
| 0x02 = BLE |
| 0x03 = DUAL |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x15 - Set Advertising data command/response |
| |
| Command parameters: Server Interface (4 octets) |
| Set Scan Resp. (1 octet) |
| Include Name (1 octet) |
| Include TX Power (1 octet) |
| Min. Interval (4 octets) |
| Max. Interval (4 octets) |
| Appearance (4 octets) |
| Manufacturer Len. (2 octets) |
| Manufacturer Data (variable) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x16 - Test Command command/response |
| |
| Command parameters: Command (4 octets) |
| Address (6 octets) |
| UUID (16 octets) |
| U1 (2 octets) |
| U2 (2 octets) |
| U3 (2 octets) |
| U4 (2 octets) |
| U5 (2 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x17 - Register Server command/response |
| |
| Command parameters: UUID (16 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x18 - Unregister Server command/response |
| |
| Command parameters: Server (4 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x19 - Connect Peripheral command/response |
| |
| Command parameters: Server (4 octets) |
| Remote address (6 octes) |
| Is Direct (1 octet) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x1a - Disconnect Peripheral command/response |
| |
| Command parameters: Server (4 octets) |
| Remote address (6 octes) |
| Connection ID (1 octet) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x1b - Add Service command/response |
| |
| Command parameters: Server (4 octets) |
| GATT Service ID (18 octets) |
| Number of Handles (4 octet) |
| Response parameters: <none> |
| |
| Valid GATT Service ID: UUID (16 octets) |
| Instance ID (1 octet) |
| Is Primary (1 octet) |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x1c - Add Included Service command/response |
| |
| Command parameters: Server (4 octets) |
| Service handle (4 octets) |
| Included handle (4 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x1d - Add Characteristic command/response |
| |
| Command parameters: Server (4 octets) |
| Service handle (4 octets) |
| UUID (16 octets) |
| Properties (4 octets) |
| Permissions (4 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x1e - Add Descriptor command/response |
| |
| Command parameters: Server (4 octets) |
| Service handle (4 octets) |
| UUID (16 octets) |
| Permissions (4 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x1f - Start Service command/response |
| |
| Command parameters: Server (4 octets) |
| Service handle (4 octets) |
| Transport (4 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x20 - Stop Service command/response |
| |
| Command parameters: Server (4 octets) |
| Service handle (4 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x21 - Delete Service command/response |
| |
| Command parameters: Server (4 octets) |
| Service handle (4 octets) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x22 - Send Indication command/response |
| |
| Command parameters: Server (4 octets) |
| Attribute handle (4 octets) |
| Connection ID (4 octets) |
| Length (4 octets) |
| Confirmation (4 octets) |
| Value (variable) |
| Response parameters: <none> |
| |
| In case of an error, the error response will be returned. |
| |
| Opcode 0x23 - Send Response command/response |
| |
| Command parameters: Connection ID (4 octets) |
| Transaction ID (4 octets) |
| Status (4 octets) |
| GATT Response (4 octets) |
| Response parameters: <none> |
| |
| Valid GATT Response: GATT Value (607 octets) |
| Handle (2 octets) |
| |
| Valid GATT Value: Value (600 octets) |
| Handle (2 octets) |
| Offset (2 octets) |
| Length (2 octets) |
| Authentication Request (1 octet) |
| |
| In case of an error, the error response will be returned. |
| |
| Notifications: |
| |
| Opcode 0x81 - Register Client notification |
| |
| Notification parameters: Status (4 octets) |
| Client Interface (4 octets) |
| UUID (16 octets) |
| |
| Opcode 0x82 - Scan Result notification |
| |
| Notification parameters: Address (6 octets) |
| RSSI (4 octets) |
| Length (2 octets) |
| Data (variable) |
| |
| Opcode 0x83 - Connect Device notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Status (4 octets) |
| Client Interface (4 octets) |
| Address (6 octets) |
| |
| Opcode 0x84 - Disconnect Device notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Status (4 octets) |
| Client Interface (4 octets) |
| Address (6 octets) |
| |
| Opcode 0x85 - Search Complete notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Status (4 octets) |
| |
| Opcode 0x86 - Search Result notification |
| |
| Notification parameters: Connection ID (4 octets) |
| GATT Service ID (18 octets) |
| |
| Valid GATT Service ID: UUID (16 octets) |
| Instance ID (1 octets) |
| Is Primary (1 octet) |
| |
| Opcode 0x87 - Get Characteristic notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Status (4 octets) |
| GATT Service ID (18 octets) |
| GATT Char. ID (17 octets) |
| Char Prop. (4 octets) |
| |
| Valid GATT Service: As described in Search Result |
| |
| Valid GATT Char. ID: UUID (16 octets) |
| Instance ID (1 octet) |
| |
| Opcode 0x88 - Get Descriptor notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Status (4 octets) |
| GATT Service ID (18 octets) |
| GATT Char. ID (17 octets) |
| GATT Descr. ID (17 octets) |
| |
| Valid GATT Service & Char. ID: As described in Get Characteristic |
| |
| Valid GATT Descr. ID: UUID (16 octets) |
| Instance ID (1 octet) |
| |
| Opcode 0x89 - Get Included Service notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Status (4 octets) |
| GATT Service ID (18 octets) |
| GATT Incl. Service ID (18 octets) |
| |
| Valid GATT Service & Incl. Service ID: As described in Search Result |
| |
| Opcode 0x8a - Register For Notification notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Registered (4 octets) |
| Status (4 octets) |
| GATT Service ID (18 octets) |
| GATT Char. ID (17 octets) |
| |
| Valid GATT Service ID: As described in Get Characteristic |
| |
| Valid GATT Char. ID: As described in Get Characteristic |
| |
| Opcode 0x8b - Notify notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Address (6 octets) |
| GATT Service ID (18 octets) |
| GATT Char. ID (17 octets) |
| Is Notify (1 octet) |
| Length (2 octets) |
| Value (variable) |
| |
| Valid GATT Service ID: As described in Get Characteristic |
| |
| Valid GATT Char. ID: As described in Get Characteristic |
| |
| Opcode 0x8c - Read Characteristic notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Status (4 octets) |
| GATT Read Parameters (variable) |
| |
| Valid GATT Read Parameters: GATT Service ID (18 octets) |
| GATT Char. ID (17 octets) |
| GATT Descr. ID (17 octets) |
| Value Type (4 octets) |
| Status (1 octet) |
| Length (2 octets) |
| Value (variable) |
| |
| Valid GATT Service ID: As described in Get Characteristic |
| |
| Valid GATT Char. & Decr. ID: As described in Get Descriptor |
| |
| Opcode 0x8d - Write Characteristic notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Status (4 octets) |
| GATT Write Parameters (53 octets) |
| |
| Valid GATT Write Parameters: GATT Service ID (18 octets) |
| GATT Characteristic ID (17 octets) |
| GATT Description ID (17 octets) |
| Status (1 octet) |
| |
| Valid GATT Service ID: As described in Get Descriptor |
| |
| Valid GATT Char. & Decr. ID: As described in Get Descriptor |
| |
| Opcode 0x8e - Read Descriptor notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Status (4 octets) |
| GATT Read Parameters (variable) |
| |
| Valid GATT Read Parameters: As described in Read Characteristic |
| |
| Opcode 0x8f - Write Descriptor notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Status (4 octets) |
| GATT Write Parameters (53 octets) |
| |
| Valid GATT Write Parameters: As described in Write Characteristic |
| |
| Opcode 0x90 - Execute Write notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Status (4 octets) |
| |
| Opcode 0x91 - Read Remote RSSI notification |
| |
| Notification parameters: Client (4 octets) |
| Address (6 octets) |
| RSSI (4 octets) |
| Status (4 octets) |
| |
| Opcode 0x92 - Listen notification |
| |
| Notification parameters: Status (4 octets) |
| Server Interface (4 octets) |
| |
| Opcode 0x93 - Register Server notification |
| |
| Notification parameters: Status (4 octets) |
| Server (4 octets) |
| UUID (16 octets) |
| |
| Opcode 0x94 - Connection notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Server (4 octets) |
| Connected (4 octets) |
| Address (6 octets) |
| |
| Opcode 0x95 - Service Added notification |
| |
| Notification parameters: Status (4 octets) |
| Server (4 octets) |
| GATT Service ID (18 octets) |
| Service Handle (4 octets) |
| |
| Valid GATT Service ID: UUID (16 octets) |
| Instance ID (1 octet) |
| Is Primary (1 octet) |
| |
| Opcode 0x96 - Included Service Added notification |
| |
| Notification patemeters: Status (4 octets) |
| Server (4 octets) |
| Service Handle (4 octets) |
| Included Service Handle (4 octets) |
| |
| Opcode 0x97 - Characteristic Added notification |
| |
| Notification parameters: Status (4 octets) |
| Server (4 octets) |
| UUID (16 octets) |
| Service Handle (4 octets) |
| Characteristic Handle (4 octets) |
| |
| Opcode 0x98 - Descriptor Added notification |
| |
| Notification parameters: Status (4 octets) |
| Server (4 octets) |
| UUID (6 octets) |
| Service Handle (4 octets) |
| Descriptor Handle (4 octets) |
| |
| Opcode 0x99 - Service Started notification |
| |
| Notification parameters: Status (4 octets) |
| Server (4 octets) |
| Service Handle (4 octets) |
| |
| Opcode 0x9a - Service Stopped notification |
| |
| Notification parameters: Status (4 octets) |
| Server (4 octets) |
| Service Handle (4 octets) |
| |
| Opcode 0x9b - Service Deleted notification |
| |
| Notification parameters: Status (4 octets) |
| Server (4 octets) |
| Service Handle (4 octets) |
| |
| Opcode 0x9c - Request Read notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Trans ID (4 octets) |
| Address (6 octets) |
| Attribute Handle (4 octets) |
| Offset (4 octets) |
| Is Long (1 octet) |
| |
| Opcode 0x9d - Request Write notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Trans ID (4 octets) |
| Address (6 octets) |
| Attribute Handle (4 octets) |
| Offset (4 octets) |
| Length (4 octets) |
| Need Response (4 octets) |
| Is Prepare (1 octet) |
| Value (variable) |
| |
| Opcode 0x9e - Request Execute Write notification |
| |
| Notification parameters: Connection ID (4 octets) |
| Trans ID (4 octets) |
| Address (6 octets) |
| Execute Write (4 octets) |
| |
| Opcode 0x9f - Response Confirmation notification |
| |
| Notification parameters: Status (4 octets) |
| Handle (4 octets) |