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)
