Robotique FIP / Mbed 2 deprecated BlueNRG

Dependencies:   mbed HC_SR04_Ultrasonic_Library

Committer:
julientiron
Date:
Tue May 19 17:46:51 2015 +0000
Revision:
2:b5166e24c7a6
Parent:
0:3d641e170a74
?a marche BLE+capteur de distance;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
julientiron 0:3d641e170a74 1 /******************** (C) COPYRIGHT 2013 STMicroelectronics ********************
julientiron 0:3d641e170a74 2 * File Name : bluenrg_hci_internal.h
julientiron 0:3d641e170a74 3 * Author : AMS - HEA&RF BU
julientiron 0:3d641e170a74 4 * Version : V1.0.0
julientiron 0:3d641e170a74 5 * Date : 4-Oct-2013
julientiron 0:3d641e170a74 6 * Description : Header file with ACI definitions for BlueNRG FW6.0 and
julientiron 0:3d641e170a74 7 * above.
julientiron 0:3d641e170a74 8 ********************************************************************************
julientiron 0:3d641e170a74 9 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
julientiron 0:3d641e170a74 10 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
julientiron 0:3d641e170a74 11 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
julientiron 0:3d641e170a74 12 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
julientiron 0:3d641e170a74 13 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
julientiron 0:3d641e170a74 14 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
julientiron 0:3d641e170a74 15 *******************************************************************************/
julientiron 0:3d641e170a74 16
julientiron 0:3d641e170a74 17 #ifndef __BLUENRG_HCI_INTERNAL_H_
julientiron 0:3d641e170a74 18 #define __BLUENRG_HCI_INTERNAL_H_
julientiron 0:3d641e170a74 19
julientiron 0:3d641e170a74 20 #include "compiler.h"
julientiron 0:3d641e170a74 21 #include "bluenrg_hci.h"
julientiron 0:3d641e170a74 22
julientiron 0:3d641e170a74 23 #define OCF_HAL_WRITE_CONFIG_DATA 0x000C
julientiron 0:3d641e170a74 24
julientiron 0:3d641e170a74 25 /* Offsets and lengths for configuration values */
julientiron 0:3d641e170a74 26 #define CONFIG_DATA_PUBADDR_OFFSET (0x00)
julientiron 0:3d641e170a74 27 #define CONFIG_DATA_DIV_OFFSET (0x06)
julientiron 0:3d641e170a74 28 #define CONFIG_DATA_ER_OFFSET (0x08)
julientiron 0:3d641e170a74 29 #define CONFIG_DATA_IR_OFFSET (0x18)
julientiron 0:3d641e170a74 30
julientiron 0:3d641e170a74 31 #define CONFIG_DATA_PUBADDR_LEN (0x06)
julientiron 0:3d641e170a74 32 #define CONFIG_DATA_DIV_LEN (0x02)
julientiron 0:3d641e170a74 33 #define CONFIG_DATA_ER_LEN (0x10)
julientiron 0:3d641e170a74 34 #define CONFIG_DATA_IR_LEN (0x10)
julientiron 0:3d641e170a74 35
julientiron 0:3d641e170a74 36 #define OCF_HAL_SET_TX_POWER_LEVEL 0x000F
julientiron 0:3d641e170a74 37 typedef struct __packed _hal_set_tx_power_level_cp{
julientiron 0:3d641e170a74 38 uint8_t en_high_power;
julientiron 0:3d641e170a74 39 uint8_t pa_level;
julientiron 0:3d641e170a74 40 } PACKED hal_set_tx_power_level_cp;
julientiron 0:3d641e170a74 41 #define HAL_SET_TX_POWER_LEVEL_CP_SIZE 2
julientiron 0:3d641e170a74 42
julientiron 0:3d641e170a74 43 #define OCF_HAL_TONE_START 0x0015
julientiron 0:3d641e170a74 44 typedef struct __packed _hal_tone_start_cp{
julientiron 0:3d641e170a74 45 uint8_t rf_channel;
julientiron 0:3d641e170a74 46 } PACKED hal_tone_start_cp;
julientiron 0:3d641e170a74 47 #define HAL_TONE_START_CP_SIZE 1
julientiron 0:3d641e170a74 48
julientiron 0:3d641e170a74 49 #define OCF_UPDATER_START 0x0020
julientiron 0:3d641e170a74 50 #define OCF_UPDATER_REBOOT 0x0021
julientiron 0:3d641e170a74 51
julientiron 0:3d641e170a74 52 #define OCF_GET_UPDATER_VERSION 0x0022
julientiron 0:3d641e170a74 53 typedef struct __packed _get_updater_version_rp{
julientiron 0:3d641e170a74 54 uint8_t status;
julientiron 0:3d641e170a74 55 uint8_t version;
julientiron 0:3d641e170a74 56 } PACKED get_updater_version_rp;
julientiron 0:3d641e170a74 57 #define GET_UPDATER_VERSION_RP_SIZE 2
julientiron 0:3d641e170a74 58
julientiron 0:3d641e170a74 59 #define OCF_GET_UPDATER_BUFSIZE 0x0023
julientiron 0:3d641e170a74 60 typedef struct __packed _get_updater_bufsize_rp{
julientiron 0:3d641e170a74 61 uint8_t status;
julientiron 0:3d641e170a74 62 uint8_t buffer_size;
julientiron 0:3d641e170a74 63 } PACKED get_updater_bufsize_rp;
julientiron 0:3d641e170a74 64 #define GET_UPDATER_BUFSIZE_RP_SIZE 2
julientiron 0:3d641e170a74 65
julientiron 0:3d641e170a74 66 #define OCF_UPDATER_ERASE_BLUE_FLAG 0x0024
julientiron 0:3d641e170a74 67
julientiron 0:3d641e170a74 68 #define OCF_UPDATER_RESET_BLUE_FLAG 0x0025
julientiron 0:3d641e170a74 69
julientiron 0:3d641e170a74 70 #define OCF_UPDATER_ERASE_SECTOR 0x0026
julientiron 0:3d641e170a74 71 typedef struct __packed _updater_erase_sector_cp{
julientiron 0:3d641e170a74 72 uint32_t address;
julientiron 0:3d641e170a74 73 } PACKED updater_erase_sector_cp;
julientiron 0:3d641e170a74 74 #define UPDATER_ERASE_SECTOR_CP_SIZE 4
julientiron 0:3d641e170a74 75
julientiron 0:3d641e170a74 76 #define OCF_UPDATER_PROG_DATA_BLOCK 0x0027
julientiron 0:3d641e170a74 77 /* Variable length parameters */
julientiron 0:3d641e170a74 78
julientiron 0:3d641e170a74 79 #define OCF_UPDATER_READ_DATA_BLOCK 0x0028
julientiron 0:3d641e170a74 80 typedef struct __packed _updater_read_data_block_cp{
julientiron 0:3d641e170a74 81 uint32_t address;
julientiron 0:3d641e170a74 82 uint16_t data_len;
julientiron 0:3d641e170a74 83 } PACKED updater_read_data_block_cp;
julientiron 0:3d641e170a74 84 #define UPDATER_READ_DATA_BLOCK_CP_SIZE 6
julientiron 0:3d641e170a74 85 typedef struct __packed _updater_read_data_block_rp{
julientiron 0:3d641e170a74 86 uint8_t status;
julientiron 0:3d641e170a74 87 uint8_t data[0];
julientiron 0:3d641e170a74 88 } PACKED updater_read_data_block_rp;
julientiron 0:3d641e170a74 89 #define GET_UPDATER_BUFSIZE_RP_SIZE 2
julientiron 0:3d641e170a74 90
julientiron 0:3d641e170a74 91 #define OCF_UPDATER_CALC_CRC 0x0029
julientiron 0:3d641e170a74 92 typedef struct __packed _updater_calc_crc_cp{
julientiron 0:3d641e170a74 93 uint32_t address;
julientiron 0:3d641e170a74 94 uint8_t num_sectors;
julientiron 0:3d641e170a74 95 } PACKED updater_calc_crc_cp;
julientiron 0:3d641e170a74 96 #define UPDATER_CALC_CRC_CP_SIZE 5
julientiron 0:3d641e170a74 97 typedef struct __packed _updater_calc_crc_rp{
julientiron 0:3d641e170a74 98 uint8_t status;
julientiron 0:3d641e170a74 99 uint32_t crc;
julientiron 0:3d641e170a74 100 } PACKED updater_calc_crc_rp;
julientiron 0:3d641e170a74 101 #define UPDATER_CALC_CRC_RP_SIZE 5
julientiron 0:3d641e170a74 102
julientiron 0:3d641e170a74 103 #define OCF_UPDATER_HW_VERSION 0x002A
julientiron 0:3d641e170a74 104 typedef struct __packed _updater_hw_version_rp{
julientiron 0:3d641e170a74 105 uint8_t status;
julientiron 0:3d641e170a74 106 uint8_t version;
julientiron 0:3d641e170a74 107 } PACKED updater_hw_version_rp;
julientiron 0:3d641e170a74 108 #define UPDATER_HW_VERSION_RP_SIZE 2
julientiron 0:3d641e170a74 109
julientiron 0:3d641e170a74 110 #define OCF_GAP_SET_NON_DISCOVERABLE 0x0081
julientiron 0:3d641e170a74 111
julientiron 0:3d641e170a74 112 #define OCF_GAP_SET_LIMITED_DISCOVERABLE 0x0082
julientiron 0:3d641e170a74 113
julientiron 0:3d641e170a74 114 #define OCF_GAP_SET_DISCOVERABLE 0x0083
julientiron 0:3d641e170a74 115
julientiron 0:3d641e170a74 116 #define OCF_GAP_SET_DIRECT_CONNECTABLE 0x0084
julientiron 0:3d641e170a74 117 typedef struct __packed _gap_set_direct_conectable_cp{
julientiron 0:3d641e170a74 118 uint8_t own_bdaddr_type;
julientiron 0:3d641e170a74 119 uint8_t direct_bdaddr_type;
julientiron 0:3d641e170a74 120 tBDAddr direct_bdaddr;
julientiron 0:3d641e170a74 121 } PACKED gap_set_direct_conectable_cp;
julientiron 0:3d641e170a74 122 #define GAP_SET_DIRECT_CONNECTABLE_CP_SIZE 8
julientiron 0:3d641e170a74 123
julientiron 0:3d641e170a74 124 #define OCF_GAP_SET_IO_CAPABILITY 0x0085
julientiron 0:3d641e170a74 125 typedef struct __packed _gap_set_io_capability_cp{
julientiron 0:3d641e170a74 126 uint8_t io_capability;
julientiron 0:3d641e170a74 127 } PACKED gap_set_io_capability_cp;
julientiron 0:3d641e170a74 128 #define GAP_SET_IO_CAPABILITY_CP_SIZE 1
julientiron 0:3d641e170a74 129
julientiron 0:3d641e170a74 130 #define OCF_GAP_SET_AUTH_REQUIREMENT 0x0086
julientiron 0:3d641e170a74 131 typedef struct __packed _gap_set_auth_requirement_cp{
julientiron 0:3d641e170a74 132 uint8_t mitm_mode;
julientiron 0:3d641e170a74 133 uint8_t oob_enable;
julientiron 0:3d641e170a74 134 uint8_t oob_data[16];
julientiron 0:3d641e170a74 135 uint8_t min_encryption_key_size;
julientiron 0:3d641e170a74 136 uint8_t max_encryption_key_size;
julientiron 0:3d641e170a74 137 uint8_t use_fixed_pin;
julientiron 0:3d641e170a74 138 uint32_t fixed_pin;
julientiron 0:3d641e170a74 139 uint8_t bonding_mode;
julientiron 0:3d641e170a74 140 } PACKED gap_set_auth_requirement_cp;
julientiron 0:3d641e170a74 141 #define GAP_SET_AUTH_REQUIREMENT_CP_SIZE 26
julientiron 0:3d641e170a74 142
julientiron 0:3d641e170a74 143 #define OCF_GAP_SET_AUTHOR_REQUIREMENT 0x0087
julientiron 0:3d641e170a74 144 typedef struct __packed _gap_set_author_requirement_cp{
julientiron 0:3d641e170a74 145 uint8_t authorization_enable;
julientiron 0:3d641e170a74 146 } PACKED gap_set_author_requirement_cp;
julientiron 0:3d641e170a74 147 #define GAP_SET_AUTHOR_REQUIREMENT_CP_SIZE 1
julientiron 0:3d641e170a74 148
julientiron 0:3d641e170a74 149 #define OCF_GAP_PASSKEY_RESPONSE 0x0088
julientiron 0:3d641e170a74 150 typedef struct __packed _gap_passkey_response_cp{
julientiron 0:3d641e170a74 151 uint32_t passkey;
julientiron 0:3d641e170a74 152 } PACKED gap_passkey_response_cp;
julientiron 0:3d641e170a74 153 #define GAP_PASSKEY_RESPONSE_CP_SIZE 4
julientiron 0:3d641e170a74 154
julientiron 0:3d641e170a74 155 #define OCF_GAP_AUTHORIZATION_RESPONSE 0x0089
julientiron 0:3d641e170a74 156 typedef struct __packed _gap_authorization_response_cp{
julientiron 0:3d641e170a74 157 uint8_t authorize;
julientiron 0:3d641e170a74 158 } PACKED gap_authorization_response_cp;
julientiron 0:3d641e170a74 159 #define GAP_AUTHORIZATION_RESPONSE_CP_SIZE 1
julientiron 0:3d641e170a74 160
julientiron 0:3d641e170a74 161 #define OCF_GAP_INIT 0x008A
julientiron 0:3d641e170a74 162 typedef struct __packed _gap_init_cp{
julientiron 0:3d641e170a74 163 uint8_t role;
julientiron 0:3d641e170a74 164 } PACKED gap_init_cp;
julientiron 0:3d641e170a74 165 #define GAP_INIT_CP_SIZE 1
julientiron 0:3d641e170a74 166 typedef struct __packed _gap_init_rp{
julientiron 0:3d641e170a74 167 uint8_t status;
julientiron 0:3d641e170a74 168 uint16_t service_handle;
julientiron 0:3d641e170a74 169 uint16_t dev_name_char_handle;
julientiron 0:3d641e170a74 170 uint16_t appearance_char_handle;
julientiron 0:3d641e170a74 171 } PACKED gap_init_rp;
julientiron 0:3d641e170a74 172 #define GAP_INIT_RP_SIZE 7
julientiron 0:3d641e170a74 173
julientiron 0:3d641e170a74 174 #define OCF_GAP_SET_NON_CONNECTABLE 0x008B
julientiron 0:3d641e170a74 175 typedef struct __packed _gap_set_non_connectable_cp{
julientiron 0:3d641e170a74 176 uint8_t advertising_event_type;
julientiron 0:3d641e170a74 177 } PACKED gap_set_non_connectable_cp;
julientiron 0:3d641e170a74 178 #define GAP_SET_NON_CONNECTABLE_CP_SIZE 1
julientiron 0:3d641e170a74 179
julientiron 0:3d641e170a74 180 #define OCF_GAP_SET_UNDIRECTED_CONNECTABLE 0x008C
julientiron 0:3d641e170a74 181 typedef struct __packed _gap_set_undirected_connectable_cp{
julientiron 0:3d641e170a74 182 uint8_t adv_filter_policy;
julientiron 0:3d641e170a74 183 uint8_t own_addr_type;
julientiron 0:3d641e170a74 184 } PACKED gap_set_undirected_connectable_cp;
julientiron 0:3d641e170a74 185 #define GAP_SET_UNDIRECTED_CONNECTABLE_CP_SIZE 2
julientiron 0:3d641e170a74 186
julientiron 0:3d641e170a74 187 #define OCF_GAP_SLAVE_SECURITY_REQUEST 0x008D
julientiron 0:3d641e170a74 188 typedef struct __packed _gap_slave_security_request_cp{
julientiron 0:3d641e170a74 189 uint8_t bonding;
julientiron 0:3d641e170a74 190 uint8_t mitm_protection;
julientiron 0:3d641e170a74 191 } PACKED gap_slave_security_request_cp;
julientiron 0:3d641e170a74 192 #define GAP_SLAVE_SECURITY_REQUEST_CP_SIZE 2
julientiron 0:3d641e170a74 193
julientiron 0:3d641e170a74 194 #define OCF_GAP_UPDATE_ADV_DATA 0x008E
julientiron 0:3d641e170a74 195
julientiron 0:3d641e170a74 196 #define OCF_GAP_DELETE_AD_TYPE 0x008F
julientiron 0:3d641e170a74 197 typedef struct __packed _gap_delete_ad_type_cp{
julientiron 0:3d641e170a74 198 uint8_t ad_type;
julientiron 0:3d641e170a74 199 } PACKED gap_delete_ad_type_cp;
julientiron 0:3d641e170a74 200 #define GAP_DELETE_AD_TYPE_CP_SIZE 1
julientiron 0:3d641e170a74 201
julientiron 0:3d641e170a74 202 #define OCF_GAP_GET_SECURITY_LEVEL 0x0090
julientiron 0:3d641e170a74 203 typedef struct __packed _gap_get_security_level_rp{
julientiron 0:3d641e170a74 204 uint8_t status;
julientiron 0:3d641e170a74 205 uint8_t mitm_protection;
julientiron 0:3d641e170a74 206 uint8_t bonding;
julientiron 0:3d641e170a74 207 uint8_t oob_data;
julientiron 0:3d641e170a74 208 uint8_t passkey_required;
julientiron 0:3d641e170a74 209 } PACKED gap_get_security_level_rp;
julientiron 0:3d641e170a74 210 #define GAP_GET_SECURITY_LEVEL_RP_SIZE 5
julientiron 0:3d641e170a74 211
julientiron 0:3d641e170a74 212 #define OCF_GAP_SET_EVT_MASK 0x0091
julientiron 0:3d641e170a74 213 typedef struct __packed _gap_set_evt_mask_cp{
julientiron 0:3d641e170a74 214 uint16_t evt_mask;
julientiron 0:3d641e170a74 215 } PACKED gap_set_evt_mask_cp;
julientiron 0:3d641e170a74 216 #define GAP_SET_EVT_MASK_CP_SIZE 2
julientiron 0:3d641e170a74 217
julientiron 0:3d641e170a74 218 #define OCF_GAP_CONFIGURE_WHITELIST 0x0092
julientiron 0:3d641e170a74 219
julientiron 0:3d641e170a74 220 #define OCF_GAP_TERMINATE 0x0093
julientiron 0:3d641e170a74 221 typedef struct __packed _gap_terminate_cp{
julientiron 0:3d641e170a74 222 uint16_t handle;
julientiron 0:3d641e170a74 223 uint8_t reason;
julientiron 0:3d641e170a74 224 } PACKED gap_terminate_cp;
julientiron 0:3d641e170a74 225 #define GAP_TERMINATE_CP_SIZE 3
julientiron 0:3d641e170a74 226
julientiron 0:3d641e170a74 227 #define OCF_GAP_CLEAR_SECURITY_DB 0x0094
julientiron 0:3d641e170a74 228
julientiron 0:3d641e170a74 229 #define OCF_GAP_ALLOW_REBOND_DB 0x0095
julientiron 0:3d641e170a74 230
julientiron 0:3d641e170a74 231 #define OCF_GAP_START_LIMITED_DISCOVERY_PROC 0x0096
julientiron 0:3d641e170a74 232 typedef struct __packed _gap_start_limited_discovery_proc_cp{
julientiron 0:3d641e170a74 233 uint16_t scanInterval;
julientiron 0:3d641e170a74 234 uint16_t scanWindow;
julientiron 0:3d641e170a74 235 uint8_t own_address_type;
julientiron 0:3d641e170a74 236 uint8_t filterDuplicates;
julientiron 0:3d641e170a74 237 } PACKED gap_start_limited_discovery_proc_cp;
julientiron 0:3d641e170a74 238 #define GAP_START_LIMITED_DISCOVERY_PROC_CP_SIZE 6
julientiron 0:3d641e170a74 239
julientiron 0:3d641e170a74 240 #define OCF_GAP_START_GENERAL_DISCOVERY_PROC 0x0097
julientiron 0:3d641e170a74 241 typedef struct __packed _gap_start_general_discovery_proc_cp{
julientiron 0:3d641e170a74 242 uint16_t scanInterval;
julientiron 0:3d641e170a74 243 uint16_t scanWindow;
julientiron 0:3d641e170a74 244 uint8_t own_address_type;
julientiron 0:3d641e170a74 245 uint8_t filterDuplicates;
julientiron 0:3d641e170a74 246 } PACKED gap_start_general_discovery_proc_cp;
julientiron 0:3d641e170a74 247 #define GAP_START_GENERAL_DISCOVERY_PROC_CP_SIZE 6
julientiron 0:3d641e170a74 248
julientiron 0:3d641e170a74 249 #define OCF_GAP_START_AUTO_CONN_ESTABLISHMENT 0x0099
julientiron 0:3d641e170a74 250
julientiron 0:3d641e170a74 251 #define OCF_GAP_CREATE_CONNECTION 0x009C
julientiron 0:3d641e170a74 252 typedef struct __packed _gap_create_connection_cp{
julientiron 0:3d641e170a74 253 uint16_t scanInterval;
julientiron 0:3d641e170a74 254 uint16_t scanWindow;
julientiron 0:3d641e170a74 255 uint8_t peer_bdaddr_type;
julientiron 0:3d641e170a74 256 tBDAddr peer_bdaddr;
julientiron 0:3d641e170a74 257 uint8_t own_bdaddr_type;
julientiron 0:3d641e170a74 258 uint16_t conn_min_interval;
julientiron 0:3d641e170a74 259 uint16_t conn_max_interval;
julientiron 0:3d641e170a74 260 uint16_t conn_latency;
julientiron 0:3d641e170a74 261 uint16_t supervision_timeout;
julientiron 0:3d641e170a74 262 uint16_t min_conn_length;
julientiron 0:3d641e170a74 263 uint16_t max_conn_length;
julientiron 0:3d641e170a74 264 } PACKED gap_create_connection_cp;
julientiron 0:3d641e170a74 265 #define GAP_CREATE_CONNECTION_CP_SIZE 24
julientiron 0:3d641e170a74 266
julientiron 0:3d641e170a74 267 #define OCF_GAP_TERMINATE_GAP_PROCEDURE 0x009D
julientiron 0:3d641e170a74 268
julientiron 0:3d641e170a74 269 #define OCF_GATT_INIT 0x0101
julientiron 0:3d641e170a74 270
julientiron 0:3d641e170a74 271 #define OCF_GATT_ADD_SERV 0x0102
julientiron 0:3d641e170a74 272 typedef struct __packed _gatt_add_serv_rp{
julientiron 0:3d641e170a74 273 uint8_t status;
julientiron 0:3d641e170a74 274 uint16_t handle;
julientiron 0:3d641e170a74 275 } PACKED gatt_add_serv_rp;
julientiron 0:3d641e170a74 276 #define GATT_ADD_SERV_RP_SIZE 3
julientiron 0:3d641e170a74 277
julientiron 0:3d641e170a74 278 #define OCF_GATT_INCLUDE_SERV 0x0103
julientiron 0:3d641e170a74 279 typedef struct __packed _gatt_include_serv_rp{
julientiron 0:3d641e170a74 280 uint8_t status;
julientiron 0:3d641e170a74 281 uint16_t handle;
julientiron 0:3d641e170a74 282 } PACKED gatt_include_serv_rp;
julientiron 0:3d641e170a74 283 #define GATT_INCLUDE_SERV_RP_SIZE 3
julientiron 0:3d641e170a74 284
julientiron 0:3d641e170a74 285 #define OCF_GATT_ADD_CHAR 0x0104
julientiron 0:3d641e170a74 286 typedef struct __packed _gatt_add_char_rp{
julientiron 0:3d641e170a74 287 uint8_t status;
julientiron 0:3d641e170a74 288 uint16_t handle;
julientiron 0:3d641e170a74 289 } PACKED gatt_add_char_rp;
julientiron 0:3d641e170a74 290 #define GATT_ADD_CHAR_RP_SIZE 3
julientiron 0:3d641e170a74 291
julientiron 0:3d641e170a74 292 #define OCF_GATT_ADD_CHAR_DESC 0x0105
julientiron 0:3d641e170a74 293 typedef struct __packed _gatt_add_char_desc_rp{
julientiron 0:3d641e170a74 294 uint8_t status;
julientiron 0:3d641e170a74 295 uint16_t handle;
julientiron 0:3d641e170a74 296 } PACKED gatt_add_char_desc_rp;
julientiron 0:3d641e170a74 297 #define GATT_ADD_CHAR_DESC_RP_SIZE 3
julientiron 0:3d641e170a74 298
julientiron 0:3d641e170a74 299 #define OCF_GATT_UPD_CHAR_VAL 0x0106
julientiron 0:3d641e170a74 300
julientiron 0:3d641e170a74 301 #define OCF_GATT_DEL_CHAR 0x0107
julientiron 0:3d641e170a74 302 typedef struct __packed _gatt_del_char_cp{
julientiron 0:3d641e170a74 303 uint16_t service_handle;
julientiron 0:3d641e170a74 304 uint16_t char_handle;
julientiron 0:3d641e170a74 305 } PACKED gatt_del_char_cp;
julientiron 0:3d641e170a74 306 #define GATT_DEL_CHAR_CP_SIZE 4
julientiron 0:3d641e170a74 307
julientiron 0:3d641e170a74 308 #define OCF_GATT_DEL_SERV 0x0108
julientiron 0:3d641e170a74 309 typedef struct __packed _gatt_del_serv_cp{
julientiron 0:3d641e170a74 310 uint16_t service_handle;
julientiron 0:3d641e170a74 311 } PACKED gatt_del_serv_cp;
julientiron 0:3d641e170a74 312 #define GATT_DEL_SERV_CP_SIZE 2
julientiron 0:3d641e170a74 313
julientiron 0:3d641e170a74 314 #define OCF_GATT_DEL_INC_SERV 0x0109
julientiron 0:3d641e170a74 315 typedef struct __packed _gatt_del_inc_serv_cp{
julientiron 0:3d641e170a74 316 uint16_t service_handle;
julientiron 0:3d641e170a74 317 uint16_t inc_serv_handle;
julientiron 0:3d641e170a74 318 } PACKED gatt_del_inc_serv_cp;
julientiron 0:3d641e170a74 319 #define GATT_DEL_INC_SERV_CP_SIZE 4
julientiron 0:3d641e170a74 320
julientiron 0:3d641e170a74 321 #define OCF_GATT_SET_EVT_MASK 0x010A
julientiron 0:3d641e170a74 322 typedef struct __packed _gatt_set_evt_mask_cp{
julientiron 0:3d641e170a74 323 uint32_t evt_mask;
julientiron 0:3d641e170a74 324 } PACKED gatt_set_evt_mask_cp;
julientiron 0:3d641e170a74 325 #define GATT_SET_EVT_MASK_CP_SIZE 4
julientiron 0:3d641e170a74 326
julientiron 0:3d641e170a74 327 #define OCF_GATT_DISC_ALL_PRIM_SERVICES 0X0112
julientiron 0:3d641e170a74 328 typedef struct __packed _gatt_disc_all_prim_serivces_cp{
julientiron 0:3d641e170a74 329 uint16_t conn_handle;
julientiron 0:3d641e170a74 330 } PACKED gatt_disc_all_prim_services_cp;
julientiron 0:3d641e170a74 331 #define GATT_DISC_ALL_PRIM_SERVICES_CP_SIZE 2
julientiron 0:3d641e170a74 332
julientiron 0:3d641e170a74 333 #define OCF_GATT_FIND_INCLUDED_SERVICES 0X0114
julientiron 0:3d641e170a74 334 typedef struct __packed _gatt_disc_find_included_services_cp{
julientiron 0:3d641e170a74 335 uint16_t conn_handle;
julientiron 0:3d641e170a74 336 uint16_t start_handle;
julientiron 0:3d641e170a74 337 uint16_t end_handle;
julientiron 0:3d641e170a74 338 } PACKED gatt_find_included_services_cp;
julientiron 0:3d641e170a74 339 #define GATT_FIND_INCLUDED_SERVICES_CP_SIZE 6
julientiron 0:3d641e170a74 340
julientiron 0:3d641e170a74 341 #define OCF_GATT_DISC_ALL_CHARAC_OF_SERV 0X0115
julientiron 0:3d641e170a74 342 typedef struct __packed _gatt_disc_all_charac_of_serv_cp{
julientiron 0:3d641e170a74 343 uint16_t conn_handle;
julientiron 0:3d641e170a74 344 uint16_t start_attr_handle;
julientiron 0:3d641e170a74 345 uint16_t end_attr_handle;
julientiron 0:3d641e170a74 346 } PACKED gatt_disc_all_charac_of_serv_cp;
julientiron 0:3d641e170a74 347 #define GATT_DISC_ALL_CHARAC_OF_SERV_CP_SIZE 6
julientiron 0:3d641e170a74 348
julientiron 0:3d641e170a74 349 #define OCF_GATT_DISC_ALL_CHARAC_DESCRIPTORS 0X0117
julientiron 0:3d641e170a74 350 typedef struct __packed _gatt_disc_all_charac_descriptors_cp{
julientiron 0:3d641e170a74 351 uint16_t conn_handle;
julientiron 0:3d641e170a74 352 uint16_t char_val_handle;
julientiron 0:3d641e170a74 353 uint16_t char_end_handle;
julientiron 0:3d641e170a74 354 } PACKED gatt_disc_all_charac_descriptors_cp;
julientiron 0:3d641e170a74 355 #define GATT_DISC_ALL_CHARAC_DESCRIPTORS_CP_SIZE 6
julientiron 0:3d641e170a74 356
julientiron 0:3d641e170a74 357 #define OCF_GATT_READ_CHARAC_VAL 0x0118
julientiron 0:3d641e170a74 358 typedef struct __packed _gatt_read_charac_val_cp{
julientiron 0:3d641e170a74 359 uint16_t conn_handle;
julientiron 0:3d641e170a74 360 uint16_t attr_handle;
julientiron 0:3d641e170a74 361 } PACKED gatt_read_charac_val_cp;
julientiron 0:3d641e170a74 362 #define GATT_READ_CHARAC_VAL_CP_SIZE 4
julientiron 0:3d641e170a74 363
julientiron 0:3d641e170a74 364 #define OCF_GATT_READ_LONG_CHARAC_VAL 0x011A
julientiron 0:3d641e170a74 365 typedef struct __packed _gatt_read_long_charac_val_cp{
julientiron 0:3d641e170a74 366 uint16_t conn_handle;
julientiron 0:3d641e170a74 367 uint16_t attr_handle;
julientiron 0:3d641e170a74 368 uint16_t val_offset;
julientiron 0:3d641e170a74 369 } PACKED gatt_read_long_charac_val_cp;
julientiron 0:3d641e170a74 370 #define GATT_READ_LONG_CHARAC_VAL_CP_SIZE 6
julientiron 0:3d641e170a74 371
julientiron 0:3d641e170a74 372 #define OCF_GATT_WRITE_CHAR_VALUE 0x011C
julientiron 0:3d641e170a74 373 #define OCF_GATT_WRITE_CHAR_DESCRIPTOR 0x0121
julientiron 0:3d641e170a74 374
julientiron 0:3d641e170a74 375 #define OCF_GATT_READ_CHAR_DESCRIPTOR 0x0122
julientiron 0:3d641e170a74 376
julientiron 0:3d641e170a74 377 #define OCF_GATT_WRITE_WITHOUT_RESPONSE 0x0123
julientiron 0:3d641e170a74 378
julientiron 0:3d641e170a74 379 #define OCF_GATT_SIGNED_WRITE_WITHOUT_RESPONSE 0x0124
julientiron 0:3d641e170a74 380
julientiron 0:3d641e170a74 381 #define OCF_GATT_CONFIRM_INDICATION 0x0125
julientiron 0:3d641e170a74 382
julientiron 0:3d641e170a74 383 #define OCF_GATT_WRITE_RESPONSE 0x0126
julientiron 0:3d641e170a74 384
julientiron 0:3d641e170a74 385 #define OCF_GATT_ALLOW_READ 0x0127
julientiron 0:3d641e170a74 386 typedef struct __packed _gatt_allow_read_cp{
julientiron 0:3d641e170a74 387 uint16_t conn_handle;
julientiron 0:3d641e170a74 388 } PACKED gatt_allow_read_cp;
julientiron 0:3d641e170a74 389 #define GATT_ALLOW_READ_CP_SIZE 2
julientiron 0:3d641e170a74 390
julientiron 0:3d641e170a74 391 #define OCF_GATT_SET_DESC_VAL 0x0129
julientiron 0:3d641e170a74 392
julientiron 0:3d641e170a74 393 #define OCF_L2CAP_CONN_PARAM_UPD_REQ 0x0181
julientiron 0:3d641e170a74 394 typedef struct __packed _l2cap_conn_param_upd_cp{
julientiron 0:3d641e170a74 395 uint16_t handle;
julientiron 0:3d641e170a74 396 uint16_t interval_min;
julientiron 0:3d641e170a74 397 uint16_t interval_max;
julientiron 0:3d641e170a74 398 uint16_t slave_latency;
julientiron 0:3d641e170a74 399 uint16_t timeout_multiplier;
julientiron 0:3d641e170a74 400 } PACKED l2cap_conn_param_upd_cp;
julientiron 0:3d641e170a74 401 #define L2CAP_CONN_PARAM_UPD_REQ_CP_SIZE 10
julientiron 0:3d641e170a74 402
julientiron 0:3d641e170a74 403
julientiron 0:3d641e170a74 404 /*------------- Events -------------*/
julientiron 0:3d641e170a74 405
julientiron 0:3d641e170a74 406 #define EVT_VENDOR 0xFF /* The event code in the hci_event_pckt structure */
julientiron 0:3d641e170a74 407 typedef struct __packed _evt_blue_aci{
julientiron 0:3d641e170a74 408 uint16_t ecode;
julientiron 0:3d641e170a74 409 uint8_t data[0];
julientiron 0:3d641e170a74 410 } PACKED evt_blue_aci;
julientiron 0:3d641e170a74 411
julientiron 0:3d641e170a74 412 /* HCI vendor specific event */
julientiron 0:3d641e170a74 413 #define EVT_BLUE_INITIALIZED (0x0001)
julientiron 0:3d641e170a74 414
julientiron 0:3d641e170a74 415 /* GAP Vendor specific event codes */
julientiron 0:3d641e170a74 416 #define EVT_BLUE_GAP_SET_LIMITED_DISCOVERABLE (0x0400)
julientiron 0:3d641e170a74 417 #define EVT_BLUE_GAP_PAIRING_CMPLT (0x0401)
julientiron 0:3d641e170a74 418 #define EVT_BLUE_GAP_PASS_KEY_REQUEST (0x0402)
julientiron 0:3d641e170a74 419 #define EVT_BLUE_GAP_AUTHORIZATION_REQUEST (0x0403)
julientiron 0:3d641e170a74 420 #define EVT_BLUE_GAP_SLAVE_SECURITY_INITIATED (0X0404)
julientiron 0:3d641e170a74 421 #define EVT_BLUE_GAP_DEVICE_FOUND (0x0406)
julientiron 0:3d641e170a74 422 typedef struct __packed _evt_gap_device_found{
julientiron 0:3d641e170a74 423 uint8_t peer_address_type;
julientiron 0:3d641e170a74 424 uint8_t peer_address[6];
julientiron 0:3d641e170a74 425 } PACKED evt_gap_device_found;
julientiron 0:3d641e170a74 426 #define EVT_BLUE_GAP_PROCEDURE_COMPLETE (0x0407)
julientiron 0:3d641e170a74 427 typedef struct __packed _evt_gap_procedure_complete{
julientiron 0:3d641e170a74 428 uint8_t procedure_code;
julientiron 0:3d641e170a74 429 uint8_t status;
julientiron 0:3d641e170a74 430 uint8_t data[0];
julientiron 0:3d641e170a74 431 } PACKED evt_gap_procedure_complete;
julientiron 0:3d641e170a74 432
julientiron 0:3d641e170a74 433 /* L2CAP vendor specific event codes */
julientiron 0:3d641e170a74 434 #define EVT_BLUE_L2CAP_CONN_UPD_RESP (0x0800)
julientiron 0:3d641e170a74 435 typedef struct __packed _evt_l2cap_conn_param_upd_resp{
julientiron 0:3d641e170a74 436 uint16_t conn_handle;
julientiron 0:3d641e170a74 437 uint8_t packet_length;
julientiron 0:3d641e170a74 438 uint8_t code;
julientiron 0:3d641e170a74 439 uint8_t id;
julientiron 0:3d641e170a74 440 uint16_t l2c_lenght;
julientiron 0:3d641e170a74 441 uint16_t result;
julientiron 0:3d641e170a74 442 } PACKED evt_l2cap_conn_param_upd_resp;
julientiron 0:3d641e170a74 443 #define EVT_L2CAP_CONN_PARAM_UPD_RESP_SIZE 9
julientiron 0:3d641e170a74 444
julientiron 0:3d641e170a74 445 #define EVT_BLUE_L2CAP_PROCEDURE_TIMEOUT (0x0801)
julientiron 0:3d641e170a74 446
julientiron 0:3d641e170a74 447
julientiron 0:3d641e170a74 448 /* vendor specific debug events */
julientiron 0:3d641e170a74 449 #define EVT_BLUE_DEBUG (0x1000)
julientiron 0:3d641e170a74 450
julientiron 0:3d641e170a74 451 /* GATT vendor specific event codes */
julientiron 0:3d641e170a74 452 #define EVT_BLUE_GATT_ATTRIBUTE_MODIFIED (0x0C01)
julientiron 0:3d641e170a74 453 typedef struct __packed _evt_gatt_attr_modified{
julientiron 0:3d641e170a74 454 uint16_t conn_handle;
julientiron 0:3d641e170a74 455 uint16_t attr_handle;
julientiron 0:3d641e170a74 456 uint8_t data_length;
julientiron 0:3d641e170a74 457 uint8_t att_data[0];
julientiron 0:3d641e170a74 458 } PACKED evt_gatt_attr_modified;
julientiron 0:3d641e170a74 459
julientiron 0:3d641e170a74 460 #define EVT_BLUE_GATT_PROCEDURE_TIMEOUT (0x0C02)
julientiron 0:3d641e170a74 461 #define EVT_BLUE_EXCHANGE_MTU_RESP (0x0C03)
julientiron 0:3d641e170a74 462 #define EVT_BLUE_ATT_FIND_INFORMATION_RESP (0x0C04)
julientiron 0:3d641e170a74 463 typedef struct __packed _evt_att_find_information_resp{
julientiron 0:3d641e170a74 464 uint16_t conn_handle;
julientiron 0:3d641e170a74 465 uint8_t event_data_length;
julientiron 0:3d641e170a74 466 uint8_t format;
julientiron 0:3d641e170a74 467 uint8_t handle_uuid_pair[0];
julientiron 0:3d641e170a74 468 } PACKED evt_att_find_information_resp;
julientiron 0:3d641e170a74 469
julientiron 0:3d641e170a74 470 #define EVT_BLUE_ATT_FIND_BY_TYPE_VAL_RESP (0x0C05)
julientiron 0:3d641e170a74 471 #define EVT_BLUE_ATT_READ_BY_TYPE_RESP (0x0C06)
julientiron 0:3d641e170a74 472 typedef struct __packed _evt_att_read_by_type_resp{
julientiron 0:3d641e170a74 473 uint16_t conn_handle;
julientiron 0:3d641e170a74 474 uint8_t event_data_length;
julientiron 0:3d641e170a74 475 uint8_t handle_value_pair_length;
julientiron 0:3d641e170a74 476 uint8_t handle_value_pair[0];
julientiron 0:3d641e170a74 477 } PACKED evt_att_read_by_type_resp;
julientiron 0:3d641e170a74 478
julientiron 0:3d641e170a74 479 #define EVT_BLUE_ATT_READ_RESP (0x0C07)
julientiron 0:3d641e170a74 480 #define EVT_BLUE_ATT_READ_BLOB_RESP (0x0C08)
julientiron 0:3d641e170a74 481 #define EVT_BLUE_ATT_READ_MULTIPLE_RESP (0x0C09)
julientiron 0:3d641e170a74 482 #define EVT_BLUE_ATT_READ_BY_GROUP_RESP (0x0C0A)
julientiron 0:3d641e170a74 483 typedef struct __packed _evt_att_read_by_group_resp{
julientiron 0:3d641e170a74 484 uint16_t conn_handle;
julientiron 0:3d641e170a74 485 uint8_t event_data_length;
julientiron 0:3d641e170a74 486 uint8_t handle_value_pair_length;
julientiron 0:3d641e170a74 487 uint8_t handle_value_pair[0];
julientiron 0:3d641e170a74 488 } PACKED evt_att_read_by_group_resp;
julientiron 0:3d641e170a74 489
julientiron 0:3d641e170a74 490 #define EVT_BLUE_ATT_WRITE_RESP (0x0C0B)
julientiron 0:3d641e170a74 491 #define EVT_BLUE_ATT_PREPARE_WRITE_RESP (0x0C0C)
julientiron 0:3d641e170a74 492 #define EVT_BLUE_ATT_EXEC_WRITE_RESP (0x0C0D)
julientiron 0:3d641e170a74 493 #define EVT_BLUE_GATT_INDICATION (0x0C0E)
julientiron 0:3d641e170a74 494 #define EVT_BLUE_GATT_NOTIFICATION (0x0C0F)
julientiron 0:3d641e170a74 495 typedef struct __packed _evt_gatt_notification{
julientiron 0:3d641e170a74 496 uint16_t conn_handle;
julientiron 0:3d641e170a74 497 uint8_t data_length; // Lenght of attribute value + handle.
julientiron 0:3d641e170a74 498 uint16_t attr_handle;
julientiron 0:3d641e170a74 499 uint8_t attr_value[0];
julientiron 0:3d641e170a74 500 } PACKED evt_gatt_attr_notification;
julientiron 0:3d641e170a74 501
julientiron 0:3d641e170a74 502 #define EVT_BLUE_GATT_PROCEDURE_COMPLETE (0x0C10)
julientiron 0:3d641e170a74 503 typedef struct __packed _evt_gatt_procedure_complete{
julientiron 0:3d641e170a74 504 uint16_t conn_handle;
julientiron 0:3d641e170a74 505 uint8_t data_length;
julientiron 0:3d641e170a74 506 uint8_t data[0];
julientiron 0:3d641e170a74 507 } PACKED evt_gatt_procedure_complete;
julientiron 0:3d641e170a74 508
julientiron 0:3d641e170a74 509 #define EVT_BLUE_GATT_ERROR_RESP (0x0C11)
julientiron 0:3d641e170a74 510 #define EVT_BLUE_GATT_DISC_READ_CHAR_BY_UUID_RESP (0x0C12)
julientiron 0:3d641e170a74 511 #define EVT_BLUE_GATT_WRITE_PERMIT_REQ (0x0C13)
julientiron 0:3d641e170a74 512 typedef struct __packed _evt_gatt_write_permit_req{
julientiron 0:3d641e170a74 513 uint16_t conn_handle;
julientiron 0:3d641e170a74 514 uint16_t attr_handle;
julientiron 0:3d641e170a74 515 uint8_t data_length;
julientiron 0:3d641e170a74 516 uint8_t offset_data[0];
julientiron 0:3d641e170a74 517 } PACKED evt_gatt_write_permit_req;
julientiron 0:3d641e170a74 518
julientiron 0:3d641e170a74 519 #define EVT_BLUE_GATT_READ_PERMIT_REQ (0x0C14)
julientiron 0:3d641e170a74 520 typedef struct __packed _evt_gatt_read_permit_req{
julientiron 0:3d641e170a74 521 uint16_t conn_handle;
julientiron 0:3d641e170a74 522 uint16_t attr_handle;
julientiron 0:3d641e170a74 523 uint8_t data_length;
julientiron 0:3d641e170a74 524 uint8_t offset_data[0];
julientiron 0:3d641e170a74 525 } PACKED evt_gatt_read_permit_req;
julientiron 0:3d641e170a74 526
julientiron 0:3d641e170a74 527 #define EVT_BLUE_GATT_READ_MULTI_PERMIT_REQ (0x0C15)
julientiron 0:3d641e170a74 528
julientiron 0:3d641e170a74 529
julientiron 0:3d641e170a74 530
julientiron 0:3d641e170a74 531 #endif /* __BLUENRG_HCI_INTERNAL_H_ */