# HCI Extension Vendor Specific

## HCI Extension Commands

In addition to the BLE HCI commands, the following HCI Extension vendor specific commands are also available.

### HCI_EXT_SetTxPowerCmd

Opcode: | 0xFC01
Command Description:
| This command is used to set the RF transmitter output power.

Command Parameters

TX Power: | Tx power to use.
Size: | 1 byte(s)
Default: | 2
Range: |
Value | Description
--- | ---
0 | : 0 dBm
1 | : 5 dBm
2 | : 10 dBm
3 | : 20 dBm

Events Generated

When this command has completed, an HCI_EXT_SetTxPowerDone event shall be generated.

### HCI_EXT_OnePktPerEvtCmd

Opcode: | 0xFC02
Command Description:
| This command is used to configure the Link Layer to only allow one packet per connection event. This command can be used to trade-off throughput and power consumption during a connection. When enabled, power can be conserved during a connection by limiting the number of packets per connection event to one, at the expense of more limited throughput. When disabled, the number of packets transferred during a connection event is not limited, at the expense of higher power consumption. Note that when set, all connections will be restricted to one packet per event.

Command Parameters

Control: | Enable or disable allowing only one packet per event.
Size: | 1 byte(s)
Default: | 0
Range: |
Value | Description
--- | ---
0 | Disable
1 | Enable

Events Generated

When this command has completed, an HCI_EXT_OnePacketPerEventDone event shall be generated only if the state has changed.

### HCI_EXT_DecryptCmd

Opcode: | 0xFC05
Command Description:
| This command is used to decrypt encrypted text using AES128.

Command Parameters

Key: | 128 bit key for the decryption of the data given in the command. The most significant octet of the data corresponds to key[0] using the notation specified in FIPS 197.
Size: | 16 byte(s)
Default: | “BF:01:FB:9D:4E:F3:BC:36:D8:74:F5:39:41:38:68:4C”
Range: | Any 16 byte value
Data: | 128 bit encrypted data to be decrypted. The most significant octet of the key corresponds to key[0] using the notation specified in FIPS 197.
Size: | 16 byte(s)
Default: | “66:C6:C2:27:8E:3B:8E:05:3E:7E:A3:26:52:1B:AD:99”
Range: | Any 16 byte value

Events Generated

When this command has completed, an HCI_EXT_DecryptCommandDone event shall be generated.

### HCI_EXT_SetLocalSupportedFeaturesCmd

Opcode: | 0xFC06
Command Description:
| This command is used to set the Controllers Local Supported Features. For a complete list of supported LE features, please see [1], Part B, Section 4.6. Note: This command can be issued either before or after one or more connections are formed. However, the local features set in this manner are only effective if performed before a Feature Exchange Procedure has been initiated by the Master. Once this control procedure has been completed for a particular connection, only the exchanged feature set for that connection will be used. Since the Link Layer may initiate the feature exchange procedure autonomously, it is best to use this command before the connection is formed.

Command Parameters

FeatureSet: | Write LL local supported features.
Size: | 8 byte(s)
Default: | 0x0000000000000001
Range: |
Value | Description
--- | ---
0x0000000000000000 | No Events Specified
0x0000000000000001 | Encryption
0x0000000000000002 | Connection Parameters Request
0x0000000000000004 | Reject Extended Indication
0x0000000000000008 | Slave Features Exchange
0x0000000000000010 | Ping
0x0000000000000020 | Data Packet Length Extension
0x0000000000000040 | Privacy
0x0000000000000080 | Extended Scanner Filter Policies
0x0000000000000100 | 2M PHY
0x0000000000000200 | Stable Modulation Index Tx
0x0000000000000400 | Stable Modulation Index Rx
0x0000000000000800 | Coded PHY
0x0000000000001000 | Extended Advertising
0x0000000000002000 | Periodic Advertising
0x0000000000004000 | Channel Selection Algorithm #2
0x0000000000008000 | LE Power Class 1
0x0000000000010000 | Minimum Number of Used Channels

Events Generated

When this command has completed, an HCI_EXT_WriteLocalFeatureSupportDone event shall be generated.

### HCI_EXT_SetFastTxRespTime

Opcode: | 0xFC07
Command Description:
| This command is used to set whether transmit data is sent as soon as possible even when peripheral latency is used.

Command Parameters

Control: | Enable or disable allowing only one packet per event.
Size: | 1 byte(s)
Default: | 0
Range: |
Value | Description
--- | ---
0 | Disable
1 | Enable

Events Generated

When this command has completed, an HCI_EXT_SetFastTxRespTimeDone event shall be generated.

### HCI_EXT_SetBDADDRCmd

Opcode: | 0xFC0C
Command Description:
| This command is used to set this devices BLE address (BDADDR). This address will override the devices address determined when the device is reset (i.e. a hardware reset, not an HCI Controller Reset). To restore the devices initialized address, issue this command with an invalid address. Note: This command is only allowed when the Controller is in the Standby state. Note: This command is intended to only be used during initialization. Changing the devices BDADDR after various BLE operations have already taken place may cause unexpected problems.

Command Parameters

BDADDR: | BLE Public Address (MSB..LSB). Use “FF:FF:FF:FF:FF:FF” to restore the device address to that which was determined at initialization.
Size: | 6 byte(s)
Default: | “00:00:00:00:00:00”
Range: | Any 6 byte value

Events Generated

When this command has completed, an HCI_EXT_SetBDADDRDone event shall be generated.

### HCI_EXT_SetSCACmd

Opcode: | 0xFC0D
Command Description:
| This command is used to set this devices Sleep Clock Accuracy (SCA) value, in parts per million (PPM), from 0 to 500. For a Master device, the value is converted to one of eight ordinal values representing a SCA range (per [1], Volume 6, Part B, Section 2.3.3.1, Table 2.2), which will be used when a connection is created. For a Slave device, the value is directly used. The system default value for a Master and Slave device is 50ppm and 40ppm, respectively. Note: This command is only allowed when the device is not in a connection. Note: The devices SCA value remains unaffected by an HCI Reset.

Command Parameters

SCA: | BLE Device Sleep Clock Accuracy (PPM).
Size: | 2 byte(s)
Default: | “40”
Range: | (0..500)

Events Generated

When this command has completed, an HCI_EXT_SetSCADone event shall be generated.

### HCI_EXT_SetMaxDtmTxPowerCmd

Opcode: | 0xFC11
Command Description:
| This command is used to set the RF transmitter output power when doing RF testing in PLT mode.

Command Parameters

TX Power: | Tx power to use.
Size: | 1 byte(s)
Default: | 2
Range: |
Value | Description
--- | ---
0 | : 0 dBm
1 | : 5 dBm
2 | : 10 dBm
3 | : 20 dBm

Events Generated

When this command has completed, an HCI_EXT_SetTxPowerDone event shall be generated.

### HCI_EXT_DisconnectImmedCmd

Opcode: | 0xFC13
Command Description:
| This command is used to disconnect a connection immediately. This command can be useful for when a connection needs to be ended without the latency associated with the normal BLE Controller Terminate control procedure. Note that the Host issuing the command will still receive the HCI Disconnection Complete event with a Reason status of 0x16 (i.e. Connection Terminated by Local Host), followed by an HCI Vendor Specific Event.

Command Parameters

Connection Handle:
| Handle used to identify a connection
Size: | 2 byte(s)
Default: | 0x0000
Range: | 0x0000 to 0x0EFF

Events Generated

When this command has completed, an HCI_EXT_DisconnectImmedDone event shall be generated.

### HCI_EXT_PacketErrorRateCmd

Opcode: | 0xFC14
Command Description:
| This command is used to Reset or Read the Packet Error Rate counters for a connection. When Reset, the counters are cleared; when Read, the total number of packets received, the number of packets received with a CRC error, the number of events, and the number of missed events are returned. The system default value upon hardware reset is Reset. Note: The counters are only 16 bits. At the shortest connection interval, this provides a little over 8 minutes of data. Note: This command is only valid for a valid connection handle (i.e. for an active connection). It is therefore not possible to read the packet error rate data once the connection has ended.

Command Parameters

Connection Handle:
| Handle used to identify a connection
Size: | 2 byte(s)
Default: | 0x0000
Range: | 0x0000 to 0x0EFF
PER Test Command:
| Reset or Read the PER counters.
Size: | 1 byte(s)
Default: | 0
Range: |
Value | Description
--- | ---
0 | Reset PER Counters
1 | Read PER Counters

Events Generated

When this command has completed, an HCI_EXT_PER event shall be generated.

### HCI_EXT_ResetSystemCmd

Opcode: | 0xFC1D
Command Description:
| This command is used to issue a hard or soft system reset. A hard reset is caused by setting the SYSRESET bit in the System Controller Reset Control register. The soft reset is currently not supported on the CC264x.

Command Parameters

Type: | Reset Type
Size: | 1 byte(s)
Default: | 0
Range: |
Value | Description
--- | ---
0x00 | Chip Reset
0x01 | Soft Reset

Events Generated

When this command has completed, an HCI_EXT_ResetSystemDone event shall be generated.

### HCI_EXT_NumComplPktsLimitCmd

Opcode: | 0xFC1F
Command Description:
| This command is used to set the limit on the minimum number of complete packets before a Number of Completed Packets event is returned by the Controller. If the limit is not reached by the end of a connection event, then the Number of Completed Packets event will be returned (if non-zero) based on the flushOnEvt flag. The limit can be set from one to the maximum number of HCI buffers (please see the LE Read Buffer Size command in the Bluetooth Core specification). The default limit is one; the default flushOnEvt flag is FALSE.

Command Parameters

Limit: | Set Number of Completed Packets Limit.
Size: | 1 byte(s)
Default: | 1
Range: | 0x01 to the value returned from HCI_LE_ReadBufSizeCmd
flushOnEvt: | Enable or disable flush of Number of Completed Packets at end of Event.
Size: | 1 byte(s)
Default: | 0
Range: |
Value | Description
--- | ---
0 | Disable
1 | Enable

Events Generated

When this command has completed, an HCI_EXT_NumComplPktsLimitDone event shall be generated.

### HCI_EXT_GetConnInfoCmd

Opcode: | 0xFC20
Command Description:
| This command (which replaces Get Number Connections) is used to get the number of allocated connections, the number of active connections, and for each active connection, the connection handle, the connection role, the peer device address and peer device address type. The number of allocated connections is based on a default build value that can be changed in the project using MAX_NUM_BLE_CONNS (please see the software users guide for additional details). The number of active connections refers to active BLE connections. The information per connection is based on the structure hciConnInfo_t provided in hci.h. If all parameters are NULL, then the call to this command is considered a network processor call via a transport layer, and the results will be provided via a vendor specific command complete event.If any parameter is not NULL, then the call to this command is considered a direct function call and the valid pointers will be used to store the result. In this case, it is the users responsibility to ensure there is sufficient memory allocated! Note that partial results can be obtained by selective use of the pointers. For example, if only the number of active connections is desired, this can be obtained as follows:

Events Generated

When this command has completed, an HCI_EXT_GetConnInfoDone event shall be generated.

### HCI_EXT_SetMaxDataLenCmd

Opcode: | 0xFC21
Command Description:
| This command is used to set the Data Length Extension internal variables supportedMaxTxOctets, supportedMaxTxTime, supportedMaxRxOctets and supportedMaxRxTime that are normally set exclusively by the Controller to the maximum data length and duration allowed by this device (default Tx and Rx Octets is 251; default Tx and Rx Time is 2120 us [but note that any future change to support PHYs could alter the default values of Time]).

Command Parameters

Tx Octets: | Maximum number of payload octets that the local Controller supports for transmission of a single Link Layer Data Channel PDU.
Size: | 2 byte(s)
Default: | 0
Range: | 0x001B to 0x00FB
Tx Time: | Maximum time, in microseconds, that the local Controller supports for transmission of a single Link Layer Data Channel PDU.
Size: | 2 byte(s)
Default: | 0
Range: | 0x0148 to 0x0848
Rx Octets: | Maximum number of payload octets that the local Controller supports for reception of a single Link Layer Data Channel PDU.
Size: | 2 byte(s)
Default: | 0
Range: | 0x001B to 0x00FB
Rx Time: | Maximum time, in microseconds, that the local Controller supports for reception of a single Link Layer Data Channel PDU.
Size: | 2 byte(s)
Default: | 0
Range: | 0x0148 to 0x0848

Events Generated

When this command has completed, an HCI_EXT_SetMaxDataLengthDone event shall be generated.

### HCI_EXT_ReadRandomAddressCmd

Opcode: | 0xFC25
Command Description:
| This command is used to Read the controller’s own random device address

Command Parameters

None

Events Generated

When this command has completed, an HCI_EXT_ReadRandomAddressDone event shall be generated.

### HCI_EXT_GetActiveConnectionInfoCmd

Opcode: | 0xFC2C
Command Description:
| This command is used to get connection information needed to track an active BLE connection.

Command Parameters

connID: | Connection ID
Size: | 1 byte(s)
Default: | 0
Range: | 0x0000 to 0x0EFF

Events Generated

When this command has completed, an HCI_EXT_GetActiveConnInfoDone shall be generated.

### HCI_EXT_GetRxStatisticsCmd

Opcode: | 0xFC31
Command Description:
| This command is used to get RX statistics.

Command Parameters

Connection Handle:
| Handle used to identify a connection
Size: | 2 byte(s)
Default: | 0x0000
Range: | 0x0000 to 0x0EFF
Command: | Resets or Reads Statistic Counters
Size: | 1 byte(s)
Default: | 0
Range: |
Value | Description
--- | ---
0 | Reset (Clears all Statistic Counters)
1 | Read (Reads Statistic Counters)

Events Generated

When this command has completed, an HCI_EXT_GetRxStatsDone event shall be generated.

### HCI_EXT_GetTxStatisticsCmd

Opcode: | 0xFC32
Command Description:
| This command is used to get TX statistics.

Command Parameters

Connection Handle:
| Handle used to identify a connection
Size: | 2 byte(s)
Default: | 0x0000
Range: | 0x0000 to 0x0EFF
Command: | Resets or Reads Statistc Counters
Size: | 1 byte(s)
Default: | 0
Range: |
Value | Description
--- | ---
0 | Reset (Clears all Statistic Counters)
1 | Read (Reads Statisc Counters)

Events Generated

When this command has completed, an HCI_EXT_GetTxStatsDone event shall be generated.

### HCI_EXT_GetCoexStatisticsCmd

Opcode: | 0xFC33
Command Description:
| This command is used to get Coexistence statistics.

Command Parameters

Command: | Resets or Reads Statistic Counters
Size: | 1 byte(s)
Default: | 0
Range: |
Value | Description
--- | ---
0 | Reset (Clears all Statistic Counters)
1 | Read (Reads Statistic Counters)

Events Generated

When this command has completed, an HCI_EXT_GetCoexStatsDone event shall be generated.

### HCI_EXT_LESetExtendedAdvertisingDataCmd

Opcode: | 0xFC71
Command Description:
| This command is used to set extended ADV data.

Command Parameters

Connection Handle:
| Handle used to identify a connection
Size: | 1 byte(s)
Default: | 0x00
Range: | 0x00 to 0xEF
Fragment: | Allows the fragmentation of data
Size: | 1 byte(s)
Default: | 0
Range: |
Value | Description
--- | ---
0 | The Controller may fragment all data
1 | The Controller should not fragment data
Data Length: | The number of bytes in the Advertising Data parameter :Size: 1 byte(s) :Range: 0 to 251
Advertsing Data:
| Data that will be set while Advertising :Size: N/A

Events Generated

When this command has completed, an HCI_EXT_LESetExtendedAdvertisingDataDone event shall be generated.

### HCI_EXT_LESetExtendedScanResponseDataCmd

Opcode: | 0xFC72
Command Description:
| This command is used to set extended Scan Response.

Command Parameters

Connection Handle:
| Handle used to identify a connection
Size: | 1 byte(s)
Default: | 0x00
Range: | 0x00 to 0xEF
Fragment: | Allows the fragmentation of data
Size: | 1 byte(s)
Default: | 0
Range: |
Value | Description
--- | ---
0 | The Controller may fragment all data
1 | The Controller should not fragment data
Data Length: | The number of bytes in the Advertising Data parameter :Size: 1 byte(s) :Range: 0 to 251
Advertising Data:
| Data that will be set while Advertising :Size: N/A

Events Generated

When this command has completed, an HCI_EXT_LESetExtendedScanResponseDataDone event shall be generated.

## HCI Extension Events

The HCI Extension vendor specific commands generate the following vendor specific events.

### HCI_EXT_SetRxGainDone

Opcode: | 0x0400
Event Description:
| This event is sent to indicate the RF receiver gain has been set, or that there was an error.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table

### HCI_EXT_SetTxPowerDone

Opcode: | 0x0401
Event Description:
| This event is sent to indicate the RF transmitter power has been set, or that there was an error.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table

### HCI_EXT_OnePacketPerEventDone

Opcode: | 0x0402
Event Description:
| This event is sent to indicate the One Packet Per Event feature has been enabled or disabled, or that there was an error.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table

### HCI_EXT_DecryptCommandDone

Opcode: | 0x0405
Event Description:
| This event is sent to indicate Decryption has completed.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table
Decrypted Data: | 128 bit decrypted data block. The most significant octet of plainTextData corresponds to plainTextData using the notation specified in FIPS 197.
Size: | 16 byte(s)
Range: | Any 16 byte value

### HCI_EXT_WriteLocalFeatureSupportDone

Opcode: | 0x0406
Event Description:
| This event is sent to indicate the Set Local Supported Features command has completed.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table

### HCI_EXT_SetFastTxResponseTimeDone

Opcode: | 0x0407
Event Description:
| This event is sent to indicate the Set Fast Transmit Response Time feature has been enabled or disabled, or that there was an error.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table

### HCI_EXT_SetBDADDRDone

Opcode: | 0x040C
Event Description:
| This event is sent to indicate the devices BLE address has been set, or that there was an error.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table

### HCI_EXT_SetSCADone

Opcode: | 0x040D
Event Description:
| This event is sent to indicate the devices SCA has been set, or that there was an error.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table

### HCI_EXT_DisconnectImmedDone

Opcode: | 0x0413
Event Description:
| This event is sent to indicate the Disconnect Immediate command has completed, or that there was an error.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table

### HCI_EXT_PER

Opcode: | 0x0414
Event Description:
| This event is sent to indicate the Packet Error Rate Reset or Read command has completed, or that there was an error.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table
PER Command Type:
| Read or Reset
Size: | 1 byte(s)
Range: |
Value | Description
--- | ---
0 | Reset PER Counters
1 | Read PER Counters
RX Pkts: | Number of received packets.
Condition: | ( cmdVal!=0x00 && cmdStat==0x00)
Size: | 2 byte(s)
Range: | Any 2 byte value
RX CRC Fails: | Number of received packets with CRC error.
Condition: | ( cmdVal!=0x00 && cmdStat==0x00)
Size: | 2 byte(s)
Range: | Any 2 byte value
Events: | Number of connection events.
Condition: | ( cmdVal!=0x00 && cmdStat==0x00)
Size: | 2 byte(s)
Range: | Any 2 byte value
Missed Events: | Number of missed connection events.
Condition: | ( cmdVal!=0x00 && cmdStat==0x00)
Size: | 2 byte(s)
Range: | Any 2 byte value

### HCI_EXT_ResetSystemDone

Opcode: | 0x041D
Event Description:
| This event is sent to indicate the Reset System command has completed, or that there was an error.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table

### HCI_EXT_NumComplPktsLimitDone

Opcode: | 0x041F
Event Description:
| This event is sent to indicate the Number Completed Packets Limit command has completed, or that there was an error.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table

### HCI_EXT_GetConnInfoDone

Opcode: | 0x0420
Event Description:
| This event is sent to indicate the Get Connection Information command has completed.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table
Alloc Conns: | Total number of allocated connections
Size: | 1 byte(s)
Range: |
Active Conns: | Number of currently active connections
Size: | 1 byte(s)
Range: |

An array of size “numConn” will be returned containing the parameters starting here:

Conn Handle: | Connection Handle
Size: | 1 byte(s)
Range: |
Conn Role: |
Size: | 1 byte(s)
Range: |
Value | Description
--- | ---
0x22 | LMP/LL Response Timeout
0x23 | LMP Error Transaction Collision
0x24 | LMP PDU Not Allowed
0x25 | Encryption Mode Not Acceptable
0x26 | Link Key Can Not be Changed
0x27 | Requested QoS Not Supported
0x28 | Instant Passed
0x29 | Pairing With Unit Key Not Supported
0x2A | Different Transaction Collision
0x2B | Reserved
0x2C | QoS Unacceptable Parameter
0x2D | QoS Rejected
0x2E | Channel Assessment Not Supported
0x2F | Insufficient Security
0x30 | Parameter Out Of Mandatory Range
0x31 | Reserved
0x32 | Role Switch Pending
0x33 | Reserved
0x34 | Reserved Slot Violation
0x35 | Role Switch Failed
0x36 | Extended Inquiry Response Too Large
0x37 | 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 Connection Failed
0x40 | Coarse Clock Adjust Rejected
0x41 | Type0 Submap Not Defined
0x42 | Unknown Advertising Identifier
0x43 | Limit Reached
0x44 | Operation Cancelled by Host
Peer Addr: |
Size: | 6 byte(s)
Range: |
Peer Addr Type: |
Size: | 1 byte(s)
Range: |
Value | Description
--- | ---
0x00 | Public
0x01 | Random
0x02 | Public Identity
0x03 | Random Identity

The array of parameters ends here.

### HCI_EXT_SetMaxDataLengthDone

Opcode: | 0x0421
Event Description:
| This event is sent to indicate the Set Max Data Length command has completed.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table

### HCI_EXT_LLTestModeDone

Opcode: | 0x0470
Event Description:
| LL Test Mode event.

Event Parameters

Status: |
Size: | 1 byte(s)
Range: | See Status Table
Command Opcode: |
Size: | 2 byte(s)
Range: | See Command Table