/******************************************************************************* Filename: hci.h Revised: $Date: 2013-05-14 12:23:59 -0700 (Tue, 14 May 2013) $ Revision: $Revision: 34279 $ Description: This file contains the Host Controller Interface (HCI) API. It provides the defines, types, and functions for all supported Bluetooth Low Energy (BLE) commands. All Bluetooth and BLE commands are based on: Bluetooth Core Specification, V4.0.0, Vol. 2, Part E. Copyright 2009-2013 Texas Instruments Incorporated. All rights reserved. IMPORTANT: Your use of this Software is limited to those specific rights granted under the terms of a software license agreement between the user who downloaded the software, his/her employer (which must be your employer) and Texas Instruments Incorporated (the "License"). You may not use this Software unless you agree to abide by the terms of the License. The License limits your use, and you acknowledge, that the Software may not be modified, copied or distributed unless embedded on a Texas Instruments microcontroller or used solely and exclusively in conjunction with a Texas Instruments radio frequency transceiver, which is integrated into your product. Other than for the foregoing purpose, you may not use, reproduce, copy, prepare derivative works of, modify, distribute, perform, display or sell this Software and/or its documentation for any purpose. YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT, NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS. Should you have any questions regarding your right to use this Software, contact Texas Instruments Incorporated at www.TI.com. *******************************************************************************/ #ifndef HCI_H #define HCI_H #ifdef __cplusplus extern "C" { #endif /******************************************************************************* * INCLUDES */ #include "bcomdef.h" #include "OSAL.h" #include "ll.h" #include "hal_assert.h" /******************************************************************************* * MACROS */ /******************************************************************************* * CONSTANTS */ /* ** HCI Status ** ** Per the Bluetooth Core Specification, V4.0.0, Vol. 2, Part D. */ #define HCI_SUCCESS 0x00 #define HCI_ERROR_CODE_UNKNOWN_HCI_CMD 0x01 #define HCI_ERROR_CODE_UNKNOWN_CONN_ID 0x02 #define HCI_ERROR_CODE_HW_FAILURE 0x03 #define HCI_ERROR_CODE_PAGE_TIMEOUT 0x04 #define HCI_ERROR_CODE_AUTH_FAILURE 0x05 #define HCI_ERROR_CODE_PIN_KEY_MISSING 0x06 #define HCI_ERROR_CODE_MEM_CAP_EXCEEDED 0x07 #define HCI_ERROR_CODE_CONN_TIMEOUT 0x08 #define HCI_ERROR_CODE_CONN_LIMIT_EXCEEDED 0x09 #define HCI_ERROR_CODE_SYNCH_CONN_LIMIT_EXCEEDED 0x0A #define HCI_ERROR_CODE_ACL_CONN_ALREADY_EXISTS 0x0B #define HCI_ERROR_CODE_CMD_DISALLOWED 0x0C #define HCI_ERROR_CODE_CONN_REJ_LIMITED_RESOURCES 0x0D #define HCI_ERROR_CODE_CONN_REJECTED_SECURITY_REASONS 0x0E #define HCI_ERROR_CODE_CONN_REJECTED_UNACCEPTABLE_BDADDR 0x0F #define HCI_ERROR_CODE_CONN_ACCEPT_TIMEOUT_EXCEEDED 0x10 #define HCI_ERROR_CODE_UNSUPPORTED_FEATURE_PARAM_VALUE 0x11 #define HCI_ERROR_CODE_INVALID_HCI_CMD_PARAMS 0x12 #define HCI_ERROR_CODE_REMOTE_USER_TERM_CONN 0x13 #define HCI_ERROR_CODE_REMOTE_DEVICE_TERM_CONN_LOW_RESOURCES 0x14 #define HCI_ERROR_CODE_REMOTE_DEVICE_TERM_CONN_POWER_OFF 0x15 #define HCI_ERROR_CODE_CONN_TERM_BY_LOCAL_HOST 0x16 #define HCI_ERROR_CODE_REPEATED_ATTEMPTS 0x17 #define HCI_ERROR_CODE_PAIRING_NOT_ALLOWED 0x18 #define HCI_ERROR_CODE_UNKNOWN_LMP_PDU 0x19 #define HCI_ERROR_CODE_UNSUPPORTED_REMOTE_FEATURE 0x1A #define HCI_ERROR_CODE_SCO_OFFSET_REJ 0x1B #define HCI_ERROR_CODE_SCO_INTERVAL_REJ 0x1C #define HCI_ERROR_CODE_SCO_AIR_MODE_REJ 0x1D #define HCI_ERROR_CODE_INVALID_LMP_PARAMS 0x1E #define HCI_ERROR_CODE_UNSPECIFIED_ERROR 0x1F #define HCI_ERROR_CODE_UNSUPPORTED_LMP_PARAM_VAL 0x20 #define HCI_ERROR_CODE_ROLE_CHANGE_NOT_ALLOWED 0x21 #define HCI_ERROR_CODE_LMP_LL_RESP_TIMEOUT 0x22 #define HCI_ERROR_CODE_LMP_ERR_TRANSACTION_COLLISION 0x23 #define HCI_ERROR_CODE_LMP_PDU_NOT_ALLOWED 0x24 #define HCI_ERROR_CODE_ENCRYPT_MODE_NOT_ACCEPTABLE 0x25 #define HCI_ERROR_CODE_LINK_KEY_CAN_NOT_BE_CHANGED 0x26 #define HCI_ERROR_CODE_REQ_QOS_NOT_SUPPORTED 0x27 #define HCI_ERROR_CODE_INSTANT_PASSED 0x28 #define HCI_ERROR_CODE_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED 0x29 #define HCI_ERROR_CODE_DIFFERENT_TRANSACTION_COLLISION 0x2A #define HCI_ERROR_CODE_RESERVED1 0x2B #define HCI_ERROR_CODE_QOS_UNACCEPTABLE_PARAM 0x2C #define HCI_ERROR_CODE_QOS_REJ 0x2D #define HCI_ERROR_CODE_CHAN_ASSESSMENT_NOT_SUPPORTED 0x2E #define HCI_ERROR_CODE_INSUFFICIENT_SECURITY 0x2F #define HCI_ERROR_CODE_PARAM_OUT_OF_MANDATORY_RANGE 0x30 #define HCI_ERROR_CODE_RESERVED2 0x31 #define HCI_ERROR_CODE_ROLE_SWITCH_PENDING 0x32 #define HCI_ERROR_CODE_RESERVED3 0x33 #define HCI_ERROR_CODE_RESERVED_SLOT_VIOLATION 0x34 #define HCI_ERROR_CODE_ROLE_SWITCH_FAILED 0x35 #define HCI_ERROR_CODE_EXTENDED_INQUIRY_RESP_TOO_LARGE 0x36 #define HCI_ERROR_CODE_SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST 0x37 #define HCI_ERROR_CODE_HOST_BUSY_PAIRING 0x38 #define HCI_ERROR_CODE_CONN_REJ_NO_SUITABLE_CHAN_FOUND 0x39 #define HCI_ERROR_CODE_CONTROLLER_BUSY 0x3A #define HCI_ERROR_CODE_UNACCEPTABLE_CONN_INTERVAL 0x3B #define HCI_ERROR_CODE_DIRECTED_ADV_TIMEOUT 0x3C #define HCI_ERROR_CODE_CONN_TERM_MIC_FAILURE 0x3D #define HCI_ERROR_CODE_CONN_FAILED_TO_ESTABLISH 0x3E #define HCI_ERROR_CODE_MAC_CONN_FAILED 0x3F /* ** HCI Command API Parameters */ // Send Data Packet Boundary Flags #define FIRST_PKT_HOST_TO_CTRL LL_DATA_FIRST_PKT_HOST_TO_CTRL #define CONTINUING_PKT LL_DATA_CONTINUATION_PKT #define FIRST_PKT_CTRL_TO_HOST LL_DATA_FIRST_PKT_CTRL_TO_HOST // Receive Data Packet #define HCI_RSSI_NOT_AVAILABLE LL_RSSI_NOT_AVAILABLE // Disconnect Reasons #define HCI_DISCONNECT_AUTH_FAILURE HCI_ERROR_CODE_AUTH_FAILURE #define HCI_DISCONNECT_REMOTE_USER_TERM HCI_ERROR_CODE_REMOTE_USER_TERM_CONN #define HCI_DISCONNECT_REMOTE_DEV_LOW_RESOURCES HCI_ERROR_CODE_REMOTE_DEVICE_TERM_CONN_LOW_RESOURCES #define HCI_DISCONNECT_REMOTE_DEV_POWER_OFF HCI_ERROR_CODE_REMOTE_DEVICE_TERM_CONN_POWER_OFF #define HCI_DISCONNECT_UNSUPPORTED_REMOTE_FEATURE HCI_ERROR_CODE_UNSUPPORTED_REMOTE_FEATURE #define HCI_DISCONNECT_KEY_PAIRING_NOT_SUPPORTED HCI_ERROR_CODE_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED #define HCI_DISCONNECT_UNACCEPTABLE_CONN_INTERVAL HCI_ERROR_CODE_UNACCEPTABLE_CONN_INTERVAL // Tx Power Types #define HCI_READ_CURRENT_TX_POWER_LEVEL LL_READ_CURRENT_TX_POWER_LEVEL #define HCI_READ_MAX_TX_POWER_LEVEL LL_READ_MAX_TX_POWER_LEVEL // Host Flow Control #define HCI_CTRL_TO_HOST_FLOW_CTRL_OFF 0 #define HCI_CTRL_TO_HOST_FLOW_CTRL_ACL_ON_SYNCH_OFF 1 #define HCI_CTRL_TO_HOST_FLOW_CTRL_ACL_OFF_SYNCH_ON 2 #define HCI_CTRL_TO_HOST_FLOW_CTRL_ACL_ON_SYNCH_ON 3 // Device Address Type #define HCI_PUBLIC_DEVICE_ADDRESS LL_DEV_ADDR_TYPE_PUBLIC #define HCI_RANDOM_DEVICE_ADDRESS LL_DEV_ADDR_TYPE_RANDOM // Advertiser Events #define HCI_CONNECTABLE_UNDIRECTED_ADV LL_ADV_CONNECTABLE_UNDIRECTED_EVT #define HCI_CONNECTABLE_DIRECTED_ADV LL_ADV_CONNECTABLE_DIRECTED_EVT #define HCI_SCANNABLE_UNDIRECTED LL_ADV_SCANNABLE_UNDIRECTED_EVT #define HCI_NONCONNECTABLE_UNDIRECTED_ADV LL_ADV_NONCONNECTABLE_UNDIRECTED_EVT // Advertiser Channels #define HCI_ADV_CHAN_37 LL_ADV_CHAN_37 #define HCI_ADV_CHAN_38 LL_ADV_CHAN_38 #define HCI_ADV_CHAN_39 LL_ADV_CHAN_39 #define HCI_ADV_CHAN_ALL (LL_ADV_CHAN_37 | LL_ADV_CHAN_38 | LL_ADV_CHAN_39) // Advertiser White List Policy #define HCI_ADV_WL_POLICY_ANY_REQ LL_ADV_WL_POLICY_ANY_REQ #define HCI_ADV_WL_POLICY_WL_SCAN_REQ LL_ADV_WL_POLICY_WL_SCAN_REQ #define HCI_ADV_WL_POLICY_WL_CONNECT_REQ LL_ADV_WL_POLICY_WL_CONNECT_REQ #define HCI_ADV_WL_POLICY_WL_ALL_REQ LL_ADV_WL_POLICY_WL_ALL_REQ // Advertiser Commands #define HCI_ENABLE_ADV LL_ADV_MODE_ON #define HCI_DISABLE_ADV LL_ADV_MODE_OFF // Scan Types #define HCI_SCAN_PASSIVE LL_SCAN_PASSIVE #define HCI_SCAN_ACTIVE LL_SCAN_ACTIVE // Scan White List Policy #define HCI_SCAN_WL_POLICY_ANY_ADV_PKTS LL_SCAN_WL_POLICY_ANY_ADV_PKTS #define HCI_SCAN_WL_POLICY_USE_WHITE_LIST LL_SCAN_WL_POLICY_USE_WHITE_LIST // Scan Filtering #define HCI_FILTER_REPORTS_DISABLE LL_FILTER_REPORTS_DISABLE #define HCI_FILTER_REPORTS_ENABLE LL_FILTER_REPORTS_ENABLE // Scan Commands #define HCI_SCAN_STOP LL_SCAN_STOP #define HCI_SCAN_START LL_SCAN_START // Initiator White List Policy #define HCI_INIT_WL_POLICY_USE_PEER_ADDR LL_INIT_WL_POLICY_USE_PEER_ADDR #define HCI_INIT_WL_POLICY_USE_WHITE_LIST LL_INIT_WL_POLICY_USE_WHITE_LIST // Encryption Related #define HCI_ENCRYPTION_OFF LL_ENCRYPTION_OFF #define HCI_ENCRYPTION_ON LL_ENCRYPTION_ON // Direct Test Mode #define HCI_DTM_NUMBER_RF_CHANS LL_DIRECT_TEST_NUM_RF_CHANS #define HCI_DIRECT_TEST_MAX_PAYLOAD_LEN LL_DIRECT_TEST_MAX_PAYLOAD_LEN // #define HCI_DIRECT_TEST_PAYLOAD_PRBS9 LL_DIRECT_TEST_PAYLOAD_PRBS9 #define HCI_DIRECT_TEST_PAYLOAD_0x0F LL_DIRECT_TEST_PAYLOAD_0x0F #define HCI_DIRECT_TEST_PAYLOAD_0x55 LL_DIRECT_TEST_PAYLOAD_0x55 #define HCI_DIRECT_TEST_PAYLOAD_PRBS15 LL_DIRECT_TEST_PAYLOAD_PRBS15 #define HCI_DIRECT_TEST_PAYLOAD_0xFF LL_DIRECT_TEST_PAYLOAD_0xFF #define HCI_DIRECT_TEST_PAYLOAD_0x00 LL_DIRECT_TEST_PAYLOAD_0x00 #define HCI_DIRECT_TEST_PAYLOAD_0xF0 LL_DIRECT_TEST_PAYLOAD_0xF0 #define HCI_DIRECT_TEST_PAYLOAD_0xAA LL_DIRECT_TEST_PAYLOAD_0xAA // Vendor Specific #define HCI_EXT_RX_GAIN_STD LL_EXT_RX_GAIN_STD #define HCI_EXT_RX_GAIN_HIGH LL_EXT_RX_GAIN_HIGH // #define HCI_EXT_TX_POWER_MINUS_23_DBM LL_EXT_TX_POWER_MINUS_23_DBM #define HCI_EXT_TX_POWER_MINUS_6_DBM LL_EXT_TX_POWER_MINUS_6_DBM #define HCI_EXT_TX_POWER_0_DBM LL_EXT_TX_POWER_0_DBM #define HCI_EXT_TX_POWER_4_DBM LL_EXT_TX_POWER_4_DBM // #define HCI_EXT_ENABLE_ONE_PKT_PER_EVT LL_EXT_ENABLE_ONE_PKT_PER_EVT #define HCI_EXT_DISABLE_ONE_PKT_PER_EVT LL_EXT_DISABLE_ONE_PKT_PER_EVT // #define HCI_EXT_ENABLE_CLK_DIVIDE_ON_HALT LL_EXT_ENABLE_CLK_DIVIDE_ON_HALT #define HCI_EXT_DISABLE_CLK_DIVIDE_ON_HALT LL_EXT_DISABLE_CLK_DIVIDE_ON_HALT // #define HCI_EXT_NV_IN_USE LL_EXT_NV_IN_USE #define HCI_EXT_NV_NOT_IN_USE LL_EXT_NV_NOT_IN_USE // #define HCI_EXT_ENABLE_FAST_TX_RESP_TIME LL_EXT_ENABLE_FAST_TX_RESP_TIME #define HCI_EXT_DISABLE_FAST_TX_RESP_TIME LL_EXT_DISABLE_FAST_TX_RESP_TIME // #define HCI_EXT_ENABLE_SL_OVERRIDE LL_EXT_ENABLE_SL_OVERRIDE #define HCI_EXT_DISABLE_SL_OVERRIDE LL_EXT_DISABLE_SL_OVERRIDE // #define HCI_EXT_TX_MODULATED_CARRIER LL_EXT_TX_MODULATED_CARRIER #define HCI_EXT_TX_UNMODULATED_CARRIER LL_EXT_TX_UNMODULATED_CARRIER // #define HCI_PTM_SET_FREQ_TUNE_DOWN LL_EXT_SET_FREQ_TUNE_DOWN #define HCI_PTM_SET_FREQ_TUNE_UP LL_EXT_SET_FREQ_TUNE_UP // #define HCI_EXT_PM_IO_PORT_P0 LL_EXT_PM_IO_PORT_P0 #define HCI_EXT_PM_IO_PORT_P1 LL_EXT_PM_IO_PORT_P1 #define HCI_EXT_PM_IO_PORT_P2 LL_EXT_PM_IO_PORT_P2 #define HCI_EXT_PM_IO_PORT_NONE LL_EXT_PM_IO_PORT_NONE // #define HCI_EXT_PM_IO_PORT_PIN0 LL_EXT_PM_IO_PORT_PIN0 #define HCI_EXT_PM_IO_PORT_PIN1 LL_EXT_PM_IO_PORT_PIN1 #define HCI_EXT_PM_IO_PORT_PIN2 LL_EXT_PM_IO_PORT_PIN2 #define HCI_EXT_PM_IO_PORT_PIN3 LL_EXT_PM_IO_PORT_PIN3 #define HCI_EXT_PM_IO_PORT_PIN4 LL_EXT_PM_IO_PORT_PIN4 #define HCI_EXT_PM_IO_PORT_PIN5 LL_EXT_PM_IO_PORT_PIN5 #define HCI_EXT_PM_IO_PORT_PIN6 LL_EXT_PM_IO_PORT_PIN6 #define HCI_EXT_PM_IO_PORT_PIN7 LL_EXT_PM_IO_PORT_PIN7 // #define HCI_EXT_PER_RESET LL_EXT_PER_RESET #define HCI_EXT_PER_READ LL_EXT_PER_READ // #define HCI_EXT_HALT_DURING_RF_DISABLE LL_EXT_HALT_DURING_RF_DISABLE #define HCI_EXT_HALT_DURING_RF_ENABLE LL_EXT_HALT_DURING_RF_ENABLE // #define HCI_EXT_SET_USER_REVISION LL_EXT_SET_USER_REVISION #define HCI_EXT_READ_BUILD_REVISION LL_EXT_READ_BUILD_REVISION /* ** HCI Event Parameters */ // HCI Link Type for Buffer Overflow #define HCI_LINK_TYPE_SCO_BUFFER_OVERFLOW 0 #define HCI_LINK_TYPE_ACL_BUFFER_OVERFLOW 1 /******************************************************************************* * TYPEDEFS */ typedef uint8 hciStatus_t; /* ** LE Events */ // LE Connection Complete Event typedef struct { osal_event_hdr_t hdr; uint8 BLEEventCode; uint8 status; uint16 connectionHandle; uint8 role; uint8 peerAddrType; uint8 peerAddr[B_ADDR_LEN]; uint16 connInterval; uint16 connLatency; uint16 connTimeout; uint8 clockAccuracy; } hciEvt_BLEConnComplete_t; // LE Advertising Report Event typedef struct { uint8 eventType; // advertisment or scan response event type uint8 addrType; // public or random address type uint8 addr[B_ADDR_LEN]; // device address uint8 dataLen; // length of report data uint8 rspData[B_MAX_ADV_LEN]; // report data given by dataLen int8 rssi; // report RSSI } hciEvt_DevInfo_t; typedef struct { osal_event_hdr_t hdr; uint8 BLEEventCode; uint8 numDevices; hciEvt_DevInfo_t* devInfo; // pointer to the array of devInfo } hciEvt_BLEAdvPktReport_t; // LE Connection Update Complete Event typedef struct { osal_event_hdr_t hdr; uint8 BLEEventCode; uint8 status; uint16 connectionHandle; uint16 connInterval; uint16 connLatency; uint16 connTimeout; } hciEvt_BLEConnUpdateComplete_t; // LE Read Remote Used Features Complete Event typedef struct { osal_event_hdr_t hdr; uint8 BLEEventCode; uint8 status; uint16 connectionHandle; uint8 features[8]; } hciEvt_BLEReadRemoteFeatureComplete_t; // LE Encryption Change Event typedef struct { osal_event_hdr_t hdr; uint8 BLEEventCode; uint16 connHandle; uint8 reason; uint8 encEnable; } hciEvt_EncryptChange_t; // LE Long Term Key Requested Event typedef struct { osal_event_hdr_t hdr; uint8 BLEEventCode; uint16 connHandle; uint8 random[B_RANDOM_NUM_SIZE]; uint16 encryptedDiversifier; } hciEvt_BLELTKReq_t; // Number of Completed Packets Event typedef struct { osal_event_hdr_t hdr; uint8 numHandles; uint16 *pConnectionHandle; // pointer to the connection handle array uint16 *pNumCompletedPackets; // pointer to the number of completed packets array } hciEvt_NumCompletedPkt_t; // Command Complete Event typedef struct { osal_event_hdr_t hdr; uint8 numHciCmdPkt; // number of HCI Command Packet uint16 cmdOpcode; uint8 *pReturnParam; // pointer to the return parameter } hciEvt_CmdComplete_t; // Command Status Event typedef struct { osal_event_hdr_t hdr; uint8 cmdStatus; uint8 numHciCmdPkt; uint16 cmdOpcode; } hciEvt_CommandStatus_t; // Hardware Error Event typedef struct { osal_event_hdr_t hdr; uint8 hardwareCode; } hciEvt_HardwareError_t; // Disconnection Complete Event typedef struct { osal_event_hdr_t hdr; uint8 status; uint16 connHandle; // connection handle uint8 reason; } hciEvt_DisconnComplete_t; // Data Buffer Overflow Event typedef struct { osal_event_hdr_t hdr; uint8 linkType; // synchronous or asynchronous buffer overflow } hciEvt_BufferOverflow_t; // Data structure for HCI Command Complete Event Return Parameter typedef struct { uint8 status; uint16 dataPktLen; uint8 numDataPkts; } hciRetParam_LeReadBufSize_t; typedef struct { osal_event_hdr_t hdr; uint8 *pData; } hciPacket_t; typedef struct { osal_event_hdr_t hdr; uint8 pktType; uint16 connHandle; uint8 pbFlag; uint16 pktLen; uint8 *pData; } hciDataPacket_t; // OSAL HCI_DATA_EVENT message format. This message is used to forward incoming // data messages up to an application typedef struct { osal_event_hdr_t hdr; // OSAL event header uint16 connHandle; // connection handle uint8 pbFlag; // data packet boundary flag uint16 len; // length of data packet uint8 *pData; // data packet given by len } hciDataEvent_t; /******************************************************************************* * LOCAL VARIABLES */ /******************************************************************************* * GLOBAL VARIABLES */ /* ** HCI Support Functions */ /******************************************************************************* * @fn HCI_bm_alloc API * * @brief This API is used to allocate memory using buffer management. * * Note: This function should never be called by the application. * It is only used by HCI and L2CAP_bm_alloc. * * input parameters * * @param size - Number of bytes to allocate from the heap. * * output parameters * * @param None. * * @return Pointer to buffer, or NULL. */ extern void *HCI_bm_alloc( uint16 size ); /******************************************************************************* * @fn HCI_ValidConnTimeParams API * * @brief This API is used to check that the connection time parameter * ranges are valid, and that the connection time parameter * combination is valid. * * Note: Only connIntervalMax is used as part of the time parameter * combination check. * * input parameters * * @param connIntervalMin - Minimum connection interval. * @param connIntervalMax - Maximum connection interval. * @param connLatency - Connection slave latency. * @param connTimeout - Connection supervision timeout. * * output parameters * * @param None. * * @return TRUE: Connection time parameter check is valid. * FALSE: Connection time parameter check is invalid. */ extern uint8 HCI_ValidConnTimeParams( uint16 connIntervalMin, uint16 connIntervalMax, uint16 connLatency, uint16 connTimeout ); /******************************************************************************* * @fn HCI_TestAppTaskRegister * * @brief HCI vendor specific registration for HCI Test Application. * * input parameters * * @param taskID - The HCI Test Application OSAL task identifer. * * output parameters * * @param None. * * @return None. */ extern void HCI_TestAppTaskRegister( uint8 taskID ); /******************************************************************************* * @fn HCI_GAPTaskRegister * * @brief HCI vendor specific registration for Host GAP. * * input parameters * * @param taskID - The Host GAP OSAL task identifer. * * output parameters * * @param None. * * @return None. */ extern void HCI_GAPTaskRegister( uint8 taskID ); /******************************************************************************* * * @fn HCI_L2CAPTaskRegister * * @brief HCI vendor specific registration for Host L2CAP. * * input parameters * * @param taskID - The Host L2CAP OSAL task identifer. * * output parameters * * @param None. * * @return None. * */ extern void HCI_L2CAPTaskRegister( uint8 taskID ); /******************************************************************************* * @fn HCI_SMPTaskRegister * * @brief HCI vendor specific registration for Host SMP. * * input parameters * * @param taskID - The Host SMP OSAL task identifer. * * output parameters * * @param None. * * @return None. */ extern void HCI_SMPTaskRegister( uint8 taskID ); /******************************************************************************* * @fn HCI_ExtTaskRegister * * @brief HCI vendor specific registration for Host extended commands. * * input parameters * * @param taskID - The Host Extended Command OSAL task identifer. * * output parameters * * @param None. * * @return None. */ extern void HCI_ExtTaskRegister( uint8 taskID ); #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_SendDataPkt API * * @brief This API is used to send a ACL data packet over a connection. * * Note: Empty packets are not sent. * * Related Events: HCI_NumOfCompletedPacketsEvent * * input parameters * * @param connHandle - Connection ID (handle). * @param pbFlag - Packet Boundary Flag. * @param pktLen - Number of bytes of data to transmit. * @param *pData - Pointer to data buffer to transmit. * * output parameters * * @param None. * * @return HCI_SUCCESS, HCI_ERROR_CODE_MEM_CAP_EXCEEDED, * HCI_ERROR_CODE_INVALID_HCI_CMD_PARAMS, * HCI_ERROR_CODE_UNKNOWN_CONN_ID */ extern hciStatus_t HCI_SendDataPkt( uint16 connHandle, uint8 pbFlag, uint16 pktLen, uint8 *pData ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) /* ** HCI API */ #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_DisconnectCmd API * * @brief This BT API is used to terminate a connection. * * Related Events: HCI_CommandStatusEvent, * DisconnectEvent * * input parameters * * @param connHandle - Connection handle. * @param reason - Reason for disconnection: * HCI_DISCONNECT_AUTH_FAILURE, * HCI_DISCONNECT_REMOTE_USER_TERM, * HCI_DISCONNECT_REMOTE_DEV_POWER_OFF, * HCI_DISCONNECT_UNSUPPORTED_REMOTE_FEATURE, * HCI_DISCONNECT_KEY_PAIRING_NOT_SUPPORTED * HCI_DISCONNECT_UNACCEPTABLE_CONN_INTERVAL * * output parameters * * @param None. * * @return HCI_SUCCESS */ extern hciStatus_t HCI_DisconnectCmd( uint16 connHandle, uint8 reason ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_ReadRemoteVersionInfoCmd API * * @brief This BT API is used to request version information from the * the remote device in a connection. * * Related Events: HCI_CommandStatusEvent, * ReadRemoteVersionInfoEvent * * input parameters * * @param connHandle - Connection handle. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_ReadRemoteVersionInfoCmd( uint16 connHandle ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) /******************************************************************************* * @fn HCI_SetEventMaskCmd API * * @brief This BT API is used to set the HCI event mask, which is used to * determine which events are supported. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param pMask - Pointer to an eight byte event mask. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_SetEventMaskCmd( uint8 *pMask ); /******************************************************************************* * @fn HCI_Reset API * * @brief This BT API is used to reset the Link Layer. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_ResetCmd( void ); #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_ReadTransmitPowerLevelCmd API * * @brief This BT API is used to read the transmit power level. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param connHandle - Connection handle. * @param txPwrType - HCI_READ_CURRENT_TX_POWER_LEVEL, * HCI_READ_MAXIMUM_TX_POWER_LEVEL * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_ReadTransmitPowerLevelCmd( uint16 connHandle, uint8 txPwrType ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_SetControllerToHostFlowCtrlCmd API * * @brief This BT API is used by the Host to turn flow control on or off * for data sent from the Controller to Host. * * Note: This command is currently not supported. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param flowControlEnable - HCI_CTRL_TO_HOST_FLOW_CTRL_OFF, * HCI_CTRL_TO_HOST_FLOW_CTRL_ACL_ON_SYNCH_OFF, * HCI_CTRL_TO_HOST_FLOW_CTRL_ACL_OFF_SYNCH_ON, * HCI_CTRL_TO_HOST_FLOW_CTRL_ACL_ON_SYNCH_ON * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_SetControllerToHostFlowCtrlCmd( uint8 flowControlEnable ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_HostBufferSizeCmd API * * @brief This BT API is used by the Host to notify the Controller of the * maximum size ACL buffer size the Controller can send to the * Host. * * Note: This command is currently ignored by the Controller. It * is assumed that the Host can always handle the maximum * BLE data packet size. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param hostAclPktLen - Host ACL data packet length. * @param hostSyncPktLen - Host SCO data packet length . * @param hostTotalNumAclPkts - Host total number of ACL data packets. * @param hostTotalNumSyncPkts - Host total number of SCO data packets. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_HostBufferSizeCmd( uint16 hostAclPktLen, uint8 hostSyncPktLen, uint16 hostTotalNumAclPkts, uint16 hostTotalNumSyncPkts ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_HostNumCompletedPktCmd API * * @brief This BT API is used by the Host to notify the Controller of the * number of HCI data packets that have been completed for each * connection handle since this command was previously sent to the * controller. * * The Host_Number_Of_Conpleted_Packets command is a special * command. No event is normally generated after the command * has completed. The command should only be issued by the * Host if flow control in the direction from controller to * the host is on and there is at least one connection, or * if the controller is in local loopback mode. * * Note: The current version of BLE stack does not support * controller to host flow control. Hence, the command is * ignored if received. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param numHandles - Number of connection handles. * @param connHandles - Array of connection handles. * @param numCompletedPkts - Array of number of completed packets. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_HostNumCompletedPktCmd( uint8 numHandles, uint16 *connHandles, uint16 *numCompletedPkts ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) /******************************************************************************* * @fn HCI_ReadLocalVersionInfoCmd API * * @brief This BT API is used to read the local version information. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_ReadLocalVersionInfoCmd( void ); /******************************************************************************* * @fn HCI_ReadLocalSupportedCommandsCmd API * * @brief This BT API is used to read the locally supported commands. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_ReadLocalSupportedCommandsCmd( void ); /******************************************************************************* * @fn HCI_ReadLocalSupportedFeaturesCmd API * * @brief This BT API is used to read the locally supported features. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_ReadLocalSupportedFeaturesCmd( void ); /******************************************************************************* * @fn HCI_ReadBDADDRCmd API * * @brief This BT API is used to read this device's BLE address (BDADDR). * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_ReadBDADDRCmd( void ); /******************************************************************************* * @fn HCI_ReadRssiCmd API * * @brief This BT API is used to read the RSSI of the last packet * received on a connection given by the connection handle. If * the Receiver Modem test is running (HCI_EXT_ModemTestRx), then * the RF RSSI for the last received data will be returned. If * there is no RSSI value, then HCI_RSSI_NOT_AVAILABLE will be * returned. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param connHandle - Connection handle. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_ReadRssiCmd( uint16 connHandle ); /* ** HCI Low Energy Commands */ /******************************************************************************* * @fn HCI_LE_SetEventMaskCmd API * * @brief This LE API is used to set the HCI LE event mask, which is used * to determine which LE events are supported. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param pEventMask - Pointer to LE event mask of 8 bytes. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_SetEventMaskCmd( uint8 *pEventMask ); /******************************************************************************* * @fn HCI_LE_ReadBufSizeCmd API * * @brief This LE API is used by the Host to determine the maximum ACL * data packet size allowed by the Controller. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_ReadBufSizeCmd( void ); /******************************************************************************* * @fn HCI_LE_ReadLocalSupportedFeaturesCmd API * * @brief This LE API is used to read the LE locally supported features. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_ReadLocalSupportedFeaturesCmd( void ); /******************************************************************************* * @fn HCI_LE_SetRandomAddressCmd API * * @brief This LE API is used to set this device's Random address. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param pRandAddr - Pointer to random address. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_SetRandomAddressCmd( uint8 *pRandAddr ); #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_NCONN_CFG) || (CTRL_CONFIG & ADV_CONN_CFG)) /******************************************************************************* * @fn HCI_LE_SetAdvParamCmd API * * @brief This LE API is used to set the Advertising parameters. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param advIntervalMin - Minimum allowed advertising interval. * @param advIntervalMax - Maximum allowed advertising interval. * @param advType - HCI_CONNECTABLE_UNDIRECTED_ADV, * HCI_CONNECTABLE_DIRECTED_ADV, * HCI_SCANNABLE_UNDIRECTED, * HCI_NONCONNECTABLE_UNDIRECTED_ADV * @param ownAddrType - HCI_PUBLIC_DEVICE_ADDRESS, * HCI_RANDOM_DEVICE_ADDRESS * @param directAddrType - HCI_PUBLIC_DEVICE_ADDRESS, * HCI_RANDOM_DEVICE_ADDRESS * @param directAddr - Pointer to address of device when using * directed advertising. * @param advChannelMap - HCI_ADV_CHAN_37, * HCI_ADV_CHAN_38 * HCI_ADV_CHAN_39 * HCI_ADV_CHAN_ALL * @param advFilterPolicy - HCI_ADV_WL_POLICY_ANY_REQ, * HCI_ADV_WL_POLICY_WL_SCAN_REQ, * HCI_ADV_WL_POLICY_WL_CONNECT_REQ, * HCI_ADV_WL_POLICY_WL_ALL_REQ * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_SetAdvParamCmd( uint16 advIntervalMin, uint16 advIntervalMax, uint8 advType, uint8 ownAddrType, uint8 directAddrType, uint8 *directAddr, uint8 advChannelMap, uint8 advFilterPolicy ); #endif // CTRL_CONFIG=(ADV_NCONN_CFG | ADV_CONN_CFG) #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_NCONN_CFG) || (CTRL_CONFIG & ADV_CONN_CFG)) /******************************************************************************* * @fn HCI_LE_SetAdvDataCmd API * * @brief This LE API is used to set the Advertising data. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param dataLen - Length of Advertising data. * @param pData - Pointer to Advertising data. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_SetAdvDataCmd( uint8 dataLen, uint8 *pData ); #endif // CTRL_CONFIG=(ADV_NCONN_CFG | ADV_CONN_CFG) #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_NCONN_CFG) || (CTRL_CONFIG & ADV_CONN_CFG)) /******************************************************************************* * @fn HCI_LE_SetScanRspDataCmd API * * @brief This LE API is used to set the Advertising Scan Response data. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param dataLen - Length of Scan Response data. * @param pData - Pointer to Scan Response data. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_SetScanRspDataCmd( uint8 dataLen, uint8 *pData ); #endif // CTRL_CONFIG=(ADV_NCONN_CFG | ADV_CONN_CFG) #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_NCONN_CFG) || (CTRL_CONFIG & ADV_CONN_CFG)) /******************************************************************************* * @fn HCI_LE_SetAdvEnableCmd API * * @brief This LE API is used to turn Advertising on or off. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param advEnable - HCI_ENABLE_ADV, HCI_DISABLE_ADV * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_SetAdvEnableCmd( uint8 advEnable ); #endif // CTRL_CONFIG=(ADV_NCONN_CFG | ADV_CONN_CFG) #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_NCONN_CFG) || (CTRL_CONFIG & ADV_CONN_CFG)) /******************************************************************************* * @fn HCI_LE_ReadAdvChanTxPowerCmd API * * @brief This LE API is used to read transmit power when Advertising. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_ReadAdvChanTxPowerCmd( void ); #endif // CTRL_CONFIG=(ADV_NCONN_CFG | ADV_CONN_CFG) #if defined(CTRL_CONFIG) && (CTRL_CONFIG & SCAN_CFG) /******************************************************************************* * @fn HCI_LE_SetScanParamCmd API * * @brief This LE API is used to set the Scan parameters. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param scanType - HCI_SCAN_PASSIVE, HCI_SCAN_ACTIVE * @param scanInterval - Time between scan events. * @param scanWindow - Time of scan before scan event ends. * Note: When the scanWindow equals the scanInterval * then scanning is continuous. * @param ownAddrType - This device's address. * @param filterPolicy - HCI_SCAN_PASSIVE, HCI_SCAN_ACTIVE * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_SetScanParamCmd( uint8 scanType, uint16 scanInterval, uint16 scanWindow, uint8 ownAddrType, uint8 filterPolicy ); #endif // CTRL_CONFIG=SCAN_CFG #if defined(CTRL_CONFIG) && (CTRL_CONFIG & SCAN_CFG) /******************************************************************************* * @fn HCI_LE_SetScanEnableCmd API * * @brief This LE API is used to turn Scanning on or off. * * Related Events: HCI_CommandCompleteEvent, * AdvReportEvent * * input parameters * * @param scanEnable - HCI_SCAN_START, HCI_SCAN_STOP * @param filterDuplicates - HCI_FILTER_REPORTS_ENABLE, * HCI_FILTER_REPORTS_DISABLE * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_SetScanEnableCmd( uint8 scanEnable, uint8 filterDuplicates ); #endif // CTRL_CONFIG=SCAN_CFG #if defined(CTRL_CONFIG) && (CTRL_CONFIG & INIT_CFG) /******************************************************************************* * @fn HCI_LE_CreateConnCmd API * * @brief This LE API is used to create a connection. * * Related Events: HCI_CommandStatusEvent, * ConnectionCompleteEvent * * input parameters * * @param scanInterval - Time between Init scan events. * @param scanWindow - Time of scan before Init scan event ends. * Note: When the scanWindow equals the * scanInterval then scanning is * continuous. * @param initFilterPolicy - HCI_INIT_WL_POLICY_USE_PEER_ADDR, * HCI_INIT_WL_POLICY_USE_WHITE_LIST * @param addrTypePeer - HCI_PUBLIC_DEVICE_ADDRESS, * HCI_RANDOM_DEVICE_ADDRESS * @param peerAddr - Pointer to peer device's address. * @param ownAddrType - HCI_PUBLIC_DEVICE_ADDRESS, * HCI_RANDOM_DEVICE_ADDRESS * @param connIntervalMin - Minimum allowed connection interval. * @param connIntervalMax - Maximum allowed connection interval. * @param connLatency - Number of skipped events (slave latency). * @param connTimeout - Connection supervision timeout. * @param minLen - Info parameter about min length of conn. * @param maxLen - Info parameter about max length of conn. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_CreateConnCmd( uint16 scanInterval, uint16 scanWindow, uint8 initFilterPolicy, uint8 addrTypePeer, uint8 *peerAddr, uint8 ownAddrType, uint16 connIntervalMin, uint16 connIntervalMax, uint16 connLatency, uint16 connTimeout, uint16 minLen, uint16 maxLen ); #endif // CTRL_CONFIG=INIT_CFG #if defined(CTRL_CONFIG) && (CTRL_CONFIG & INIT_CFG) /******************************************************************************* * @fn HCI_LE_CreateConnCancelCmd API * * @brief This LE API is used to cancel a create connection. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_CreateConnCancelCmd( void ); #endif // CTRL_CONFIG=INIT_CFG /******************************************************************************* * @fn HCI_LE_ReadWhiteListSizeCmd API * * @brief This LE API is used to read the white list. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_ReadWhiteListSizeCmd( void ); /******************************************************************************* * @fn HCI_LE_ClearWhiteListCmd API * * @brief This LE API is used to clear the white list. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_ClearWhiteListCmd( void ); /******************************************************************************* * @fn HCI_LE_AddWhiteListCmd API * * @brief This LE API is used to add a white list entry. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param addrType - HCI_PUBLIC_DEVICE_ADDRESS, HCI_RANDOM_DEVICE_ADDRESS * @param devAddr - Pointer to address of device to put in white list. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_AddWhiteListCmd( uint8 addrType, uint8 *devAddr ); /******************************************************************************* * @fn HCI_LE_RemoveWhiteListCmd API * * @brief This LE API is used to remove a white list entry. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param addrType - HCI_PUBLIC_DEVICE_ADDRESS, HCI_RANDOM_DEVICE_ADDRESS * @param devAddr - Pointer to address of device to remove from the * white list. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_RemoveWhiteListCmd( uint8 addrType, uint8 *devAddr ); #if defined(CTRL_CONFIG) && (CTRL_CONFIG & INIT_CFG) /******************************************************************************* * @fn HCI_LE_ConnUpdateCmd API * * @brief This LE API is used to update the connection parameters. * * Related Events: HCI_CommandStatusEvent, * ConnectionUpdateCompleteEvent * * input parameters * * @param connHandle - Time between Init scan events. * @param connIntervalMin - Minimum allowed connection interval. * @param connIntervalMax - Maximum allowed connection interval. * @param connLatency - Number of skipped events (slave latency). * @param connTimeout - Connection supervision timeout. * @param minLen - Info parameter about min length of conn. * @param maxLen - Info parameter about max length of conn. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_ConnUpdateCmd( uint16 connHandle, uint16 connIntervalMin, uint16 connIntervalMax, uint16 connLatency, uint16 connTimeout, uint16 minLen, uint16 maxLen ); #endif // CTRL_CONFIG=INIT_CFG #if defined(CTRL_CONFIG) && (CTRL_CONFIG & INIT_CFG) /******************************************************************************* * @fn HCI_LE_SetHostChanClassificationCmd API * * @brief This LE API is used to update the current data channel map. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param chanMap - Pointer to the new channel map. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_SetHostChanClassificationCmd( uint8 *chanMap ); #endif // CTRL_CONFIG=INIT_CFG #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_LE_ReadChannelMapCmd API * * @brief This LE API is used to read a connection's data channel map. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param connHandle - Connection handle. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_ReadChannelMapCmd( uint16 connHandle ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) #if defined(CTRL_CONFIG) && (CTRL_CONFIG & INIT_CFG) /******************************************************************************* * @fn HCI_LE_ReadRemoteUsedFeaturesCmd API * * @brief This LE API is used to read the remote device's used features. * * Related Events: HCI_CommandStatusEvent, * ReadRemoteUsedFeaturesCompleteEvent * * input parameters * * @param connHandle - Connection handle. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_ReadRemoteUsedFeaturesCmd( uint16 connHandle ); #endif // CTRL_CONFIG=INIT_CFG /******************************************************************************* * @fn HCI_LE_EncryptCmd API * * @brief This LE API is used to perform an encryption using AES128. * * Note: Input parameters are ordered MSB..LSB. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param key - Pointer to 16 byte encryption key. * @param plainText - Pointer to 16 byte plaintext data. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_EncryptCmd( uint8 *key, uint8 *plainText ); /******************************************************************************* * @fn HCI_LE_RandCmd API * * @brief This LE API is used to generate a random number. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_RandCmd( void ); #if defined(CTRL_CONFIG) && (CTRL_CONFIG & INIT_CFG) /******************************************************************************* * @fn HCI_LE_StartEncyptCmd API * * @brief This LE API is used to start encryption in a connection. * * Related Events: HCI_CommandStatusEvent, * EncChangeEvent or * EncKeyRefreshEvent * * input parameters * * @param connHandle - Connection handle. * @param random - Pointer to eight byte Random number. * @param encDiv - Pointer to two byte Encrypted Diversifier. * @param ltk - Pointer to 16 byte Long Term Key. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_StartEncyptCmd( uint16 connHandle, uint8 *random, uint8 *encDiv, uint8 *ltk ); #endif // CTRL_CONFIG=INIT_CFG #if defined(CTRL_CONFIG) && (CTRL_CONFIG & ADV_CONN_CFG) /******************************************************************************* * @fn HCI_LE_LtkReqReplyCmd API * * @brief This LE API is used by the Host to send to the Controller a * positive LTK reply. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param connHandle - Connection handle. * @param ltk - Pointer to 16 byte Long Term Key. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_LtkReqReplyCmd( uint16 connHandle, uint8 *ltk ); #endif // CTRL_CONFIG=ADV_CONN_CFG #if defined(CTRL_CONFIG) && (CTRL_CONFIG & ADV_CONN_CFG) /******************************************************************************* * @fn HCI_LE_LtkReqNegReplyCmd API * * @brief This LE API is used by the Host to send to the Controller a * negative LTK reply. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param connHandle - Connectin handle. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_LtkReqNegReplyCmd( uint16 connHandle ); #endif // CTRL_CONFIG=ADV_CONN_CFG /******************************************************************************* * @fn HCI_LE_ReadSupportedStatesCmd API * * @brief This LE API is used to read the Controller's supported states. * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_ReadSupportedStatesCmd( void ); /******************************************************************************* * @fn HCI_LE_ReceiverTestCmd API * * @brief This LE API is used to start the receiver Direct Test Mode test. * * Note: A HCI reset should be issued when done using DTM! * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param rxFreq - Rx RF frequency: * k=0..HCI_DTM_NUMBER_RF_CHANS-1, where: F=2402+(k*2MHz) * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_ReceiverTestCmd( uint8 rxFreq ); /******************************************************************************* * @fn HCI_LE_TransmitterTestCmd API * * @brief This LE API is used to start the transmit Direct Test Mode test. * * Note: The BLE device is to transmit at maximum power! * * Note: A HCI reset should be issued when done using DTM! * * input parameters * * @param txFreq - Tx RF frequency: * k=0..HCI_DTM_NUMBER_RF_CHANS-1, where: * F=2402+(k*2MHz) * @param dataLen - Test data length in bytes: * 0..HCI_DIRECT_TEST_MAX_PAYLOAD_LEN * @param payloadType - Type of packet payload, per Direct Test Mode spec: * HCI_DIRECT_TEST_PAYLOAD_PRBS9, * HCI_DIRECT_TEST_PAYLOAD_0x0F, * HCI_DIRECT_TEST_PAYLOAD_0x55, * HCI_DIRECT_TEST_PAYLOAD_PRBS15, * HCI_DIRECT_TEST_PAYLOAD_0xFF, * HCI_DIRECT_TEST_PAYLOAD_0x00, * HCI_DIRECT_TEST_PAYLOAD_0xF0, * HCI_DIRECT_TEST_PAYLOAD_0xAA * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_TransmitterTestCmd( uint8 txFreq, uint8 dataLen, uint8 pktPayload ); /******************************************************************************* * @fn HCI_LE_TestEndCmd API * * @brief This LE API is used to end the Direct Test Mode test. * * Note: A HCI reset should be issued when done using DTM! * * Related Events: HCI_CommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_LE_TestEndCmd( void ); /* ** HCI Vendor Specific Comamnds: Link Layer Extensions */ /******************************************************************************* * @fn HCI_EXT_SetRxGainCmd API * * @brief This HCI Extension API is used to set the receiver gain. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param rxGain - HCI_EXT_RX_GAIN_STD, HCI_EXT_RX_GAIN_HIGH * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_SetRxGainCmd( uint8 rxGain ); /******************************************************************************* * @fn HCI_EXT_SetTxPowerCmd API * * @brief This HCI Extension API is used to set the transmit power. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param txPower - LL_EXT_TX_POWER_MINUS_23_DBM, * LL_EXT_TX_POWER_MINUS_6_DBM, * LL_EXT_TX_POWER_0_DBM, * LL_EXT_TX_POWER_4_DBM * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_SetTxPowerCmd( uint8 txPower ); #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_EXT_OnePktPerEvtCmd API * * @brief This HCI Extension API is used to set whether a connection will * be limited to one packet per event. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param control - HCI_EXT_ENABLE_ONE_PKT_PER_EVT, * HCI_EXT_DISABLE_ONE_PKT_PER_EVT * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_OnePktPerEvtCmd( uint8 control ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) /******************************************************************************* * @fn HCI_EXT_ClkDivOnHaltCmd API * * @brief This HCI Extension API is used to set whether the system clock * will be divided when the MCU is halted. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param control - HCI_EXT_ENABLE_CLK_DIVIDE_ON_HALT, * HCI_EXT_DISABLE_CLK_DIVIDE_ON_HALT * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_ClkDivOnHaltCmd( uint8 control ); /******************************************************************************* * @fn HCI_EXT_DeclareNvUsageCmd API * * @brief This HCI Extension API is used to indicate to the Controller * whether or not the Host will be using the NV memory during BLE * operations. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param mode - HCI_EXT_NV_IN_USE, HCI_EXT_NV_NOT_IN_USE * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_DeclareNvUsageCmd( uint8 mode ); /******************************************************************************* * @fn HCI_EXT_DecryptCmd API * * @brief This HCI Extension API is used to decrypt encrypted data using * AES128. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param key - Pointer to 16 byte encryption key. * @param encText - Pointer to 16 byte encrypted data. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_DecryptCmd( uint8 *key, uint8 *encText ); /******************************************************************************* * @fn HCI_EXT_SetLocalSupportedFeaturesCmd API * * @brief This HCI Extension API is used to write this devie's supported * features. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param localFeatures - Pointer to eight bytes of local features. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_SetLocalSupportedFeaturesCmd( uint8 *localFeatures ); #if defined(CTRL_CONFIG) && (CTRL_CONFIG & ADV_CONN_CFG) /******************************************************************************* * @fn HCI_EXT_SetFastTxResponseTimeCmd API * * @brief This HCI Extension API is used to set whether transmit data is * sent as soon as possible even when slave latency is used. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param control - HCI_EXT_ENABLE_FAST_TX_RESP_TIME, * HCI_EXT_DISABLE_FAST_TX_RESP_TIME * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_SetFastTxResponseTimeCmd( uint8 control ); #endif // CTRL_CONFIG=ADV_CONN_CFG #if defined(CTRL_CONFIG) && (CTRL_CONFIG & ADV_CONN_CFG) /******************************************************************************* * @fn HCI_EXT_SetSlaveLatencyOverrideCmd API * * @brief This HCI Extension API is used to to enable or disable * suspending slave latency. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param control - HCI_EXT_ENABLE_SL_OVERRIDE, * HCI_EXT_DISABLE_SL_OVERRIDE * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_SetSlaveLatencyOverrideCmd( uint8 control ); #endif // CTRL_CONFIG=ADV_CONN_CFG /******************************************************************************* * @fn HCI_EXT_ModemTestTxCmd * * @brief This API is used start a continuous transmitter modem test, * using either a modulated or unmodulated carrier wave tone, at * the frequency that corresponds to the specified RF channel. Use * HCI_EXT_EndModemTest command to end the test. * * Note: A Controller reset will be issued by HCI_EXT_EndModemTest! * Note: The BLE device will transmit at maximum power. * Note: This API can be used to verify this device meets Japan's * TELEC regulations. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param cwMode - HCI_EXT_TX_MODULATED_CARRIER, * HCI_EXT_TX_UNMODULATED_CARRIER * txFreq - Transmit RF channel k=0..39, where BLE F=2402+(k*2MHz). * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_ModemTestTxCmd( uint8 cwMode, uint8 txFreq ); /******************************************************************************* * @fn HCI_EXT_ModemHopTestTxCmd * * @brief This API is used to start a continuous transmitter direct test * mode test using a modulated carrier wave and transmitting a * 37 byte packet of Pseudo-Random 9-bit data. A packet is * transmitted on a different frequency (linearly stepping through * all RF channels 0..39) every 625us. Use HCI_EXT_EndModemTest * command to end the test. * * Note: A Controller reset will be issued by HCI_EXT_EndModemTest! * Note: The BLE device will transmit at maximum power. * Note: This API can be used to verify this device meets Japan's * TELEC regulations. * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_ModemHopTestTxCmd( void ); /******************************************************************************* * @fn HCI_EXT_ModemTestRxCmd * * @brief This API is used to start a continuous receiver modem test * using a modulated carrier wave tone, at the frequency that * corresponds to the specific RF channel. Any received data is * discarded. Receiver gain may be adjusted using the * HCI_EXT_SetRxGain command. RSSI may be read during this test * by using the HCI_ReadRssi command. Use HCI_EXT_EndModemTest * command to end the test. * * Note: A Controller reset will be issued by HCI_EXT_EndModemTest! * Note: The BLE device will transmit at maximum power. * * input parameters * * @param rxFreq - Receiver RF channel k=0..39, where BLE F=2402+(k*2MHz). * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_ModemTestRxCmd( uint8 rxFreq ); /******************************************************************************* * @fn HCI_EXT_EndModemTestCmd * * @brief This API is used to shutdown a modem test. A complete Controller * reset will take place. * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_EndModemTestCmd( void ); /******************************************************************************* * @fn HCI_EXT_SetBDADDRCmd * * @brief This API is used to set this device's BLE address (BDADDR). * * Note: This command is only allowed when the device's state is * Standby. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param bdAddr - A pointer to a buffer to hold this device's address. * An invalid address (i.e. all FF's) will restore this * device's address to the address set at initialization. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_SetBDADDRCmd( uint8 *bdAddr ); #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_EXT_SetSCACmd * * @brief This API is used to set this device's Sleep Clock Accuracy. * * Note: For a slave device, this value is directly used, but only * if power management is enabled. For a master device, this * value is converted into one of eight ordinal values * representing a SCA range, as specified in Table 2.2, * Vol. 6, Part B, Section 2.3.3.1 of the Core specification. * * Note: This command is only allowed when the device is not in a * connection. * * Note: The device's SCA value remains unaffected by a HCI_Reset. * * input parameters * * @param scaInPPM - A SCA value in PPM from 0..500. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_SetSCACmd( uint16 scaInPPM ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) /******************************************************************************* * @fn HCI_EXT_EnablePTMCmd * * @brief This HCI Extension API is used to enable Production Test Mode. * * Note: This function can only be directly called from the * application and is not available via an external transport * interface such as RS232. Also, no vendor specific * command complete will be returned. * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_EnablePTMCmd( void ); /******************************************************************************* * @fn HCI_EXT_SetFreqTuneCmd * * @brief This HCI Extension API is used to set the frequency tuning up * or down. Setting the mode up/down decreases/increases the amount * of capacitance on the external crystal oscillator. * * Note: This is a Production Test Mode only command! * * input parameters * * @param step - HCI_PTM_SET_FREQ_TUNE_UP, HCI_PTM_SET_FREQ_TUNE_DOWN * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_SetFreqTuneCmd( uint8 step ); /******************************************************************************* * @fn HCI_EXT_SaveFreqTuneCmd * * @brief This HCI Extension API is used to save the frequency tuning * value to flash. * * Note: This is a Production Test Mode only command! * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_SaveFreqTuneCmd( void ); /******************************************************************************* * @fn HCI_EXT_SetMaxDtmTxPowerCmd API * * @brief This HCI Extension API is used to set the maximum transmit * output power for Direct Test Mode. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param txPower - LL_EXT_TX_POWER_MINUS_23_DBM, * LL_EXT_TX_POWER_MINUS_6_DBM, * LL_EXT_TX_POWER_0_DBM, * LL_EXT_TX_POWER_4_DBM * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_SetMaxDtmTxPowerCmd( uint8 txPower ); /******************************************************************************* * @fn HCI_EXT_MapPmIoPortCmd Vendor Specific API * * @brief This HCI Extension API is used to configure and map a CC254x I/O * Port as a General Purpose I/O (GPIO) output signal that reflects * the Power Management (PM) state of the CC254x device. The GPIO * output will be High on Wake, and Low upon entering Sleep. This * feature can be disabled by specifying HCI_EXT_PM_IO_PORT_NONE * for the ioPort (ioPin is then ignored). The system default value * upon hardware reset is disabled. This command can be used to * control an external DC-DC Converter (its actual intent) such has * the TI TPS62730 (or any similar converter that works the same * way). This command should be used with extreme care as it will * override how the Port/Pin was previously configured! This * includes the mapping of Port 0 pins to 32kHz clock output, * Analog I/O, UART, Timers; Port 1 pins to Observables, Digital * Regulator status, UART, Timers; Port 2 pins to an external 32kHz * XOSC. The selected Port/Pin will be configured as an output GPIO * with interrupts masked. Careless use can result in a * reconfiguration that could disrupt the system. It is therefore * the user's responsibility to ensure the selected Port/Pin does * not cause any conflicts in the system. * * Note: Only Pins 0, 3 and 4 are valid for Port 2 since Pins 1 * and 2 are mapped to debugger signals DD and DC. * * Note: Port/Pin signal change will only occur when Power Savings * is enabled. * * input parameters * * @param ioPort - HCI_EXT_PM_IO_PORT_P0, * HCI_EXT_PM_IO_PORT_P1, * HCI_EXT_PM_IO_PORT_P2, * HCI_EXT_PM_IO_PORT_NONE * * @param ioPin - HCI_EXT_PM_IO_PORT_PIN0, * HCI_EXT_PM_IO_PORT_PIN1, * HCI_EXT_PM_IO_PORT_PIN2, * HCI_EXT_PM_IO_PORT_PIN3, * HCI_EXT_PM_IO_PORT_PIN4, * HCI_EXT_PM_IO_PORT_PIN5, * HCI_EXT_PM_IO_PORT_PIN6, * HCI_EXT_PM_IO_PORT_PIN7 * * output parameters * * @param None. * * @return hciStatus_t */ extern llStatus_t HCI_EXT_MapPmIoPortCmd( uint8 ioPort, uint8 ioPin ); #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_EXT_DisconnectImmedCmd API * * @brief This HCI Extension API is used to disconnect the connection * immediately. * * Note: The connection (if valid) is immediately terminated * without notifying the remote device. The Host is still * notified. * * input parameters * * @param connHandle - Connection handle. * * output parameters * * @param None. * * @return HCI_SUCCESS */ extern hciStatus_t HCI_EXT_DisconnectImmedCmd( uint16 connHandle ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_EXT_PacketErrorRate Vendor Specific API * * @brief This function is used to Reset or Read the Packet Error Rate * counters for a connection. * * Note: The counters are only 16 bits. At the shortest connection * interval, this provides a bit over 8 minutes of data. * * input parameters * * @param connHandle - The LL connection ID on which to send this data. * @param command - HCI_EXT_PER_RESET, HCI_EXT_PER_READ * * output parameters * * @param None. * * @return LL_STATUS_SUCCESS, LL_STATUS_ERROR_INACTIVE_CONNECTION */ extern hciStatus_t HCI_EXT_PacketErrorRateCmd( uint16 connHandle, uint8 command ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_CONN_CFG) || (CTRL_CONFIG & INIT_CFG)) /******************************************************************************* * @fn HCI_EXT_PERbyChanCmd Vendor Specific API * * @brief This HCI Extension API is used to start or end Packet Error Rate * by Channel counter accumulation for a connection. If the * pointer is not NULL, it is assumed there is sufficient memory * for the PER data, per the type perByChan_t. If NULL, then * the operation is considered disabled. * * Note: It is the user's responsibility to make sure there is * sufficient memory for the data, and that the counters * are cleared prior to first use. * * Note: The counters are only 16 bits. At the shortest connection * interval, this provides a bit over 8 minutes of data. * * input parameters * * @param connHandle - The LL connection ID on which to send this data. * @param perByChan - Pointer to PER by Channel data, or NULL. * * output parameters * * @param None. * * @return LL_STATUS_SUCCESS, LL_STATUS_ERROR_INACTIVE_CONNECTION */ extern hciStatus_t HCI_EXT_PERbyChanCmd( uint16 connHandle, perByChan_t *perByChan ); #endif // CTRL_CONFIG=(ADV_CONN_CFG | INIT_CFG) /******************************************************************************* * @fn HCI_EXT_ExtendRfRangeCmd API * * @brief This HCI Extension API is used to Extend Rf Range using the TI * CC2590 2.4 GHz RF Front End device. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param None. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_ExtendRfRangeCmd( void ); /******************************************************************************* * @fn HCI_EXT_HaltDuringRfCmd API * * @brief This HCI Extension API is used to enable or disable halting the * CPU during RF. The system defaults to enabled. * * Related Events: HCI_VendorSpecifcCommandCompleteEvent * * input parameters * * @param mode - HCI_EXT_HALT_DURING_RF_ENABLE, * HCI_EXT_HALT_DURING_RF_DISABLE * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_HaltDuringRfCmd( uint8 mode ); #if defined(CTRL_CONFIG) && ((CTRL_CONFIG & ADV_NCONN_CFG) || (CTRL_CONFIG & ADV_CONN_CFG)) /******************************************************************************* * @fn HCI_EXT_AdvEventNoticeCmd Vendor Specific API * * @brief This HCI Extension API is used to enable or disable a * notification to the specified task using the specified task * event whenever a Adv event ends. A non-zero taskEvent value is * taken to be "enable", while a zero valued taskEvent is taken * to be "disable". * * input parameters * * @param taskID - User's task ID. * @param taskEvent - User's task event. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_AdvEventNoticeCmd( uint8 taskID, uint16 taskEvent ); #endif // CTRL_CONFIG=(ADV_NCONN_CFG | ADV_CONN_CFG) #if defined(CTRL_CONFIG) && (CTRL_CONFIG & ADV_CONN_CFG) /******************************************************************************* * @fn HCI_EXT_ConnEventNoticeCmd Vendor Specific API * * @brief This HCI Extension API is used to enable or disable a * notification to the specified task using the specified task * event whenever a Connection event ends. A non-zero taskEvent * value is taken to be "enable", while a zero valued taskEvent * taken to be "disable". * * Note: Currently, only a Slave connection is supported. * * input parameters * * @param taskID - User's task ID. * @param taskEvent - User's task event. * * output parameters * * @param None. * * @return hciStatus_t */ extern hciStatus_t HCI_EXT_ConnEventNoticeCmd( uint8 taskID, uint16 taskEvent ); #endif // CTRL_CONFIG=ADV_CONN_CFG /******************************************************************************* * @fn HCI_EXT_BuildRevisionCmd Vendor Specific API * * @brief This HCI Extension API is used set a user revision number or * read the build revision number. * * input parameters * * @param mode - HCI_EXT_SET_USER_REVISION | HCI_EXT_READ_BUILD_REVISION * * output parameters * * @param None. * * @return LL_STATUS_SUCCESS, HCI_ERROR_CODE_INVALID_HCI_CMD_PARAMS */ extern hciStatus_t HCI_EXT_BuildRevisionCmd( uint8 mode, uint16 userRevNum ); #ifdef __cplusplus } #endif #endif /* HCI_H */