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 0x81.

Opcode 0x80 is reserved and shall not be used.

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.

It is possible to send Configure command before registering any services to
customize stack. This step is optional.

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


Error response is common for all services and has fixed structure:

	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
		                     0x0b = Authentication rejected


Core Service (ID 0)
===================

	Opcode 0x00 - Error response

	Opcode 0x01 - Register module command/response

		Command parameters: Service id (1 octet)
		                    Mode (1 octet)
		                    Max Clients (4 octets)
		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.

	Opcode 0x03 - Configuration

		Command parameters: Num options (1 octet)
		                    Option Type # (1 octet)
		                    Option Length # (2 octets)
		                    Option Value # (variable)

		Response parameters: <none>

		Valid configure option types: 0x00 = Vendor
		                              0x01 = Model
		                              0x02 = Name
		                              0x03 = Serial Number
		                              0x04 = System ID
		                              0x05 = PnP ID
		                              0x06 = Firmware Rev
		                              0x07 = Hardware Rev

		In case of an error, the error response will be returned.

Bluetooth Core HAL (ID 1)
=========================

Android HAL name: "bluetooth" (BT_HARDWARE_MODULE_ID)

	Service modes: 0x00 = Enable BR/EDR/LE if supported (default)
	               0x01 = Enable BR/EDR only
	               0x02 = Enable LE only

Commands and responses:

	Opcode 0x00 - Error response

	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)
		                    Transport (1 octet)
		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

	Opcode 0x01 - Listen command/response

		Command parameters: Socket type (1 octet)
		                    Service name (256 octets)
		                    Service UUID (16 octets)
		                    Channel (4 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 (4 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

	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:

	Status is common for many notifications and has fixed value range:

		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

	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)

	Opcode 0x87 - Handshake notification

		Notification parameters: Remote address (6 octets)
		                         Status (1 octet)

		Only status values from 0x00 to 0x05 are valid as handshake
		status.


Bluetooth PAN HAL (ID 4)
========================

Android HAL name: "pan" (BT_PROFILE_PAN_ID)

Commands and responses:

	Opcode 0x00 - Error response

	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

	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: Remote address (6 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x06 - Stop Voice Recognition command/response

		Command parameters: Remote address (6 octets)
		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)
		                    Remote address (6 octets)
		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)
		                    Remote address (6 octets)
		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)
		                    Remote address (6 octets)
		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)
		                    Remote address (6 octets)
		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)
		                    Remote address (6 octets)
		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)
		                    Remote address (6 octets)
		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.

	Opcode 0x0f - Configure WBS command/response

		Command parameters: Remote address (6 octets)
		                    Config (1 octet)
		Response parameters: <none>

		Valid config values: 0x00 = None
		                     0x01 = No
		                     0x02 = Yes

		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)
		                         Remote address (6 octets)

		Valid voice recognition states: 0x00 = Stopped
		                                0x01 = Started

	Opcode 0x84 - Answer Call Command notification

		Notification parameters: Remote address (6 octets)

	Opcode 0x85 - Hangup Call Command notification

		Notification parameters: Remote address (6 octets)

	Opcode 0x86 - Volume Command notification

		Notification parameters: Volume type (1 octet)
		                         Volume (1 octet)
		                         Remote address (6 octets)

		Valid volume types: 0x00 = Speaker
		                    0x01 = Microphone

	Opcode 0x87 - Dial Call Command notification

		Notification parameters: Remote address (6 octets)
		                         Number (string)

	Opcode 0x88 - DTMF Command notification

		Notification parameters: Tone (1 octet)
		                         Remote address (6 octets)

	Opcode 0x89 - NREC Command notification

		Notification parameters: NREC types (1 octet)
		                         Remote address (6 octets)

		Valid NREC types: 0x00 = Stop
		                  0x01 = Start

	Opcode 0x8a - CHLD Command notification

		Notification parameters: NREC types (1 octet)
		                         Remote address (6 octets)

		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: Remote address (6 octets)

	Opcode 0x8c - CIND Command notification

		Notification parameters: Remote address (6 octets)

	Opcode 0x8d - COPS Command notification

		Notification parameters: Remote address (6 octets)

	Opcode 0x8e - CLCC Command notification

		Notification parameters: Remote address (6 octets)

	Opcode 0x8f - Unknown AT Command notification

		Notification parameters: Remote address (6 octets)
		                         AT command (string)

	Opcode 0x90 - Key Pressed Command notification

		Notification parameters: Remote address (6 octets)

	Opcode 0x91 - WBS Command notification

		Notification parameters: WBS types (1 octet)
		                         Remote address (6 octets)

		Valid WBS types: 0x00 = None
		                 0x01 = No
		                 0x02 = Yes

Bluetooth Advanced Audio HAL (ID 6)
Bluetooth Advanced Audio Sink HAL (ID 13)
=========================================

Android HAL name: "a2dp" (BT_PROFILE_ADVANCED_AUDIO_ID)
Android HAL name: "a2dp_sink" (BT_PROFILE_ADVANCED_AUDIO__SINK_ID)

Commands and responses:

	Opcode 0x00 - Error response

	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

	Opcode 0x83 - Audio Configuration notification

		Notification parameters: Remote address (6 octets)
					 Sample Rate in Hz (4 octets)
					 Channel Count (1 octet)

		Valid channel count: 0x01 = Mono
		                     0x02 = Stereo

Bluetooth Health HAL (ID 7)
===========================

Android HAL name: "health" (BT_PROFILE_HEALTH_ID)

Commands and responses:

	Opcode 0x00 - Error response

	Opcode 0x01 - Register Application command/response

		Command parameters: Number of MDEP (1 octet)
		                    Application name offset (2 octets)
		                    Provider name offset (2 octets)
		                    Service name offset (2 octets)
		                    Service description offset (2 octets)
		                    Data length (2 octets)
		                    Data (data length)
		Response parameters: Application ID (2 octets)

		Strings are null terminated.
		In case of an error, the error response will be returned.

	Opcode 0x02 - Register Application MDEP data command/response

		Command parameters: Application ID (2 octets)
                                    MDEP Role (1 octet)
		                    Data type (2 octets)
		                    Channel type (1 octet)
		                    MDEP description length (2 octets)
		                    MDEP description (MDEP desciption length)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x03 - 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 0x04 - 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 0x05 - 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 Target HAL (ID 8)
===================================

Android HAL name: "avrcp" (BT_PROFILE_AV_RC_ID)

Commands and responses:

	Opcode 0x00 - Error response

	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)

Structures:

	GATT Service ID: UUID (16 octets)
	                 Instance ID (1 octet)
	                 Is Primary (1 octet)

	GATT Included Service ID: UUID (16 octets)
	                          Instance ID (1 octet)
	                          Is Primary (1 octet)

	GATT Characteristic ID: UUID (16 octets)
	                        Instance ID (1 octet)

	GATT Descriptor ID: UUID (16 octets)
	                    Instance ID (1 octet)

Commands and responses:

	Opcode 0x00 - Error response

	Opcode 0x01 - Client Register command/response

		Command parameters: Service UUID (16 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x02 - Client Unregister command/response

		Command parameters: Client Interface (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x03 - Client 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 - Client Connect Device command/response

		Command parameters: Client Interface (4 octets)
		                    Remote address (6 octets)
		                    Is Direct (1 octet)
		                    Transport (4 octets)
		Response parameters: <none>

		Valid transport value: 0x00 = Auto
		                       0x01 = BR/EDR
		                       0x02 = LE

		In case of an error, the error response will be returned.

	Opcode 0x05 - Client 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 - Client 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 - Client 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 - Client Search Service command/response

		Command parameters: Connection ID (4 octets)
		                    Filtered (1 octet)
		                    Filter UUID (16 octets)
		Response parameters: <none>

		Filter UUID shall only be present when Filtered is non-zero.

		In case of an error, the error response will be returned.

	Opcode 0x09 - Client Get Included Service command/response

		Command parameters: Connection ID (4 octets)
		                    GATT Service ID (18 octets)
		                    Continuation (1 octet)
		                    GATT Included Service ID (18 octets)
		                    ...
		Response parameters: <none>

		GATT Included Service ID shall only be present when Continuation
		is non-zero.

		In case of an error, the error response will be returned.

	Opcode 0x0a - Client Get Characteristic command/response

		Command parameters: Connection ID (4 octets)
		                    GATT Service ID (18 octets)
		                    Continuation (1 octet)
		                    GATT Characteristic ID (17 octets)
		                    ...
		Response parameters: <none>

		GATT Characteristic ID shall only be present when Continuation
		is non-zero.

		In case of an error, the error response will be returned.

	Opcode 0x0b - Client Get Descriptor command/response

		Command parameters: Connection ID (4 octets)
		                    GATT Service ID (18 octets)
		                    GATT Characteristic ID (17 octets)
		                    Continuation (1 octet)
		                    GATT Descriptor ID (17 octets)
		                    ...
		Response parameters: <none>

		GATT Descriptor ID shall only be present when Continuation is
		non-zero.

		In case of an error, the error response will be returned.

	Opcode 0x0c - Client Read Characteristic command/response

		Command parameters: Connection ID (4 octets)
		                    GATT Service ID (18 octets)
		                    GATT Characteristic ID (17 octets)
		                    Authorization (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x0d - Client Write Characteristic command/response

		Command parameters: Connection ID (4 octets)
		                    GATT Service ID (18 octets)
		                    GATT Characteristic ID (17 octets)
		                    Write Type (4 octets)
		                    Length (4 octets)
		                    Authorization Req. (4 octets)
		                    Value (variable)
		Response parameters: <none>

		Valid Write Type: 0x01 = No response
		                  0x02 = Default
		                  0x03 = Prepare
		                  0x04 = Signed

		In case of an error, the error response will be returned.

	Opcode 0x0e - Client Read Descriptor command/response

		Command parameters: Connection ID (4 octets)
		                    GATT Service ID (18 octets)
		                    GATT Characteristic ID (17 octets)
		                    GATT Descriptor ID (17 octets)
		                    Authorization Req. (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x0f - Client Write Descriptor command/response

		Command parameters: Connection ID (4 octets)
		                    GATT Service ID (18 octets)
		                    GATT Characteristic ID (17 octets)
		                    GATT Descriptor ID (17 octets)
		                    Write Type (4 octets)
		                    Length (4 octets)
		                    Authorization Req. (4 octets)
		                    Value (variable)
		Response parameters: <none>

		Valid Write Type: 0x01 = No response
		                  0x02 = Default
		                  0x03 = Prepare
		                  0x04 = Signed

		In case of an error, the error response will be returned.

	Opcode 0x10 - Client 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 - Client Register For Notification command/response

		Command parameters: Client Interface (4 octets)
		                    Remote address (6 octets)
		                    GATT Service ID (18 octets)
		                    GATT Characteristic ID (17 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x12 - Client Deregister For Notification command/response

		Command parameters: Client Interface (4 octets)
		                    Remote address (6 octets)
		                    GATT Service ID (18 octets)
		                    GATT Characteristic ID (17 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x13 - Client 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 - Client 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 - Client 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 - Client 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 - Server Register command/response

		Command parameters: UUID (16 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x18 - Server Unregister command/response

		Command parameters: Server (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x19 - Server Connect Peripheral command/response

		Command parameters: Server (4 octets)
		                    Remote address (6 octets)
		                    Is Direct (1 octet)
		                    Transport (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x1a - Server Disconnect Peripheral command/response

		Command parameters: Server (4 octets)
		                    Remote address (6 octets)
		                    Connection ID (1 octet)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x1b - Server 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 - Server 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 - Server 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 - Server 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 - Server 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 - Server 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 - Server 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 - Server 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 - Server Send Response command/response

		Command parameters: Connection ID (4 octets)
		                    Transaction ID (4 octets)
		                    Handle (2 octets)
		                    Offset (2 octets)
		                    Auth Request (1 octect)
		                    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.

	Opcode 0x24 - Client Scan Filter Params Setup command/response

		Command parameters: Client Interface (4 octets)
		                    Action (4 octets)
		                    Filter Index (4 octets)
		                    Features (4 octets)
		                    List Type (4 octets)
		                    Filter Type (4 octets)
		                    RSSI High Threshold (4 octets)
		                    RSSI Low Threshold (4 octets)
		                    Delivery Mode (4 octets)
		                    Found Timeout (4 octets)
		                    Lost Timeout (4 octets)
		                    Found Timeout Count (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x25 - Client Scan Filter Add Remove command/response

		Command parameters: Client Interface (4 octets)
		                    Action (4 octets)
		                    Filter Type (4 octets)
		                    Filter Index (4 octets)
		                    Company ID (4 octets)
		                    Company ID Mask (4 octets)
		                    UUID (16 octets)
		                    UUID Mask (16 octets)
		                    Address (6 octets)
		                    Address Type (1 octet)
		                    Data Length (4 octets)
		                    Data (variable)
		                    Mask Length (4 octets)
		                    Mask (variable)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x26 - Client Scan Filter Clear command/response

		Command parameters: Client Interface (4 octets)
		                    Filter Index (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x27 - Client Scan Filter Enable command/response

		Command parameters: Client Interface (4 octets)
		                    Enable (1 octet)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x28 - Client Configure MTU command/response

		Command parameters: Connection ID (4 octets)
		                    MTU (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x29 - Client Connection Parameter Update command/response

		Command parameters: Address (6 octets)
		                    Min Interval (4 octets)
		                    Max Interval (4 octets)
		                    Latency (4 octets)
		                    Timeoutl (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x2a - Client Set Scan Parameters command/response

		Command parameters: Scan Interval (4 octets)
		                    Scan Window (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x2b - Client Setup Multi Advertising command/response

		Command parameters: Client ID (4 octets)
		                    Min Interval (4 octets)
		                    Max Interval (4 octets)
		                    ADV Type (4 octets)
		                    Channel Map (4 octets)
		                    TX Power (4 octets)
		                    Timeout (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x2c - Client Update Multi Advertising command/response

		Command parameters: Client ID (4 octets)
		                    Min Interval (4 octets)
		                    Max Interval (4 octets)
		                    ADV Type (4 octets)
		                    Channel Map (4 octets)
		                    TX Power (4 octets)
		                    Timeout (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x2d - Client Setup Multi Advertising Instance command/response

		Command parameters: Client ID (4 octets)
		                    Set Scan Response (1 octet)
		                    Include Name (1 octet)
		                    Include TX Power (1 octet)
		                    Appearance (4 octets)
		                    Manufacturer Data Length (4 octets)
		                    Manufacturer Data (variable)
		                    Service Data Length (4 octets)
		                    Service Data (variable)
		                    Service UUID Length (4 octets)
		                    Service UUID (variable)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x2e - Client Disable Multi Advertising Instance command/response

		Command parameters: Client ID (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x2f - Client Configure Batchscan command/response

		Command parameters: Client ID (4 octets)
		                    Full Max (4 octets)
		                    Trunc Max (4 octets)
		                    Notify Threshold (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x30 - Client Enable Batchscan command/response

		Command parameters: Client ID (4 octets)
		                    Scan Mode (4 octets)
		                    Scan Interval (4 octets)
		                    Scan Window (4 octets)
		                    Address Type (4 octets)
		                    Discard Rule (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x31 - Client Disable Batchscan command/response

		Command parameters: Client ID (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x32 - Client Read Batchscan Resports command/response

		Command parameters: Client ID (4 octets)
		                    Scan Mode (4 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

Notifications:

	Opcode 0x81 - Client Register notification

		Notification parameters: Status (4 octets)
		                         Client Interface (4 octets)
		                         UUID (16 octets)

	Opcode 0x82 - Client Scan Result notification

		Notification parameters: Address (6 octets)
		                         RSSI (4 octets)
		                         Length (2 octets)
		                         Data (variable)

	Opcode 0x83 - Client Connect Device notification

		Notification parameters: Connection ID (4 octets)
		                         Status (4 octets)
		                         Client Interface (4 octets)
		                         Address (6 octets)

	Opcode 0x84 - Client Disconnect Device notification

		Notification parameters: Connection ID (4 octets)
		                         Status (4 octets)
		                         Client Interface (4 octets)
		                         Address (6 octets)

	Opcode 0x85 - Client Search Complete notification

		Notification parameters: Connection ID (4 octets)
		                         Status (4 octets)

	Opcode 0x86 - Client Search Result notification

		Notification parameters: Connection ID (4 octets)
		                         GATT Service ID (18 octets)

	Opcode 0x87 - Client Get Characteristic notification

		Notification parameters: Connection ID (4 octets)
		                         Status (4 octets)
		                         GATT Service ID (18 octets)
		                         GATT Characteristic ID (17 octets)
		                         Char Prop. (4 octets)

	Opcode 0x88 - Client Get Descriptor notification

		Notification parameters: Connection ID (4 octets)
		                         Status (4 octets)
		                         GATT Service ID (18 octets)
		                         GATT Characteristic ID (17 octets)
		                         GATT Descriptor ID (17 octets)

	Opcode 0x89 - Client Get Included Service notification

		Notification parameters: Connection ID (4 octets)
		                         Status (4 octets)
		                         GATT Service ID (18 octets)
		                         GATT Included Service ID (18 octets)

	Opcode 0x8a - Client Register For Notification notification

		Notification parameters: Connection ID (4 octets)
		                         Registered (4 octets)
		                         Status (4 octets)
		                         GATT Service ID (18 octets)
		                         GATT Characteristic ID (17 octets)

	Opcode 0x8b - Client Notify notification

		Notification parameters: Connection ID (4 octets)
		                         Address (6 octets)
		                         GATT Service ID (18 octets)
		                         GATT Characteristic ID (17 octets)
		                         Is Notify (1 octet)
		                         Length (2 octets)
		                         Value (variable)

	Opcode 0x8c - Client 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 Characteristic ID (17 octets)
		                            GATT Descriptor ID (17 octets)
		                            Value Type (4 octets)
		                            Status (1 octet)
		                            Length (2 octets)
		                            Value (variable)

	Opcode 0x8d - Client 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)

	Opcode 0x8e - Client 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 - Client 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 - Client Execute Write notification

		Notification parameters: Connection ID (4 octets)
		                         Status (4 octets)

	Opcode 0x91 - Client Read Remote RSSI notification

		Notification parameters: Client (4 octets)
		                         Address (6 octets)
		                         RSSI (4 octets)
		                         Status (4 octets)

	Opcode 0x92 - Client Listen notification

		Notification parameters: Status (4 octets)
		                         Server Interface (4 octets)

	Opcode 0x93 - Server Register notification

		Notification parameters: Status (4 octets)
		                         Server (4 octets)
		                         UUID (16 octets)

	Opcode 0x94 - Server Connection notification

		Notification parameters: Connection ID (4 octets)
		                         Server (4 octets)
		                         Connected (4 octets)
		                         Address (6 octets)

	Opcode 0x95 - Server Service Added notification

		Notification parameters: Status (4 octets)
		                         Server (4 octets)
		                         GATT Service ID (18 octets)
		                         Service Handle (4 octets)

	Opcode 0x96 - Server Included Service Added notification

		Notification patemeters: Status (4 octets)
		                         Server (4 octets)
		                         Service Handle (4 octets)
		                         Included Service Handle (4 octets)

	Opcode 0x97 - Server Characteristic Added notification

		Notification parameters: Status (4 octets)
		                         Server (4 octets)
		                         UUID (16 octets)
		                         Service Handle (4 octets)
		                         Characteristic Handle (4 octets)

	Opcode 0x98 - Server Descriptor Added notification

		Notification parameters: Status (4 octets)
		                         Server (4 octets)
		                         UUID (6 octets)
		                         Service Handle (4 octets)
		                         Descriptor Handle (4 octets)

	Opcode 0x99 - Server Service Started notification

		Notification parameters: Status (4 octets)
		                         Server (4 octets)
		                         Service Handle (4 octets)

	Opcode 0x9a - Server Service Stopped notification

		Notification parameters: Status (4 octets)
		                         Server (4 octets)
		                         Service Handle (4 octets)

	Opcode 0x9b - Server Service Deleted notification

		Notification parameters: Status (4 octets)
		                         Server (4 octets)
		                         Service Handle (4 octets)

	Opcode 0x9c - Server 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 - Server 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 - Server Request Execute Write notification

		Notification parameters: Connection ID (4 octets)
		                         Trans ID (4 octets)
		                         Address (6 octets)
		                         Execute Write (4 octets)

	Opcode 0x9f - Server Response Confirmation notification

		Notification parameters: Status (4 octets)
		                         Handle (4 octets)

	Opcode 0xa0 - Client Configure MTU notification

		Notification parameters: Connection ID (4 octets)
		                         Status (4 octets)
		                         MTU (4 octets)

	Opcode 0xa1 - Client Filter Configuration notification

		Notification parameters: Action (4 octets)
		                         Client ID (4 octets)
		                         Status (4 octets)
		                         Filter Type (4 octets)
		                         Available Space (4 octets)

	Opcode 0xa2 - Client Filter Parameters notification

		Notification parameters: Action (4 octets)
		                         Client ID (4 octets)
		                         Status (4 octets)
		                         Available Space (4 octets)

	Opcode 0xa3 - Client Filter Status notification

		Notification parameters: Enable (4 octets)
		                         Client ID (4 octets)
		                         Status (4 octets)

	Opcode 0xa4 - Client Multi Advertising Enable notification

		Notification parameters: Client ID (4 octets)
		                         Status (4 octets)

	Opcode 0xa5 - Client Multi Advertising Update notification

		Notification parameters: Client ID (4 octets)
		                         Status (4 octets)

	Opcode 0xa6 - Client Multi Advertising Data notification

		Notification parameters: Client ID (4 octets)
		                         Status (4 octets)

	Opcode 0xa7 - Client Multi Advertising Disable notification

		Notification parameters: Client ID (4 octets)
		                         Status (4 octets)

	Opcode 0xa8 - Client Congestion notification

		Notification parameters: Connection ID (4 octets)
		                         Congested (1 octet)

	Opcode 0xa9 - Client Configure Batchscan notification

		Notification parameters: Client ID (4 octets)
		                         Status (4 octets)

	Opcode 0xaa - Client Enable Batchscan notification

		Notification parameters: Action (4 octets)
		                         Client ID (4 octets)
		                         Status (4 octets)

	Opcode 0xab - Client Batchscan Reports notification

		Notification parameters: Client ID (4 octets)
		                         Status (4 octets)
		                         Report Format (4 octets)
		                         Num Reports (4 octets)
		                         Data Length (4 octets)
		                         Data (variable)

	Opcode 0xac - Client Batchscan Threshold notification

		Notification parameters: Client ID (4 octets)

	Opcode 0xad - Client Track ADV notification

		Notification parameters: Client ID (4 octets)
		                         Filter Index (4 octets)
		                         Address Type (4 octets)
		                         Address (6 octets)
		                         State (4 octets)

	Opcode 0xae - Server Indication Sent notification

		Notification parameters: Connection ID (4 octets)
		                         Status (4 octets)

	Opcode 0xaf - Server Congestion notification

		Notification parameters: Connection ID (4 octets)
		                         Congested (1 octet)

	Opcode 0xb0 - Server MTU Changed notification

		Notification parameters: Connection ID (4 octets)
		                         MTU (4 octets)


Bluetooth Handsfree Client HAL (ID 10)
======================================

Android HAL name: "hf_client" (BT_PROFILE_HANDSFREE_CLIENT_ID)

Commands and response:

	Opcode 0x00 - Error response

	Opcode 0x01 - Connect command/respose

		Command parameters: Remote address (6 octects)
		Response parameters: <none>

		 In case of an error, the error response will be returned.

	Opcode 0x02 - Disonnect command/response

		Command parameters: Remote address (6 octetcs)
		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 - Dial command/response

		Command parameters: Number (string)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x09 - Dial Memory command/response

		Command parameters: Location (4 octet)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x10 - Handle Call Action command/response

		Command parameters: Action (1 octet)
		                    Call Index (1 octet)
		Response parameters: <none>

		Valid actions: 0x00 = CHLD_0
		               0x01 = CHLD_1
		               0x02 = CHLD_2
		               0x03 = CHLD_3
		               0x04 = CHLD_4
		               0x05 = CHLD_1x
		               0x06 = CHLD_2x
		               0x07 = ATA
		               0x08 = CHUP
		               0x09 = BTRH_0
		               0x10 = BTRH_1
		               0x11 = BTRH_2

		In case of an error, the error response will be returned.

	Opcode 0x11 - Query Current Calls commad/response

		Command parameters: <none>
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x12 - Query Current Operator Name

		Command parameters: <none>
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x13 - Retrieve Subscriber Info command/response

		Command parameters: <none>
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x14 - Send DTMF Tone command/response

		Command parameters: Tone (1 octet)
		Response parameters: <none>

		In case of an error, the error response will be returned.

	Opcode 0x15 - Request Last Voice Tag Number command/response

		Command parameters: <none>
		Response parameters: <none>

		In case of an error, the error response will be returned.

Notifications:

	Opcode 0x81 - Connection State Changed notification

		Notification parameters: State (1 octet)
		                         Peer Features (4 octets)
		                         CHLD Features (4 octets)
		                         Address (6 octets)

		Valid State values: 0x00 = Disconnected
		                    0x01 = Connecting
		                    0x02 = Connected
		                    0x03 = SLC Connected
		                    0x04 = Disconnecting

		Peer Features is a bitmask of the supported features. Currently
		available bits:

			0	Three way calling
			1	Echo cancellation and/or noise reduction
			2	Voice recognition
			3	In band ring tone
			4	Attach a number to a voice tag
			5	Ability to reject a call
			6	Enhanced call status
			7	Enhanced call control
			8	Extended Error Result Codes
			9	Codec negotiations
			10-31	Reserved for future use

		CHLD Features is a bitmask of the supported features. Currently
		available bits:

			0	Release waiting call or held calls
			1	Release active calls and accept other call
			2	Release specified active call only
			3	Place all active calls on hold and accept other call
			4	Request private mode with secified call
			5	Add a held call to the multiparty
			6	Connect two calls and leave multiparty
			7-31	Reserved for future use

		Note: Peer and CHLD Features are valid only in SCL Connected state


	Opcode 0x82 - Audio State Changed notification

		Notification parameters: State (1 octet)
		                         Address (6 octets)

		Valid State values: 0x00 = Disconnected
		                    0x01 = Connecting
		                    0x02 = Connected
		                    0x03 = Connected mSBC

	Opcode 0x83 - Voice Recognition State Changed notification

		Notification parameters: State (1 octet)

		Valid State values: 0x00 = VR Stopped
		                    0x01 = VR Started

	Opcode 0x84 - Network State Changed notification

		Notification parameters: State (1 octet)

		Valid State values: 0x00 = Network Not Available
		                    0x01 = Network Available

	Opcode 0x85 - Network Roaming Type Changed notification

		Notification parameters: Type (1 octet)

		Valid Type values: 0x00 = Home
		                   0x01 = Roaming

	Opcode 0x86 - Network Signal Strength notification

		Notification parameters: Signal Strength (1 octet)

	Opcode 0x87 - Battery Level notification

		Notification parameters: Battery Level (1 octet)

	Opcode 0x88 - Current Operator Name notification

		Notification parameters: Name (string)

	Opcode 0x89 - Call Indicatior notification

		Notification parameters: Call (1 octet)

		Valid Call values: 0x00 = No Call In Progress
		                   0x01 = Call In Progress

	Opcode 0x8a - Call Setup Indicator notification

		Notification parameters: Call Setup (1 octet)

		Valid Call Setup values: 0x00 = None
		                         0x01 = Incoming
		                         0x02 = Outgoing
		                         0x03 = Alerting

	Opcode 0x8b - Call Held Indicator notification

		Notification parameters: Call Held (1 octet)

		Valid Call Held values: 0x00 = None
		                        0x01 = Hold and Active
					0x02 = Hold

	Opcode 0x8c - Resposne and Hold Status notification

		Notification parameters: Status (1 octet)

		Valid Status values: 0x00 = Held
		                     0x01 = Accept
		                     0x02 = Reject

	Opcode 0x8d - Calling Line Identification notification

		Notification parameters: Number (string)

		Note: This will be called only on incoming call if number is
		provided.

	Opcode 0x8e - Call Waiting notification

		Notification parameters: Nunmber (string)

	Opcode 0x8f - Current Calls List notification

		Notification parameters: Index (1 octet)
		                         Direction (1 octet)
		                         Call State (1 octet)
		                         Multiparty (1 octet)
		                         Number (string)

		Valid Direction values: 0x00 = Outgoing
		                        0x01 = Incoming

		Valid Call Sate values: 0x00 = Active
		                        0x01 = Held
		                        0x02 = Dialing
		                        0x03 = Alerting
		                        0x04 = Incoming
		                        0x05 = Waiting
		                        0x06 = Call held by Response and Hold

		Valid Multiparty values: 0x00 = Single Call
		                         0x01 = Multiparty (conference) Call

		Note: Number might be empty

	Opcode 0x90 - Volume Changed notification

		Notification parameters: Type (1 octet)
		                         Volume (1 octet)

		Valid Type values: 0x00 = Speaker
		                   0x01 = Microphone

	Opcode 0x91 - Command Complete Callback notification

		Notification parameters: Type (1 octet)
		                         CME (1 octet)

		Valid Type values: 0x00 = OK
		                   0x01 = Error
		                   0x02 = Error no carrier
		                   0x03 = Error busy
		                   0x04 = Error no answer
		                   0x05 = Error delayed
		                   0x06 = Error blacklisted
		                   0x07 = Error CME

		Note: CME parameter is valid only for Error CME type

	Opcode 0x92 - Subscriber Service Info Callback notification

		Notification parameters: Name (string)
		                         Type (1 octet)

		Valid Type values: 0x00 = Service unknown
		                   0x01 = Service voice
		                   0x02 = Service fax

	Opcode 0x93 - In Band Ring Settings Callback notification

		Notification parameters: State (1 octet)

		Valid State values: 0x00 = In band ringtone not provided
		                    0x01 = In band ringtone provided

	Opcode 0x94 - Last Voice Call Tag Number Callback notification

		Notification parameters: Number (string)

	Opcode 0x95 - Ring Indication notification

		Notification parameters: <none>


Bluetooth Map Client HAL (ID 11)
=========================

Android HAL name: "map_client" (BT_PROFILE_MAP_CLIENT_ID)

Commands and responses:

	Opcode 0x00 - Error response

	Opcode 0x01 - Get Remote MAS Instances

		Command parameters: Remote address (6 octets)
		Response parameters: <none>

		In case of an error, the error response will be returned.

Notifications:

	Opcode 0x81 - Remote MAS Instances notification

		Notification parameters: Status (1 octet)
		                         Remote address (6 octets)
		                         Number of instances (4 octets)
		                         Instance ID # (4 octets)
		                         Channel # (4 octets)
		                         Message types (4 octets)
		                         Name # (string)

Bluetooth Remote Control Controller HAL (ID 12)
===================================

Android HAL name: "avrcp-ctrl" (BT_PROFILE_AV_RC_CTRL_ID)

Commands and responses:

	Opcode 0x00 - Error response

	Opcode 0x01 - Send Pass Through command/response

		Command parameters: Remote Address (6 octets)
		                    Key Code (1 octet)
		                    Key State (1 octet)

		In case of an error, the error response will be returned.

Notifications:

	Opcode 0x81 - Passthrough Response Notification

		Notification parameters: ID (1 octet)
		                         Key State (1 octet)

	Opcode 0x82 - Connection State Notification

		Notification parameters: State (1 octet)
		                         Remote Address (6 octets)
