HW layer for the Nucleo board, it only work with old BLE_API

Dependents:   Hello_BLE F446RE-BLE

Fork of X_NUCLEO_IDB0XA1 by ST

Committer:
leonardoaraujosantos
Date:
Tue Nov 03 23:10:27 2015 +0000
Revision:
129:57997390c086
Parent:
70:d20d30f59b1c
Changing pin D13

Who changed what in which revision?

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