NUCLEO-F401RE + BlueNRG shield client test (TI Sensortag reading)

Dependencies:   mbed-src

Committer:
ostapsky
Date:
Sat Aug 16 11:00:04 2014 +0000
Revision:
0:aa1e012ec210
CLIENT mode first revision

Who changed what in which revision?

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