# BlueNRG-MS ACI description

This document describes the Application Commands Interface (ACI) provided by the device to the external microcontroller.

ACI Commands

ACI Events

Error codes

# ACI Commands

HCI Commands

HCI TESTING Commands

HAL Commands

GAP Commands

GATT/ATT Commands

L2CAP Commands

## HCI Commands

Command | OpCode
--- | ---
HCI_DISCONNECT | 0x0406
HCI_READ_REMOTE_VERSION_INFORMATION | 0x041D
HCI_SET_EVENT_MASK | 0x0C01
HCI_RESET | 0x0C03
HCI_READ_TRANSMIT_POWER_LEVEL | 0x0C2D
HCI_READ_LOCAL_VERSION_INFORMATION | 0x1001
HCI_READ_LOCAL_SUPPORTED_COMMANDS | 0x1002
HCI_READ_LOCAL_SUPPORTED_FEATURES | 0x1003
HCI_READ_BD_ADDR | 0x1009
HCI_READ_RSSI | 0x1405
HCI_LE_SET_EVENT_MASK | 0x2001
HCI_LE_READ_BUFFER_SIZE | 0x2002
HCI_LE_READ_LOCAL_SUPPORTED_FEATURES | 0x2003
HCI_LE_SET_RANDOM_ADDRESS | 0x2005
HCI_LE_SET_ADVERTISING_PARAMETERS | 0x2006
HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER | 0x2007
HCI_LE_SET_ADVERTISING_DATA | 0x2008
HCI_LE_SET_SCAN_RESPONSE_DATA | 0x2009
HCI_LE_SET_ADVERTISE_ENABLE | 0x200A
HCI_LE_SET_SCAN_PARAMETERS | 0x200B
HCI_LE_SET_SCAN_ENABLE | 0x200C
HCI_LE_CREATE_CONNECTION | 0x200D
HCI_LE_CREATE_CONNECTION_CANCEL | 0x200E
HCI_LE_READ_WHITE_LIST_SIZE | 0x200F
HCI_LE_CLEAR_WHITE_LIST | 0x2010
HCI_LE_ADD_DEVICE_TO_WHITE_LIST | 0x2011
HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST | 0x2012
HCI_LE_CONNECTION_UPDATE | 0x2013
HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION | 0x2014
HCI_LE_READ_CHANNEL_MAP | 0x2015
HCI_LE_READ_REMOTE_USED_FEATURES | 0x2016
HCI_LE_ENCRYPT | 0x2017
HCI_LE_RAND | 0x2018
HCI_LE_START_ENCRYPTION | 0x2019
HCI_LE_LONG_TERM_KEY_REQUEST_REPLY | 0x201A
HCI_LE_LONG_TERM_KEY_REQUESTED_NEGATIVE_REPLY | 0x201B
HCI_LE_READ_SUPPORTED_STATES | 0x201C

## HCI_DISCONNECT

### Description

The HCI_DISCONNECT is used to terminate an existing connection. The Connection_Handle command parameter indicates which connection is to be disconnected. The Reason command parameter indicates the reason for ending the connection. The remote Controller will receive the Reason command parameter in the HCI_DISCONNECTION_COMPLETE_EVENT event. All synchronous connections on a physical link should be disconnected before the ACL connection on the same physical connection is disconnected. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.1.6) It is important to leave an 100 ms blank window before sending any new command (including system hardware reset), since immediately after HCI_DISCONNECTION_COMPLETE_EVENT event, system could save important information in non volatile memory.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Reason | 1 | Authentication Failure error code (0x05), Other End Terminated Connection error codes (0x13-0x15), Unsupported Remote Feature error code(0x1A) and Pairing with Unit Key Not Supported error code (0x29) |
- 0x05:Authentication Failure
- 0x13:Other End Terminated Connection
- 0x14:Other End Terminated Connection
- 0x15:Other End Terminated Connection
- 0x1A:Unsupported Remote Feature
- 0x29:Pairing with Unit Key Not Supported

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_DISCONNECTION_COMPLETE_EVENT

## HCI_READ_REMOTE_VERSION_INFORMATION

### Description

This command will obtain the values for the version information for the remote device identified by the Connection_Handle parameter. The Connection_Handle must be a Connection_Handle for an ACL or LE connection. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.1.23)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Specifies which Connection_Handle's version information to get. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_READ_REMOTE_VERSION_INFORMATION_COMPLETE_EVENT

## HCI_SET_EVENT_MASK

### Description

The Set_Event_Mask command is used to control which events are generated by the HCI for the Host. If the bit in the Event_Mask is set to a one, then the event associated with that bit will be enabled. For an LE Controller, the LE Meta Event bit in the Event_Mask shall enable or disable all LE events in the LE Meta Event (see Section 7.7.65). The Host has to deal with each event that occurs. The event mask allows the Host to control how much it is interrupted. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.3.1)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Event_Mask | 8 | 0x0000000000000000 No events specified 0x0000000000000001 Inquiry Complete Event 0x0000000000000002 Inquiry Result Event 0x0000000000000004 Connection Complete Event 0x0000000000000008 Connection Request Event 0x0000000000000010 Disconnection Complete Event 0x0000000000000020 Authentication Complete Event 0x0000000000000040 Remote Name Request Complete Event 0x0000000000000080 Encryption Change Event 0x0000000000000100 Change Connection Link Key Complete Event 0x0000000000000200 Master Link Key Complete Event 0x0000000000000400 Read Remote Supported Features Complete Event 0x0000000000000800 Read Remote Version Information Complete Event 0x0000000000001000 QoS Setup Complete Event 0x0000000000002000 Reserved 0x0000000000004000 Reserved 0x0000000000008000 Hardware Error Event 0x0000000000010000 Flush Occurred Event 0x0000000000020000 Role Change Event 0x0000000000040000 Reserved 0x0000000000080000 Mode Change Event 0x0000000000100000 Return Link Keys Event 0x0000000000200000 PIN Code Request Event 0x0000000000400000 Link Key Request Event 0x0000000000800000 Link Key Notification Event 0x0000000001000000 Loopback Command Event 0x0000000002000000 Data Buffer Overflow Event 0x0000000004000000 Max Slots Change Event 0x0000000008000000 Read Clock Offset Complete Event 0x0000000010000000 Connection Packet Type Changed Event 0x0000000020000000 QoS Violation Event 0x0000000040000000 Page Scan Mode Change Event [deprecated] 0x0000000080000000 Page Scan Repetition Mode Change Event 0x0000000100000000 Flow Specification Complete Event 0x0000000200000000 Inquiry Result with RSSI Event 0x0000000400000000 Read Remote Extended Features Complete Event 0x0000000800000000 Reserved 0x0000001000000000 Reserved 0x0000002000000000 Reserved 0x0000004000000000 Reserved 0x0000008000000000 Reserved 0x0000010000000000 Reserved 0x0000020000000000 Reserved 0x0000040000000000 Reserved 0x0000080000000000 Synchronous Connection Complete Event 0x0000100000000000 Synchronous Connection Changed Event 0x0000200000000000 Sniff Subrating Event 0x0000400000000000 Extended Inquiry Result Event 0x0000800000000000 Encryption Key Refresh Complete Event 0x0001000000000000 IO Capability Request Event 0x0002000000000000 IO Capability Request Reply Event 0x0004000000000000 User Confirmation Request Event 0x0008000000000000 User Passkey Request Event 0x0010000000000000 Remote OOB Data Request Event 0x0020000000000000 Simple Pairing Complete Event 0x0040000000000000 Reserved 0x0080000000000000 Link Supervision Timeout Changed Event 0x0100000000000000 Enhanced Flush Complete Event 0x0200000000000000 Reserved 0x0400000000000000 User Passkey Notification Event 0x0800000000000000 Keypress Notification Event 0x1000000000000000 Remote Host Supported Features Notification Event 0x2000000000000000 LE Meta-Event 0xC000000000000000 Reserved for future use 0x00001FFFFFFFFFFF Default | Bitmask of:
- 0x0000000000000000:No events specified
- 0x0000000000000001:Inquiry Complete Event
- 0x0000000000000002:Inquiry Result Event
- 0x0000000000000004:Connection Complete Event
- 0x0000000000000008:Connection Request Event
- 0x0000000000000010:Disconnection Complete Event
- 0x0000000000000020:Authentication Complete Event
- 0x0000000000000040:Remote Name Request Complete Event
- 0x0000000000000080:Encryption Change Event
- 0x0000000000000100:Change Connection Link Key Complete Event
- 0x0000000000000200:Master Link Key Complete Event
- 0x0000000000000400:Read Remote Supported Features Complete Event
- 0x0000000000000800:Read Remote Version Information Complete Event
- 0x0000000000001000:QoS Setup Complete Event
- 0x0000000000008000:Hardware Error Event
- 0x0000000000010000:Flush Occurred Event
- 0x0000000000020000:Role Change Event
- 0x0000000000080000:Mode Change Event
- 0x0000000000100000:Return Link Keys Event
- 0x0000000000200000:PIN Code Request Event
- 0x0000000000400000:Link Key Request Event
- 0x0000000000800000:Link Key Notification Event
- 0x0000000001000000:Loopback Command Event
- 0x0000000002000000:Data Buffer Overflow Event
- 0x0000000004000000:Max Slots Change Event
- 0x0000000008000000:Read Clock Offset Complete Event
- 0x0000000010000000:Connection Packet Type Changed Event
- 0x0000000020000000:QoS Violation Event
- 0x0000000040000000:Page Scan Mode Change Event
- 0x0000000080000000:Page Scan Repetition Mode Change Event
- 0x0000000100000000:Flow Specification Complete Event
- 0x0000000200000000:Inquiry Result with RSSI Event
- 0x0000000400000000:Read Remote Extended Features Complete Event
- 0x0000080000000000:Synchronous Connection Complete Event
- 0x0000100000000000:Synchronous Connection Changed Event
- 0x0000200000000000:Sniff Subrating Event
- 0x0000400000000000:Extended Inquiry Result Event
- 0x0000800000000000:Encryption Key Refresh Complete Event
- 0x0001000000000000:IO Capability Request Event
- 0x0002000000000000:IO Capability Request Reply Event
- 0x0004000000000000:User Confirmation Request Event
- 0x0008000000000000:User Passkey Request Event
- 0x0010000000000000:Remote OOB Data Request Event
- 0x0020000000000000:Simple Pairing Complete Event
- 0x0080000000000000:Link Supervision Timeout Changed Event
- 0x0100000000000000:Enhanced Flush Complete Event
- 0x0400000000000000:User Passkey Notification Event
- 0x0800000000000000:Keypress Notification Event
- 0x1000000000000000:Remote Host Supported Features Notification Event
- 0x2000000000000000:LE Meta-Event

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_RESET

### Description

The Reset command will reset the Link Layer on an LE Controller. The Reset command shall not affect the used HCI transport layer since the HCI transport layers may have reset mechanisms of their own. After the reset is completed, the current operational state will be lost, the Controller will enter standby mode and the Controller will automatically revert to the default values for the parameters for which default values are defined in the specification. Note: The Reset command will not necessarily perform a hardware reset. This is implementation defined. The Host shall not send additional HCI commands before the Command Complete event related to the Reset command has been received. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.3.2)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_READ_TRANSMIT_POWER_LEVEL

### Description

This command reads the values for the Transmit_Power_Level parameter for the specified Connection_Handle. The Connection_Handle shall be a Connection_Handle for an ACL connection. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.3.35)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Specifies which Connection_Handle's Transmit Power Level setting to read. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Type | 1 | 0x00 Read Current Transmit Power Level. 0x01 Read Maximum Transmit Power Level. 0x02-0xFF Reserved |
- 0x00:Read Current Transmit Power Level.
- 0x01:Read Maximum Transmit Power Level.

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Transmit_Power_Level | 1 | Size: 1 Octet (signed integer) Range: -30 <= N <= 20 Units: dBm |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_READ_LOCAL_VERSION_INFORMATION

### Description

This command reads the values for the version information for the local Controller. The HCI Version information defines the version information of the HCI layer. The LMP/PAL Version information defines the version of the LMP or PAL. The Manufacturer_Name information indicates the manufacturer of the local device. The HCI Revision and LMP/PAL Subversion are implementation dependent. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.4.1)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
HCI_Version | 1 | See Bluetooth Assigned Numbers (https://www.bluetooth.org/en-us/specification/assigned-numbers) |
HCI_Revision | 2 | Revision of the Current HCI in the BR/EDR Controller. |
LMP_PAL_Version | 1 | Version of the Current LMP or PAL in the Controller. See Bluetooth Assigned Numbers (https://www.bluetooth.org/en-us/specification/assigned-numbers) |
Manufacturer_Name | 2 | Manufacturer Name of the BR/EDR Controller. See Bluetooth Assigned Numbers (https://www.bluetooth.org/en-us/specification/assigned-numbers) |
LMP_PAL_Subversion | 2 | Subversion of the Current LMP or PAL in the Controller. This value is implementation dependent. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_READ_LOCAL_SUPPORTED_COMMANDS

### Description

This command reads the list of HCI commands supported for the local Controller. This command shall return the Supported_Commands configuration parameter. It is implied that if a command is listed as supported, the feature underlying that command is also supported. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.4.2)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Supported_Commands | 64 | Bit mask for each HCI Command. If a bit is 1, the Controller supports the corresponding command and the features required for the command. Unsupported or undefined commands shall be set to 0. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_READ_LOCAL_SUPPORTED_FEATURES

### Description

This command requests a list of the supported features for the local Controller. This command will return a list of the LMP features. For details see Part C, Link Manager Protocol Specification on page 227. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.4.3)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
LMP_Features | 8 | Bit Mask List of LMP features. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_READ_BD_ADDR

### Description

On an LE Controller, this command shall read the Public Device Address as defined in [Vol 6] Part B, Section 1.3, Device Address. If this Controller does not have a Public Device Address, the value 0x000000000000 shall be returned. On an LE Controller, the public address shall be the same as the BD_ADDR. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.4.6)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
BD_ADDR | 6 | BD_ADDR ( Bluetooth Device Address) of the Device. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_READ_RSSI

### Description

This command reads the Received Signal Strength Indication (RSSI) value from a Controller. For an LE transport, a Connection_Handle is used as the Handle command parameter and return parameter. The meaning of the RSSI metric is an absolute receiver signal strength value in dBm to +/- 6 dB accuracy. If the RSSI cannot be read, the RSSI metric shall be set to 127. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.5.4)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
RSSI | 1 | BR/EDR Range: -128 =< N <= 127 (signed integer) Units: dB AMP: Range: AMP type specific (signed integer) Units: dBm LE: Range: -127 to 20, 127 (signed integer) Units: dBm |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_SET_EVENT_MASK

### Description

The LE_Set_Event_Mask command is used to control which LE events are generated by the HCI for the Host. If the bit in the LE_Event_Mask is set to a one, then the event associated with that bit will be enabled. The Host has to deal with each event that is generated by an LE Controller. The event mask allows the Host to control which events will interrupt it. For LE events to be generated, the LE Meta-Event bit in the Event_Mask shall also be set. If that bit is not set, then LE events shall not be generated, regardless of how the LE_Event_Mask is set. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.1)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Event_Mask | 8 | 0x0000000000000000 No LE events specified 0x0000000000000001 LE Connection Complete Event 0x0000000000000002 LE Advertising Report Event 0x0000000000000004 LE Connection Update Complete Event 0x0000000000000008 LE Read Remote Used Features Complete Event 0x0000000000000010 LE Long Term Key Request Event 0x000000000000001F Default 0xFFFFFFFFFFFFFE0 Reserved for future use | Bitmask of:
- 0x0000000000000000:No LE events specified
- 0x0000000000000001:LE Connection Complete Event
- 0x0000000000000002:LE Advertising Report Event
- 0x0000000000000004:LE Connection Update Complete Event
- 0x0000000000000008:LE Read Remote Used Features Complete Event
- 0x0000000000000010:LE Long Term Key Request Event

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_READ_BUFFER_SIZE

### Description

The LE_Read_Buffer_Size command is used to read the maximum size of the data portion of HCI LE ACL Data Packets sent from the Host to the Controller. The Host will segment the data transmitted to the Controller according to these values, so that the HCI Data Packets will contain data with up to this size. The LE_Read_Buffer_Size command also returns the total number of HCI LE ACL Data Packets that can be stored in the data buffers of the Controller. The LE_Read_Buffer_Size command must be issued by the Host before it sends any data to an LE Controller (see Section 4.1.1). If the Controller returns a length value of zero, the Host shall use the Read_Buffer_Size command to determine the size of the data buffers Note: Both the Read_Buffer_Size and LE_Read_Buffer_Size commands may return buffer length and number of packets parameter values that are nonzero. The HC_LE_ACL_Data_Packet_Length return parameter shall be used to determine the size of the L2CAP PDU segments contained in ACL Data Packets, which are transferred from the Host to the Controller to be broken up into packets by the Link Layer. Both the Host and the Controller shall support command and event packets, where the data portion (excluding header) contained in the packets is 255 octets in size. The HC_Total_Num_LE_ACL_Data_Packets return parameter contains the total number of HCI ACL Data Packets that can be stored in the data buffers of the Controller. The Host determines how the buffers are to be divided between different Connection Handles. Note: The HC_LE_ACL_Data_Packet_Length return parameter does not include the length of the HCI Data Packet header. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.2)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
HC_LE_ACL_Data_Packet_Length | 2 | 0x0000 No dedicated LE Buffer - use Read_Buffer_Size command. 0x0001 - 0xFFFF Maximum length (in octets) of the data portion of each HCI ACL Data Packet that the Controller is able to accept. |
HC_Total_Num_LE_ACL_Data_Packets | 1 | 0x00 No dedicated LE Buffer - use Read_Buffer_Size command. 0x01 - 0xFF Total number of HCI ACL Data Packets that can be stored in the data buffers of the Controller. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_READ_LOCAL_SUPPORTED_FEATURES

### Description

This command requests the list of the supported LE features for the Controller. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.3)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
LE_Features | 8 | Bit Mask List of LE features. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_SET_RANDOM_ADDRESS

### Description

The LE_Set_Random_Address command is used by the Host to set the LE Random Device Address in the Controller (see [Vol 6] Part B, Section 1.3). (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.4)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Random_Address | 6 | Random Device Address |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_SET_ADVERTISING_PARAMETERS

### Description

The LE_Set_Advertising_Parameters command is used by the Host to set the advertising parameters. The Advertising_Interval_Min shall be less than or equal to the Advertising_Interval_Max. The Advertising_Interval_Min and Advertising_Interval_Max should not be the same value to enable the Controller to determine the best advertising interval given other activities. For high duty cycle directed advertising, i.e. when Advertising_Type is 0x01 (ADV_DIRECT_IND, high duty cycle), the Advertising_Interval_Min and Advertising_Interval_Max parameters are not used and shall be ignored. The Advertising_Type is used to determine the packet type that is used for advertising when advertising is enabled. The Advertising_Interval_Min and Advertising_Interval_Max shall not be set to less than 0x00A0 (100 ms) if the Advertising_Type is set to 0x02 (ADV_SCAN_IND) or 0x03 (ADV_NONCONN_IND). The Own_Address_Type determines if the advertising packets are identified with the Public Device Address of the device, or a Random Device Address as written by the LE_Set_Random_Address command. If directed advertising is performed, i.e. when Advertising_Type is set to 0x01 (ADV_DIRECT_IND, high duty cycle) or 0x04 (ADV_DIRECT_IND, low duty cycle mode), then the Direct_Address_Type and Direct_Address shall be valid, otherwise they shall be ignored by the Controller and not used. The Advertising_Channel_Map is a bit field that indicates the advertising channels that shall be used when transmitting advertising packets. At least one channel bit shall be set in the Advertising_Channel_Map parameter. The Advertising_Filter_Policy parameter shall be ignored when directed advertising is enabled. The Host shall not issue this command when advertising is enabled in the Controller; if it is the Command Disallowed error code shall be used. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.5)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Advertising_Interval_Min | 2 | Minimum advertising interval. Range: 0x0020 to 0x4000 Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec |
Advertising_Interval_Max | 2 | Maximum advertising interval. Range: 0x0020 to 0x4000 Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec |
Advertising_Type | 1 | 0x00 Connectable undirected advertising (ADV_IND) (default) 0x01 Connectable directed advertising (ADV_DIRECT_IND) 0x02 Scannable undirected advertising (ADV_SCAN_IND) 0x03 Non connectable undirected advertising (ADV_NONCONN_IND) 0x04 - 0xFF Reserved for future use |
- 0x00:ADV_IND
- 0x01:ADV_DIRECT_IND
- 0x02:ADV_SCAN_IND
- 0x03:ADV_NONCONN_IND
Own_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Direct_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Direct_Address | 6 | Public Device Address or Random Device Address of the device to be connected |
Advertising_Channel_Map | 1 | 00000000b Reserved for future use xxxxxxx1b Enable channel 37 use xxxxxx1xb Enable channel 38 use xxxxx1xxb Enable channel 39 use 00000111b Default (all channels enabled) | Bitmask of:
- 0x00:Reserved for future use
- 0x01:ch 37
- 0x02:ch 38
- 0x04:ch 39
Advertising_Filter_Policy | 1 | 0x00 Allow Scan Request from Any, Allow Connect Request from Any (default). 0x01 Allow Scan Request from White List Only, Allow Connect Request from Any. 0x02 Allow Scan Request from Any, Allow Connect Request from White List Only. 0x03 Allow Scan Request from White List Only, Allow Connect Request from White List Only. 0x04 - 0xFF Reserved for future use. |
- 0x00:Allow Scan Request from Any, Allow Connect Request from Any
- 0x01:Allow Scan Request from White List Only, Allow Connect Request from Any
- 0x02:Allow Scan Request from Any, Allow Connect Request from White List Only
- 0x03:Allow Scan Request from White List Only, Allow Connect Request from White List Only

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER

### Description

The LE_Read_Advertising_Channel_Tx_Power command is used by the Host to read the transmit power level used for LE advertising channel packets. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.6)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Transmit_Power_Level | 1 | Size: 1 Octet (signed integer) Range: -20 <= N <= 10 Units: dBm Accuracy: +/- 4 dBm |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_SET_ADVERTISING_DATA

### Description

The LE_Set_Advertising_Data command is used to set the data used in advertising packets that have a data field. Only the significant part of the Advertising_Data is transmitted in the advertising packets, as defined in [Vol 3] Part C, Section 11., (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.7)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Advertising_Data_Length | 1 | The number of significant octets in the following data field |
Advertising_Data | 31 | 31 octets of data formatted as defined in [Vol 3] Part C, Section 11. All octets zero (default). |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_SET_SCAN_RESPONSE_DATA

### Description

This command is used to provide data used in Scanning Packets that have a data field. Only the significant part of the Scan_Response_Data is transmitted in the Scanning Packets, as defined in [Vol 3] Part C, Section 11. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.8)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Scan_Response_Data_Length | 1 | The number of significant octets in the following data field |
Scan_Response_Data | 31 | 31 octets of data formatted as defined in [Vol 3] Part C, Section 11. All octets zero (default). |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_SET_ADVERTISE_ENABLE

### Description

The LE_Set_Advertise_Enable command is used to request the Controller to start or stop advertising. The Controller manages the timing of advertisements as per the advertising parameters given in the LE_Set_Advertising_Parameters command. The Controller shall continue advertising until the Host issues an LE_Set_Advertise_Enable command with Advertising_Enable set to 0x00 (Advertising is disabled) or until a connection is created or until the Advertising is timed out due to high duty cycle Directed Advertising. In these cases, advertising is then disabled. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.9)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Advertising_Enable | 1 | 0x00 Advertising is disabled (default) 0x01 Advertising is enabled. 0x02 - 0xFF Reserved for future use |
- 0x00:Advertising is disabled
- 0x01:Advertising is enabled

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT
- HCI_LE_CONNECTION_COMPLETE_EVENT

## HCI_LE_SET_SCAN_PARAMETERS

### Description

The LE_Set_Scan_Parameters command is used to set the scan parameters. The LE_Scan_Type parameter controls the type of scan to perform. The LE_Scan_Interval and LE_Scan_Window parameters are recommendations from the Host on how long (LE_Scan_Window) and how frequently (LE_Scan_Interval) the Controller should scan (See [Vol 6] Part B, Section 4.5.3). The LE_Scan_Window parameter shall always be set to a value smaller or equal to the value set for the LE_Scan_Interval parameter. If they are set to the same value scanning should be run continuously. The Own_Address_Type parameter determines the address used (Public or Random Device Address) when performing active scan. The Host shall not issue this command when scanning is enabled in the Controller; if it is the Command Disallowed error code shall be used. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.10)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Scan_Type | 1 | 0x00 Passive Scanning. No SCAN_REQ packets shall be sent.(default) 0x01 Active scanning. SCAN_REQ packets may be sent. 0x02 - 0xFF Reserved for future use |
- 0x00:Passive Scanning
- 0x01:Active scanning
LE_Scan_Interval | 2 | This is defined as the time interval from when the Controller started its last LE scan until it begins the subsequent LE scan. Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10240 msec |
LE_Scan_Window | 2 | Amount of time for the duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10.24 seconds |
Own_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Scanning_Filter_Policy | 1 | 0x00 Accept all advertisement packets (default). Directed advertising packets which are not addressed for this device shall be ignored. 0x01 Ignore advertisement packets from devices not in the White List Only. Directed advertising packets which are not addressed for this device shall be ignored. 0x02 - 0xFF Reserved for future use. |
- 0x00:Accept all advertisement packets
- 0x01:Ignore advertisement packets from devices not in the White List Only

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_SET_SCAN_ENABLE

### Description

The LE_Set_Scan_Enable command is used to start scanning. Scanning is used to discover advertising devices nearby. The Filter_Duplicates parameter controls whether the Link Layer shall filter duplicate advertising reports to the Host, or if the Link Layer should generate advertising reports for each packet received. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.11)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Scan_Enable | 1 | 00x00 Scanning disabled. 0x01 Scanning enabled. 0x02 - 0xFF Reserved for future use. |
- 0x00:Scanning disabled
- 0x01:Scanning enabled
Filter_Duplicates | 1 | 0x00 Duplicate filtering disabled. 0x01 Duplicate filtering enabled. 0x02 - 0xFF Reserved for future use. |
- 0x00:Duplicate filtering disabled
- 0x01:Duplicate filtering enabled

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT
- HCI_LE_ADVERTISING_REPORT_EVENT

## HCI_LE_CREATE_CONNECTION

### Description

TBD

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Scan_Interval | 2 | This is defined as the time interval from when the Controller started its last LE scan until it begins the subsequent LE scan. Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10240 msec |
LE_Scan_Window | 2 | Amount of time for the duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10.24 seconds |
Initiator_Filter_Policy | 1 | 0x00 White list is not used to determine which advertiser to connect to. Peer_Address_Type and Peer_Address shall be used. 0x01 White list is used to determine which advertiser to connect to. Peer_Address_Type and Peer_Address shall be ignored. 0x02 - 0xFF Reserved for future use. |
- 0x00:White list is not used
- 0x01:White list is used
Peer_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Peer_Address | 6 | Public Device Address or Random Device Address of the device to be connected |
Own_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Conn_Interval_Min | 2 | N = 0xXXXX Minimum value for the connection event interval. This shall be less than or equal to Conn_Interval_Max. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Interval_Max | 2 | N = 0xXXXX Maximum value for the connection event interval. This shall be greater than or equal to Conn_Interval_Min. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Latency | 2 | Slave latency for the connection in number of connection events. Range: 0x0000 to 0x01F3 |
Supervision_Timeout | 2 | N = 0xXXXX Supervision timeout for the LE Link. (See [Vol 6] Part B, Section 4.5.2) Range: 0x000A to 0x0C80 Time = N * 10 msec Time Range: 100 msec to 32 seconds 0x0000 - 0x0009 and 0x0C81 - 0xFFFF Reserved for future use |
Minimum_CE_Length | 2 | Information parameter about the minimum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |
Maximum_CE_Length | 2 | Information parameter about the maximum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_LE_CONNECTION_COMPLETE_EVENT

## HCI_LE_CREATE_CONNECTION_CANCEL

### Description

The LE_Create_Connection_Cancel command is used to cancel the LE_Create_Connection command. This command shall only be issued after the LE_Create_Connection command has been issued, a Command Status event has been received for the LE Create Connection command and before the LE Connection Complete event. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.13)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT
- HCI_LE_CONNECTION_COMPLETE_EVENT

## HCI_LE_READ_WHITE_LIST_SIZE

### Description

The LE_Read_White_List_Size command is used to read the total number of white list entries that can be stored in the Controller. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.14)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
White_List_Size | 1 | 0x01 - 0xFF Total number of white list entries that can be stored in the Controller. 0x00 Reserved for future use |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_CLEAR_WHITE_LIST

### Description

The LE_Clear_White_List command is used to clear the white list stored in the Controller. This command can be used at any time except when: - the advertising filter policy uses the white list and advertising is enabled. - the scanning filter policy uses the white list and scanning is enabled. - the initiator filter policy uses the white list and an LE_Create_Connection command is outstanding. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.15)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_ADD_DEVICE_TO_WHITE_LIST

### Description

The LE_Add_Device_To_White_List command is used to add a single device to the white list stored in the Controller. This command can be used at any time except when: - the advertising filter policy uses the white list and advertising is enabled. - the scanning filter policy uses the white list and scanning is enabled. - the initiator filter policy uses the white list and a create connection command is outstanding. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.16)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Address | 6 | Public Device Address or Random Device Address of the device to be added to the white list. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST

### Description

The LE_Remove_Device_From_White_List command is used to remove a single device from the white list stored in the Controller. This command can be used at any time except when: - the advertising filter policy uses the white list and advertising is enabled. - the scanning filter policy uses the white list and scanning is enabled. - the initiator filter policy uses the white list and a create connection command is outstanding. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.17)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Address | 6 | Public Device Address or Random Device Address of the device to be removed from the white list. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_CONNECTION_UPDATE

### Description

The LE_Connection_Update command is used to change the Link Layer connection parameters of a connection. This command is supported only on master side. The Conn_Interval_Min and Conn_Interval_Max parameters are used to define the minimum and maximum allowed connection interval. The Conn_Interval_Min parameter shall not be greater than the Conn_Interval_Max parameter. The Conn_Latency parameter shall define the maximum allowed connection latency. The Supervision_Timeout parameter shall define the link supervision timeout for the LE link. The Supervision_Timeout in milliseconds shall be larger than (1 + Conn_Latency) * Conn_Interval_Max * 2, where Conn_Interval_Max is given in milliseconds. The Minimum_CE_Length and Maximum_CE_Length are information parameters providing the Controller with a hint about the expected minimum and maximum length of the connection events. The Minimum_CE_Length shall be less than or equal to the Maximum_CE_Length. The actual parameter values selected by the Link Layer may be different from the parameter values provided by the Host through this command. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.18)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Conn_Interval_Min | 2 | N = 0xXXXX Minimum value for the connection event interval. This shall be less than or equal to Conn_Interval_Max. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Interval_Max | 2 | N = 0xXXXX Maximum value for the connection event interval. This shall be greater than or equal to Conn_Interval_Min. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Latency | 2 | Slave latency for the connection in number of connection events. Range: 0x0000 to 0x01F3 |
Supervision_Timeout | 2 | N = 0xXXXX Supervision timeout for the LE Link. (See [Vol 6] Part B, Section 4.5.2) Range: 0x000A to 0x0C80 Time = N * 10 msec Time Range: 100 msec to 32 seconds 0x0000 - 0x0009 and 0x0C81 - 0xFFFF Reserved for future use |
Minimum_CE_Length | 2 | Information parameter about the minimum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |
Maximum_CE_Length | 2 | Information parameter about the maximum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_LE_CONNECTION_UPDATE_COMPLETE_EVENT

## HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION

### Description

The LE_Set_Host_Channel_Classification command allows the Host to specify a channel classification for data channels based on its "local information". This classification persists until overwritten with a subsequent LE_Set_Host_Channel_Classification command or until the Controller is reset using the Reset command (see [Vol 6] Part B, Section 4.5.8.1). If this command is used, the Host should send it within 10 seconds of knowing that the channel classification has changed. The interval between two successive commands sent shall be at least one second. This command shall only be used when the local device supports the Master role. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.19)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Channel_Map | 5 | This parameter contains 37 1-bit fields. The nth such field (in the range 0 to 36) contains the value for the link layer channel index n. Channel n is bad = 0. Channel n is unknown = 1. The most significant bits are reserved and shall be set to 0. At least one channel shall be marked as unknown. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_READ_CHANNEL_MAP

### Description

The LE_Read_Channel_Map command returns the current Channel_Map for the specified Connection_Handle. The returned value indicates the state of the Channel_Map specified by the last transmitted or received Channel_Map (in a CONNECT_REQ or LL_CHANNEL_MAP_REQ message) for the specified Connection_Handle, regardless of whether the Master has received an acknowledgement. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.20)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
LE_Channel_Map | 5 | This parameter contains 37 1-bit fields. The nth such field (in the range 0 to 36) contains the value for the link layer channel index n. Channel n is unused = 0. Channel n is used = 1. The most significant bits are reserved and shall be set to 0. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_READ_REMOTE_USED_FEATURES

### Description

This command requests a list of the used LE features from the remote device. This command shall return a list of the used LE features. For details see [Vol 6] Part B, Section 4.6. This command may be issued on both the master and slave. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.21)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_LE_READ_REMOTE_USED_FEATURES_COMPLETE_EVENT

## HCI_LE_ENCRYPT

### Description

The LE_Encrypt command is used to request the Controller to encrypt the Plaintext_Data in the command using the Key given in the command and returns the Encrypted_Data to the Host. The AES-128 bit block cypher is defined in NIST Publication FIPS-197 (http://csrc.nist.gov/publications/fips/ fips197/fips-197.pdf). (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.22)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Key | 16 | 128 bit key for the encryption of the data given in the command. |
Plaintext_Data | 16 | 128 bit data block that is requested to be encrypted. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Encrypted_Data | 16 | 128 bit encrypted data block. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_RAND

### Description

The LE_Rand command is used to request the Controller to generate 8 octets of random data to be sent to the Host. The Random_Number shall be generated according to [Vol 2] Part H, Section 2 if the LE Feature (LL Encryption) is supported. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.23)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Random_Number | 8 | Random Number |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_START_ENCRYPTION

### Description

The LE_Start_Encryption command is used to authenticate the given encryption key associated with the remote device specified by the connection handle, and once authenticated will encrypt the connection. The parameters are as defined in [Vol 3] Part H, Section 2.4.4. If the connection is already encrypted then the Controller shall pause connection encryption before attempting to authenticate the given encryption key, and then re-encrypt the connection. While encryption is paused no user data shall be transmitted. On an authentication failure, the connection shall be automatically disconnected by the Link Layer. If this command succeeds, then the connection shall be encrypted. This command shall only be used when the local device's role is Master. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.24)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Random_Number | 8 | 64 bit random number. |
Encrypted_Diversifier | 2 | 16 bit encrypted diversifier. |
Long_Term_Key | 16 | 128 bit long term key. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_ENCRYPTION_CHANGE_EVENT
- HCI_ENCRYPTION_KEY_REFRESH_COMPLETE_EVENT

## HCI_LE_LONG_TERM_KEY_REQUEST_REPLY

### Description

The LE_Long_Term_Key_Request_Reply command is used to reply to an LE Long Term Key Request event from the Controller, and specifies the Long_Term_Key parameter that shall be used for this Connection_Handle. The Long_Term_Key is used as defined in [Vol 6] Part B, Section 5.1.3. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.25)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Long_Term_Key | 16 | 128 bit long term key. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_LONG_TERM_KEY_REQUESTED_NEGATIVE_REPLY

### Description

The LE_Long_Term_Key_Request_Negative_Reply command is used to reply to an LE Long Term Key Request event from the Controller if the Host cannot provide a Long Term Key for this Connection_Handle. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.26)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_READ_SUPPORTED_STATES

### Description

The LE_Read_Supported_States command reads the states and state combinations that the link layer supports. See [Vol 6] Part B, Section 1.1.1. LE_States is an 8-octet bit field. If a bit is set to 1 then this state or state combination is supported by the Controller. Multiple bits in LE_States may be set to 1 to indicate support for multiple state and state combinations. All the Advertising type with the Initiate State combinations shall be set only if the corresponding Advertising types and Master Role combination are set. All the Scanning types and the Initiate State combinations shall be set only if the corresponding Scanning types and Master Role combination are set. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.27)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
LE_States | 8 | 0x0000000000000000 Reserved for future use (No state combinations supported). 0x0000000000000001 Non-connectable Advertising State supported. 0x0000000000000002 Scannable Advertising State supported. 0x0000000000000004 Connectable Advertising State supported. 0x0000000000000008 Directed Advertising State supported. 0x0000000000000010 Passive Scanning State supported. 0x0000000000000020 Active Scanning State supported. 0x0000000000000040 Initiating State supported. Connection State in the Master Role supported is also supported. 0x0000000000000080 Connection State in the Slave Role supported. 0x0000000000000100 Non-connectable Advertising State and Passive Scanning State combination supported. 0x0000000000000200 Scannable Advertising State and Passive Scanning State combination supported. 0x0000000000000400 Connectable Advertising State and Passive Scanning State combination supported. 0x0000000000000800 Directed Advertising State and Passive Scanning State combination supported. 0x0000000000001000 Non-connectable Advertising State and Active Scanning State combination supported. 0x0000000000002000 Scannable Advertising State and Active Scanning State combination supported. 0x0000000000004000 Connectable Advertising State and Active Scanning State combination supported. 0x0000000000008000 Directed Advertising State and Active Scanning State combination supported. 0x0000000000010000 Non-connectable Advertising State and Initiating State combination supported. 0x0000000000020000 Scannable Advertising State and Initiating State combination supported 0x0000000000040000 Non-connectable Advertising State and Master Role combination supported. 0x0000000000080000 Scannable Advertising State and Master Role combination supported. 0x0000000000100000 Non-connectable Advertising State and Slave Role combination supported. 0x0000000000200000 Scannable Advertising State and Slave Role combination supported. 0x0000000000400000 Passive Scanning State and Initiating State combination supported. When the LE_Read_Supported_States command has completed, a Command Complete event will be generated. 0x0000000000800000 Active Scanning State and Initiating State combination supported. 0x0000000001000000 Passive Scanning State and Master Role combination supported. 0x0000000002000000 Active Scanning State and Master Role combination supported. 0x0000000004000000 Passive Scanning state and Slave Role combination supported. 0x0000000008000000 Active Scanning state and Slave Role combination supported. 0x0000000010000000 Initiating State and Master Role combination supported. Master Role and Master Role combination is also supported. 0xFFFFFFFFE0000000 Reserved for future use | Bitmask of:
- 0x0000000000000000:No state combinations
- 0x0000000000000001:Non-connectable Advertising
- 0x0000000000000002:Scannable Advertising
- 0x0000000000000004:Connectable Advertising
- 0x0000000000000008:Directed Advertising
- 0x0000000000000010:Passive Scanning
- 0x0000000000000020:Active Scanning
- 0x0000000000000040:Initiating
- 0x0000000000000080:Connection State in Slave Role
- 0x0000000000000100:Non-connectable Advertising and Passive Scanning
- 0x0000000000000200:Scannable Advertising and Passive Scanning
- 0x0000000000000400:Connectable Advertising and Passive Scanning
- 0x0000000000000800:Directed Advertisinge and Passive Scanning
- 0x0000000000001000:Non-connectable Advertising and Active Scanning
- 0x0000000000002000:Scannable Advertising and Active Scanning
- 0x0000000000004000:Connectable Advertising and Active Scanning
- 0x0000000000008000:Directed Advertising and Active Scanning
- 0x0000000000010000:Non-connectable Advertising and Initiating
- 0x0000000000020000:Scannable Advertising and Initiating
- 0x0000000000040000:Non-connectable Advertising and Master Role
- 0x0000000000080000:Scannable Advertising and Master Role
- 0x0000000000100000:Non-connectable Advertising and Slave Role
- 0x0000000000200000:Scannable Advertising and Slave Role
- 0x0000000000400000:Passive Scanning and Initiating State
- 0x0000000000800000:Active Scanning and Initiating State
- 0x0000000001000000:Passive Scanning and Master Role
- 0x0000000002000000:Active Scanning and Master Role
- 0x0000000004000000:Passive Scanning and Slave Role
- 0x0000000008000000:Active Scanning and Slave Role
- 0x0000000010000000:Initiating and Master Role

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI TESTING Commands

Command | OpCode
--- | ---
HCI_LE_RECEIVER_TEST | 0x201D
HCI_LE_TRANSMITTER_TEST | 0x201E
HCI_LE_TEST_END | 0x201F

## HCI_LE_RECEIVER_TEST

### Description

This command is used to start a test where the DUT receives test reference packets at a fixed interval. The tester generates the test reference packets. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.28)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
RX_Frequency | 1 | N = (F - 2402) / 2 Range: 0x00 - 0x27. Frequency Range : 2402 MHz to 2480 MHz |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_TRANSMITTER_TEST

### Description

This command is used to start a test where the DUT generates test reference packets at a fixed interval. The Controller shall transmit at maximum power. An LE Controller supporting the LE_Transmitter_Test command shall support Packet_Payload values 0x00, 0x01 and 0x02. An LE Controller may support other values of Packet_Payload. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.29)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
TX_Frequency | 1 | N = (F - 2402) / 2 Range: 0x00 - 0x27. Frequency Range : 2402 MHz to 2480 MHz |
Length_Of_Test_Data | 1 | 0x00-0x25 Length in bytes of payload data in each packet 0x26-0xFF Reserved for future use |
Packet_Payload | 1 | 0x00 Pseudo-Random bit sequence 9 0x01 Pattern of alternating bits '11110000' 0x02 Pattern of alternating bits '10101010' 0x03 Pseudo-Random bit sequence 15 0x04 Pattern of All '1' bits 0x05 Pattern of All '0' bits 0x06 Pattern of alternating bits '00001111' 0x07 Pattern of alternating bits '0101' 0x08-0xFF Reserved for future use |
- 0x00:Pseudo-Random bit sequence 9
- 0x01:Pattern of alternating bits '11110000'
- 0x02:Pattern of alternating bits '10101010'
- 0x03:Pseudo-Random bit sequence 15
- 0x04:Pattern of All '1' bits
- 0x05:Pattern of All '0' bits
- 0x06:Pattern of alternating bits '00001111'
- 0x07:Pattern of alternating bits '0101'

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HCI_LE_TEST_END

### Description

This command is used to stop any test which is in progress. The Number_Of_Packets for a transmitter test shall be reported as 0x0000. The Number_Of_Packets is an unsigned number and contains the number of received packets. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.8.30)

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Number_Of_Packets | 2 | Number of packets received |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## HAL Commands

Command | OpCode
--- | ---
ACI_HAL_WRITE_CONFIG_DATA | 0xFC0C
ACI_HAL_READ_CONFIG_DATA | 0xFC0D
ACI_HAL_SET_TX_POWER_LEVEL | 0xFC0F
ACI_HAL_DEVICE_STANDBY | 0xFC13
ACI_HAL_LE_TX_TEST_PACKET_NUMBER | 0xFC14
ACI_HAL_TONE_START | 0xFC15
ACI_HAL_TONE_STOP | 0xFC16
ACI_HAL_GET_LINK_STATUS | 0xFC17
ACI_HAL_GET_FW_BUILD_NUMBER | 0xFC00
ACI_HAL_GET_ANCHOR_PERIOD | 0xFC19

## ACI_HAL_WRITE_CONFIG_DATA

### Description

This command writes a value to a low level configure data structure. It is useful to setup directly some low level parameters for the system in the runtime.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Offset | 1 | Offset of the element in the configuration data structure which has to be written. The valid offsets are:

- 0x00: Bluetooth public address, Value length to be writtten: 6 bytes

- 0x08: Encryption root key used to derive LTK and CSRK, Value length to be written: 16 bytes

- 0x18: Identity root key used to derive LTK and CSRK, Value length to be written: 16 bytes

- 0x2C: Link layer without host (for certification purposes), Value length to be written: 1 byte

- 0x2D: Mode, Value length to be written: 1 byte.
    1. Slave and master

         Only one connection 6 KB of RAM retention

    2. Slave and master Only one connection 12 KB of RAM retention

    3. Master and Slave Up to 8 connections 12 KB of RAM retention

    4. Master and Slave Simultaneous advertising and scanning Up to 4 connections This mode is available starting from BlueNRG-MS FW stack version 7.1.b

- 0x2F: Disable watchdog (1=disable, 0=enable). Value length to be written: 1 byte

- 0x00:CONFIG_DATA_PUBADDR_OFFSET
- 0x08:CONFIG_DATA_ER_OFFSET
- 0x18:CONFIG_DATA_IR_OFFSET
- 0x2C:LL_WITHOUT_HOST
- 0x2D:CONFIG_DATA_MODE
- 0x2F:CONFIG_DATA_WATCHDOG_DISABLE
Length | 1 | Length of data to be written |
Value | Length | Data to be written |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_HAL_READ_CONFIG_DATA

### Description

This command requests the value in the low level configure data structure. The number of read bytes changes for different Offset.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Offset | 1 | Offset of the element in the configuration data structure which has to be read. The valid offsets are:

- 0x00: Bluetooth public address, Value length returned: 6 bytes

- 0x08: Encryption root key used to derive LTK and CSRK, Value length returned: 16 bytes

- 0x18: Identity root key used to derive LTK and CSRK, Value length returned: 16 bytes

- 0x2C: Link layer without host (for certification purposes), Value length returned: 1 byte

- 0x2D: Mode, Value length returned: 1 byte.
    - 0x01: Slave and master

        Only one connection 6 KB of RAM retention

    - 0x01: Slave and master

        Only one connection 12 KB of RAM retention

    - 0x03: Master and Slave

        Up to 8 connections 12 KB of RAM retention

    - 0x04: Master and Slave

        Simultaneous advertising and scanning Up to 4 connections This mode is available starting from BlueNRG-MS FW stack version 7.1.b

- 0x2F: Disable watchdog (1=disabled, 0=enablee). Value length returned: 1 byte

- 0x80: Static random address. Value length returned: 6 bytes (read-only)

- 0x00:CONFIG_DATA_PUBADDR_OFFSET
- 0x08:CONFIG_DATA_ER_OFFSET
- 0x18:CONFIG_DATA_IR_OFFSET
- 0x2C:LL_WITHOUT_HOST
- 0x2D:CONFIG_DATA_MODE
- 0x2F:CONFIG_DATA_WATCHDOG_DISABLE
- 0x80:CONFIG_DATA_RANDOM_ADDRESS

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Value | variable | Read data |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_HAL_SET_TX_POWER_LEVEL

### Description

This command sets the TX power level of the device. By controlling the EN_HIGH_POWER and the PA_LEVEL, the combination of the 2 determines the output power level (dBm). When the system starts up or reboots, the default TX power level will be used, which is the maximum value of 8 dBm. Once this command is given, the output power will be changed instantly, regardless if there is Bluetooth communication going on or not. For example, for debugging purpose, the device can be set to advertise all the time. And use this command to observe the signal strength changing. The system will keep the last received TX power level from the command, i.e. the 2nd command overwrites the previous TX power level. The new TX power level remains until another Set TX Power command, or the system reboots.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
En_High_Power | 1 | Enable High Power mode |
- 0x00:Standard Power
- 0x01:High Power
PA_Level | 1 | PA Level. If En_High_Power=0 0 = -18 dBm, 1 = -15 dBm, 2 = -12 dBm, 3 = -9 dBm, 4 = -6 dBm, 5 = -2 dBm, 6 = 0 dBm, 7 = 5 dBm. If En_High_Power=1 0 = -14 dBm, 1 = -11 dBm, 2 = -8 dBm, 3 = -5 dBm, 4 = -2 dBm, 5 = 2 dBm, 6 = 4 dBm, 7 = 8 dBm |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_HAL_DEVICE_STANDBY

### Description

Put the device in standby mode. Normally the BlueNRG will automatically enter sleep mode to save power. This command puts the device into the Standby mode instead of the sleep mode. The difference is that, in sleep mode, the device can still wake up itself with the internal timer. But in standby mode, this timer is disabled. So the only possibility to wake up the device is by external signals, e.g. a HCI command sent via SPI bus. Based on the measurement, the current consumption under sleep mode is ~2 uA. And this value is ~1.5 uA in standby mode. The command is only accepted when there is no other Bluetooth activity. Otherwise an error code ERR_COMMAND_DISALLOWED will be returned.

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_HAL_LE_TX_TEST_PACKET_NUMBER

### Description

This command returns the number of packets sent in Direct Test Mode. When the Direct TX test is started, a 32-bit counter is used to count how many packets have been transmitted. This command can be used to check how many packets have been sent during the Direct TX test. The counter starts from 0 and counts upwards. The counter can wrap and start from 0 again. The counter is not cleared until the next Direct TX test starts.

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Number_Of_Packets | 4 | Number of packets sent during the last Direct TX test. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_HAL_TONE_START

### Description

This command starts a carrier frequency, i.e. a tone, on a specific channel. The frequency sine wave at the specific channel may be used for debugging purpose only. The channel ID is a parameter from 0x00 to 0x27 for the 40 BLE channels, e.g. 0x00 for 2.402 GHz, 0x01 for 2.404 GHz etc. This command should not be used when normal Bluetooth activities are ongoing. The tone should be stopped by ACI_HAL_TONE_STOP command.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
RF_Channel | 1 | BLE Channel ID, from 0x00 to 0x27 meaning (2.402 + 2*0xXX) GHz Device will continuously emit 0s, that means that the tone will be at the channel center frequency less the maximum frequency deviation (250kHz). |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_HAL_TONE_STOP

### Description

This command is used to stop the previously started ACI_HAL_TONE_START command.

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_HAL_GET_LINK_STATUS

### Description

This command returns the status of the 8 Bluetooth low energy links managed by the device

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Link_Status | 8 | Array of link status (8 links). Each link status is 1 byte. 0x00:Idle, 0x01:Advertising, 0x02:Connected in slave role, 0x03:Scanning, 0x04:Reserved, 0x05:Connected in master role, 0x06:TX test mode, 0x07:RX test mode |
Link_Connection_Handle | 16 | Array of connection handles (2 bytes) for 8 links. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_HAL_GET_FW_BUILD_NUMBER

### Description

This command returns the build number associated with the firmware version currently running

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Build_Number | 2 | Build number of the firmware. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_HAL_GET_ANCHOR_PERIOD

### Description

This command returns information about the Anchor Period to help application in selecting slot timings when operating in multi-link scenarios.

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Anchor_Period | 4 | Current anchor period. T = N * 0.625 ms. |
Max_Free_Slot | 4 | Maximum available time that can be allocated for a new slot. T = N * 0.625 ms. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## GAP Commands

Command | OpCode
--- | ---
ACI_GAP_SET_NON_DISCOVERABLE | 0xFC81
ACI_GAP_SET_LIMITED_DISCOVERABLE | 0xFC82
ACI_GAP_SET_DISCOVERABLE | 0xFC83
ACI_GAP_SET_DIRECT_CONNECTABLE | 0xFC84
ACI_GAP_SET_IO_CAPABILITY | 0xFC85
ACI_GAP_SET_AUTHENTICATION_REQUIREMENT | 0xFC86
ACI_GAP_SET_AUTHORIZATION_REQUIREMENT | 0xFC87
ACI_GAP_PASS_KEY_RESP | 0xFC88
ACI_GAP_AUTHORIZATION_RESP | 0xFC89
ACI_GAP_INIT | 0xFC8A
ACI_GAP_SET_NON_CONNECTABLE | 0xFC8B
ACI_GAP_SET_UNDIRECTED_CONNECTABLE | 0xFC8C
ACI_GAP_SLAVE_SECURITY_REQ | 0xFC8D
ACI_GAP_UPDATE_ADV_DATA | 0xFC8E
ACI_GAP_DELETE_AD_TYPE | 0xFC8F
ACI_GAP_GET_SECURITY_LEVEL | 0xFC90
ACI_GAP_SET_EVENT_MASK | 0xFC91
ACI_GAP_CONFIGURE_WHITELIST | 0xFC92
ACI_GAP_TERMINATE | 0xFC93
ACI_GAP_CLEAR_SECURITY_DB | 0xFC94
ACI_GAP_ALLOW_REBOND | 0xFC95
ACI_GAP_START_LIMITED_DISCOVERY_PROC | 0xFC96
ACI_GAP_START_GENERAL_DISCOVERY_PROC | 0xFC97
ACI_GAP_START_NAME_DISCOVERY_PROC | 0xFC98
ACI_GAP_START_AUTO_CONNECTION_ESTABLISH_PROC | 0xFC99
ACI_GAP_START_GENERAL_CONNECTION_ESTABLISH_PROC | 0xFC9A
ACI_GAP_START_SELECTIVE_CONNECTION_ESTABLISH_PROC | 0xFC9B
ACI_GAP_CREATE_CONNECTION | 0xFC9C
ACI_GAP_TERMINATE_GAP_PROC | 0xFC9D
ACI_GAP_START_CONNECTION_UPDATE | 0xFC9E
ACI_GAP_SEND_PAIRING_REQ | 0xFC9F
ACI_GAP_RESOLVE_PRIVATE_ADDR | 0xFCA0
ACI_GAP_GET_BONDED_DEVICES | 0xFCA3
ACI_GAP_SET_BROADCAST_MODE | 0xFCA1
ACI_GAP_START_OBSERVATION_PROC | 0xFCA2
ACI_GAP_IS_DEVICE_BONDED | 0xFCA4

## ACI_GAP_SET_NON_DISCOVERABLE

### Description

Put the device in non-discoverable mode. This command will disable the LL advertising and put the device in standby state.

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_SET_LIMITED_DISCOVERABLE

### Description

Put the device in limited discoverable mode (as defined in Bluetooth Specification v.4.1, Vol. 3, Part C, section 9.2.3). The device will be discoverable for maximum period of TGAP (lim_adv_timeout) = 180 seconds (from errata). The advertising can be disabled at any time by issuing ACI_GAP_SET_NON_DISCOVERABLE command. The Adv_Interval_Min and Adv_Interval_Max parameters are optional. If both are set to 0, the GAP will use default values for adv intervals for limited discoverable mode (250 ms and 500 ms respectively). To allow a fast connection, the host can set Local_Name, Service_Uuid_List, Slave_Conn_Interval_Min and Slave_Conn_Interval_Max. If provided, these data will be inserted into the advertising packet payload as AD data. These parameters are optional in this command. These values can be set in advertised data using GAP_Update_Adv_Data command separately. The total size of data in advertising packet cannot exceed 31 bytes. With this command, the BLE Stack will also add automatically the following standard AD types: - AD Flags - Power Level When advertising timeout happens (i.e. limited discovery period has elapsed), controller generates ACI_GAP_LIMITED_DISCOVERABLE_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Advertising_Type | 1 | 0x00 Connectable undirected advertising (ADV_IND) (default) 0x02 Scannable undirected advertising (ADV_SCAN_IND) 0x03 Non connectable undirected advertising (ADV_NONCONN_IND) 0x04 - 0xFF Reserved for future use |
- 0x00:ADV_IND
- 0x02:ADV_SCAN_IND
- 0x03:ADV_NONCONN_IND
Advertising_Interval_Min | 2 | Minimum advertising interval. Range: 0x0020 to 0x4000 Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec |
Advertising_Interval_Max | 2 | Maximum advertising interval. Range: 0x0020 to 0x4000 Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec |
Own_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Advertising_Filter_Policy | 1 | 0x00 Allow Scan Request from Any, Allow Connect Request from Any (default). 0x01 Allow Scan Request from White List Only, Allow Connect Request from Any. 0x02 Allow Scan Request from Any, Allow Connect Request from White List Only. 0x03 Allow Scan Request from White List Only, Allow Connect Request from White List Only. 0x04 - 0xFF Reserved for future use. |
- 0x00:Allow Scan Request from Any, Allow Connect Request from Any
- 0x01:Allow Scan Request from White List Only, Allow Connect Request from Any
- 0x02:Allow Scan Request from Any, Allow Connect Request from White List Only
- 0x03:Allow Scan Request from White List Only, Allow Connect Request from White List Only
Local_Name_Length | 1 | Length of the Local name string in octets. If length is set to 0x00, Local_Name parameter should not be used. |
Local_Name | Local_Name_Length | Local name of the device. This is an ASCII string without NULL character. |
Service_Uuid_length | 1 | Length of the Service Uuid List in octets. If there is no service to be advertised, set this field to 0x00. |
Service_Uuid_List | Service_Uuid_length | This is the list of the UUIDs AD Types as defined in Volume 3, Section 11.1.1 of GAP Specification. |
Slave_Conn_Interval_Min | 2 | Slave connection interval minimum value suggested by Peripheral. If Slave_Conn_Interval_Min and Slave_Conn_Interval_Max are not 0x0000, Slave Connection Interval Range AD structure will be added in advertising data. Connection interval is defined in the following manner: connIntervalmin = Slave_Conn_Interval_Min x 1.25ms Slave_Conn_Interval_Min range: 0x0006 to 0x0C80 Value of 0xFFFF indicates no specific minimum. |
Slave_Conn_Interval_Max | 2 | Slave connection interval maximum value suggested by Peripheral. If Slave_Conn_Interval_Min and Slave_Conn_Interval_Max are not 0x0000, Slave Connection Interval Range AD structure will be added in advertising data. Connection interval is defined in the following manner: connIntervalmax = Slave_Conn_Interval_Max x 1.25ms Slave_Conn_Interval_Max range: 0x0006 to 0x0C80 Value of 0xFFFF indicates no specific maximum. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GAP_LIMITED_DISCOVERABLE_EVENT

## ACI_GAP_SET_DISCOVERABLE

### Description

Put the device in general discoverable mode (as defined in Bluetooth Specification v.4.1, Vol. 3, Part C, section 9.2.4). The device will be discoverable until the host issues the ACI_GAP_SET_NON_DISCOVERABLE command. The Adv_Interval_Min and Adv_Interval_Max parameters are optional. If both are set to 0, the GAP uses the default values for adv intervals for general discoverable mode. When using connectable undirected advertising events: - Adv_Interval_Min = 30 ms - Adv_Interval_Max = 60 ms When using non-connectable advertising events or scannable undirected advertising events: - Adv_Interval_Min = 100 ms - Adv_Interval_Max = 150 ms Host can set the Local Name, a Service UUID list and the Slave Connection Interval Range. If provided, these data will be inserted into the advertising packet payload as AD data. These parameters are optional in this command. These values can be also set using aci_gap_update_adv_data() separately. The total size of data in advertising packet cannot exceed 31 bytes. With this command, the BLE Stack will also add automatically the following standard AD types: - AD Flags - TX Power Level

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Advertising_Type | 1 | 0x00 Connectable undirected advertising (ADV_IND) (default) 0x02 Scannable undirected advertising (ADV_SCAN_IND) 0x03 Non connectable undirected advertising (ADV_NONCONN_IND) 0x04 - 0xFF Reserved for future use |
- 0x00:ADV_IND
- 0x02:ADV_SCAN_IND
- 0x03:ADV_NONCONN_IND
Advertising_Interval_Min | 2 | Minimum advertising interval. Range: 0x0020 to 0x4000 Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec |
Advertising_Interval_Max | 2 | Maximum advertising interval. Range: 0x0020 to 0x4000 Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec |
Own_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Advertising_Filter_Policy | 1 | 0x00 Allow Scan Request from Any, Allow Connect Request from Any (default). 0x01 Allow Scan Request from White List Only, Allow Connect Request from Any. 0x02 Allow Scan Request from Any, Allow Connect Request from White List Only. 0x03 Allow Scan Request from White List Only, Allow Connect Request from White List Only. 0x04 - 0xFF Reserved for future use. |
- 0x00:Allow Scan Request from Any, Allow Connect Request from Any
- 0x01:Allow Scan Request from White List Only, Allow Connect Request from Any
- 0x02:Allow Scan Request from Any, Allow Connect Request from White List Only
- 0x03:Allow Scan Request from White List Only, Allow Connect Request from White List Only
Local_Name_Length | 1 | Length of the Local name string in octets. If length is set to 0x00, Local_Name parameter should not be used. |
Local_Name | Local_Name_Length | Local name of the device. This is an ASCII string without NULL character. |
Service_Uuid_length | 1 | Length of the Service Uuid List in octets. If there is no service to be advertised, set this field to 0x00. |
Service_Uuid_List | Service_Uuid_length | This is the list of the UUIDs AD Types as defined in Volume 3, Section 11.1.1 of GAP Specification. |
Slave_Conn_Interval_Min | 2 | Slave connection interval minimum value suggested by Peripheral. If Slave_Conn_Interval_Min and Slave_Conn_Interval_Max are not 0x0000, Slave Connection Interval Range AD structure will be added in advertising data. Connection interval is defined in the following manner: connIntervalmin = Slave_Conn_Interval_Min x 1.25ms Slave_Conn_Interval_Min range: 0x0006 to 0x0C80 Value of 0xFFFF indicates no specific minimum. |
Slave_Conn_Interval_Max | 2 | Slave connection interval maximum value suggested by Peripheral. If Slave_Conn_Interval_Min and Slave_Conn_Interval_Max are not 0x0000, Slave Connection Interval Range AD structure will be added in advertising data. Connection interval is defined in the following manner: connIntervalmax = Slave_Conn_Interval_Max x 1.25ms Slave_Conn_Interval_Max range: 0x0006 to 0x0C80 Value of 0xFFFF indicates no specific maximum. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_SET_DIRECT_CONNECTABLE

### Description

Set the device in direct connectable mode (as defined in Bluetooth Specification v.4.1, Vol. 3, Part C, section 9.3.3). Device uses direct connectable mode to advertise using High Duty cycle advertisement events or Low Duty cycle advertisement events and the address as either what is specified in the Own Address Type parameter. The command specifies the type of the advertising used. If the privacy is enabled, the Type parameter in reconnection address is used for advertising, otherwise the address of the type specified in OwnAddrType is used. The device will be in directed connectable mode only for 1.28 seconds. If no connection is established within this duration, the device enters non discoverable mode and advertising will have to be again enabled explicitly. The controller generates a HCI_LE_CONNECTION_COMPLETE_EVENT event with the status set to HCI_DIRECTED_ADV_TIMEOUT if the connection was not established and 0x00 if the connection was successfully established.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Own_Address_Type | 1 | 0x00: Public device address (default) 0x01: Random device address |
Directed_Advertising_Type | 1 | Type of directed advertising. 0x01: High Duty Cycle Directed Advertising, 0x04: Low Duty Cycle Directed Advertising |
- 0x01:High Duty Cycle Directed Advertising
- 0x04:Low Duty Cycle Directed Advertising
Direct_Address_Type | 1 | 0x00: Public device address (default) 0x01: Random device address |
Direct_Address | 6 | Initiator Bluetooth address |
Advertising_Interval_Min | 2 | Minimum advertising interval. Range: 0x0020 to 0x4000 Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec |
Advertising_Interval_Max | 2 | Maximum advertising interval. Range: 0x0020 to 0x4000 Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT
- HCI_LE_CONNECTION_COMPLETE_EVENT

## ACI_GAP_SET_IO_CAPABILITY

### Description

Set the IO capabilities of the device. This command has to be given only when the device is not in a connected state.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
IO_Capability | 1 | IO capability of the device: 0x00: 'IO_CAP_DISPLAY_ONLY', 0x01: 'IO_CAP_DISPLAY_YES_NO', 0x02: 'IO_CAP_KEYBOARD_ONLY', 0x03: 'IO_CAP_NO_INPUT_NO_OUTPUT', 0x04: 'IO_CAP_KEYBOARD_DISPLAY |
- 0x00:IO_CAP_DISPLAY_ONLY
- 0x01:IO_CAP_DISPLAY_YES_NO
- 0x02:IO_CAP_KEYBOARD_ONLY
- 0x03:IO_CAP_NO_INPUT_NO_OUTPUT
- 0x04:IO_CAP_KEYBOARD_DISPLAY

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_SET_AUTHENTICATION_REQUIREMENT

### Description

Set the authentication requirements for the device. If the OOB_Enable is set to 0, the following 16 octets of OOB_Data will be ignored on reception. This command has to be given only when the device is not in a connected state.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
MITM_Mode | 1 | 0 = MITM protection not required, 1 = MITM protection required |
- 0x00:MITM protection not required
- 0x01:MITM protection required
OOB_Enable | 1 | 0 = OOB data is not available, 1 = OOB data is available and specified in OOB_Data |
- 0x00:OOB disabled
- 0x01:OOB enabled
OOB_Data | 16 | Out-Of-Band data |
Min_Encryption_Key_Size | 1 | Minimum size of the encryption key to be used during the pairing process |
Max_Encryption_Key_Size | 1 | Maximum size of the encryption key to be used during the pairing process |
Use_Fixed_Pin | 1 | If set to 0x00, then during the pairing process the application will not be requested for a pin (Fixed_Pin will be used). If set to 0x01, then during pairing process if a passkey is required the application will be notified |
- 0x00:use a fixed pin
- 0x01:do not use a fixed pin
Fixed_Pin | 4 | Fixed pin to be used during pairing if MIMT protection is enabled. Any random value between 0 to 999999 |
Bonding_Mode | 1 | Only if bonding is enabled (0x01), the bonding information is stored in flash |
- 0x00:No-bonding mode
- 0x01:Bonding mode

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_SET_AUTHORIZATION_REQUIREMENT

### Description

Set the authorization requirements of the device. This command has to be given when connected to a device if authorization is required to access services which require authorization.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Authorization_Enable | 1 | 0x00: Authorization not required (default) 0x01: Authorization required. This enables the authorization in the device and when a remote device tries to read/write a characeristic with authorization requirements, the stack will send back an error response with "Insufficient authorization" error code. After pairing is complete a ACI_GAP_AUTHORIZATION_REQ_EVENT will be sent to the Host. |
- 0x00:authorization not required
- 0x01:authorization required

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_PASS_KEY_RESP

### Description

This command should be send by the host in response to ACI_GAP_PASS_KEY_REQ_EVENT event. The command parameter contains the pass key which will be used during the pairing process.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Pass_Key | 4 | Pass key that will be used during the pairing process. Must be a number between 0 and 999999. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GAP_LIMITED_DISCOVERABLE_EVENT

## ACI_GAP_AUTHORIZATION_RESP

### Description

Authorize a device to access attributes. This command should be send by the host in response to ACI_GAP_AUTHORIZATION_REQ_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Authorize | 1 | authorization response: 0x01 : Authorize (accept connection) 0x02 : Reject (reject connection) |
- 0x01:authorize
- 0x02:reject

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_INIT

### Description

Initialize the GAP layer. Register the GAP service with the GATT. All the standard GAP characteristics will also be added: - Device Name - Appearance - Peripheral Preferred Connection Parameters (peripheral role only)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Role | 1 | Bitmap of allowed roles: 0x01 : Peripheral 0x02 : Broadcaster 0x04 : Central 0x08 : Observer | Bitmask of:
- 0x01:Peripheral
- 0x02:Broadcaster
- 0x04:Central
- 0x08:Observer
privacy_enabled | 1 | 0x00: Privacy is not enabled. 0x01: Privacy is enabled. |
- 0x00:Privacy disabled
- 0x01:Privacy enabled
device_name_char_len | 1 | Length of the device name characteristic |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Service_Handle | 2 | Handle of the GAP service |
Dev_Name_Char_Handle | 2 | Device Name Characteristic handle |
Appearance_Char_Handle | 2 | Appearance Characteristic handle |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_SET_NON_CONNECTABLE

### Description

Put the device into non connectable mode. This mode does not support connection. The privacy setting done in the ACI_GAP_INIT command plays a role in deciding the valid parameters for this command.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Advertising_Event_Type | 1 | 0x02 = Scannable undirected advertising (ADV_SCAN_IND) 0x03 = Non connectable undirected advertising (ADV_NONCONN_IND) |
- 0x02:ADV_SCAN_IND
- 0x03:ADV_NONCONN_IND
Own_Address_Type | 1 | If Privacy is disabled, then the address can be 0x00: Public address 0x01: Static random address If Privacy is enabled, then the address can be 0x02 : Resolvable private address 0x03 : Non-resolvable private address |
- 0x00:Public address
- 0x01:Static random address
- 0x02:Resolvable private address
- 0x03:Non-resolvable private address

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_SET_UNDIRECTED_CONNECTABLE

### Description

Put the device into undirected connectable mode. If privacy is enabled in the device, a resolvable private address is generated and used as the advertiser's address. If not, the address of the type specified in own_addr_type is used for advertising.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Adv_Filter_Policy | 1 | 0x00 Allow Scan Request from Any, Allow Connect Request from Any. 0x03 Allow Scan Request from White List Only, Allow Connect Request from White List Only. |
- 0x00:Allow Scan Request from Any, Allow Connect Request from Any
- 0x03:Allow Scan Request from White List Only, Allow Connect Request from White List Only
Own_Address_Type | 1 | If Privacy is disabled, then the address can be 0x00: Public address 0x01: Static random address If Privacy is enabled, then the address can be 0x02 : Resolvable private address 0x03 : Non-resolvable private address |
- 0x00:Public address
- 0x01:Static random address
- 0x02:Resolvable private address
- 0x03:Non-resolvable private address

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_SLAVE_SECURITY_REQ

### Description

Send a slave security request to the master. This command has to be issued to notify the master of the security requirements of the slave. The master may encrypt the link, initiate the pairing procedure, or reject the request.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Bonding | 1 | 0x00 = No bonding, 0x01 = Bonding required |
- 0x00:No bonding
- 0x01:Bonding required
MITM_Protection | 1 | 0 = MITM protection not required, 1 = MITM protection required |
- 0x00:MITM protection not required
- 0x01:MITM protection required

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GAP_SLAVE_SECURITY_INITIATED_EVENT

## ACI_GAP_UPDATE_ADV_DATA

### Description

This command can be used to update the advertising data for a particular AD type. If the AD type specified does not exist, then it is added to the advertising data. If the overall advertising data length is more than 31 octets after the update, then the command is rejected and the old data is retained.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
AdvDataLen | 1 | Length of AdvData in octets |
AdvData | AdvDataLen | Advertising data used by the device while advertising. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_DELETE_AD_TYPE

### Description

This command can be used to delete the specified AD type from the advertisement data if present.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
ADType | 1 | One of the AD types like in Bluetooth specification (see volume 3, Part C, 11.1) |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_GET_SECURITY_LEVEL

### Description

This command can be used to get the current security settings of the device.

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
MITM_Mode | 1 | 0 = MITM protection not required, 1 = MITM protection required |
- 0x00:MITM protection not required
- 0x01:MITM protection required
Bonding_Mode | 1 | Only if bonding is enabled (0x01), the bonding information is stored in flash |
- 0x00:No-bonding mode
- 0x01:Bonding mode
OOB_Enable | 1 | 0 = OOB data is not available, 1 = OOB data is available and specified in OOB_Data |
- 0x00:OOB disabled
- 0x01:OOB enabled
Passkey_required | 1 | 0x00 = Passkey not required, 0x01 = Fixed pin is present which is being used, 0x02 = Passkey required for pairing. An event will be generated when required. |
- 0x00:not required
- 0x01:fixed pin is present which is being used
- 0x02:passkey required for pairing. An event will be generated when required

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_SET_EVENT_MASK

### Description

It allows masking events from the GAP. The default configuration is all the events masked.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
GAP_Evt_Mask | 2 | 0x0000 No events specified, 0x0001 ACI_GAP_LIMITED_DISCOVERABLE_EVENT, 0x0002 ACI_GAP_PAIRING_COMPLETE_EVENT, 0x0004 ACI_GAP_PASS_KEY_REQ_EVENT, 0x0008 ACI_GAP_AUTHORIZATION_REQ_EVENT, 0x0010 ACI_GAP_SLAVE_SECURITY_INITIATED_EVENT, 0x0020 ACI_GAP_BOND_LOST_EVENT, 0x0080 ACI_GAP_PROC_COMPLETE_EVENT, 0x0100 ACI_L2CAP_CONNECTION_UPDATE_REQ_EVENT, 0x0200 ACI_L2CAP_CONNECTION_UPDATE_RESP_EVENT, 0x0400 ACI_L2CAP_PROC_TIMEOUT_EVENT, 0x0800 ACI_GAP_ADDR_NOT_RESOLVED_EVENT, 0xFFFF Default | Bitmask of:
- 0x0000:No events
- 0x0001:ACI_GAP_LIMITED_DISCOVERABLE_EVENT
- 0x0002:ACI_GAP_PAIRING_COMPLETE_EVENT
- 0x0004:ACI_GAP_PASS_KEY_REQ_EVENT
- 0x0008:ACI_GAP_AUTHORIZATION_REQ_EVENT
- 0x0010:ACI_GAP_SLAVE_SECURITY_INITIATED_EVENT
- 0x0020:ACI_GAP_BOND_LOST_EVENT
- 0x0080:ACI_GAP_PROC_COMPLETE_EVENT
- 0x0100:ACI_L2CAP_CONNECTION_UPDATE_REQ_EVENT
- 0x0200:ACI_L2CAP_CONNECTION_UPDATE_RESP_EVENT
- 0x0400:ACI_L2CAP_PROC_TIMEOUT_EVENT
- 0x0800:ACI_GAP_ADDR_NOT_RESOLVED_EVENT

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_CONFIGURE_WHITELIST

### Description

Add addresses of bonded devices into the controller's whitelist. The command will return an error if there are no devices in the database or if it was unable to add the device into the whitelist.

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_TERMINATE

### Description

Command the controller to terminate the connection. A HCI_DISCONNECTION_COMPLETE_EVENT event will be generated when the link is disconnected. It is important to leave an 100 ms blank window before sending any new command (including system hardware reset), since immediately after HCI_DISCONNECTION_COMPLETE_EVENT event, system could save important information in non volatile memory.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Reason | 1 | Authentication Failure error code (0x05), Other End Terminated Connection error codes (0x13-0x15), Unsupported Remote Feature error code(0x1A) and Pairing with Unit Key Not Supported error code (0x29) |
- 0x05:Authentication Failure
- 0x13:Other End Terminated Connection
- 0x14:Other End Terminated Connection
- 0x15:Other End Terminated Connection
- 0x1A:Unsupported Remote Feature
- 0x29:Pairing with Unit Key Not Supported

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_DISCONNECTION_COMPLETE_EVENT

## ACI_GAP_CLEAR_SECURITY_DB

### Description

Clear the security database. All the devices in the security database will be removed.

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_ALLOW_REBOND

### Description

Allows the security manager to complete the pairing procedure and re-bond with the master. This command should be given by the application when it receives the ACI_GAP_BOND_LOST_EVENT if it wants the re-bonding to happen successfully. If this command is not given on receiving the event, the bonding procedure will timeout.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_START_LIMITED_DISCOVERY_PROC

### Description

Start the limited discovery procedure. The controller is commanded to start active scanning. When this procedure is started, only the devices in limited discoverable mode are returned to the upper layers. The procedure is terminated when either the upper layers issue a command to terminate the procedure by issuing the command ACI_GAP_TERMINATE_GAP_PROC with the procedure code set to 0x01 or a timeout happens. When the procedure is terminated due to any of the above reasons, ACI_GAP_PROC_COMPLETE_EVENT event is returned with the procedure code set to 0x01. The device found when the procedure is ongoing is returned to the upper layers through the event HCI_LE_ADVERTISING_REPORT_EVENT.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Scan_Interval | 2 | This is defined as the time interval from when the Controller started its last LE scan until it begins the subsequent LE scan. Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10240 msec |
LE_Scan_Window | 2 | Amount of time for the duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10.24 seconds |
Own_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Filter_Duplicates | 1 | 0x00 Duplicate filtering disabled. 0x01 Duplicate filtering enabled. 0x02 - 0xFF Reserved for future use. |
- 0x00:Duplicate filtering disabled
- 0x01:Duplicate filtering enabled

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_LE_ADVERTISING_REPORT_EVENT
- ACI_GAP_PROC_COMPLETE_EVENT

## ACI_GAP_START_GENERAL_DISCOVERY_PROC

### Description

Start the general discovery procedure. The controller is commanded to start active scanning. The procedure is terminated when either the upper layers issue a command to terminate the procedure by issuing the command ACI_GAP_TERMINATE_GAP_PROC with the procedure code set to 0x02 or a timeout happens. When the procedure is terminated due to any of the above reasons, ACI_GAP_PROC_COMPLETE_EVENT event is returned with the procedure code set to 0x02. The device found when the procedure is ongoing is returned to HCI_LE_ADVERTISING_REPORT_EVENT.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Scan_Interval | 2 | This is defined as the time interval from when the Controller started its last LE scan until it begins the subsequent LE scan. Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10240 msec |
LE_Scan_Window | 2 | Amount of time for the duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10.24 seconds |
Own_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Filter_Duplicates | 1 | 0x00 Duplicate filtering disabled. 0x01 Duplicate filtering enabled. 0x02 - 0xFF Reserved for future use. |
- 0x00:Duplicate filtering disabled
- 0x01:Duplicate filtering enabled

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_LE_ADVERTISING_REPORT_EVENT
- ACI_GAP_PROC_COMPLETE_EVENT

## ACI_GAP_START_NAME_DISCOVERY_PROC

### Description

Start the name discovery procedure. A LE_Create_Connection call will be made to the controller by GAP with the initiator filter policy set to "ignore whitelist and process connectable advertising packets only for the specified device". Once a connection is established, GATT procedure is started to read the device name characteristic. When the read is completed (successfully or unsuccessfully), a ACI_GAP_PROC_COMPLETE_EVENT event is given to the upper layer. The event also contains the name of the device if the device name was read successfully.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Scan_Interval | 2 | This is defined as the time interval from when the Controller started its last LE scan until it begins the subsequent LE scan. Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10240 msec |
LE_Scan_Window | 2 | Amount of time for the duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10.24 seconds |
Peer_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Peer_Address | 6 | Public Device Address or Random Device Address of the device to be connected |
Own_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Conn_Interval_Min | 2 | N = 0xXXXX Minimum value for the connection event interval. This shall be less than or equal to Conn_Interval_Max. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Interval_Max | 2 | N = 0xXXXX Maximum value for the connection event interval. This shall be greater than or equal to Conn_Interval_Min. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Latency | 2 | Slave latency for the connection in number of connection events. Range: 0x0000 to 0x01F3 |
Supervision_Timeout | 2 | N = 0xXXXX Supervision timeout for the LE Link. (See [Vol 6] Part B, Section 4.5.2) Range: 0x000A to 0x0C80 Time = N * 10 msec Time Range: 100 msec to 32 seconds 0x0000 - 0x0009 and 0x0C81 - 0xFFFF Reserved for future use |
Minimum_CE_Length | 2 | Information parameter about the minimum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |
Maximum_CE_Length | 2 | Information parameter about the maximum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GAP_PROC_COMPLETE_EVENT

## ACI_GAP_START_AUTO_CONNECTION_ESTABLISH_PROC

### Description

Start the auto connection establishment procedure. The devices specified are added to the white list of the controller and a LE_Create_Connection call will be made to the controller by GAP with the initiator filter policy set to "use whitelist to determine which advertiser to connect to". When a command is issued to terminate the procedure by upper layer, a LE_Create_Connection_Cancel call will be made to the controller by GAP. The procedure is terminated when either a connection is successfully established with one of the specified devices in the white list or the procedure is explicitly terminated by issuing the command ACI_GAP_TERMINATE_GAP_PROC with the procedure code set to 0x08. A ACI_GAP_PROC_COMPLETE_EVENT event is returned with the procedure code set to 0x08.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Scan_Interval | 2 | This is defined as the time interval from when the Controller started its last LE scan until it begins the subsequent LE scan. Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10240 msec |
LE_Scan_Window | 2 | Amount of time for the duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10.24 seconds |
Own_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Conn_Interval_Min | 2 | N = 0xXXXX Minimum value for the connection event interval. This shall be less than or equal to Conn_Interval_Max. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Interval_Max | 2 | N = 0xXXXX Maximum value for the connection event interval. This shall be greater than or equal to Conn_Interval_Min. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Latency | 2 | Slave latency for the connection in number of connection events. Range: 0x0000 to 0x01F3 |
Supervision_Timeout | 2 | N = 0xXXXX Supervision timeout for the LE Link. (See [Vol 6] Part B, Section 4.5.2) Range: 0x000A to 0x0C80 Time = N * 10 msec Time Range: 100 msec to 32 seconds 0x0000 - 0x0009 and 0x0C81 - 0xFFFF Reserved for future use |
Minimum_CE_Length | 2 | Information parameter about the minimum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |
Maximum_CE_Length | 2 | Information parameter about the maximum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |
Num_of_Whitelist_Entries | 1 | Number of devices that have to be added to the whitelist. |
Peer_Address_Type[i] | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Peer_Address[i] | 6 | Public Device Address or Random Device Address of the device to be added to the white list. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GAP_PROC_COMPLETE_EVENT

## ACI_GAP_START_GENERAL_CONNECTION_ESTABLISH_PROC

### Description

Start a general connection establishment procedure. The host enables scanning in the controller with the scanner filter policy set to "accept all advertising packets" and from the scanning results, all the devices are sent to the upper layer using the event LE_Advertising_Report. The upper layer then has to select one of the devices to which it wants to connect by issuing the command ACI_GAP_CREATE_CONNECTION. If privacy is enabled, then either a private resolvable address or a non resolvable address, based on the address type specified in the command is set as the scanner address but the gap create connection always uses a private resolvable address if the general connection establishment procedure is active. The procedure is terminated when a connection is established or the upper layer terminates the procedure by issuing the command ACI_GAP_TERMINATE_GAP_PROC with the procedure code set to 0x10. On completion of the procedure a ACI_GAP_PROC_COMPLETE_EVENT event is generated with the procedure code set to 0x10.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Scan_Type | 1 | 0x00 Passive Scanning. No SCAN_REQ packets shall be sent.(default) 0x01 Active scanning. SCAN_REQ packets may be sent. 0x02 - 0xFF Reserved for future use |
- 0x00:Passive Scanning
- 0x01:Active scanning
LE_Scan_Interval | 2 | This is defined as the time interval from when the Controller started its last LE scan until it begins the subsequent LE scan. Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10240 msec |
LE_Scan_Window | 2 | Amount of time for the duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10.24 seconds |
Own_Address_Type | 1 | If Privacy is disabled, then the address can be 0x00: Public address 0x01: Static random address If Privacy is enabled, then the address can be 0x02 : Resolvable private address 0x03 : Non-resolvable private address |
- 0x00:Public address
- 0x01:Static random address
- 0x02:Resolvable private address
- 0x03:Non-resolvable private address
Filter_Duplicates | 1 | 0x00 Duplicate filtering disabled. 0x01 Duplicate filtering enabled. 0x02 - 0xFF Reserved for future use. |
- 0x00:Duplicate filtering disabled
- 0x01:Duplicate filtering enabled

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GAP_PROC_COMPLETE_EVENT

## ACI_GAP_START_SELECTIVE_CONNECTION_ESTABLISH_PROC

### Description

Start a selective connection establishment procedure. The GAP adds the specified device addresses into white list and enables scanning in the controller with the scanner filter policy set to "accept packets only from devices in whitelist". All the devices found are sent to the upper layer by the event HCI_LE_ADVERTISING_REPORT_EVENT. The upper layer then has to select one of the devices to which it wants to connect by issuing the command ACI_GAP_CREATE_CONNECTION. On completion of the procedure a ACI_GAP_PROC_COMPLETE_EVENT event is generated with the procedure code set to 0x20. The procedure is terminated when a connection is established or the upper layer terminates the procedure by issuing the command ACI_GAP_TERMINATE_GAP_PROC with the procedure code set to 0x20.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Scan_Type | 1 | 0x00 Passive Scanning. No SCAN_REQ packets shall be sent.(default) 0x01 Active scanning. SCAN_REQ packets may be sent. 0x02 - 0xFF Reserved for future use |
- 0x00:Passive Scanning
- 0x01:Active scanning
LE_Scan_Interval | 2 | This is defined as the time interval from when the Controller started its last LE scan until it begins the subsequent LE scan. Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10240 msec |
LE_Scan_Window | 2 | Amount of time for the duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10.24 seconds |
Own_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Filter_Duplicates | 1 | 0x00 Duplicate filtering disabled. 0x01 Duplicate filtering enabled. 0x02 - 0xFF Reserved for future use. |
- 0x00:Duplicate filtering disabled
- 0x01:Duplicate filtering enabled
Num_of_Whitelist_Entries | 1 | Number of devices that have to be added to the whitelist. |
Peer_Address_Type[i] | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Peer_Address[i] | 6 | Public Device Address or Random Device Address of the device to be added to the white list. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GAP_PROC_COMPLETE_EVENT

## ACI_GAP_CREATE_CONNECTION

### Description

Start the direct connection establishment procedure. A LE_Create_Connection call will be made to the controller by GAP with the initiator filter policy set to "ignore whitelist and process connectable advertising packets only for the specified device". The procedure can be terminated explicitly by the upper layer by issuing the command ACI_GAP_TERMINATE_GAP_PROC. When a command is issued to terminate the procedure by upper layer, a HCI_LE_CREATE_CONNECTION_CANCEL call will be made to the controller by GAP. On termination of the procedure, a HCI_LE_CONNECTION_COMPLETE_EVENT event is returned. The procedure can be explicitly terminated by the upper layer by issuing the command ACI_GAP_TERMINATE_GAP_PROC with the procedure_code set to 0x40.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Scan_Interval | 2 | This is defined as the time interval from when the Controller started its last LE scan until it begins the subsequent LE scan. Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10240 msec |
LE_Scan_Window | 2 | Amount of time for the duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10.24 seconds |
Peer_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Peer_Address | 6 | Public Device Address or Random Device Address of the device to be connected |
Own_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Conn_Interval_Min | 2 | N = 0xXXXX Minimum value for the connection event interval. This shall be less than or equal to Conn_Interval_Max. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Interval_Max | 2 | N = 0xXXXX Maximum value for the connection event interval. This shall be greater than or equal to Conn_Interval_Min. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Latency | 2 | Slave latency for the connection in number of connection events. Range: 0x0000 to 0x01F3 |
Supervision_Timeout | 2 | N = 0xXXXX Supervision timeout for the LE Link. (See [Vol 6] Part B, Section 4.5.2) Range: 0x000A to 0x0C80 Time = N * 10 msec Time Range: 100 msec to 32 seconds 0x0000 - 0x0009 and 0x0C81 - 0xFFFF Reserved for future use |
Minimum_CE_Length | 2 | Information parameter about the minimum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |
Maximum_CE_Length | 2 | Information parameter about the maximum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_LE_CONNECTION_COMPLETE_EVENT

## ACI_GAP_TERMINATE_GAP_PROC

### Description

Terminate the specified GATT procedure. An ACI_GAP_PROC_COMPLETE_EVENT event is returned with the procedure code set to the corresponding procedure.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Procedure_Code | 1 | 0x00 No events specified, 0x01 LIMITED_DISCOVERY_PROC, 0x02 GENERAL_DISCOVERY_PROC, 0x04 NAME_DISCOVERY_PROC, 0x08 AUTO_CONNECTION_ESTABLISHMENT_PROC, 0x10 GENERAL_CONNECTION_ESTABLISHMENT_PROC, 0x20 SELECTIVE_CONNECTION_ESTABLISHMENT_PROC, 0x40 DIRECT_CONNECTION_ESTABLISHMENT_PROC 0x80 OBSERVATION_PROC |
- 0x01:LIMITED_DISCOVERY_PROC
- 0x02:GENERAL_DISCOVERY_PROC
- 0x04:NAME_DISCOVERY_PROC
- 0x08:AUTO_CONNECTION_ESTABLISHMENT_PROC
- 0x10:GENERAL_CONNECTION_ESTABLISHMENT_PROC
- 0x20:SELECTIVE_CONNECTION_ESTABLISHMENT_PROC
- 0x40:DIRECT_CONNECTION_ESTABLISHMENT_PROC
- 0x80:OBSERVATION_PROC

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT
- ACI_GAP_PROC_COMPLETE_EVENT

## ACI_GAP_START_CONNECTION_UPDATE

### Description

Start the connection update procedure (only when role is Master). A HCI_LE_CONNECTION_UPDATE is called. On completion of the procedure, an HCI_LE_CONNECTION_UPDATE_COMPLETE_EVENT event is returned to the upper layer.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Conn_Interval_Min | 2 | N = 0xXXXX Minimum value for the connection event interval. This shall be less than or equal to Conn_Interval_Max. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Interval_Max | 2 | N = 0xXXXX Maximum value for the connection event interval. This shall be greater than or equal to Conn_Interval_Min. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Latency | 2 | Slave latency for the connection in number of connection events. Range: 0x0000 to 0x01F3 |
Supervision_Timeout | 2 | N = 0xXXXX Supervision timeout for the LE Link. (See [Vol 6] Part B, Section 4.5.2) Range: 0x000A to 0x0C80 Time = N * 10 msec Time Range: 100 msec to 32 seconds 0x0000 - 0x0009 and 0x0C81 - 0xFFFF Reserved for future use |
Minimum_CE_Length | 2 | Information parameter about the minimum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |
Maximum_CE_Length | 2 | Information parameter about the maximum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_LE_CONNECTION_UPDATE_COMPLETE_EVENT

## ACI_GAP_SEND_PAIRING_REQ

### Description

Send the SM pairing request to start a pairing process. The authentication requirements and IO capabilities should be set before issuing this command using the ACI_GAP_SET_IO_CAPABILITY and ACI_GAP_SET_AUTHENTICATION_REQUIREMENT commands. A ACI_GAP_PAIRING_COMPLETE_EVENT event is returned after the pairing process is completed.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Force_Rebond | 1 | 0 : Pairing request is sent only if the device has not previously bonded 1 : Pairing request will be sent even if the device was previously bonded |
- 0x00:No
- 0x01:YES

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GAP_PAIRING_COMPLETE_EVENT

## ACI_GAP_RESOLVE_PRIVATE_ADDR

### Description

This command tries to resolve the address provided with the IRKs present in its database. If the address is resolved successfully with any one of the IRKs present in the database, it returns success and also the corresponding public/static random address stored with the IRK in the database.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Address | 6 | Address to be resolved |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Actual_Address | 6 | The public or static random address of the peer device, distributed during pairing phase. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_GET_BONDED_DEVICES

### Description

This command gets the list of the devices which are bonded. It returns the number of addresses and the corresponding address types and values.

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Num_of_Addresses | 1 | The number of bonded devices |
Address_Type[i] | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Address[i] | 6 | Public Device Address or Random Device Address of the device to be added to the white list. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_SET_BROADCAST_MODE

### Description

This command puts the device into broadcast mode. A privacy enabled device uses either a resolvable private address or a non-resolvable private address as specified in the Own_Addr_Type parameter of the command.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Advertising_Interval_Min | 2 | Minimum advertising interval. Range: 0x0020 to 0x4000 Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec |
Advertising_Interval_Max | 2 | Maximum advertising interval. Range: 0x0020 to 0x4000 Time = N * 0.625 msec Time Range: 20 ms to 10.24 sec |
Advertising_Type | 1 | 0x02 Scannable undirected advertising (ADV_SCAN_IND) 0x03 Non connectable undirected advertising (ADV_NONCONN_IND) |
- 0x00:ADV_IND
- 0x01:ADV_DIRECT_IND
- 0x02:ADV_SCAN_IND
- 0x03:ADV_NONCONN_IND
Own_Address_Type | 1 | If Privacy is disabled, then the address can be 0x00: Public address 0x01: Static random address If Privacy is enabled, then the address can be 0x02 : Resolvable private address 0x03 : Non-resolvable private address |
- 0x00:Public address
- 0x01:Static random address
- 0x02:Resolvable private address
- 0x03:Non-resolvable private address
Adv_Data_Length | 1 | Length of the advertising data in the advertising packet. |
Adv_Data | Adv_Data_Length | Advertising data used by the device while advertising. |
Num_of_Whitelist_Entries | 1 | Number of devices that have to be added to the whitelist. |
Peer_Address_Type[i] | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Peer_Address[i] | 6 | Public Device Address or Random Device Address of the device to be added to the white list. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GAP_START_OBSERVATION_PROC

### Description

Starts an Observation procedure, when the device is in Observer Role. The host enables scanning in the controller. The advertising reports are sent to the upper layer using standard LE Advertising Report Event. (See Bluetooth Core v4.1, Vol. 2, part E, Ch. 7.7.65.2, LE Advertising Report Event.)

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
LE_Scan_Interval | 2 | This is defined as the time interval from when the Controller started its last LE scan until it begins the subsequent LE scan. Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10240 msec |
LE_Scan_Window | 2 | Amount of time for the duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval Range: 0x0004 to 0x4000 Time = N * 0.625 msec Time Range: 2.5 msec to 10.24 seconds |
LE_Scan_Type | 1 | 0x00 Passive Scanning. No SCAN_REQ packets shall be sent.(default) 0x01 Active scanning. SCAN_REQ packets may be sent. 0x02 - 0xFF Reserved for future use |
- 0x00:Passive Scanning
- 0x01:Active scanning
Own_Address_Type | 1 | If Privacy is disabled, then the address can be 0x00: Public address 0x01: Static random address If Privacy is enabled, then the address can be 0x02 : Resolvable private address 0x03 : Non-resolvable private address |
- 0x00:Public address
- 0x01:Static random address
- 0x02:Resolvable private address
- 0x03:Non-resolvable private address
Filter_Duplicates | 1 | 0x00 Duplicate filtering disabled. 0x01 Duplicate filtering enabled. 0x02 - 0xFF Reserved for future use. |
- 0x00:Duplicate filtering disabled
- 0x01:Duplicate filtering enabled

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- HCI_LE_ADVERTISING_REPORT_EVENT

## ACI_GAP_IS_DEVICE_BONDED

### Description

The command finds whether the device, whose address is specified in the command, is bonded. If the device is using a resolvable private address and it has been bonded, then the command will return BLE_STATUS_SUCCESS.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Peer_Address_Type | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Peer_Address | 6 | Address used by the peer device while advertising |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## GATT/ATT Commands

Command | OpCode
--- | ---
ACI_GATT_INIT | 0xFD01
ACI_GATT_ADD_SERVICE | 0xFD02
ACI_GATT_INCLUDE_SERVICE | 0xFD03
ACI_GATT_ADD_CHAR | 0xFD04
ACI_GATT_ADD_CHAR_DESC | 0xFD05
ACI_GATT_UPDATE_CHAR_VALUE | 0xFD06
ACI_GATT_DEL_CHAR | 0xFD07
ACI_GATT_DEL_SERVICE | 0xFD08
ACI_GATT_DEL_INCLUDE_SERVICE | 0xFD09
ACI_GATT_SET_EVENT_MASK | 0xFD0A
ACI_GATT_EXCHANGE_CONFIG | 0xFD0B
ACI_ATT_FIND_INFO_REQ | 0xFD0C
ACI_ATT_FIND_BY_TYPE_VALUE_REQ | 0xFD0D
ACI_ATT_READ_BY_TYPE_REQ | 0xFD0E
ACI_ATT_READ_BY_GROUP_TYPE_REQ | 0xFD0F
ACI_ATT_PREPARE_WRITE_REQ | 0xFD10
ACI_ATT_EXECUTE_WRITE_REQ | 0xFD11
ACI_GATT_DISC_ALL_PRIMARY_SERVICES | 0xFD12
ACI_GATT_DISC_PRIMARY_SERVICE_BY_UUID | 0xFD13
ACI_GATT_FIND_INCLUDED_SERVICES | 0xFD14
ACI_GATT_DISC_ALL_CHAR_OF_SERVICE | 0xFD15
ACI_GATT_DISC_CHAR_BY_UUID | 0xFD16
ACI_GATT_DISC_ALL_CHAR_DESC | 0xFD17
ACI_GATT_READ_CHAR_VALUE | 0xFD18
ACI_GATT_READ_USING_CHAR_UUID | 0xFD19
ACI_GATT_READ_LONG_CHAR_VALUE | 0xFD1A
ACI_GATT_READ_MULTIPLE_CHAR_VALUE | 0xFD1B
ACI_GATT_WRITE_CHAR_VALUE | 0xFD1C
ACI_GATT_WRITE_LONG_CHAR_VALUE | 0xFD1D
ACI_GATT_WRITE_CHAR_RELIABLE | 0xFD1E
ACI_GATT_WRITE_LONG_CHAR_DESC | 0xFD1F
ACI_GATT_READ_LONG_CHAR_DESC | 0xFD20
ACI_GATT_WRITE_CHAR_DESC | 0xFD21
ACI_GATT_READ_CHAR_DESC | 0xFD22
ACI_GATT_WRITE_WITHOUT_RESP | 0xFD23
ACI_GATT_SIGNED_WRITE_WITHOUT_RESP | 0xFD24
ACI_GATT_CONFIRM_INDICATION | 0xFD25
ACI_GATT_WRITE_RESP | 0xFD26
ACI_GATT_ALLOW_READ | 0xFD27
ACI_GATT_SET_SECURITY_PERMISSION | 0xFD28
ACI_GATT_SET_DESC_VALUE | 0xFD29
ACI_GATT_READ_HANDLE_VALUE | 0xFD2A
ACI_GATT_READ_HANDLE_VALUE_OFFSET | 0xFD2B
ACI_GATT_UPDATE_CHAR_VALUE_EXT | 0xFD2C

## ACI_GATT_INIT

### Description

Initialize the GATT layer for server and client roles. It adds also the GATT service with Service Changed Characteristic. Until this command is issued the GATT channel will not process any commands even if the connection is opened. This command has to be given before using any of the GAP features.

### Input parameters

None

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_ADD_SERVICE

### Description

Add a service to GATT Server. When a service is created in the server, the host needs to reserve the handle ranges for this service using Max_Attribute_Records parameter. This parameter specifies the maximum number of attribute records that can be added to this service (including the service attribute, include attribute, characteristic attribute, characteristic value attribute and characteristic descriptor attribute). Handle of the created service is returned in command complete event. Service declaration is taken from the service pool. The attributes for characteristics and descriptors are allocated from the attribute pool.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Service_UUID_Type | 1 | 0x01 = 16-bit UUID, 0x02 = 128-bit UUID |
Service_UUID | 2 or 16 | 16-bit UUID or 128-bit UUID |
Service_Type | 1 | 0x01 = Primary Service, 0x02 = Secondary Service |
- 0x01:Primary Service
- 0x02:Secondary Service
Max_Attribute_Records | 1 | Maximum number of attribute records that can be added to this service |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Service_Handle | 2 | Handle of the Service. When this service is added to the server, a handle is allocated by the server to this service. Server also allocates a range of handles for this service from serviceHandle to <serviceHandle + max_attr_records> |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_INCLUDE_SERVICE

### Description

Include a service given by Include_Start_Handle and Include_End_Handle to another service given by Service_Handle. Attribute server creates an INCLUDE definition attribute and return the handle of this attribute in Included_handle.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Service_Handle | 2 | Handle of the Service to which another service has to be included. |
Include_Start_Handle | 2 | Start Handle of the Service which has to be included in service |
Include_End_Handle | 2 | End Handle of the Service which has to be included in service |
Include_UUID_Type | 1 | 0x01 = 16-bit UUID, 0x02 = 128-bit UUID |
Include_UUID | 2 or 16 | 16-bit UUID or 128-bit UUID |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Include_Handle | 2 | Handle of the include declaration |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_ADD_CHAR

### Description

Add a characteristic to a service.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Service_Handle | 2 | Handle of the Service to which the characteristic will be added |
Char_UUID_Type | 1 | 0x01 = 16-bit UUID, 0x02 = 128-bit UUID |
Char_UUID | 2 or 16 | 16-bit UUID or 128-bit UUID |
Char_Value_Length | 2 | Maximum length of the characteristic value. |
Char_Properties | 1 | Characteristic Properties like defined in Volume 3, section 3.3.1.1 of Bluetooth Specification 4.0. 0x01: Broadcast, 0x02: Read, 0x04: Write w/o Resp., 0x08: Write, 0x10: Notify, 0x20: Indicate, 0x40: Authenticated Signed Writes, 0x80: Extended Proproperties | Bitmask of:
- 0x00:CHAR_PROP_NONE
- 0x01:CHAR_PROP_BROADCAST
- 0x02:CHAR_PROP_READ
- 0x04:CHAR_PROP_WRITE_WITHOUT_RES
- 0x08:CHAR_PROP_WRITE
- 0x10:CHAR_PROP_NOTIFY
- 0x20:CHAR_PROP_INDICATE
- 0x40:CHAR_PROP_SIGNED_WRITE
- 0x80:CHAR_PROP_EXT Prop.
Security_Permissions | 1 | 0x00: None, 0x01: AUTHEN_READ (Need authentication to read), 0x02: AUTHOR_READ (Need authorization to read), 0x04: ENCRY_READ (link should be encrypted to read), 0x08: AUTHEN_WRITE (need authentication to write), 0x10: AUTHOR_WRITE (need authorization to write), 0x20: ENCRY_WRITE (link should be encrypted to write) | Bitmask of:
- 0x00:None
- 0x01:AUTHEN_READ
- 0x02:AUTHOR_READ
- 0x04:ENCRY_READ
- 0x08:AUTHEN_WRITE
- 0x10:AUTHOR_WRITE
- 0x20:ENCRY_WRITE
GATT_Evt_Mask | 1 | 0x00 = GATT_DONT_NOTIFY_EVENTS, 0x01 = GATT_NOTIFY_ATTRIBUTE_WRITE, 0x02 = GATT_NOTIFY_WRITE_REQ_AND_WAIT_FOR_APPL_RESP, 0x04 = GATT_NOTIFY_READ_REQ_AND_WAIT_FOR_APPL_RESP | Bitmask of:
- 0x00:GATT_DONT_NOTIFY_EVENTS
- 0x01:GATT_NOTIFY_ATTRIBUTE_WRITE
- 0x02:GATT_NOTIFY_WRITE_REQ_AND_WAIT_FOR_APPL_RESP
- 0x04:GATT_NOTIFY_READ_REQ_AND_WAIT_FOR_APPL_RESP
Enc_Key_Size | 1 | Minimum encryption key size required to read the characteristic range : 0x07 to 0x10 |
Is_Variable | 1 | 0x00: The attribute has a fixed length value field 0x01: The attribute has a variable length value field |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Char_Handle | 2 | Handle of the Characteristic that has been added. It is the handle of the characteristic declaration. The attribute that holds the characteristic value is allocated at the next handle, followed by the Client Characteristic Configuration descriptor if the characteristic has CHAR_PROP_NOTIFY or CHAR_PROP_INDICATE properties. |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_ADD_CHAR_DESC

### Description

Add a characteristic descriptor to a service.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Service_Handle | 2 | Handle of service to which the characteristic belongs |
Char_Handle | 2 | Handle of the characteristic to which description has to be added |
Char_Desc_Uuid_Type | 1 | 0x01 = 16-bit UUID, 0x02 = 128-bit UUID |
Char_Desc_Uuid | 2 or 16 | 16-bit UUID or 128-bit UUID |
Char_Desc_Value_Max_Len | 1 | The maximum length of the descriptor value |
Char_Desc_Value_Length | 1 | Current Length of the characteristic descriptor value |
Char_Desc_Value | Char_Desc_Value_Length | Value of the characteristic description |
Security_Permissions | 1 | 0x00: None, 0x01: AUTHEN_READ (Need authentication to read), 0x02: AUTHOR_READ (Need authorization to read), 0x04: ENCRY_READ (link should be encrypted to read), 0x08: AUTHEN_WRITE (need authentication to write), 0x10: AUTHOR_WRITE (need authorization to write), 0x20: ENCRY_WRITE (link should be encrypted to write) | Bitmask of:
- 0x00:None
- 0x01:AUTHEN_READ
- 0x02:AUTHOR_READ
- 0x04:ENCRY_READ
- 0x08:AUTHEN_WRITE
- 0x10:AUTHOR_WRITE
- 0x20:ENCRY_WRITE
Access_Permissions | 1 | 0x00: None, 0x01: READ, 0x02: WRITE, 0x04: WRITE_WO_RESP, 0x08: SIGNED_WRITE | Bitmask of:
- 0x00:None
- 0x01:READ
- 0x02:WRITE
- 0x04:WRITE_WO_RESP
- 0x08:SIGNED_WRITE
GATT_Evt_Mask | 1 | 0x00 = GATT_DONT_NOTIFY_EVENTS, 0x01 = GATT_NOTIFY_ATTRIBUTE_WRITE, 0x02 = GATT_NOTIFY_WRITE_REQ_AND_WAIT_FOR_APPL_RESP, 0x04 = GATT_NOTIFY_READ_REQ_AND_WAIT_FOR_APPL_RESP | Bitmask of:
- 0x00:GATT_DONT_NOTIFY_EVENTS
- 0x01:GATT_NOTIFY_ATTRIBUTE_WRITE
- 0x02:GATT_NOTIFY_WRITE_REQ_AND_WAIT_FOR_APPL_RESP
- 0x04:GATT_NOTIFY_READ_REQ_AND_WAIT_FOR_APPL_RESP
Enc_Key_Size | 1 | Minimum encryption key size required to read the characteristic range : 0x07 to 0x10 |
Is_Variable | 1 | 0x00: The attribute has a fixed length value field 0x01: The attribute has a variable length value field |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Char_Desc_Handle | 2 | Handle of the characteristic descriptor |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_UPDATE_CHAR_VALUE

### Description

Update a characteristic value in a service. If notifications (or indications) are enabled on that characteristic, a notification (or indication) will be sent to the client after sending this command to the BlueNRG. The command is queued into the BlueNRG command queue. If the buffer is full, because previous commands could not be still processed, the function will return BLE_STATUS_INSUFFICIENT_RESOURCES. This will happen if notifications (or indications) are enabled and the application calls ACI_GATT_UPDATE_CHAR_VALUE at an higher rate than what is allowed by the link. Throughput on BLE link depends on connection interval and connection length parameters (decided by the master, see aci_l2cap_connection_parameter_update_request() for more info on how to suggest new connection parameters from a slave). If the application does not want to lose notifications because BlueNRG buffer becomes full, it has to retry again till the function returns BLE_STATUS_SUCCESS or any other error code.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Service_Handle | 2 | Handle of service to which the characteristic belongs |
Char_Handle | 2 | Handle of the characteristic |
Val_Offset | 1 | The offset from which the attribute value has to be updated. If this is set to 0 and the attribute value is of variable length, then the length of the attribute will be set to the Char_Value_Length. If the Val_Offset is set to a value greater than 0, then the length of the attribute will be set to the maximum length as specified for the attribute while adding the characteristic. |
Char_Value_Length | 1 | Length of the characteristic value in octets |
Char_Value | Char_Value_Length | Characteristic value |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_DEL_CHAR

### Description

Delete the specified characteristic from the service.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Serv_Handle | 2 | Handle of service to which the characteristic belongs |
Char_Handle | 2 | Handle of the characteristic which has to be deleted |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_DEL_SERVICE

### Description

Delete the specified service from the GATT server database.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Serv_Handle | 2 | Handle of the service to be deleted |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_DEL_INCLUDE_SERVICE

### Description

Delete the Include definition from the service.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Serv_Handle | 2 | Handle of the service to which the include service belongs |
Include_Handle | 2 | Handle of the included service which has to be deleted |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_SET_EVENT_MASK

### Description

Mask events from the GATT. The default configuration is all the events masked.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
GATT_Evt_Mask | 4 | 0x00000001: ACI_GATT_ATTRIBUTE_MODIFIED_EVENT 0x00000002: ACI_GATT_PROC_TIMEOUT_EVENT 0x00000004: ACI_ATT_EXCHANGE_MTU_RESP_EVENT 0x00000008: ACI_ATT_FIND_INFO_RESP_EVENT 0x00000010: ACI_ATT_FIND_BY_TYPE_VALUE_RESP_EVENT 0x00000020: ACI_ATT_READ_BY_TYPE_RESP_EVENT 0x00000040: ACI_ATT_READ_RESP_EVENT 0x00000080: ACI_ATT_READ_BLOB_RESP_EVENT 0x00000100: ACI_ATT_READ_MULTIPLE_RESP_EVENT 0x00000200: ACI_ATT_READ_BY_GROUP_TYPE_RESP_EVENT 0x00000800: ACI_ATT_PREPARE_WRITE_RESP_EVENT 0x00001000: ACI_ATT_EXEC_WRITE_RESP_EVENT 0x00002000: ACI_GATT_INDICATION_EVENT 0x00004000: ACI_GATT_NOTIFICATION_EVENT 0x00008000: ACI_GATT_ERROR_RESP_EVENT 0x00010000: ACI_GATT_PROC_COMPLETE_EVENT 0x00020000: ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT 0x00040000: ACI_GATT_TX_POOL_AVAILABLE_EVENT |
- 0x00000001:3073
- 0x00000002:3074
- 0x00000004:3075
- 0x00000008:3076
- 0x00000010:3077
- 0x00000020:3078
- 0x00000040:3079
- 0x00000080:3080
- 0x00000100:3081
- 0x00000200:3082
- 0x00000800:3084
- 0x00001000:3085
- 0x00002000:3086
- 0x00004000:3087
- 0x00008000:3089
- 0x00010000:3088
- 0x00020000:3090
- 0x00040000:3094

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_EXCHANGE_CONFIG

### Description

Perform an ATT MTU exchange procedure. When the ATT MTU exchange procedure is completed, a ACI_ATT_EXCHANGE_MTU_RESP_EVENT event is generated. A ACI_GATT_PROC_COMPLETE_EVENT event is also generated to indicate the end of the procedure.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_EXCHANGE_MTU_RESP_EVENT

## ACI_ATT_FIND_INFO_REQ

### Description

Send a Find Information Request. This command is used to obtain the mapping of attribute handles with their associated types. The responses of the procedure are given through the ACI_ATT_FIND_INFO_RESP_EVENT event. The end of the procedure is indicated by a ACI_GATT_PROC_COMPLETE_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Start_Handle | 2 | First requested handle number |
End_Handle | 2 | Last requested handle number |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_FIND_INFO_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_ATT_FIND_BY_TYPE_VALUE_REQ

### Description

Send a Find By Type Value Request The Find By Type Value Request is used to obtain the handles of attributes that have a given 16-bit UUID attribute type and a given attribute value. The responses of the procedure are given through the ACI_ATT_FIND_BY_TYPE_VALUE_RESP_EVENT event. The end of the procedure is indicated by a ACI_GATT_PROC_COMPLETE_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Start_Handle | 2 | First requested handle number |
End_Handle | 2 | Last requested handle number |
UUID | 2 | 2 octet UUID to find (little-endian) |
Attribute_Val_Length | 1 | Length of attribute value (maximum value is ATT_MTU - 7). |
Attribute_Val | Attribute_Val_Length | Attribute value to find |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_FIND_BY_TYPE_VALUE_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_ATT_READ_BY_TYPE_REQ

### Description

Send a Read By Type Request. The Read By Type Request is used to obtain the values of attributes where the attribute type is known but the handle is not known. The responses of the procedure are given through the ACI_ATT_READ_BY_TYPE_RESP_EVENT event. The end of the procedure is indicated by a ACI_GATT_PROC_COMPLETE_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Start_Handle | 2 | First requested handle number |
End_Handle | 2 | Last requested handle number |
UUID_Type | 1 | 0x01 = 16-bit UUID, 0x02 = 128-bit UUID |
UUID | 2 or 16 | 16-bit UUID or 128-bit UUID |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_READ_BY_TYPE_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_ATT_READ_BY_GROUP_TYPE_REQ

### Description

Send a Read By Group Type Request. The Read By Group Type Request is used to obtain the values of grouping attributes where the attribute type is known but the handle is not known. Grouping attributes are defined at GATT layer. The grouping attribute types are: "Primary Service", "Secondary Service" and "Characteristic". The responses of the procedure are given through the ACI_ATT_READ_BY_GROUP_TYPE_RESP_EVENT event. The end of the procedure is indicated by a ACI_GATT_PROC_COMPLETE_EVENT.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Start_Handle | 2 | First requested handle number |
End_Handle | 2 | Last requested handle number |
UUID_Type | 1 | 0x01 = 16-bit UUID, 0x02 = 128-bit UUID |
UUID | 2 or 16 | 16-bit UUID or 128-bit UUID |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_READ_BY_GROUP_TYPE_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_ATT_PREPARE_WRITE_REQ

### Description

Send a Prepare Write Request. The Prepare Write Request is used to request the server to prepare to write the value of an attribute. The responses of the procedure are given through the ACI_ATT_PREPARE_WRITE_RESP_EVENT event. The end of the procedure is indicated by a ACI_GATT_PROC_COMPLETE_EVENT.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the attribute to be written |
Val_Offset | 2 | The offset of the first octet to be written |
Attribute_Val_Length | 1 | Length of attribute value (maximum value is ATT_MTU - 5). |
Attribute_Val | Attribute_Val_Length | The value of the attribute to be written |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_PREPARE_WRITE_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_ATT_EXECUTE_WRITE_REQ

### Description

Send an Execute Write Request. The Execute Write Request is used to request the server to write or cancel the write of all the prepared values currently held in the prepare queue from this client. The result of the procedure is given through the ACI_ATT_EXEC_WRITE_RESP_EVENT event. The end of the procedure is indicated by a ACI_GATT_PROC_COMPLETE_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Execute | 1 | 0x00 = Cancel all prepared writes 0x01 = Immediately write all pending prepared values |
- 0x00:Cancel all prepared writes
- 0x01:Immediately write all pending prepared values

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_EXEC_WRITE_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_DISC_ALL_PRIMARY_SERVICES

### Description

Start the GATT client procedure to discover all primary services on the server. The responses of the procedure are given through the ACI_ATT_READ_BY_GROUP_TYPE_RESP_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_READ_BY_GROUP_TYPE_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_DISC_PRIMARY_SERVICE_BY_UUID

### Description

Start the procedure to discover the primary services of the specified UUID on the server. The responses of the procedure are given through the ACI_ATT_FIND_BY_TYPE_VALUE_RESP_EVENT event. The end of the procedure is indicated by a ACI_GATT_PROC_COMPLETE_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
UUID_Type | 1 | 0x01 = 16-bit UUID, 0x02 = 128-bit UUID |
UUID | 2 or 16 | 16-bit UUID or 128-bit UUID |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_FIND_BY_TYPE_VALUE_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_FIND_INCLUDED_SERVICES

### Description

Start the procedure to find all included services. The responses of the procedure are given through the ACI_ATT_READ_BY_TYPE_RESP_EVENT event. The end of the procedure is indicated by a ACI_GATT_PROC_COMPLETE_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Start_Handle | 2 | Start attribute handle of the service |
End_Handle | 2 | End attribute handle of the service |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_READ_BY_TYPE_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_DISC_ALL_CHAR_OF_SERVICE

### Description

Start the procedure to discover all the characteristics of a given service. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. Before procedure completion the response packets are given through ACI_ATT_READ_BY_TYPE_RESP_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Start_Handle | 2 | Start attribute handle of the service |
End_Handle | 2 | End attribute handle of the service |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_READ_BY_TYPE_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_DISC_CHAR_BY_UUID

### Description

Start the procedure to discover all the characteristics specified by a UUID. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. Before procedure completion the response packets are given through ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Start_Handle | 2 | Start attribute handle of the service |
End_Handle | 2 | End attribute handle of the service |
UUID_Type | 1 | 0x01 = 16-bit UUID, 0x02 = 128-bit UUID |
UUID | 2 or 16 | 16-bit UUID or 128-bit UUID |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_DISC_ALL_CHAR_DESC

### Description

Start the procedure to discover all characteristic descriptors on the server. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. Before procedure completion the response packets are given through ACI_ATT_FIND_INFO_RESP_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Char_Handle | 2 | Handle of the characteristic value |
End_Handle | 2 | End handle of the characteristic |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_FIND_INFO_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_READ_CHAR_VALUE

### Description

Start the procedure to read the attribute value. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. Before procedure completion the response packet is given through ACI_ATT_READ_RESP_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the characteristic to be read |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_READ_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_READ_USING_CHAR_UUID

### Description

Start the procedure to read all the characteristics specified by the UUID. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. Before procedure completion the response packets are given through ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Start_Handle | 2 | Starting handle of the range to be searched |
End_Handle | 2 | End handle of the range to be searched |
UUID_Type | 1 | 0x01 = 16-bit UUID, 0x02 = 128-bit UUID |
UUID | 2 or 16 | 16-bit UUID or 128-bit UUID |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_READ_LONG_CHAR_VALUE

### Description

Start the procedure to read a long characteristic value. the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. Before procedure completion the response packets are given through ACI_ATT_READ_BLOB_RESP_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the characteristic to be read |
Val_Offset | 2 | Offset from which the value needs to be read |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_READ_BLOB_RESP_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_READ_MULTIPLE_CHAR_VALUE

### Description

Start a procedure to read multiple characteristic values from a server. This sub-procedure is used to read multiple Characteristic Values from a server when the client knows the Characteristic Value Handles. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. Before procedure completion the response packets are given through ACI_ATT_READ_MULTIPLE_RESP_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Number_of_Handles | 1 | The number of handles for which the value has to be read |
Handle[i] | 2 | The handles for which the attribute value has to be read |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_READ_MULTIPLE_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_WRITE_CHAR_VALUE

### Description

Start the procedure to write a long characteristic value. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. During the procedure, ACI_ATT_PREPARE_WRITE_RESP_EVENT and ACI_ATT_EXEC_WRITE_RESP_EVENT events are raised.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the characteristic to be written |
Attribute_Val_Length | 1 | Length of the value to be written |
Attribute_Val | Attribute_Val_Length | Value to be written |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GATT_ERROR_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_WRITE_LONG_CHAR_VALUE

### Description

Start the procedure to write a long characteristic value. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. During the procedure, ACI_ATT_PREPARE_WRITE_RESP_EVENT and ACI_ATT_EXEC_WRITE_RESP_EVENT events are raised.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the attribute to be written |
Val_Offset | 2 | Offset at which the attribute has to be written |
Attribute_Val_Length | 1 | Length of the value to be written |
Attribute_Val | Attribute_Val_Length | Value to be written |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT
- ACI_ATT_PREPARE_WRITE_RESP_EVENT
- ACI_ATT_EXEC_WRITE_RESP_EVENT

## ACI_GATT_WRITE_CHAR_RELIABLE

### Description

Start the procedure to write a characteristic reliably. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. During the procedure, ACI_ATT_PREPARE_WRITE_RESP_EVENT and ACI_ATT_EXEC_WRITE_RESP_EVENT events are raised.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the attribute to be written |
Val_Offset | 2 | Offset at which the attribute has to be written |
Attribute_Val_Length | 1 | Length of the value to be written |
Attribute_Val | Attribute_Val_Length | Value to be written |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT
- ACI_ATT_PREPARE_WRITE_RESP_EVENT
- ACI_ATT_EXEC_WRITE_RESP_EVENT

## ACI_GATT_WRITE_LONG_CHAR_DESC

### Description

Start the procedure to write a long characteristic descriptor. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. During the procedure, ACI_ATT_PREPARE_WRITE_RESP_EVENT and ACI_ATT_EXEC_WRITE_RESP_EVENT events are raised.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the attribute to be written |
Val_Offset | 2 | Offset at which the attribute has to be written |
Attribute_Val_Length | 1 | Length of the value to be written |
Attribute_Val | Attribute_Val_Length | Value to be written |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT
- ACI_ATT_PREPARE_WRITE_RESP_EVENT
- ACI_ATT_EXEC_WRITE_RESP_EVENT

## ACI_GATT_READ_LONG_CHAR_DESC

### Description

Start the procedure to read a long characteristic value. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. Before procedure completion the response packets are given through ACI_ATT_READ_BLOB_RESP_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the characteristic descriptor |
Val_Offset | 2 | Offset from which the value needs to be read |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_READ_BLOB_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_WRITE_CHAR_DESC

### Description

Start the procedure to write a characteristic descriptor. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the attribute to be written |
Attribute_Val_Length | 1 | Length of the value to be written |
Attribute_Val | Attribute_Val_Length | Value to be written |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_READ_CHAR_DESC

### Description

Start the procedure to read the descriptor specified. When the procedure is completed, a ACI_GATT_PROC_COMPLETE_EVENT event is generated. Before procedure completion the response packet is given through ACI_ATT_READ_RESP_EVENT event.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the descriptor to be read |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_ATT_READ_RESP_EVENT
- ACI_GATT_PROC_COMPLETE_EVENT

## ACI_GATT_WRITE_WITHOUT_RESP

### Description

Start the procedure to write a characteristic value without waiting for any response from the server. No events are generated after this command is executed.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the attribute to be written |
Attribute_Val_Length | 1 | Length of the value to be written (maximum value is ATT_MTU - 3) |
Attribute_Val | Attribute_Val_Length | Value to be written |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_SIGNED_WRITE_WITHOUT_RESP

### Description

Start a signed write without response from the server. The procedure is used to write a characteristic value with an authentication signature without waiting for any response from the server. It cannot be used when the link is encrypted.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the attribute to be written |
Attribute_Val_Length | 1 | Length of the value to be written (up to ATT_MTU - 13) |
Attribute_Val | Attribute_Val_Length | Value to be written |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_CONFIRM_INDICATION

### Description

Allow application to confirm indication. This command has to be sent when the application receives the event ACI_GATT_INDICATION_EVENT.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_WRITE_RESP

### Description

Allow or reject a write request from a client. This command has to be sent by the application when it receives the ACI_GATT_WRITE_PERMIT_REQ_EVENT. If the write can be allowed, then the status and error code has to be set to 0. If the write cannot be allowed, then the status has to be set to 1 and the error code has to be set to the error code that has to be passed to the client.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Attr_Handle | 2 | Handle of the attribute that was passed in the event EVT_BLUE_GATT_WRITE_PERMIT_REQ |
Write_status | 1 | 0x00 = The value can be written to the attribute specified by attr_handle, 0x01 = The value cannot be written to the attribute specified by the attr_handle |
- 0x00:The value can be written to the attribute specified by attr_handle
- 0x01:The value cannot be written to the attribute specified by the attr_handle
Error_Code | 1 | The error code that has to be passed to the client in case the write has to be rejected |
Attribute_Val_Length | 1 | Length of the value to be written as passed in the event EVT_BLUE_GATT_WRITE_PERMIT_REQ |
Attribute_Val | Attribute_Val_Length | Value as passed in the event EVT_BLUE_GATT_WRITE_PERMIT_REQ |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_ALLOW_READ

### Description

Allow the GATT server to send a response to a read request from a client. The application has to send this command when it receives the ACI_GATT_READ_PERMIT_REQ_EVENT or ACI_GATT_READ_MULTI_PERMIT_REQ_EVENT. This command indicates to the stack that the response can be sent to the client. So if the application wishes to update any of the attributes before they are read by the client, it has to update the characteristic values using the ACI_GATT_UPDATE_CHAR_VALUE and then give this command. The application should perform the required operations within 30 seconds. Otherwise the GATT procedure will be timeout.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_SET_SECURITY_PERMISSION

### Description

This command sets the security permission for the attribute handle specified. Currently the setting of security permission is allowed only for client configuration descriptor.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Serv_Handle | 2 | Handle of the service which contains the attribute whose security permission has to be modified |
Attr_Handle | 2 | Handle of the attribute whose security permission has to be modified |
Security_Permissions | 1 | 0x00: None, 0x01: AUTHEN_READ (Need authentication to read), 0x02: AUTHOR_READ (Need authorization to read), 0x04: ENCRY_READ (link should be encrypted to read), 0x08: AUTHEN_WRITE (need authentication to write), 0x10: AUTHOR_WRITE (need authorization to write), 0x20: ENCRY_WRITE (link should be encrypted to write) | Bitmask of:
- 0x00:None
- 0x01:AUTHEN_READ
- 0x02:AUTHOR_READ
- 0x04:ENCRY_READ
- 0x08:AUTHEN_WRITE
- 0x10:AUTHOR_WRITE
- 0x20:ENCRY_WRITE

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_SET_DESC_VALUE

### Description

This command sets the value of the descriptor specified by charDescHandle.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Serv_Handle | 2 | Handle of the service which contains the characteristic descriptor |
Char_Handle | 2 | Handle of the characteristic which contains the descriptor |
Char_Desc_Handle | 2 | Handle of the descriptor whose value has to be set |
Val_Offset | 2 | Offset from which the descriptor value has to be updated |
Char_Desc_Value_Length | 1 | Length of the descriptor value |
Char_Desc_Value | Char_Desc_Value_Length | Descriptor value |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_READ_HANDLE_VALUE

### Description

Reads the value of the attribute handle specified from the local GATT database.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Attr_Handle | 2 | Handle of the attribute to read |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Value_Length | 2 | Length of the value |
Value | Value_Length | 0-N bytes Value read. The length is as specified in the Value_Length field |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_READ_HANDLE_VALUE_OFFSET

### Description

Reads the value of the attribute handle specified from the local GATT database, starting from a given offset. If the length to be returned is greater than 128, then only 128 bytes are returned. The application should send this command with incremented offsets until it gets an error with the offset it specified or the number of byes of attribute value returned is less than 128.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Attr_Handle | 2 | Handle of the attribute to read |
Offset | 1 | Offset from which the value needs to be read |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Value_Length | 1 | Length of the value |
Value | Value_Length | 0-N bytes Value read. The length is as specified in the Value_Length field |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## ACI_GATT_UPDATE_CHAR_VALUE_EXT

### Description

This command is a more flexible version of ACI_GATT_UPDATE_CHAR_VALUE to support update of long attribute up to 512 bytes and indicate selectively the generation of Indication/Notification.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Service_Handle | 2 | Handle of service to which the characteristic belongs |
Char_Handle | 2 | Handle of the characteristic |
Update_Type | 1 | Allow Notification or Indication generation, if enabled in the client configuration descriptor | Bitmask of:
- 0x01:Notification
- 0x02:Indication
Char_Length | 2 |

Total length of the characteristic value.
  In case of a variable size characteristic, this field specifies the new length of the characteristic value after the update; in case of fixed length characteristic this field is ignored.

Value_Offset | 2 | The offset from which the attribute value has to be updated. |
Value_Length | 1 | Length of the Update_Value parameter in octets |
Value | Value_Length | Updated characteristic value |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

## L2CAP Commands

Command | OpCode
--- | ---
ACI_L2CAP_CONNECTION_PARAMETER_UPDATE_REQ | 0xFD81
ACI_L2CAP_CONNECTION_PARAMETER_UPDATE_RESP | 0xFD82

## ACI_L2CAP_CONNECTION_PARAMETER_UPDATE_REQ

### Description

Send an L2CAP connection parameter update request from the slave to the master. An ACI_L2CAP_CONNECTION_UPDATE_RESP_EVENT event will be raised when the master will respond to the request (accepts or rejects).

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Conn_Interval_Min | 2 | N = 0xXXXX Minimum value for the connection event interval. This shall be less than or equal to Conn_Interval_Max. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Interval_Max | 2 | N = 0xXXXX Maximum value for the connection event interval. This shall be greater than or equal to Conn_Interval_Min. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Slave_latency | 2 | Slave latency for the connection in number of connection events. Range: 0x0000 to 0x01F3 |
Timeout_Multiplier | 2 | Defines connection timeout parameter in the following manner: Timeout Multiplier * 10ms. |

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_STATUS_EVENT
- ACI_L2CAP_CONNECTION_UPDATE_RESP_EVENT

## ACI_L2CAP_CONNECTION_PARAMETER_UPDATE_RESP

### Description

Accept or reject a connection update. This command should be sent in response to a ACI_L2CAP_CONNECTION_UPDATE_REQ_EVENT event from the controller. The accept parameter has to be set if the connection parameters given in the event are acceptable.

### Input parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Conn_Interval_Min | 2 | N = 0xXXXX Minimum value for the connection event interval. This shall be less than or equal to Conn_Interval_Max. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Conn_Interval_Max | 2 | N = 0xXXXX Maximum value for the connection event interval. This shall be greater than or equal to Conn_Interval_Min. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Slave_latency | 2 | Slave latency for the connection in number of connection events. Range: 0x0000 to 0x01F3 |
Timeout_Multiplier | 2 | Defines connection timeout parameter in the following manner: Timeout Multiplier * 10ms. |
Minimum_CE_Length | 2 | Information parameter about the minimum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |
Maximum_CE_Length | 2 | Information parameter about the maximum length of connection needed for this LE connection. Range: 0x0000 - 0xFFFF Time = N * 0.625 msec. |
Identifier | 1 | Identifier received in ACI_L2CAP_Connection_Update_Req event. |
Accept | 1 | 0x00: The connection update parameters are not acceptable. 0x01: The connection update parameters are acceptable. |
- 0x00:NO
- 0x01:YES

### Output parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |

### Events generated

- HCI_COMMAND_COMPLETE_EVENT

# ACI Events

HCI events

HCI LE meta events

ACI GAP events

ACI GATT/ATT events

ACI L2CAP events

ACI HAL events

## HCI events

Event name | Event Code
--- | ---
HCI_DISCONNECTION_COMPLETE_EVENT | 0x05
HCI_ENCRYPTION_CHANGE_EVENT | 0x08
HCI_READ_REMOTE_VERSION_INFORMATION_COMPLETE_EVENT | 0x0C
HCI_HARDWARE_ERROR_EVENT | 0x10
HCI_NUMBER_OF_COMPLETED_PACKETS_EVENT | 0x13
HCI_DATA_BUFFER_OVERFLOW_EVENT | 0x1A
HCI_ENCRYPTION_KEY_REFRESH_COMPLETE_EVENT | 0x30
HCI_COMMAND_COMPLETE_EVENT | 0x0E
HCI_COMMAND_STATUS_EVENT | 0x0F

## HCI_DISCONNECTION_COMPLETE_EVENT

### Description

The Disconnection Complete event occurs when a connection is terminated. The status parameter indicates if the disconnection was successful or not. The reason parameter indicates the reason for the disconnection if the disconnection was successful. If the disconnection was not successful, the value of the reason parameter can be ignored by the Host. For example, this can be the case if the Host has issued the Disconnect command and there was a parameter error, or the command was not presently allowed, or a Connection_Handle that didn't correspond to a connection was given.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection_Handle which was disconnected. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Reason | 1 | Reason for disconnection. |
- 0x00:Success
- 0x01:Unknown HCI Command
- 0x02:Unknown Connection Identifier
- 0x03:Hardware Failure
- 0x04:Page Timeout
- 0x05:Authentication Failure
- 0x06:PIN or Key Missing
- 0x07:Memory Capacity Exceeded
- 0x08:Connection Timeout
- 0x09:Connection Limit Exceeded
- 0x0A:Synchronous Connection Limit to a Device Exceeded
- 0x0B:ACL Connection Already Exists
- 0x0C:Command Disallowed
- 0x0D:Connection Rejected Due To Limited Resources
- 0x0E:Connection Rejected Due To Security Reasons
- 0x0F:Connection Rejected due to Unacceptable BD_ADDR
- 0x10:Connection Accept Timeout Exceeded
- 0x11:Unsupported Feature Or Parameter Value
- 0x12:Invalid HCI Command Parameters
- 0x13:Remote User Terminated Connection
- 0x14:Remote Device Terminated Connection due to Low Resources
- 0x15:Remote Device Terminated Connection due to Power Off
- 0x16:Connection Terminated By Local Host
- 0x17:Repeated Attempts
- 0x18:Pairing Not Allowed
- 0x19:Unknown LMP PDU
- 0x1A:Unsupported Remote Feature / Unsupported LMP Feature
- 0x1B:SCO Offset Rejected
- 0x1C:SCO Interval Rejected
- 0x1D:SCO Air Mode Rejected
- 0x1E:Invalid LMP Parameters
- 0x1F:Unspecified Error
- 0x20:Unsupported LMP Parameter Value
- 0x21:Role Change Not Allowed
- 0x22:LMP Response Timeout / LL Response Timeout
- 0x23:LMP Error Transaction Collision
- 0x24:LMP PDU Not Allowed
- 0x25:Encryption Mode Not Acceptable
- 0x26:Link Key cannot be Changed
- 0x27:Requested QoS Not Supported
- 0x28:Instant Passed
- 0x29:Pairing With Unit Key Not Supported
- 0x2A:Different Transaction Collision
- 0x2C:QoS Unacceptable Parameter
- 0x2D:QoS Rejected
- 0x2E:Channel Assessment Not Supported
- 0x2F:Insufficient Security
- 0x30:Parameter Out Of Mandatory Range
- 0x32:Role Switch Pending
- 0x34:Reserved Slot Violation
- 0x35:Role Switch Failed
- 0x36:Extended Inquiry Response Too Large
- 0x37:Secure Simple Pairing Not Supported by Host
- 0x38:Host Busy - Pairing
- 0x39:Connection Rejected due to No Suitable Channel Found
- 0x3A:Controller Busy
- 0x3B:Unacceptable Connection Interval
- 0x3C:Directed Advertising Timeout
- 0x3D:Connection Terminated Due to MIC Failure
- 0x3E:Connection Failed to be Established
- 0x3F:MAC of the 802.11 AMP
- 0x41:Failed
- 0x42:Invalid parameters
- 0x43:Busy
- 0x44:Invalid length
- 0x45:Pending
- 0x46:Not allowed
- 0x47:GATT error
- 0x48:Address not resolved
- 0x49:Flash read failed
- 0x4A:Flash write failed
- 0x4B:Flash erase failed
- 0x50:Invalid CID
- 0x5A:CSRK not found
- 0x5B:IRK not found
- 0x5C:Device not found in DB
- 0x5D:Security DB full
- 0x5E:Device not bonded
- 0x5F:Device in blacklist
- 0x60:Invalid handle
- 0x61:Invalid parameter
- 0x62:Out of handles
- 0x63:Invalid operation
- 0x64:Insufficient resources
- 0x65:Insufficient encryption key size
- 0x66:Characteristic already exist
- 0x82:No valid slot
- 0x83:Short window
- 0x84:New interval failed
- 0x85:Too large interval
- 0x86:Slot length failed

## HCI_ENCRYPTION_CHANGE_EVENT

### Description

The Encryption Change event is used to indicate that the change of the encryption mode has been completed. The Connection_Handle will be a Connection_Handle for an ACL connection. The Encryption_Enabled event parameter specifies the new Encryption_Enabled parameter for the Connection_Handle specified by the Connection_Handle event parameter. This event will occur on both devices to notify the Hosts when Encryption has changed for the specified Connection_Handle between two devices. Note: This event shall not be generated if encryption is paused or resumed; during a role switch, for example. The meaning of the Encryption_Enabled parameter depends on whether the Host has indicated support for Secure Connections in the Secure_Connections_Host_Support parameter. When Secure_Connections_Host_Support is 'disabled' or the Connection_Handle refers to an LE link, the Controller shall only use Encryption_Enabled values 0x00 (OFF) and 0x01 (ON). (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.7.8)

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Encryption_Enabled | 1 |

- 0x00 Link Level Encryption is OFF

- 0x01 Link Level Encryption is ON with E0 for BR/EDR

    Link Level Encryption is ON with AES-CCM for LE

- 0x02 Link Level Encryption is ON with AES-CCM for BR/EDR

- 0x03-0xFF Reserved.

## HCI_READ_REMOTE_VERSION_INFORMATION_COMPLETE_EVENT

### Description

The Read Remote Version Information Complete event is used to indicate the completion of the process obtaining the version information of the remote Controller specified by the Connection_Handle event parameter. The Connection_Handle shall be for an ACL connection. The Version event parameter defines the specification version of the LE Controller. The Manufacturer_Name event parameter indicates the manufacturer of the remote Controller. The Subversion event parameter is controlled by the manufacturer and is implementation dependent. The Subversion event parameter defines the various revisions that each version of the Bluetooth hardware will go through as design processes change and errors are fixed. This allows the software to determine what Bluetooth hardware is being used and, if necessary, to work around various bugs in the hardware. When the Connection_Handle is associated with an LE-U logical link, the Version event parameter shall be Link Layer VersNr parameter, the Manufacturer_Name event parameter shall be the CompId parameter, and the Subversion event parameter shall be the SubVersNr parameter. (See Bluetooth Specification v.4.1, Vol. 2, Part E, 7.7.12)

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Version | 1 | Version of the Current LMP in the remote Controller |
Manufacturer_Name | 2 | Manufacturer Name of the remote Controller |
Subversion | 2 | Subversion of the LMP in the remote Controller |

## HCI_HARDWARE_ERROR_EVENT

### Description

The Hardware Error event is used to indicate some implementation specific type of hardware failure for the controller. This event is used to notify the Host that a hardware failure has occurred in the Controller.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Hardware_Code | 1 | Hardware Error Event code. Error code 0 means that an error on the SPI bus has been detected, most likely caused by incorrect SPI configuration on the external micro-controller. Error code 0x01 and 0x02 are errors caused by a slow crystal startup and they are an indication that the HS_STARTUP_TIME in the device configuration needs to be tuned. After this event is recommended to hardware reset the device. |
- 0x00:SPI framing error
- 0x01:Radio state error
- 0x02:Timer overrun error

## HCI_NUMBER_OF_COMPLETED_PACKETS_EVENT

### Description

The Number Of Completed Packets event is used by the Controller to indicate to the Host how many HCI Data Packets have been completed (transmitted or flushed) for each Connection_Handle since the previous Number Of Completed Packets event was sent to the Host. This means that the corresponding buffer space has been freed in the Controller. Based on this information, and the HC_Total_Num_ACL_Data_Packets and HC_Total_Num_Synchronous_- Data_Packets return parameter of the Read_Buffer_Size command, the Host can determine for which Connection_Handles the following HCI Data Packets should be sent to the Controller. The Number Of Completed Packets event must not be sent before the corresponding Connection Complete event. While the Controller has HCI data packets in its buffer, it must keep sending the Number Of Completed Packets event to the Host at least periodically, until it finally reports that all the pending ACL Data Packets have been transmitted or flushed.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Number_of_Handles | 1 | The number of Connection_Handles and Num_HCI_Data_Packets parameters pairs contained in this event |
Connection_Handle[i] | 2 | Connection_Handle |
HC_Num_Of_Completed_Packets[i] | 2 | The number of HCI Data Packets that have been completed (transmitted or flushed) for the associated Connection_Handle since the previous time the event was returned. Range for N: 0x0000-0xFFFF |

## HCI_DATA_BUFFER_OVERFLOW_EVENT

### Description

This event is used to indicate that the Controller's data buffers have been overflowed. This can occur if the Host has sent more packets than allowed. The Link_Type parameter is used to indicate that the overflow was caused by ACL data.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Link_Type | 1 | 0x00 Synchronous Buffer Overflow (Voice Channels). 0x01 ACL Buffer Overflow (Data Channels). 0x02-0xFF Reserved for future use. |

## HCI_ENCRYPTION_KEY_REFRESH_COMPLETE_EVENT

### Description

The Encryption Key Refresh Complete event is used to indicate to the Host that the encryption key was refreshed on the given Connection_Handle any time encryption is paused and then resumed. If the Encryption Key Refresh Complete event was generated due to an encryption pause and resume operation embedded within a change connection link key procedure, the Encryption Key Refresh Complete event shall be sent prior to the Change Connection Link Key Complete event. If the Encryption Key Refresh Complete event was generated due to an encryption pause and resume operation embedded within a role switch procedure, the Encryption Key Refresh Complete event shall be sent prior to the Role Change event.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection handle for which the command is given. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |

## HCI_COMMAND_COMPLETE_EVENT

### Description

The Command Complete event is used by the Controller for most commands to transmit return status of a command and the other event parameters that are specified for the issued HCI command. The Num_HCI_Command_Packets event parameter allows the Controller to indicate the number of HCI command packets the Host can send to the Controller. If the Controller requires the Host to stop sending commands, the Num_HCI_Command_Packets event parameter will be set to zero. To indicate to the Host that the Controller is ready to receive HCI command packets, the Controller generates a Command Complete event with the Command_Opcode 0x0000, and the Num_HCI_Command_Packets event parameter is set to 1 or more. See each command for the parameters that are returned by this event.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Num_HCI_Command_Packets | 1 | The Number of HCI command packets which are allowed to be sent to the Controller from the Host. Range for N: 0 - 255 |
Command_Opcode | 2 | Opcode of the command which caused this event. |
- 0x-001:HCI_ACL_DATA
- 0x0406:HCI_DISCONNECT
- 0x041D:HCI_READ_REMOTE_VERSION_INFORMATION
- 0x0C01:HCI_SET_EVENT_MASK
- 0x0C03:HCI_RESET
- 0x0C2D:HCI_READ_TRANSMIT_POWER_LEVEL
- 0x1001:HCI_READ_LOCAL_VERSION_INFORMATION
- 0x1002:HCI_READ_LOCAL_SUPPORTED_COMMANDS
- 0x1003:HCI_READ_LOCAL_SUPPORTED_FEATURES
- 0x1009:HCI_READ_BD_ADDR
- 0x1405:HCI_READ_RSSI
- 0x2001:HCI_LE_SET_EVENT_MASK
- 0x2002:HCI_LE_READ_BUFFER_SIZE
- 0x2003:HCI_LE_READ_LOCAL_SUPPORTED_FEATURES
- 0x2005:HCI_LE_SET_RANDOM_ADDRESS
- 0x2006:HCI_LE_SET_ADVERTISING_PARAMETERS
- 0x2007:HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER
- 0x2008:HCI_LE_SET_ADVERTISING_DATA
- 0x2009:HCI_LE_SET_SCAN_RESPONSE_DATA
- 0x200A:HCI_LE_SET_ADVERTISE_ENABLE
- 0x200B:HCI_LE_SET_SCAN_PARAMETERS
- 0x200C:HCI_LE_SET_SCAN_ENABLE
- 0x200D:HCI_LE_CREATE_CONNECTION
- 0x200E:HCI_LE_CREATE_CONNECTION_CANCEL
- 0x200F:HCI_LE_READ_WHITE_LIST_SIZE
- 0x2010:HCI_LE_CLEAR_WHITE_LIST
- 0x2011:HCI_LE_ADD_DEVICE_TO_WHITE_LIST
- 0x2012:HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST
- 0x2013:HCI_LE_CONNECTION_UPDATE
- 0x2014:HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION
- 0x2015:HCI_LE_READ_CHANNEL_MAP
- 0x2016:HCI_LE_READ_REMOTE_USED_FEATURES
- 0x2017:HCI_LE_ENCRYPT
- 0x2018:HCI_LE_RAND
- 0x2019:HCI_LE_START_ENCRYPTION
- 0x201A:HCI_LE_LONG_TERM_KEY_REQUEST_REPLY
- 0x201B:HCI_LE_LONG_TERM_KEY_REQUESTED_NEGATIVE_REPLY
- 0x201C:HCI_LE_READ_SUPPORTED_STATES
- 0x201D:HCI_LE_RECEIVER_TEST
- 0x201E:HCI_LE_TRANSMITTER_TEST
- 0x201F:HCI_LE_TEST_END
- 0xFC00:ACI_HAL_GET_FW_BUILD_NUMBER
- 0xFC01:ACI_HAL_GET_FIRMWARE_DETAILS
- 0xFC0C:ACI_HAL_WRITE_CONFIG_DATA
- 0xFC0D:ACI_HAL_READ_CONFIG_DATA
- 0xFC0F:ACI_HAL_SET_TX_POWER_LEVEL
- 0xFC13:ACI_HAL_DEVICE_STANDBY
- 0xFC14:ACI_HAL_LE_TX_TEST_PACKET_NUMBER
- 0xFC15:ACI_HAL_TONE_START
- 0xFC16:ACI_HAL_TONE_STOP
- 0xFC17:ACI_HAL_GET_LINK_STATUS
- 0xFC18:ACI_HAL_SET_RADIO_ACTIVITY_MASK
- 0xFC19:ACI_HAL_GET_ANCHOR_PERIOD
- 0xFC20:ACI_HAL_UPDATER_START
- 0xFC21:ACI_HAL_UPDATER_REBOOT
- 0xFC22:ACI_HAL_GET_UPDATER_VERSION
- 0xFC23:ACI_HAL_GET_UPDATER_BUFSIZE
- 0xFC24:ACI_HAL_UPDATER_ERASE_BLUE_FLAG
- 0xFC25:ACI_HAL_UPDATER_RESET_BLUE_FLAG
- 0xFC26:ACI_HAL_UPDATER_ERASE_SECTOR
- 0xFC27:ACI_HAL_UPDATER_PROG_DATA_BLK
- 0xFC28:ACI_HAL_UPDATER_READ_DATA_BLK
- 0xFC29:ACI_HAL_UPDATER_CALC_CRC
- 0xFC2A:ACI_HAL_UPDATER_HW_VERSION
- 0xFC81:ACI_GAP_SET_NON_DISCOVERABLE
- 0xFC82:ACI_GAP_SET_LIMITED_DISCOVERABLE
- 0xFC83:ACI_GAP_SET_DISCOVERABLE
- 0xFC84:ACI_GAP_SET_DIRECT_CONNECTABLE
- 0xFC85:ACI_GAP_SET_IO_CAPABILITY
- 0xFC86:ACI_GAP_SET_AUTHENTICATION_REQUIREMENT
- 0xFC87:ACI_GAP_SET_AUTHORIZATION_REQUIREMENT
- 0xFC88:ACI_GAP_PASS_KEY_RESP
- 0xFC89:ACI_GAP_AUTHORIZATION_RESP
- 0xFC8A:ACI_GAP_INIT
- 0xFC8B:ACI_GAP_SET_NON_CONNECTABLE
- 0xFC8C:ACI_GAP_SET_UNDIRECTED_CONNECTABLE
- 0xFC8D:ACI_GAP_SLAVE_SECURITY_REQ
- 0xFC8E:ACI_GAP_UPDATE_ADV_DATA
- 0xFC8F:ACI_GAP_DELETE_AD_TYPE
- 0xFC90:ACI_GAP_GET_SECURITY_LEVEL
- 0xFC91:ACI_GAP_SET_EVENT_MASK
- 0xFC92:ACI_GAP_CONFIGURE_WHITELIST
- 0xFC93:ACI_GAP_TERMINATE
- 0xFC94:ACI_GAP_CLEAR_SECURITY_DB
- 0xFC95:ACI_GAP_ALLOW_REBOND
- 0xFC96:ACI_GAP_START_LIMITED_DISCOVERY_PROC
- 0xFC97:ACI_GAP_START_GENERAL_DISCOVERY_PROC
- 0xFC98:ACI_GAP_START_NAME_DISCOVERY_PROC
- 0xFC99:ACI_GAP_START_AUTO_CONNECTION_ESTABLISH_PROC
- 0xFC9A:ACI_GAP_START_GENERAL_CONNECTION_ESTABLISH_PROC
- 0xFC9B:ACI_GAP_START_SELECTIVE_CONNECTION_ESTABLISH_PROC
- 0xFC9C:ACI_GAP_CREATE_CONNECTION
- 0xFC9D:ACI_GAP_TERMINATE_GAP_PROC
- 0xFC9E:ACI_GAP_START_CONNECTION_UPDATE
- 0xFC9F:ACI_GAP_SEND_PAIRING_REQ
- 0xFCA0:ACI_GAP_RESOLVE_PRIVATE_ADDR
- 0xFCA1:ACI_GAP_SET_BROADCAST_MODE
- 0xFCA2:ACI_GAP_START_OBSERVATION_PROC
- 0xFCA3:ACI_GAP_GET_BONDED_DEVICES
- 0xFCA4:ACI_GAP_IS_DEVICE_BONDED
- 0xFD01:ACI_GATT_INIT
- 0xFD02:ACI_GATT_ADD_SERVICE
- 0xFD03:ACI_GATT_INCLUDE_SERVICE
- 0xFD04:ACI_GATT_ADD_CHAR
- 0xFD05:ACI_GATT_ADD_CHAR_DESC
- 0xFD06:ACI_GATT_UPDATE_CHAR_VALUE
- 0xFD07:ACI_GATT_DEL_CHAR
- 0xFD08:ACI_GATT_DEL_SERVICE
- 0xFD09:ACI_GATT_DEL_INCLUDE_SERVICE
- 0xFD0A:ACI_GATT_SET_EVENT_MASK
- 0xFD0B:ACI_GATT_EXCHANGE_CONFIG
- 0xFD0C:ACI_ATT_FIND_INFO_REQ
- 0xFD0D:ACI_ATT_FIND_BY_TYPE_VALUE_REQ
- 0xFD0E:ACI_ATT_READ_BY_TYPE_REQ
- 0xFD0F:ACI_ATT_READ_BY_GROUP_TYPE_REQ
- 0xFD10:ACI_ATT_PREPARE_WRITE_REQ
- 0xFD11:ACI_ATT_EXECUTE_WRITE_REQ
- 0xFD12:ACI_GATT_DISC_ALL_PRIMARY_SERVICES
- 0xFD13:ACI_GATT_DISC_PRIMARY_SERVICE_BY_UUID
- 0xFD14:ACI_GATT_FIND_INCLUDED_SERVICES
- 0xFD15:ACI_GATT_DISC_ALL_CHAR_OF_SERVICE
- 0xFD16:ACI_GATT_DISC_CHAR_BY_UUID
- 0xFD17:ACI_GATT_DISC_ALL_CHAR_DESC
- 0xFD18:ACI_GATT_READ_CHAR_VALUE
- 0xFD19:ACI_GATT_READ_USING_CHAR_UUID
- 0xFD1A:ACI_GATT_READ_LONG_CHAR_VALUE
- 0xFD1B:ACI_GATT_READ_MULTIPLE_CHAR_VALUE
- 0xFD1C:ACI_GATT_WRITE_CHAR_VALUE
- 0xFD1D:ACI_GATT_WRITE_LONG_CHAR_VALUE
- 0xFD1E:ACI_GATT_WRITE_CHAR_RELIABLE
- 0xFD1F:ACI_GATT_WRITE_LONG_CHAR_DESC
- 0xFD20:ACI_GATT_READ_LONG_CHAR_DESC
- 0xFD21:ACI_GATT_WRITE_CHAR_DESC
- 0xFD22:ACI_GATT_READ_CHAR_DESC
- 0xFD23:ACI_GATT_WRITE_WITHOUT_RESP
- 0xFD24:ACI_GATT_SIGNED_WRITE_WITHOUT_RESP
- 0xFD25:ACI_GATT_CONFIRM_INDICATION
- 0xFD26:ACI_GATT_WRITE_RESP
- 0xFD27:ACI_GATT_ALLOW_READ
- 0xFD28:ACI_GATT_SET_SECURITY_PERMISSION
- 0xFD29:ACI_GATT_SET_DESC_VALUE
- 0xFD2A:ACI_GATT_READ_HANDLE_VALUE
- 0xFD2B:ACI_GATT_READ_HANDLE_VALUE_OFFSET
- 0xFD2C:ACI_GATT_UPDATE_CHAR_VALUE_EXT
- 0xFD2D:ACI_GATT_DENY_READ
- 0xFD81:ACI_L2CAP_CONNECTION_PARAMETER_UPDATE_REQ
- 0xFD82:ACI_L2CAP_CONNECTION_PARAMETER_UPDATE_RESP
Return_Parameters | variable | This is the return parameter(s) for the command specified in the Command_Opcode event parameter. See each command's definition for the list of return parameters associated with that command. |

## HCI_COMMAND_STATUS_EVENT

### Description

The Command Status event is used to indicate that the command described by the Command_Opcode parameter has been received, and that the Controller is currently performing the task for this command. This event is needed to provide mechanisms for asynchronous operation, which makes it possible to prevent the Host from waiting for a command to finish. If the command cannot begin to execute (a parameter error may have occurred, or the command may currently not be allowed), the Status event parameter will contain the corresponding error code, and no complete event will follow since the command was not started. The Num_HCI_Command_Packets event parameter allows the Controller to indicate the number of HCI command packets the Host can send to the Controller. If the Controller requires the Host to stop sending commands, the Num_HCI_Command_Packets event parameter will be set to zero. To indicate to the Host that the Controller is ready to receive HCI command packets, the Controller generates a Command Status event with Status 0x00 and Command_Opcode 0x0000, and the Num_HCI_Command_Packets event parameter is set to 1 or more.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Num_HCI_Command_Packets | 1 | The Number of HCI command packets which are allowed to be sent to the Controller from the Host. Range for N: 0 - 255 |
Command_Opcode | 2 | Opcode of the command which caused this event. |
- 0x-001:HCI_ACL_DATA
- 0x0406:HCI_DISCONNECT
- 0x041D:HCI_READ_REMOTE_VERSION_INFORMATION
- 0x0C01:HCI_SET_EVENT_MASK
- 0x0C03:HCI_RESET
- 0x0C2D:HCI_READ_TRANSMIT_POWER_LEVEL
- 0x1001:HCI_READ_LOCAL_VERSION_INFORMATION
- 0x1002:HCI_READ_LOCAL_SUPPORTED_COMMANDS
- 0x1003:HCI_READ_LOCAL_SUPPORTED_FEATURES
- 0x1009:HCI_READ_BD_ADDR
- 0x1405:HCI_READ_RSSI
- 0x2001:HCI_LE_SET_EVENT_MASK
- 0x2002:HCI_LE_READ_BUFFER_SIZE
- 0x2003:HCI_LE_READ_LOCAL_SUPPORTED_FEATURES
- 0x2005:HCI_LE_SET_RANDOM_ADDRESS
- 0x2006:HCI_LE_SET_ADVERTISING_PARAMETERS
- 0x2007:HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER
- 0x2008:HCI_LE_SET_ADVERTISING_DATA
- 0x2009:HCI_LE_SET_SCAN_RESPONSE_DATA
- 0x200A:HCI_LE_SET_ADVERTISE_ENABLE
- 0x200B:HCI_LE_SET_SCAN_PARAMETERS
- 0x200C:HCI_LE_SET_SCAN_ENABLE
- 0x200D:HCI_LE_CREATE_CONNECTION
- 0x200E:HCI_LE_CREATE_CONNECTION_CANCEL
- 0x200F:HCI_LE_READ_WHITE_LIST_SIZE
- 0x2010:HCI_LE_CLEAR_WHITE_LIST
- 0x2011:HCI_LE_ADD_DEVICE_TO_WHITE_LIST
- 0x2012:HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST
- 0x2013:HCI_LE_CONNECTION_UPDATE
- 0x2014:HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION
- 0x2015:HCI_LE_READ_CHANNEL_MAP
- 0x2016:HCI_LE_READ_REMOTE_USED_FEATURES
- 0x2017:HCI_LE_ENCRYPT
- 0x2018:HCI_LE_RAND
- 0x2019:HCI_LE_START_ENCRYPTION
- 0x201A:HCI_LE_LONG_TERM_KEY_REQUEST_REPLY
- 0x201B:HCI_LE_LONG_TERM_KEY_REQUESTED_NEGATIVE_REPLY
- 0x201C:HCI_LE_READ_SUPPORTED_STATES
- 0x201D:HCI_LE_RECEIVER_TEST
- 0x201E:HCI_LE_TRANSMITTER_TEST
- 0x201F:HCI_LE_TEST_END
- 0xFC00:ACI_HAL_GET_FW_BUILD_NUMBER
- 0xFC01:ACI_HAL_GET_FIRMWARE_DETAILS
- 0xFC0C:ACI_HAL_WRITE_CONFIG_DATA
- 0xFC0D:ACI_HAL_READ_CONFIG_DATA
- 0xFC0F:ACI_HAL_SET_TX_POWER_LEVEL
- 0xFC13:ACI_HAL_DEVICE_STANDBY
- 0xFC14:ACI_HAL_LE_TX_TEST_PACKET_NUMBER
- 0xFC15:ACI_HAL_TONE_START
- 0xFC16:ACI_HAL_TONE_STOP
- 0xFC17:ACI_HAL_GET_LINK_STATUS
- 0xFC18:ACI_HAL_SET_RADIO_ACTIVITY_MASK
- 0xFC19:ACI_HAL_GET_ANCHOR_PERIOD
- 0xFC20:ACI_HAL_UPDATER_START
- 0xFC21:ACI_HAL_UPDATER_REBOOT
- 0xFC22:ACI_HAL_GET_UPDATER_VERSION
- 0xFC23:ACI_HAL_GET_UPDATER_BUFSIZE
- 0xFC24:ACI_HAL_UPDATER_ERASE_BLUE_FLAG
- 0xFC25:ACI_HAL_UPDATER_RESET_BLUE_FLAG
- 0xFC26:ACI_HAL_UPDATER_ERASE_SECTOR
- 0xFC27:ACI_HAL_UPDATER_PROG_DATA_BLK
- 0xFC28:ACI_HAL_UPDATER_READ_DATA_BLK
- 0xFC29:ACI_HAL_UPDATER_CALC_CRC
- 0xFC2A:ACI_HAL_UPDATER_HW_VERSION
- 0xFC81:ACI_GAP_SET_NON_DISCOVERABLE
- 0xFC82:ACI_GAP_SET_LIMITED_DISCOVERABLE
- 0xFC83:ACI_GAP_SET_DISCOVERABLE
- 0xFC84:ACI_GAP_SET_DIRECT_CONNECTABLE
- 0xFC85:ACI_GAP_SET_IO_CAPABILITY
- 0xFC86:ACI_GAP_SET_AUTHENTICATION_REQUIREMENT
- 0xFC87:ACI_GAP_SET_AUTHORIZATION_REQUIREMENT
- 0xFC88:ACI_GAP_PASS_KEY_RESP
- 0xFC89:ACI_GAP_AUTHORIZATION_RESP
- 0xFC8A:ACI_GAP_INIT
- 0xFC8B:ACI_GAP_SET_NON_CONNECTABLE
- 0xFC8C:ACI_GAP_SET_UNDIRECTED_CONNECTABLE
- 0xFC8D:ACI_GAP_SLAVE_SECURITY_REQ
- 0xFC8E:ACI_GAP_UPDATE_ADV_DATA
- 0xFC8F:ACI_GAP_DELETE_AD_TYPE
- 0xFC90:ACI_GAP_GET_SECURITY_LEVEL
- 0xFC91:ACI_GAP_SET_EVENT_MASK
- 0xFC92:ACI_GAP_CONFIGURE_WHITELIST
- 0xFC93:ACI_GAP_TERMINATE
- 0xFC94:ACI_GAP_CLEAR_SECURITY_DB
- 0xFC95:ACI_GAP_ALLOW_REBOND
- 0xFC96:ACI_GAP_START_LIMITED_DISCOVERY_PROC
- 0xFC97:ACI_GAP_START_GENERAL_DISCOVERY_PROC
- 0xFC98:ACI_GAP_START_NAME_DISCOVERY_PROC
- 0xFC99:ACI_GAP_START_AUTO_CONNECTION_ESTABLISH_PROC
- 0xFC9A:ACI_GAP_START_GENERAL_CONNECTION_ESTABLISH_PROC
- 0xFC9B:ACI_GAP_START_SELECTIVE_CONNECTION_ESTABLISH_PROC
- 0xFC9C:ACI_GAP_CREATE_CONNECTION
- 0xFC9D:ACI_GAP_TERMINATE_GAP_PROC
- 0xFC9E:ACI_GAP_START_CONNECTION_UPDATE
- 0xFC9F:ACI_GAP_SEND_PAIRING_REQ
- 0xFCA0:ACI_GAP_RESOLVE_PRIVATE_ADDR
- 0xFCA1:ACI_GAP_SET_BROADCAST_MODE
- 0xFCA2:ACI_GAP_START_OBSERVATION_PROC
- 0xFCA3:ACI_GAP_GET_BONDED_DEVICES
- 0xFCA4:ACI_GAP_IS_DEVICE_BONDED
- 0xFD01:ACI_GATT_INIT
- 0xFD02:ACI_GATT_ADD_SERVICE
- 0xFD03:ACI_GATT_INCLUDE_SERVICE
- 0xFD04:ACI_GATT_ADD_CHAR
- 0xFD05:ACI_GATT_ADD_CHAR_DESC
- 0xFD06:ACI_GATT_UPDATE_CHAR_VALUE
- 0xFD07:ACI_GATT_DEL_CHAR
- 0xFD08:ACI_GATT_DEL_SERVICE
- 0xFD09:ACI_GATT_DEL_INCLUDE_SERVICE
- 0xFD0A:ACI_GATT_SET_EVENT_MASK
- 0xFD0B:ACI_GATT_EXCHANGE_CONFIG
- 0xFD0C:ACI_ATT_FIND_INFO_REQ
- 0xFD0D:ACI_ATT_FIND_BY_TYPE_VALUE_REQ
- 0xFD0E:ACI_ATT_READ_BY_TYPE_REQ
- 0xFD0F:ACI_ATT_READ_BY_GROUP_TYPE_REQ
- 0xFD10:ACI_ATT_PREPARE_WRITE_REQ
- 0xFD11:ACI_ATT_EXECUTE_WRITE_REQ
- 0xFD12:ACI_GATT_DISC_ALL_PRIMARY_SERVICES
- 0xFD13:ACI_GATT_DISC_PRIMARY_SERVICE_BY_UUID
- 0xFD14:ACI_GATT_FIND_INCLUDED_SERVICES
- 0xFD15:ACI_GATT_DISC_ALL_CHAR_OF_SERVICE
- 0xFD16:ACI_GATT_DISC_CHAR_BY_UUID
- 0xFD17:ACI_GATT_DISC_ALL_CHAR_DESC
- 0xFD18:ACI_GATT_READ_CHAR_VALUE
- 0xFD19:ACI_GATT_READ_USING_CHAR_UUID
- 0xFD1A:ACI_GATT_READ_LONG_CHAR_VALUE
- 0xFD1B:ACI_GATT_READ_MULTIPLE_CHAR_VALUE
- 0xFD1C:ACI_GATT_WRITE_CHAR_VALUE
- 0xFD1D:ACI_GATT_WRITE_LONG_CHAR_VALUE
- 0xFD1E:ACI_GATT_WRITE_CHAR_RELIABLE
- 0xFD1F:ACI_GATT_WRITE_LONG_CHAR_DESC
- 0xFD20:ACI_GATT_READ_LONG_CHAR_DESC
- 0xFD21:ACI_GATT_WRITE_CHAR_DESC
- 0xFD22:ACI_GATT_READ_CHAR_DESC
- 0xFD23:ACI_GATT_WRITE_WITHOUT_RESP
- 0xFD24:ACI_GATT_SIGNED_WRITE_WITHOUT_RESP
- 0xFD25:ACI_GATT_CONFIRM_INDICATION
- 0xFD26:ACI_GATT_WRITE_RESP
- 0xFD27:ACI_GATT_ALLOW_READ
- 0xFD28:ACI_GATT_SET_SECURITY_PERMISSION
- 0xFD29:ACI_GATT_SET_DESC_VALUE
- 0xFD2A:ACI_GATT_READ_HANDLE_VALUE
- 0xFD2B:ACI_GATT_READ_HANDLE_VALUE_OFFSET
- 0xFD2C:ACI_GATT_UPDATE_CHAR_VALUE_EXT
- 0xFD2D:ACI_GATT_DENY_READ
- 0xFD81:ACI_L2CAP_CONNECTION_PARAMETER_UPDATE_REQ
- 0xFD82:ACI_L2CAP_CONNECTION_PARAMETER_UPDATE_RESP

## HCI LE meta events

Subevent name | Subevent Code
--- | ---
HCI_LE_CONNECTION_COMPLETE_EVENT | 0x01
HCI_LE_ADVERTISING_REPORT_EVENT | 0x02
HCI_LE_CONNECTION_UPDATE_COMPLETE_EVENT | 0x03
HCI_LE_READ_REMOTE_USED_FEATURES_COMPLETE_EVENT | 0x04
HCI_LE_LONG_TERM_KEY_REQUEST_EVENT | 0x05

## HCI_LE_CONNECTION_COMPLETE_EVENT

### Description

The LE Connection Complete event indicates to both of the Hosts forming the connection that a new connection has been created. Upon the creation of the connection a Connection_Handle shall be assigned by the Controller, and passed to the Host in this event. If the connection establishment fails this event shall be provided to the Host that had issued the LE_Create_Connection command. This event indicates to the Host which issued a LE_Create_Connection command and received a Command Status event if the connection establishment failed or was successful. The Master_Clock_Accuracy parameter is only valid for a slave. On a master, this parameter shall be set to 0x00.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection_Handle to be used to identify a connection between two Bluetooth devices. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Role | 1 | 0x00 Connection is master 0x01 Connection is slave 0x02-0xFF Reserved for future use |
- 0x00:Master
- 0x01:Slave
Peer_Address_Type | 1 | The address type of the peer device: 0x00 Public Device Address 0x01 Random Device Address 0x02-0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Peer_Address | 6 | Public Device Address or Random Device Address of the peer device |
Conn_Interval | 2 | Connection interval used on this connection. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4000 msec. |
Conn_Latency | 2 | Slave latency for the connection in number of connection events. Range: 0x0000 to 0x01F3 |
Supervision_Timeout | 2 | N = 0xXXXX Supervision timeout for the LE Link. (See [Vol 6] Part B, Section 4.5.2) Range: 0x000A to 0x0C80 Time = N * 10 msec Time Range: 100 msec to 32 seconds 0x0000 - 0x0009 and 0x0C81 - 0xFFFF Reserved for future use |
Master_Clock_Accuracy | 1 | 0x00 500 ppm 0x01 250 ppm 0x02 150 ppm 0x03 100 ppm 0x04 75 ppm 0x05 50 ppm 0x06 30 ppm 0x07 20 ppm 0x08-0xFF Reserved for future use |
- 0x00:500 ppm
- 0x01:250 ppm
- 0x02:150 ppm
- 0x03:100 ppm
- 0x04:75 ppm
- 0x05:50 ppm
- 0x06:30 ppm
- 0x07:20 ppm

## HCI_LE_ADVERTISING_REPORT_EVENT

### Description

The LE Advertising Report event indicates that a Bluetooth device or multiple Bluetooth devices have responded to an active scan or received some information during a passive scan. The Controller may queue these advertising reports and send information from multiple devices in one LE Advertising Report event.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Num_Reports | 1 | 0x01 - 0x19 Number of responses in event. |
Event_Type[i] | 1 | 0x00 Connectable undirected advertising (ADV_IND). 0x01 Connectable directed advertising (ADV_DIRECT_IND) 0x02 Scannable undirected advertising (ADV_SCAN_IND) 0x03 Non connectable undirected advertising (ADV_NONCONN_IND) 0x04 Scan Response (SCAN_RSP) 0x05-0xFF Reserved for future use |
- 0x00:ADV_IND
- 0x01:ADV_DIRECT_IND
- 0x02:ADV_SCAN_IND
- 0x03:ADV_NONCONN_IND
- 0x04:SCAN_RSP
Address_Type[i] | 1 | 0x00 Public Device Address 0x01 Random Device Address 0x02 - 0xFF Reserved for future use |
- 0x00:Public Device Address
- 0x01:Random Device Address
Address[i] | 6 | Public Device Address or Random Device Address of the device to be connected |
Length_Data[i] | 1 | 0x00 - 0x1F Length of the Data[i] field for each device which responded. 0x20 - 0xFF Reserved for future use. |
Data[i] | Length_Data[i] | Length_Data[i] octets of advertising or scan response data formatted as defined in [Vol 3] Part C, Section 8. |
RSSI[i] | 1 | N Size: 1 Octet (signed integer) Range: -127 <= N <= +20 Units: dBm 127 RSSI is not available 21 to 126 Reserved for future use |

## HCI_LE_CONNECTION_UPDATE_COMPLETE_EVENT

### Description

The LE Connection Update Complete event is used to indicate that the Controller process to update the connection has completed. On a slave, if no connection parameters are updated, then this event shall not be issued. On a master, this event shall be issued if the Connection_Update command was sent.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection_Handle to be used to identify a connection between two Bluetooth devices. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Conn_Interval | 2 | Connection interval used on this connection. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4000 msec. |
Conn_Latency | 2 | Slave latency for the connection in number of connection events. Range: 0x0000 to 0x01F3 |
Supervision_Timeout | 2 | N = 0xXXXX Supervision timeout for the LE Link. (See [Vol 6] Part B, Section 4.5.2) Range: 0x000A to 0x0C80 Time = N * 10 msec Time Range: 100 msec to 32 seconds 0x0000 - 0x0009 and 0x0C81 - 0xFFFF Reserved for future use |

## HCI_LE_READ_REMOTE_USED_FEATURES_COMPLETE_EVENT

### Description

The LE Read Remote Used Features Complete event is used to indicate the completion of the process of the Controller obtaining the used features of the remote Bluetooth device specified by the Connection_Handle event parameter.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Status | 1 | Error code |
Connection_Handle | 2 | Connection_Handle to be used to identify a connection between two Bluetooth devices. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
LE_Features | 8 | Bit Mask List of used LE features. For details see LE Link Layer specification. |

## HCI_LE_LONG_TERM_KEY_REQUEST_EVENT

### Description

The LE Long Term Key Request event indicates that the master device is attempting to encrypt or re-encrypt the link and is requesting the Long Term Key from the Host. (See [Vol 6] Part B, Section 5.1.3).

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection_Handle to be used to identify a connection between two Bluetooth devices. Range: 0x0000-0x0EFF (0x0F00 - 0x0FFF Reserved for future use) |
Random_Number | 8 | 64-bit random number |
Encrypted_Diversifier | 2 | 16-bit encrypted diversifier |

## ACI GAP events

Vendor specific event name | Vendor specific event Code
--- | ---
ACI_GAP_LIMITED_DISCOVERABLE_EVENT | 0x0400
ACI_GAP_PAIRING_COMPLETE_EVENT | 0x0401
ACI_GAP_PASS_KEY_REQ_EVENT | 0x0402
ACI_GAP_AUTHORIZATION_REQ_EVENT | 0x0403
ACI_GAP_SLAVE_SECURITY_INITIATED_EVENT | 0x0404
ACI_GAP_BOND_LOST_EVENT | 0x0405
ACI_GAP_PROC_COMPLETE_EVENT | 0x0407
ACI_GAP_ADDR_NOT_RESOLVED_EVENT | 0x0408

## ACI_GAP_LIMITED_DISCOVERABLE_EVENT

### Description

This event is generated by the controller when the limited discoverable mode ends due to timeout. The timeout is 180 seconds.

### Event parameters

None

## ACI_GAP_PAIRING_COMPLETE_EVENT

### Description

This event is generated when the pairing process has completed successfully or a pairing procedure timeout has occurred or the pairing has failed. This is to notify the application that we have paired with a remote device so that it can take further actions or to notify that a timeout has occurred so that the upper layer can decide to disconnect the link.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle on which the pairing procedure completed |
Status | 1 | Pairing status |

## ACI_GAP_PASS_KEY_REQ_EVENT

### Description

This event is generated by the Security manager to the application when a passkey is required for pairing. When this event is received, the application has to respond with the ACI_GAP_PASS_KEY_RESP command.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the passkey has been requested. |

## ACI_GAP_AUTHORIZATION_REQ_EVENT

### Description

This event is generated by the Security manager to the application when the application has set that authorization is required for reading/writing of attributes. This event will be generated as soon as the pairing is complete. When this event is received, ACI_GAP_AUTHORIZATION_RESP command should be used to respond by the application.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which authorization has been requested. |

## ACI_GAP_SLAVE_SECURITY_INITIATED_EVENT

### Description

This event is generated when the slave security request is successfully sent to the master.

### Event parameters

None

## ACI_GAP_BOND_LOST_EVENT

### Description

This event is generated when a pairing request is issued in response to a slave security request from a master which has previously bonded with the slave. When this event is received, the upper layer has to issue the command ACI_GAP_ALLOW_REBOND in order to allow the slave to continue the pairing process with the master.

### Event parameters

None

## ACI_GAP_PROC_COMPLETE_EVENT

### Description

This event is sent by the GAP to the upper layers when a procedure previously started has been terminated by the upper layer or has completed for any other reason

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Procedure_Code | 1 | Terminated procedure. 0x01 LIMITED_DISCOVERY_PROC, 0x02 GENERAL_DISCOVERY_PROC, 0x04 NAME_DISCOVERY_PROC, 0x08 AUTO_CONNECTION_ESTABLISHMENT_PROC, 0x10 GENERAL_CONNECTION_ESTABLISHMENT_PROC, 0x20 SELECTIVE_CONNECTION_ESTABLISHMENT_PROC, 0x40 DIRECT_CONNECTION_ESTABLISHMENT_PROC 0x80 OBSERVATION_PROC |
- 0x01:LIMITED_DISCOVERY_PROC
- 0x02:GENERAL_DISCOVERY_PROC
- 0x04:NAME_DISCOVERY_PROC
- 0x08:AUTO_CONNECTION_ESTABLISHMENT_PROC
- 0x10:GENERAL_CONNECTION_ESTABLISHMENT_PROC
- 0x20:SELECTIVE_CONNECTION_ESTABLISHMENT_PROC
- 0x40:DIRECT_CONNECTION_ESTABLISHMENT_PROC
- 0x80:OBSERVATION_PROC
Status | 1 | Error code |
Data | variable | Procedure Specific Data: - For Name Discovery Procedure: the name of the peer device if the procedure completed successfully. |

## ACI_GAP_ADDR_NOT_RESOLVED_EVENT

### Description

This event is sent only by a privacy enabled Peripheral. The event is sent to the upper layers when the peripheral is unsuccessful in resolving the resolvable address of the peer device after connecting to it.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle for which the private address could not be resolved with any of the stored IRK's. |

## ACI GATT/ATT events

Vendor specific event name | Vendor specific event Code
--- | ---
ACI_GATT_ATTRIBUTE_MODIFIED_EVENT | 0x0C01
ACI_GATT_PROC_TIMEOUT_EVENT | 0x0C02
ACI_ATT_EXCHANGE_MTU_RESP_EVENT | 0x0C03
ACI_ATT_FIND_INFO_RESP_EVENT | 0x0C04
ACI_ATT_FIND_BY_TYPE_VALUE_RESP_EVENT | 0x0C05
ACI_ATT_READ_BY_TYPE_RESP_EVENT | 0x0C06
ACI_ATT_READ_RESP_EVENT | 0x0C07
ACI_ATT_READ_BLOB_RESP_EVENT | 0x0C08
ACI_ATT_READ_MULTIPLE_RESP_EVENT | 0x0C09
ACI_ATT_READ_BY_GROUP_TYPE_RESP_EVENT | 0x0C0A
ACI_ATT_PREPARE_WRITE_RESP_EVENT | 0x0C0C
ACI_ATT_EXEC_WRITE_RESP_EVENT | 0x0C0D
ACI_GATT_INDICATION_EVENT | 0x0C0E
ACI_GATT_NOTIFICATION_EVENT | 0x0C0F
ACI_GATT_PROC_COMPLETE_EVENT | 0x0C10
ACI_GATT_ERROR_RESP_EVENT | 0x0C11
ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT | 0x0C12
ACI_GATT_WRITE_PERMIT_REQ_EVENT | 0x0C13
ACI_GATT_READ_PERMIT_REQ_EVENT | 0x0C14
ACI_GATT_READ_MULTI_PERMIT_REQ_EVENT | 0x0C15
ACI_GATT_TX_POOL_AVAILABLE_EVENT | 0x0C16
ACI_GATT_SERVER_CONFIRMATION_EVENT | 0x0C17
ACI_GATT_PREPARE_WRITE_PERMIT_REQ_EVENT | 0x0C18

## ACI_GATT_ATTRIBUTE_MODIFIED_EVENT

### Description

This event is generated to the application by the GATT server when a client modifies any attribute on the server, as consequence of one of the following GATT procedures: - write without response - signed write without response - write characteristic value - write long characteristic value - reliable write.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | The connection handle which modified the attribute. |
Attr_Handle | 2 | Handle of the attribute that was modified. |
Event_Data_Length | 1 | Length of Attr_Data in octets. |
Offset | 2 | Bits 0-30: offset of the reported value inside the attribute. Bit 31: if the entire value of the attribute does not fit inside a single ACI_GATT_ATTRIBUTE_MODIFIED_EVENT event, this bit is set to 1 to notify that other ACI_GATT_ATTRIBUTE_MODIFIED_EVENT events will follow to report the remaining value. |
Attr_Data | Event_Data_Length - 2 | The new attribute value, starting from the given offset. |

## ACI_GATT_PROC_TIMEOUT_EVENT

### Description

This event is generated by the client/server to the application on a GATT timeout (30 seconds). This is a critical event that should not happen during normal operating conditions. It is an indication of either a major disruption in the communication link or a mistake in the application which does not provide a reply to GATT procedures. After this event, the GATT channel is closed and no more GATT communication can be performed. The applications is exptected to issue an ACI_GAP_TERMINATE to disconnect from the peer device. It is important to leave an 100 ms blank window before sending the ACI_GAP_TERMINATE, since immediately after this event, system could save important information in non volatile memory.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle on which the GATT procedure has timed out |

## ACI_ATT_EXCHANGE_MTU_RESP_EVENT

### Description

This event is generated in response to an Exchange MTU request. See ACI_GATT_EXCHANGE_CONFIG.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length of following data (always 1) |
Server_RX_MTU | 2 | Attribute server receive MTU size |

## ACI_ATT_FIND_INFO_RESP_EVENT

### Description

This event is generated in response to a Find Information Request. See ACI_ATT_FIND_INFO_REQ and Find Information Response in Bluetooth Core v4.1 spec.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length in octets of the following data |
Format | 1 | Format of the hanndle-uuid pairs. 1: 16-bit UUIDs, 2: 128-bit UUIDs. |
Handle_UUID_Pair | Event_Data_Length - 1 | A sequence of handle-uuid pairs. if format=1, each pair is:[2 octets for handle, 2 octets for UUIDs], if format=2, each pair is:[2 octets for handle, 16 octets for UUIDs] |

## ACI_ATT_FIND_BY_TYPE_VALUE_RESP_EVENT

### Description

This event is generated in response to a ACI_ATT_FIND_BY_TYPE_VALUE_REQ

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length in octets of the following data |
Handles_Info_List | Event_Data_Length | Handles Information List as defined in Bluetooth Core v4.1 spec. A sequence of handle pairs: [2 octets for Found Attribute Handle, 2 octets for Group End Handle] |

## ACI_ATT_READ_BY_TYPE_RESP_EVENT

### Description

This event is generated in response to a ACI_ATT_READ_BY_TYPE_REQ. See ACI_GATT_FIND_INCLUDED_SERVICES and ACI_GATT_DISC_ALL_CHAR_DESC.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Handle_Value_Pair_Length | 1 | The size of each attribute handle-value pair |
Event_Data_Length | 1 | Length of Handle_Value_Pair_Data in octets |
Handle_Value_Pair_Data | Event_Data_Length | Attribute Data List as defined in Bluetooth Core v4.1 spec. A sequence of handle-value pairs: [2 octets for Attribute Handle, (Handle_Value_Pair_Length - 2 octets) for Attribute Value] |

## ACI_ATT_READ_RESP_EVENT

### Description

This event is generated in response to a Read Request. See ACI_GATT_READ_CHAR_VALUE.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length of following data |
Attribute_Value | Event_Data_Length | The value of the attribute. |

## ACI_ATT_READ_BLOB_RESP_EVENT

### Description

This event is generated in response to a Read Request. See ACI_GATT_READ_CHAR_VALUE.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length of following data |
Attribute_Value | Event_Data_Length | Part of the attribute value. |

## ACI_ATT_READ_MULTIPLE_RESP_EVENT

### Description

This event is generated in response to a Read Multiple Request.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length of following data |
Set_Of_Values | Event_Data_Length | A set of two or more values. A concatenation of attribute values for each of the attribute handles in the request in the order that they were requested. |

## ACI_ATT_READ_BY_GROUP_TYPE_RESP_EVENT

### Description

This event is generated in response to a Read By Group Type Request. See ACI_GATT_DISC_ALL_PRIMARY_SERVICES.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length in octets of the following data |
Attribute_Data_Length | 1 | The size of each attribute data |
Attribute_Data_List | Event_Data_Length - 1 | Attribute Data List as defined in Bluetooth Core v4.1 spec. A sequence of attribute handle, end group handle, attribute value tuples: [2 octets for Attribute Handle, 2 octets End Group Handle, (Attribute_Data_Length - 4 octets) for Attribute Value] |

## ACI_ATT_PREPARE_WRITE_RESP_EVENT

### Description

This event is generated in response to a ACI_ATT_PREPARE_WRITE_REQ.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length of following data |
Attribute_Handle | 2 | The handle of the attribute to be written |
Offset | 2 | The offset of the first octet to be written. |
Part_Attribute_Value | Event_Data_Length - 4 | The value of the attribute to be written |

## ACI_ATT_EXEC_WRITE_RESP_EVENT

### Description

This event is generated in response to an Execute Write Request.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length of following data (always 0) |

## ACI_GATT_INDICATION_EVENT

### Description

This event is generated when an indication is received from the server.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length of following data |
Attribute_Handle | 2 | The handle of the attribute |
Attribute_Value | Event_Data_Length - 2 | The current value of the attribute |

## ACI_GATT_NOTIFICATION_EVENT

### Description

This event is generated when a notification is received from the server.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length of following data |
Attribute_Handle | 2 | The handle of the attribute |
Attribute_Value | Event_Data_Length - 2 | The current value of the attribute |

## ACI_GATT_PROC_COMPLETE_EVENT

### Description

This event is generated when a GATT client procedure completes either with error or successfully.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length of following data (always 1) |
Error_Code | 1 | Indicates whether the procedure completed with an error or was successful |
- 0x00:Success
- 0x01:Unknown HCI Command
- 0x02:Unknown Connection Identifier
- 0x03:Hardware Failure
- 0x04:Page Timeout
- 0x05:Authentication Failure
- 0x06:PIN or Key Missing
- 0x07:Memory Capacity Exceeded
- 0x08:Connection Timeout
- 0x09:Connection Limit Exceeded
- 0x0A:Synchronous Connection Limit to a Device Exceeded
- 0x0B:ACL Connection Already Exists
- 0x0C:Command Disallowed
- 0x0D:Connection Rejected Due To Limited Resources
- 0x0E:Connection Rejected Due To Security Reasons
- 0x0F:Connection Rejected due to Unacceptable BD_ADDR
- 0x10:Connection Accept Timeout Exceeded
- 0x11:Unsupported Feature Or Parameter Value
- 0x12:Invalid HCI Command Parameters
- 0x13:Remote User Terminated Connection
- 0x14:Remote Device Terminated Connection due to Low Resources
- 0x15:Remote Device Terminated Connection due to Power Off
- 0x16:Connection Terminated By Local Host
- 0x17:Repeated Attempts
- 0x18:Pairing Not Allowed
- 0x19:Unknown LMP PDU
- 0x1A:Unsupported Remote Feature / Unsupported LMP Feature
- 0x1B:SCO Offset Rejected
- 0x1C:SCO Interval Rejected
- 0x1D:SCO Air Mode Rejected
- 0x1E:Invalid LMP Parameters
- 0x1F:Unspecified Error
- 0x20:Unsupported LMP Parameter Value
- 0x21:Role Change Not Allowed
- 0x22:LMP Response Timeout / LL Response Timeout
- 0x23:LMP Error Transaction Collision
- 0x24:LMP PDU Not Allowed
- 0x25:Encryption Mode Not Acceptable
- 0x26:Link Key cannot be Changed
- 0x27:Requested QoS Not Supported
- 0x28:Instant Passed
- 0x29:Pairing With Unit Key Not Supported
- 0x2A:Different Transaction Collision
- 0x2C:QoS Unacceptable Parameter
- 0x2D:QoS Rejected
- 0x2E:Channel Assessment Not Supported
- 0x2F:Insufficient Security
- 0x30:Parameter Out Of Mandatory Range
- 0x32:Role Switch Pending
- 0x34:Reserved Slot Violation
- 0x35:Role Switch Failed
- 0x36:Extended Inquiry Response Too Large
- 0x37:Secure Simple Pairing Not Supported by Host
- 0x38:Host Busy - Pairing
- 0x39:Connection Rejected due to No Suitable Channel Found
- 0x3A:Controller Busy
- 0x3B:Unacceptable Connection Interval
- 0x3C:Directed Advertising Timeout
- 0x3D:Connection Terminated Due to MIC Failure
- 0x3E:Connection Failed to be Established
- 0x3F:MAC of the 802.11 AMP
- 0x41:Failed
- 0x42:Invalid parameters
- 0x43:Busy
- 0x44:Invalid length
- 0x45:Pending
- 0x46:Not allowed
- 0x47:GATT error
- 0x48:Address not resolved
- 0x49:Flash read failed
- 0x4A:Flash write failed
- 0x4B:Flash erase failed
- 0x50:Invalid CID
- 0x5A:CSRK not found
- 0x5B:IRK not found
- 0x5C:Device not found in DB
- 0x5D:Security DB full
- 0x5E:Device not bonded
- 0x5F:Device in blacklist
- 0x60:Invalid handle
- 0x61:Invalid parameter
- 0x62:Out of handles
- 0x63:Invalid operation
- 0x64:Insufficient resources
- 0x65:Insufficient encryption key size
- 0x66:Characteristic already exist
- 0x82:No valid slot
- 0x83:Short window
- 0x84:New interval failed
- 0x85:Too large interval
- 0x86:Slot length failed

## ACI_GATT_ERROR_RESP_EVENT

### Description

This event is generated when an Error Response is received from the server. The error response can be given by the server at the end of one of the GATT discovery procedures. This does not mean that the procedure ended with an error, but this error event is part of the procedure itself.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length of following data |
Req_Opcode | 1 | The request that generated this error response |
Attribute_Handle | 2 | The attribute handle that generated this error response |
Error_Code | 1 | The reason why the request has generated an error response (ATT error codes) |
- 0x01:Invalid handle
- 0x02:Read not permitted
- 0x03:Write not permitted
- 0x04:Invalid PDU
- 0x05:Insufficient authentication
- 0x06:Request not supported
- 0x07:Invalid offset
- 0x08:Insufficient authorization
- 0x09:Prepare queue full
- 0x0A:Attribute not found
- 0x0B:Attribute not long
- 0x0C:Insufficient encryption key size
- 0x0D:Invalid attribute value length
- 0x0E:Unlikely error
- 0x0F:Insufficient encryption
- 0x10:Unsupported group type
- 0x11:Insufficient resources

## ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT

### Description

This event can be generated during a "Discover Characteristics By UUID" procedure or a "Read using Characteristic UUID" procedure. The attribute value will be a service declaration as defined in Bluetooth Core v4.1spec (vol.3, Part G, ch. 3.3.1), when a "Discover Characteristics By UUID" has been started. It will be the value of the Characteristic if a* "Read using Characteristic UUID" has been performed.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Event_Data_Length | 1 | Length of following data |
Attribute_Handle | 2 | The handle of the attribute |
Attribute_Value | Event_Data_Length - 2 |

The attribute value will be a service declaration as defined in Bluetooth Core v4.0 spec
  (vol.3, Part G, ch. 3.3.1), when a "Discover Characteristics By UUID" has been started. It will be the value of the Characteristic if a "Read using Characteristic UUID" has been performed.

## ACI_GATT_WRITE_PERMIT_REQ_EVENT

### Description

This event is given to the application when a write request, write command or signed write command is received by the server from the client. This event will be given to the application only if the event bit for this event generation is set when the characteristic was added. When this event is received, the application has to check whether the value being requested for write can be allowed to be written and respond with the command ACI_GATT_WRITE_RESP. The details of the parameters of the command can be found. Based on the response from the application, the attribute value will be modified by the stack. If the write is rejected by the application, then the value of the attribute will not be modified. In case of a write REQ, an error response will be sent to the client, with the error code as specified by the application. In case of write/signed write commands, no response is sent to the client but the attribute is not modified.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Handle of the connection on which there was the request to write the attribute |
Attribute_Handle | 2 | The handle of the attribute |
Data_Length | 1 | Length of Data field |
Data | Data_Length | The data that the client has requested to write |

## ACI_GATT_READ_PERMIT_REQ_EVENT

### Description

This event is given to the application when a read request or read blob request is received by the server from the client. This event will be given to the application only if the event bit for this event generation is set when the characteristic was added. On receiving this event, the application can update the value of the handle if it desires and when done, it has to send the ACI_GATT_ALLOW_READ command to indicate to the stack that it can send the response to the client.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the response |
Attribute_Handle | 2 | The handle of the attribute |
Data_Length | 1 | Length of following data |
Offset | Data_Length | Contains the offset from which the read has been requested |

## ACI_GATT_READ_MULTI_PERMIT_REQ_EVENT

### Description

This event is given to the application when a read multiple request or read by type request is received by the server from the client. This event will be given to the application only if the event bit for this event generation is set when the characteristic was added. On receiving this event, the application can update the values of the handles if it desires and when done, it has to send the ACI_GATT_ALLOW_READ command to indicate to the stack that it can send the response to the client.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Handle of the connection which requested to read the attribute |
Data_Length | 1 | Length of Data_Buffer in octets |
Data_Buffer | Data_Length | The list of handles of the attributes that have been requested by the client for a read |

## ACI_GATT_TX_POOL_AVAILABLE_EVENT

### Description

Each time BLE FW stack raises the error code BLE_STATUS_INSUFFICIENT_RESOURCES (0x64), the ACI_GATT_TX_POOL_AVAILABLE_EVENT event is generated as soon as there are at least two buffers available for notifications or write commands.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the request |
Available_Buffers | 2 | Number of buffers available |

## ACI_GATT_SERVER_CONFIRMATION_EVENT

### Description

This event is generated when the client has sent the confirmation to a previously sent indication

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the event |

## ACI_GATT_PREPARE_WRITE_PERMIT_REQ_EVENT

### Description

This event is given to the application when a prepare write request is received by the server from the client. This event will be given to the application only if the event bit for this event generation is set when the characteristic was added. When this event is received, the application has to check whether the value being requested for write can be allowed to be written and respond with the command ACI_GATT_WRITE_RESP. Based on the response from the application, the attribute value will be modified by the stack. If the write is rejected by the application, then the value of the attribute will not be modified and an error response will be sent to the client, with the error code as specified by the application.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Handle of the connection on which there was the request to write the attribute |
Attribute_Handle | 2 | The handle of the attribute |
Offset | 2 | The offset from which the prepare write has been requested |
Data_Length | 1 | Length of Data field |
Data | Data_Length | The data that the client has requested to write |

## ACI L2CAP events

Vendor specific event name | Vendor specific event Code
--- | ---
ACI_L2CAP_CONNECTION_UPDATE_RESP_EVENT | 0x0800
ACI_L2CAP_PROC_TIMEOUT_EVENT | 0x0801
ACI_L2CAP_CONNECTION_UPDATE_REQ_EVENT | 0x0802

## ACI_L2CAP_CONNECTION_UPDATE_RESP_EVENT

### Description

This event is generated when the master responds to the connection update request packet with a connection update response packet.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Connection handle related to the event. |
Event_Data_Length | 1 | Length of following data |
Code | 1 | Type of L2CAP packet received from the peer |
- 0x01:Command reject
- 0x13:Valid L2CAP Connection Parameter Update Response
Identifier | 1 | This is the identifier which associate the request to the response. |
L2CAP_Length | 2 | Length of following data |
Reason_Or_Result | 2 | Reason if Code=0x01, Result if Code = 0x13 |
Data | Event_Data_Length - 6 | Data parameter optionally present only if Code=0x01 |

## ACI_L2CAP_PROC_TIMEOUT_EVENT

### Description

This event is generated when the master does not respond to the connection update request packet with a connection update response packet or a command reject packet within 30 seconds.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Handle of the connection related to this L2CAP procedure. |
Data_Length | 1 | Length of following data |
Data | Data_Length | Not available |

## ACI_L2CAP_CONNECTION_UPDATE_REQ_EVENT

### Description

The event is given by the L2CAP layer when a connection update request is received from the slave. The upper layer which receives this event has to respond by sending a ACI_L2CAP_CONNECTION_PARAMETER_UPDATE_RESP command.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Connection_Handle | 2 | Handle of the connection related to this L2CAP procedure. |
Event_Data_Length | 1 | Length of following data. |
Identifier | 1 | This is the identifier which associate the request to the response. |
L2CAP_Length | 2 | Length of the L2CAP connection update request. |
Interval_Min | 2 | N = 0xXXXX Minimum value for the connection event interval. This shall be less than or equal to Conn_Interval_Max. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Interval_Max | 2 | N = 0xXXXX Maximum value for the connection event interval. This shall be greater than or equal to Conn_Interval_Min. Range: 0x0006 to 0x0C80 Time = N * 1.25 msec Time Range: 7.5 msec to 4 seconds. 0x0000 - 0x0005 and 0x0C81 - 0xFFFF Reserved for future use |
Slave_Latency | 2 | Slave latency for the connection in number of connection events. Range: 0x0000 to 0x01F3 |
Timeout_Multiplier | 2 | Defines connection timeout parameter in the following manner: Timeout Multiplier * 10ms. |

## ACI HAL events

Vendor specific event name | Vendor specific event Code
--- | ---
ACI_BLUE_INITIALIZED_EVENT | 0x0001
ACI_BLUE_EVENTS_LOST_EVENT | 0x0002
ACI_BLUE_CRASH_INFO_EVENT | 0x0003

## ACI_BLUE_INITIALIZED_EVENT

### Description

This event inform the application that the network coprocessor has been reset. If the reason code is a system crash, a following event ACI_BLUE_CRASH_INFO_EVENT will provide more information regarding the system crash details.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Reason_Code | 1 | Reason code describing why device was reset and in which mode is operating (Updater or Normal mode) |
- 0x01:Firmware started properly
- 0x02:Updater mode entered with ACI command
- 0x03:Updater mode entered due to bad Blue Flag
- 0x04:Updater mode entered due to IRQ pin
- 0x05:System reset due to watchdog
- 0x06:System reset due to lockup
- 0x07:System reset due to brownout reset
- 0x08:System reset due to crash
- 0x09:System reset due to ECC error

## ACI_BLUE_EVENTS_LOST_EVENT

### Description

This event is generated when an overflow occurs in the event queue read by the external microcontroller. This is normally caused when the external microcontroller does not read pending events. The returned bitmap indicates which event has been lost. Please note that one bit set to 1 indicates one or more occurrences of the particular events. The event ACI_BLUE_EVENTS_LOST_EVENT cannot be lost and it will inserted in the event queue as soon as a position is freed in the event queue. This event should not happen under normal operating condition where external microcontroller promptly reads events signaled by IRQ pin. It is provided to detected unexpected behavior of the external microcontroller or to allow application to recover situations where critical events are lost.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Lost_Events | 8 | Bitmap of lost events. Each bit indicates one or more occurrences of the specific event: 0x0000000000000001 HCI_DISCONNECTION_COMPLETE_EVENT 0x0000000000000002 HCI_ENCRYPTION_CHANGE_EVENT 0x0000000000000004 HCI_READ_REMOTE_VERSION_INFORMATION_COMPLETE_EVENT 0x0000000000000008 HCI_COMMAND_COMPLETE_EVENT 0x0000000000000010 HCI_COMMAND_STATUS_EVENT 0x0000000000000020 HCI_HARDWARE_ERROR_EVENT 0x0000000000000040 HCI_NUMBER_OF_COMPLETED_PACKETS_EVENT 0x0000000000000080 HCI_ENCRYPTION_KEY_REFRESH_COMPLETE_EVENT 0x0000000000000100 ACI_BLUE_INITIALIZED_EVENT 0x0000000000000200 ACI_GAP_LIMITED_DISCOVERABLE_EVENT 0x0000000000000400 ACI_GAP_PAIRING_COMPLETE_EVENT 0x0000000000000800 ACI_GAP_PASS_KEY_REQ_EVENT 0x0000000000001000 ACI_GAP_AUTHORIZATION_REQ_EVENT 0x0000000000002000 ACI_GAP_SLAVE_SECURITY_INITIATED_EVENT 0x0000000000004000 ACI_GAP_BOND_LOST_EVENT 0x0000000000008000 ACI_GAP_PROC_COMPLETE_EVENT 0x0000000000010000 ACI_GAP_ADDR_NOT_RESOLVED_EVENT 0x0000000000020000 ACI_L2CAP_CONNECTION_UPDATE_RESP_EVENT 0x0000000000040000 ACI_L2CAP_PROC_TIMEOUT_EVENT 0x0000000000080000 ACI_L2CAP_CONNECTION_UPDATE_REQ_EVENT 0x0000000000100000 ACI_GATT_ATTRIBUTE_MODIFIED_EVENT 0x0000000000200000 ACI_GATT_PROC_TIMEOUT_EVENT 0x0000000000400000 ACI_ATT_EXCHANGE_MTU_RESP_EVENT 0x0000000000800000 ACI_ATT_FIND_INFO_RESP_EVENT 0x0000000001000000 ACI_ATT_FIND_BY_TYPE_VALUE_RESP_EVENT 0x0000000002000000 ACI_ATT_READ_BY_TYPE_RESP_EVENT 0x0000000004000000 ACI_ATT_READ_RESP_EVENT 0x0000000008000000 ACI_ATT_READ_BLOB_RESP_EVENT 0x0000000010000000 ACI_ATT_READ_MULTIPLE_RESP_EVENT 0x0000000020000000 ACI_ATT_READ_BY_GROUP_TYPE_RESP_EVENT 0x0000000040000000 ACI_ATT_WRITE_RESP_EVENT 0x0000000080000000 ACI_ATT_PREPARE_WRITE_RESP_EVENT 0x0000000100000000 ACI_ATT_EXEC_WRITE_RESP_EVENT 0x0000000200000000 ACI_GATT_INDICATION_EVENT 0x0000000400000000 ACI_GATT_NOTIFICATION_EVENT 0x0000000800000000 ACI_GATT_PROC_COMPLETE_EVENT 0x0000001000000000 ACI_GATT_ERROR_RESP_EVENT 0x0000002000000000 ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT 0x0000004000000000 ACI_GATT_WRITE_PERMIT_REQ_EVENT 0x0000008000000000 ACI_GATT_READ_PERMIT_REQ_EVENT 0x0000010000000000 ACI_GATT_READ_MULTI_PERMIT_REQ_EVENT 0x0000020000000000 ACI_GATT_TX_POOL_AVAILABLE_EVENT 0x0000040000000000 ACI_GATT_SERVER_CONFIRMATION_EVENT 0x0000080000000000 ACI_GATT_PREPARE_WRITE_PERMIT_REQ_EVENT 0x0000100000000000 HCI_LE_CONNECTION_COMPLETE_EVENT 0x0000200000000000 HCI_LE_ADVERTISING_REPORT_EVENT 0x0000400000000000 HCI_LE_CONNECTION_UPDATE_COMPLETE_EVENT 0x0000800000000000 HCI_LE_READ_REMOTE_USED_FEATURES_COMPLETE_EVENT 0x0001000000000000 HCI_LE_LONG_TERM_KEY_REQUEST_EVENT | Bitmask of:
- 0x0000000000000001:HCI_DISCONNECTION_COMPLETE_EVENT
- 0x0000000000000002:HCI_ENCRYPTION_CHANGE_EVENT
- 0x0000000000000004:HCI_READ_REMOTE_VERSION_INFORMATION_COMPLETE_EVENT
- 0x0000000000000008:HCI_COMMAND_COMPLETE_EVENT
- 0x0000000000000010:HCI_COMMAND_STATUS_EVENT
- 0x0000000000000020:HCI_HARDWARE_ERROR_EVENT
- 0x0000000000000040:HCI_NUMBER_OF_COMPLETED_PACKETS_EVENT
- 0x0000000000000080:HCI_ENCRYPTION_KEY_REFRESH_COMPLETE_EVENT
- 0x0000000000000100:ACI_BLUE_INITIALIZED_EVENT
- 0x0000000000000200:ACI_GAP_LIMITED_DISCOVERABLE_EVENT
- 0x0000000000000400:ACI_GAP_PAIRING_COMPLETE_EVENT
- 0x0000000000000800:ACI_GAP_PASS_KEY_REQ_EVENT
- 0x0000000000001000:ACI_GAP_AUTHORIZATION_REQ_EVENT
- 0x0000000000002000:ACI_GAP_SLAVE_SECURITY_INITIATED_EVENT
- 0x0000000000004000:ACI_GAP_BOND_LOST_EVENT
- 0x0000000000008000:ACI_GAP_PROC_COMPLETE_EVENT
- 0x0000000000010000:ACI_GAP_ADDR_NOT_RESOLVED_EVENT
- 0x0000000000020000:ACI_L2CAP_CONNECTION_UPDATE_RESP_EVENT
- 0x0000000000040000:ACI_L2CAP_PROC_TIMEOUT_EVENT
- 0x0000000000080000:ACI_L2CAP_CONNECTION_UPDATE_REQ_EVENT
- 0x0000000000100000:ACI_GATT_ATTRIBUTE_MODIFIED_EVENT
- 0x0000000000200000:ACI_GATT_PROC_TIMEOUT_EVENT
- 0x0000000000400000:ACI_ATT_EXCHANGE_MTU_RESP_EVENT
- 0x0000000000800000:ACI_ATT_FIND_INFO_RESP_EVENT
- 0x0000000001000000:ACI_ATT_FIND_BY_TYPE_VALUE_RESP_EVENT
- 0x0000000002000000:ACI_ATT_READ_BY_TYPE_RESP_EVENT
- 0x0000000004000000:ACI_ATT_READ_RESP_EVENT
- 0x0000000008000000:ACI_ATT_READ_BLOB_RESP_EVENT
- 0x0000000010000000:ACI_ATT_READ_MULTIPLE_RESP_EVENT
- 0x0000000020000000:ACI_ATT_READ_BY_GROUP_TYPE_RESP_EVENT
- 0x0000000040000000:ACI_ATT_WRITE_RESP_EVENT
- 0x0000000080000000:ACI_ATT_PREPARE_WRITE_RESP_EVENT
- 0x0000000100000000:ACI_ATT_EXEC_WRITE_RESP_EVENT
- 0x0000000200000000:ACI_GATT_INDICATION_EVENT
- 0x0000000400000000:ACI_GATT_NOTIFICATION_EVENT
- 0x0000000800000000:ACI_GATT_PROC_COMPLETE_EVENT
- 0x0000001000000000:ACI_GATT_ERROR_RESP_EVENT
- 0x0000002000000000:ACI_GATT_DISC_READ_CHAR_BY_UUID_RESP_EVENT
- 0x0000004000000000:ACI_GATT_WRITE_PERMIT_REQ_EVENT
- 0x0000008000000000:ACI_GATT_READ_PERMIT_REQ_EVENT
- 0x0000010000000000:ACI_GATT_READ_MULTI_PERMIT_REQ_EVENT
- 0x0000020000000000:ACI_GATT_TX_POOL_AVAILABLE_EVENT
- 0x0000040000000000:ACI_GATT_SERVER_CONFIRMATION_EVENT
- 0x0000080000000000:ACI_GATT_PREPARE_WRITE_PERMIT_REQ_EVENT
- 0x0000100000000000:HCI_LE_CONNECTION_COMPLETE_EVENT
- 0x0000200000000000:HCI_LE_ADVERTISING_REPORT_EVENT
- 0x0000400000000000:HCI_LE_CONNECTION_UPDATE_COMPLETE_EVENT
- 0x0000800000000000:HCI_LE_READ_REMOTE_USED_FEATURES_COMPLETE_EVENT
- 0x0001000000000000:HCI_LE_LONG_TERM_KEY_REQUEST_EVENT

## ACI_BLUE_CRASH_INFO_EVENT

### Description

This event is given to the application after the ACI_BLUE_INITIALIZED_EVENT when a system crash is detected. This events returns system crash information for debugging purposes. Information reported are useful to understand the root cause of the crash.

### Event parameters

Parameter | Size | Description | Possible values
--- | --- | --- | ---
Crash_Type | 1 | Crash type |
- 0x00:Assert failed
- 0x01:NMI fault
- 0x02:Hard fault
SP | 4 | Stack pointer |
R0 | 4 | Register R0 |
R1 | 4 | Register R1 |
R2 | 4 | Register R2 |
R3 | 4 | Register R3 |
R12 | 4 | Register R12 |
LR | 4 | Link register |
PC | 4 | Program counter where crash occurred |
xPSR | 4 | xPSR register |
Debug_Data_Length | 1 | Length of Debug_Data field |
Debug_Data | Debug_Data_Length | Debug data |

# Error codes

## Status error codes

Status error code | Description
--- | ---
0x00 | Success
0x01 | Unknown HCI Command
0x02 | Unknown Connection Identifier
0x03 | Hardware Failure
0x04 | Page Timeout
0x05 | Authentication Failure
0x06 | PIN or Key Missing
0x07 | Memory Capacity Exceeded
0x08 | Connection Timeout
0x09 | Connection Limit Exceeded
0x0A | Synchronous Connection Limit to a Device Exceeded
0x0B | ACL Connection Already Exists
0x0C | Command Disallowed
0x0D | Connection Rejected Due To Limited Resources
0x0E | Connection Rejected Due To Security Reasons
0x0F | Connection Rejected due to Unacceptable BD_ADDR
0x10 | Connection Accept Timeout Exceeded
0x11 | Unsupported Feature Or Parameter Value
0x12 | Invalid HCI Command Parameters
0x13 | Remote User Terminated Connection
0x14 | Remote Device Terminated Connection due to Low Resources
0x15 | Remote Device Terminated Connection due to Power Off
0x16 | Connection Terminated By Local Host
0x17 | Repeated Attempts
0x18 | Pairing Not Allowed
0x19 | Unknown LMP PDU
0x1A | Unsupported Remote Feature / Unsupported LMP Feature
0x1B | SCO Offset Rejected
0x1C | SCO Interval Rejected
0x1D | SCO Air Mode Rejected
0x1E | Invalid LMP Parameters
0x1F | Unspecified Error
0x20 | Unsupported LMP Parameter Value
0x21 | Role Change Not Allowed
0x22 | LMP Response Timeout / LL Response Timeout
0x23 | LMP Error Transaction Collision
0x24 | LMP PDU Not Allowed
0x25 | Encryption Mode Not Acceptable
0x26 | Link Key cannot be Changed
0x27 | Requested QoS Not Supported
0x28 | Instant Passed
0x29 | Pairing With Unit Key Not Supported
0x2A | Different Transaction Collision
0x2C | QoS Unacceptable Parameter
0x2D | QoS Rejected
0x2E | Channel Assessment Not Supported
0x2F | Insufficient Security
0x30 | Parameter Out Of Mandatory Range
0x32 | Role Switch Pending
0x34 | Reserved Slot Violation
0x35 | Role Switch Failed
0x36 | Extended Inquiry Response Too Large
0x37 | Secure Simple Pairing Not Supported by Host
0x38 | Host Busy - Pairing
0x39 | Connection Rejected due to No Suitable Channel Found
0x3A | Controller Busy
0x3B | Unacceptable Connection Interval
0x3C | Directed Advertising Timeout
0x3D | Connection Terminated Due to MIC Failure
0x3E | Connection Failed to be Established
0x3F | MAC of the 802.11 AMP
0x41 | Failed
0x42 | Invalid parameters
0x43 | Busy
0x44 | Invalid length
0x45 | Pending
0x46 | Not allowed
0x47 | GATT error
0x48 | Address not resolved
0x49 | Flash read failed
0x4A | Flash write failed
0x4B | Flash erase failed
0x50 | Invalid CID
0x5A | CSRK not found
0x5B | IRK not found
0x5C | Device not found in DB
0x5D | Security DB full
0x5E | Device not bonded
0x5F | Device in blacklist
0x60 | Invalid handle
0x61 | Invalid parameter
0x62 | Out of handles
0x63 | Invalid operation
0x64 | Insufficient resources
0x65 | Insufficient encryption key size
0x66 | Characteristic already exist
0x82 | No valid slot
0x83 | Short window
0x84 | New interval failed
0x85 | Too large interval
0x86 | Slot length failed

## ATT error codes

ATT error code | Description
--- | ---
0x01 | Invalid handle
0x02 | Read not permitted
0x03 | Write not permitted
0x04 | Invalid PDU
0x05 | Insufficient authentication
0x06 | Request not supported
0x07 | Invalid offset
0x08 | Insufficient authorization
0x09 | Prepare queue full
0x0A | Attribute not found
0x0B | Attribute not long
0x0C | Insufficient encryption key size
0x0D | Invalid attribute value length
0x0E | Unlikely error
0x0F | Insufficient encryption
0x10 | Unsupported group type
0x11 | Insufficient resources