Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: SimpleBLE-ObCP_ENSMM_V2019_Test_BLE_S SimpleBLE-ObCp_test-BLE_envoi SimpleBLE-ObCp_test-BLE Roller_catcher_Envoi ... more
x-nucleo-idb0xa1/BlueNRG_HCI/includes/hci.h@130:770ce14d3d15, 2015-10-06 (annotated)
- Committer:
 - Wolfgang Betz 
 - Date:
 - Tue Oct 06 14:25:08 2015 +0200
 - Revision:
 - 130:770ce14d3d15
 
Include mbed-classic version
Derived from
- repo (on Codex): gitolite@codex.cro.st.com:x-nucleodev/X-NUCLEO-IKC01A1-MBED.git
- branch: ble_wb
- SHA1 ID: 5ccc73e35868169e42132c0d1c056f908a6d70c0
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| Wolfgang Betz  | 
130:770ce14d3d15 | 1 | /******************** (C) COPYRIGHT 2012 STMicroelectronics ******************** | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 2 | * File Name : hci.h | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 3 | * Author : AMS - HEA&RF BU | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 4 | * Version : V1.0.0 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 5 | * Date : 19-July-2012 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 6 | * Description : Constants and functions for HCI layer. See Bluetooth Core | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 7 | * v 4.0, Vol. 2, Part E. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 8 | ******************************************************************************** | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 9 | * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 10 | * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 11 | * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 12 | * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 13 | * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 14 | * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 15 | *******************************************************************************/ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 16 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 17 | #ifndef __HCI_H_ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 18 | #define __HCI_H_ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 19 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 20 | #include "hal_types.h" | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 21 | #include "link_layer.h" | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 22 | #include <list.h> | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 23 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 24 | #define HCI_READ_PACKET_SIZE 128 //71 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 25 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 26 | /*** Data types ***/ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 27 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 28 | /* structure used to read received data */ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 29 | typedef struct _tHciDataPacket | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 30 | { | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 31 | tListNode currentNode; | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 32 | uint8_t dataBuff[HCI_READ_PACKET_SIZE]; | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 33 | uint8_t data_len; | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 34 | } tHciDataPacket; | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 35 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 36 | typedef enum | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 37 | { | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 38 | BUSY, | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 39 | AVAILABLE | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 40 | } HCI_CMD_STATUS_t; | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 41 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 42 | /** | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 43 | * @defgroup HCI_Error_codes HCI Error codes | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 44 | * @{ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 45 | */ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 46 | #define HCI_UNKNOWN_COMMAND 0x01 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 47 | #define HCI_NO_CONNECTION 0x02 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 48 | #define HCI_HARDWARE_FAILURE 0x03 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 49 | #define HCI_PAGE_TIMEOUT 0x04 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 50 | #define HCI_AUTHENTICATION_FAILURE 0x05 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 51 | #define HCI_PIN_OR_KEY_MISSING 0x06 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 52 | #define HCI_MEMORY_FULL 0x07 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 53 | #define HCI_CONNECTION_TIMEOUT 0x08 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 54 | #define HCI_MAX_NUMBER_OF_CONNECTIONS 0x09 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 55 | #define HCI_MAX_NUMBER_OF_SCO_CONNECTIONS 0x0a | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 56 | #define HCI_ACL_CONNECTION_EXISTS 0x0b | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 57 | #define HCI_COMMAND_DISALLOWED 0x0c | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 58 | #define HCI_REJECTED_LIMITED_RESOURCES 0x0d | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 59 | #define HCI_REJECTED_SECURITY 0x0e | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 60 | #define HCI_REJECTED_PERSONAL 0x0f | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 61 | #define HCI_HOST_TIMEOUT 0x10 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 62 | #define HCI_UNSUPPORTED_FEATURE 0x11 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 63 | #define HCI_INVALID_PARAMETERS 0x12 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 64 | #define HCI_OE_USER_ENDED_CONNECTION 0x13 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 65 | #define HCI_OE_LOW_RESOURCES 0x14 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 66 | #define HCI_OE_POWER_OFF 0x15 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 67 | #define HCI_CONNECTION_TERMINATED 0x16 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 68 | #define HCI_REPEATED_ATTEMPTS 0x17 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 69 | #define HCI_PAIRING_NOT_ALLOWED 0x18 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 70 | #define HCI_UNKNOWN_LMP_PDU 0x19 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 71 | #define HCI_UNSUPPORTED_REMOTE_FEATURE 0x1a | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 72 | #define HCI_SCO_OFFSET_REJECTED 0x1b | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 73 | #define HCI_SCO_INTERVAL_REJECTED 0x1c | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 74 | #define HCI_AIR_MODE_REJECTED 0x1d | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 75 | #define HCI_INVALID_LMP_PARAMETERS 0x1e | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 76 | #define HCI_UNSPECIFIED_ERROR 0x1f | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 77 | #define HCI_UNSUPPORTED_LMP_PARAMETER_VALUE 0x20 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 78 | #define HCI_ROLE_CHANGE_NOT_ALLOWED 0x21 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 79 | #define HCI_LMP_RESPONSE_TIMEOUT 0x22 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 80 | #define HCI_LMP_ERROR_TRANSACTION_COLLISION 0x23 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 81 | #define HCI_LMP_PDU_NOT_ALLOWED 0x24 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 82 | #define HCI_ENCRYPTION_MODE_NOT_ACCEPTED 0x25 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 83 | #define HCI_UNIT_LINK_KEY_USED 0x26 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 84 | #define HCI_QOS_NOT_SUPPORTED 0x27 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 85 | #define HCI_INSTANT_PASSED 0x28 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 86 | #define HCI_PAIRING_NOT_SUPPORTED 0x29 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 87 | #define HCI_TRANSACTION_COLLISION 0x2a | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 88 | #define HCI_QOS_UNACCEPTABLE_PARAMETER 0x2c | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 89 | #define HCI_QOS_REJECTED 0x2d | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 90 | #define HCI_CLASSIFICATION_NOT_SUPPORTED 0x2e | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 91 | #define HCI_INSUFFICIENT_SECURITY 0x2f | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 92 | #define HCI_PARAMETER_OUT_OF_RANGE 0x30 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 93 | #define HCI_ROLE_SWITCH_PENDING 0x32 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 94 | #define HCI_SLOT_VIOLATION 0x34 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 95 | #define HCI_ROLE_SWITCH_FAILED 0x35 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 96 | #define HCI_EIR_TOO_LARGE 0x36 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 97 | #define HCI_SIMPLE_PAIRING_NOT_SUPPORTED 0x37 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 98 | #define HCI_HOST_BUSY_PAIRING 0x38 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 99 | #define HCI_CONN_REJ_NO_CH_FOUND 0x39 | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 100 | #define HCI_CONTROLLER_BUSY 0x3A | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 101 | #define HCI_UNACCEPTABLE_CONN_INTERV 0x3B | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 102 | #define HCI_DIRECTED_ADV_TIMEOUT 0x3C | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 103 | #define HCI_CONN_TERM_MIC_FAIL 0x3D | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 104 | #define HCI_CONN_FAIL_TO_BE_ESTABL 0x3E | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 105 | #define HCI_MAC_CONN_FAILED 0x3F | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 106 | /** | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 107 | * @} | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 108 | */ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 109 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 110 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 111 | /* | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 112 | * HCI library functions. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 113 | * Each function returns 0 in case of success, otherwise one of the error codes. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 114 | */ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 115 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 116 | int hci_reset(void); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 117 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 118 | int hci_disconnect(uint16_t handle, uint8_t reason); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 119 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 120 | int hci_le_set_advertise_enable(uint8_t enable); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 121 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 122 | int hci_le_set_advertising_parameters(uint16_t min_interval, uint16_t max_interval, uint8_t advtype, | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 123 | uint8_t own_bdaddr_type, uint8_t direct_bdaddr_type, const tBDAddr direct_bdaddr, uint8_t chan_map, | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 124 | uint8_t filter); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 125 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 126 | int hci_le_set_scan_parameters(uint8_t type, uint16_t interval, | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 127 | uint16_t window, uint8_t own_bdaddr_type, | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 128 | uint8_t filter); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 129 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 130 | int hci_le_set_scan_enable(uint8_t enable, uint8_t filter_dup); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 131 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 132 | int hci_le_set_advertising_data(uint8_t length, const uint8_t data[]); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 133 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 134 | int hci_le_set_scan_resp_data(uint8_t length, const uint8_t data[]); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 135 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 136 | int hci_le_rand(uint8_t random_number[8]); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 137 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 138 | int hci_le_read_advertising_channel_tx_power(int8_t *tx_power_level); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 139 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 140 | int hci_acl_data(const uint8_t * data, uint16_t len); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 141 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 142 | int hci_le_set_random_address(tBDAddr bdaddr); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 143 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 144 | int hci_read_bd_addr(tBDAddr bdaddr); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 145 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 146 | int hci_le_read_white_list_size(uint8_t *size); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 147 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 148 | int hci_le_clear_white_list(void); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 149 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 150 | int hci_le_add_device_to_white_list(uint8_t bdaddr_type, tBDAddr bdaddr); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 151 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 152 | int hci_le_remove_device_from_white_list(uint8_t bdaddr_type, tBDAddr bdaddr); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 153 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 154 | int hci_le_encrypt(uint8_t key[16], uint8_t plaintextData[16], uint8_t encryptedData[16]); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 155 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 156 | int hci_le_ltk_request_reply(uint8_t key[16]); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 157 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 158 | int hci_le_ltk_request_neg_reply(void); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 159 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 160 | int hci_le_read_buffer_size(uint16_t *pkt_len, uint8_t *max_pkt); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 161 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 162 | int hci_le_create_connection(uint16_t interval, uint16_t window, uint8_t initiator_filter, uint8_t peer_bdaddr_type, | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 163 | const tBDAddr peer_bdaddr, uint8_t own_bdaddr_type, uint16_t min_interval, uint16_t max_interval, | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 164 | uint16_t latency, uint16_t supervision_timeout, uint16_t min_ce_length, uint16_t max_ce_length); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 165 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 166 | int hci_read_transmit_power_level(uint16_t *conn_handle, uint8_t type, int8_t *tx_level); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 167 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 168 | int hci_read_rssi(uint16_t *conn_handle, int8_t *rssi); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 169 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 170 | int hci_le_read_local_supported_features(uint8_t *features); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 171 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 172 | int hci_le_read_channel_map(uint16_t conn_handle, uint8_t ch_map[5]); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 173 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 174 | int hci_le_read_supported_states(uint8_t states[8]); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 175 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 176 | int hci_le_receiver_test(uint8_t frequency); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 177 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 178 | int hci_le_transmitter_test(uint8_t frequency, uint8_t length, uint8_t payload); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 179 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 180 | int hci_le_test_end(uint16_t *num_pkts); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 181 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 182 | int hci_le_read_local_version(uint8_t *hci_version, uint16_t *hci_revision, uint8_t *lmp_pal_version, | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 183 | uint16_t *manufacturer_name, uint16_t *lmp_pal_subversion); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 184 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 185 | /** | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 186 | * This function must be used to pass the packet received from the HCI | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 187 | * interface to the BLE Stack HCI state machine. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 188 | * | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 189 | * @param[in] hciReadPacket The packet that is received from HCI interface. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 190 | * | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 191 | */ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 192 | void HCI_Input(tHciDataPacket *hciReadPacket); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 193 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 194 | /** | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 195 | * Initialization function. Must be done before any data can be received from | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 196 | * BLE controller. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 197 | */ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 198 | void HCI_Init(void); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 199 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 200 | /** | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 201 | * Callback used to pass events to application. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 202 | * | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 203 | * @param[in] pckt The event. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 204 | * | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 205 | */ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 206 | extern void HCI_Event_CB(void *pckt); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 207 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 208 | /** | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 209 | * Processing function that must be called after an event is received from | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 210 | * HCI interface. Must be called outside ISR. It will call HCI_Event_CB if | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 211 | * necessary. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 212 | */ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 213 | void HCI_Process(void); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 214 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 215 | /** | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 216 | * @brief Check if queue of HCI event is empty or not. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 217 | * @note This funtion can be used to check if the event queue from BlueNRG is empty. This | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 218 | * is useful when checking if it is safe to go to sleep. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 219 | * @return TRUE if event queue is empty. FALSE otherwhise. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 220 | */ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 221 | BOOL HCI_Queue_Empty(void); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 222 | /** | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 223 | * Iterrupt service routine that must be called when the BlueNRG | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 224 | * reports a packet received or an event to the host through the | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 225 | * BlueNRG interrupt line. | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 226 | */ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 227 | #ifdef __DMA_LP__ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 228 | void HCI_Isr(uint8_t *buffer, uint8_t event_payload_len); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 229 | void HCI_Process_Notification_Request(void); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 230 | void HCI_Cmd_Status(HCI_CMD_STATUS_t Hci_Cmd_Status); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 231 | void HCI_Wait_For_Response(void); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 232 | #else | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 233 | void HCI_Isr(void); | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 234 | #endif /* __DMA_LP__ */ | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 235 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 236 | extern tListNode hciReadPktPool; | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 237 | extern tListNode hciReadPktRxQueue; | 
| Wolfgang Betz  | 
130:770ce14d3d15 | 238 | |
| Wolfgang Betz  | 
130:770ce14d3d15 | 239 | #endif /* __HCI_H_ */ |