Devchannel Team / X_NUCLEO_IDB0XA1

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:
126:32039585a969
Changing pin D13

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Silvio Lucio Oliva 70:d20d30f59b1c 1 /******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
Silvio Lucio Oliva 70:d20d30f59b1c 2 * File Name : bluenrg_aci_const.h
Silvio Lucio Oliva 70:d20d30f59b1c 3 * Author : AMS - AAS
Silvio Lucio Oliva 70:d20d30f59b1c 4 * Version : V1.0.0
Silvio Lucio Oliva 70:d20d30f59b1c 5 * Date : 26-Jun-2014
Silvio Lucio Oliva 70:d20d30f59b1c 6 * Description : Header file with ACI definitions for BlueNRG FW6.3.
Silvio Lucio Oliva 70:d20d30f59b1c 7 ********************************************************************************
Silvio Lucio Oliva 70:d20d30f59b1c 8 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
Silvio Lucio Oliva 70:d20d30f59b1c 9 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
Silvio Lucio Oliva 70:d20d30f59b1c 10 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
Silvio Lucio Oliva 70:d20d30f59b1c 11 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
Silvio Lucio Oliva 70:d20d30f59b1c 12 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
Silvio Lucio Oliva 70:d20d30f59b1c 13 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
Silvio Lucio Oliva 70:d20d30f59b1c 14 *******************************************************************************/
Silvio Lucio Oliva 70:d20d30f59b1c 15
Silvio Lucio Oliva 70:d20d30f59b1c 16 #ifndef __BLUENRG_ACI_CONST_H_
Silvio Lucio Oliva 70:d20d30f59b1c 17 #define __BLUENRG_ACI_CONST_H_
Silvio Lucio Oliva 70:d20d30f59b1c 18
Silvio Lucio Oliva 70:d20d30f59b1c 19 #include "compiler.h"
Silvio Lucio Oliva 70:d20d30f59b1c 20 #include "link_layer.h"
Silvio Lucio Oliva 70:d20d30f59b1c 21 #include "hci_const.h"
Silvio Lucio Oliva 70:d20d30f59b1c 22 #include "bluenrg_gatt_server.h"
Silvio Lucio Oliva 70:d20d30f59b1c 23
Silvio Lucio Oliva 70:d20d30f59b1c 24 #ifndef DOXYGEN_SHOULD_SKIP_THIS
Silvio Lucio Oliva 70:d20d30f59b1c 25
Silvio Lucio Oliva 70:d20d30f59b1c 26 #define OCF_HAL_WRITE_CONFIG_DATA 0x000C
Silvio Lucio Oliva 70:d20d30f59b1c 27
Silvio Lucio Oliva 70:d20d30f59b1c 28 #define OCF_HAL_SET_TX_POWER_LEVEL 0x000F
Silvio Lucio Oliva 70:d20d30f59b1c 29 typedef __packed struct _hal_set_tx_power_level_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 30 uint8_t en_high_power;
Silvio Lucio Oliva 70:d20d30f59b1c 31 uint8_t pa_level;
Silvio Lucio Oliva 70:d20d30f59b1c 32 } PACKED hal_set_tx_power_level_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 33 #define HAL_SET_TX_POWER_LEVEL_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 34
Silvio Lucio Oliva 70:d20d30f59b1c 35 #define OCF_HAL_DEVICE_STANDBY 0x0013
Silvio Lucio Oliva 70:d20d30f59b1c 36
Silvio Lucio Oliva 70:d20d30f59b1c 37 #define OCF_HAL_TONE_START 0x0015
Silvio Lucio Oliva 70:d20d30f59b1c 38 typedef __packed struct _hal_tone_start_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 39 uint8_t rf_channel;
Silvio Lucio Oliva 70:d20d30f59b1c 40 } PACKED hal_tone_start_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 41 #define HAL_TONE_START_CP_SIZE 1
Silvio Lucio Oliva 70:d20d30f59b1c 42
Silvio Lucio Oliva 70:d20d30f59b1c 43 #define OCF_HAL_TONE_STOP 0x0016
Silvio Lucio Oliva 70:d20d30f59b1c 44
Silvio Lucio Oliva 70:d20d30f59b1c 45 #define OCF_UPDATER_START 0x0020
Silvio Lucio Oliva 70:d20d30f59b1c 46 #define OCF_UPDATER_REBOOT 0x0021
Silvio Lucio Oliva 70:d20d30f59b1c 47
Silvio Lucio Oliva 70:d20d30f59b1c 48 #define OCF_GET_UPDATER_VERSION 0x0022
Silvio Lucio Oliva 70:d20d30f59b1c 49 typedef __packed struct _get_updater_version_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 50 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 51 uint8_t version;
Silvio Lucio Oliva 70:d20d30f59b1c 52 } PACKED get_updater_version_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 53 #define GET_UPDATER_VERSION_RP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 54
Silvio Lucio Oliva 70:d20d30f59b1c 55 #define OCF_GET_UPDATER_BUFSIZE 0x0023
Silvio Lucio Oliva 70:d20d30f59b1c 56 typedef __packed struct _get_updater_bufsize_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 57 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 58 uint8_t buffer_size;
Silvio Lucio Oliva 70:d20d30f59b1c 59 } PACKED get_updater_bufsize_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 60 #define GET_UPDATER_BUFSIZE_RP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 61
Silvio Lucio Oliva 70:d20d30f59b1c 62 #define OCF_UPDATER_ERASE_BLUE_FLAG 0x0024
Silvio Lucio Oliva 70:d20d30f59b1c 63
Silvio Lucio Oliva 70:d20d30f59b1c 64 #define OCF_UPDATER_RESET_BLUE_FLAG 0x0025
Silvio Lucio Oliva 70:d20d30f59b1c 65
Silvio Lucio Oliva 70:d20d30f59b1c 66 #define OCF_UPDATER_ERASE_SECTOR 0x0026
Silvio Lucio Oliva 70:d20d30f59b1c 67 typedef __packed struct _updater_erase_sector_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 68 uint32_t address;
Silvio Lucio Oliva 70:d20d30f59b1c 69 } PACKED updater_erase_sector_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 70 #define UPDATER_ERASE_SECTOR_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 71
Silvio Lucio Oliva 70:d20d30f59b1c 72 #define OCF_UPDATER_PROG_DATA_BLOCK 0x0027
Silvio Lucio Oliva 70:d20d30f59b1c 73 #define UPDATER_PROG_DATA_BLOCK_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 74 typedef __packed struct _updater_prog_data_block_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 75 uint32_t address;
Silvio Lucio Oliva 70:d20d30f59b1c 76 uint16_t data_len;
Silvio Lucio Oliva 70:d20d30f59b1c 77 uint8_t data[HCI_MAX_PAYLOAD_SIZE-UPDATER_PROG_DATA_BLOCK_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 78 } PACKED updater_prog_data_block_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 79
Silvio Lucio Oliva 70:d20d30f59b1c 80 #define OCF_UPDATER_READ_DATA_BLOCK 0x0028
Silvio Lucio Oliva 70:d20d30f59b1c 81 typedef __packed struct _updater_read_data_block_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 82 uint32_t address;
Silvio Lucio Oliva 70:d20d30f59b1c 83 uint16_t data_len;
Silvio Lucio Oliva 70:d20d30f59b1c 84 } PACKED updater_read_data_block_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 85 #define UPDATER_READ_DATA_BLOCK_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 86 typedef __packed struct _updater_read_data_block_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 87 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 88 uint8_t data[VARIABLE_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 89 } PACKED updater_read_data_block_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 90 #define GET_UPDATER_BUFSIZE_RP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 91
Silvio Lucio Oliva 70:d20d30f59b1c 92 #define OCF_UPDATER_CALC_CRC 0x0029
Silvio Lucio Oliva 70:d20d30f59b1c 93 typedef __packed struct _updater_calc_crc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 94 uint32_t address;
Silvio Lucio Oliva 70:d20d30f59b1c 95 uint8_t num_sectors;
Silvio Lucio Oliva 70:d20d30f59b1c 96 } PACKED updater_calc_crc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 97 #define UPDATER_CALC_CRC_CP_SIZE 5
Silvio Lucio Oliva 70:d20d30f59b1c 98 typedef __packed struct _updater_calc_crc_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 99 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 100 uint32_t crc;
Silvio Lucio Oliva 70:d20d30f59b1c 101 } PACKED updater_calc_crc_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 102 #define UPDATER_CALC_CRC_RP_SIZE 5
Silvio Lucio Oliva 70:d20d30f59b1c 103
Silvio Lucio Oliva 70:d20d30f59b1c 104 #define OCF_UPDATER_HW_VERSION 0x002A
Silvio Lucio Oliva 70:d20d30f59b1c 105 typedef __packed struct _updater_hw_version_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 106 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 107 uint8_t version;
Silvio Lucio Oliva 70:d20d30f59b1c 108 } PACKED updater_hw_version_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 109 #define UPDATER_HW_VERSION_RP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 110
Silvio Lucio Oliva 70:d20d30f59b1c 111 #define OCF_GAP_SET_NON_DISCOVERABLE 0x0081
Silvio Lucio Oliva 70:d20d30f59b1c 112
Silvio Lucio Oliva 70:d20d30f59b1c 113 #define OCF_GAP_SET_LIMITED_DISCOVERABLE 0x0082
Silvio Lucio Oliva 70:d20d30f59b1c 114
Silvio Lucio Oliva 70:d20d30f59b1c 115 #define OCF_GAP_SET_DISCOVERABLE 0x0083
Silvio Lucio Oliva 70:d20d30f59b1c 116
Silvio Lucio Oliva 70:d20d30f59b1c 117 #define OCF_GAP_SET_DIRECT_CONNECTABLE 0x0084
apalmieri 126:32039585a969 118 typedef __packed struct _gap_set_direct_conectable_cp_IDB05A1{
Silvio Lucio Oliva 70:d20d30f59b1c 119 uint8_t own_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 120 uint8_t directed_adv_type;
Silvio Lucio Oliva 70:d20d30f59b1c 121 uint8_t direct_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 122 tBDAddr direct_bdaddr;
apalmieri 126:32039585a969 123 } PACKED gap_set_direct_conectable_cp_IDB05A1;
apalmieri 126:32039585a969 124
apalmieri 126:32039585a969 125 typedef __packed struct _gap_set_direct_conectable_cp_IDB04A1{
apalmieri 126:32039585a969 126 uint8_t own_bdaddr_type;
apalmieri 126:32039585a969 127 uint8_t direct_bdaddr_type;
apalmieri 126:32039585a969 128 tBDAddr direct_bdaddr;
apalmieri 126:32039585a969 129 } PACKED gap_set_direct_conectable_cp_IDB04A1;
Silvio Lucio Oliva 70:d20d30f59b1c 130 #define GAP_SET_DIRECT_CONNECTABLE_CP_SIZE 8
Silvio Lucio Oliva 70:d20d30f59b1c 131
Silvio Lucio Oliva 70:d20d30f59b1c 132 #define OCF_GAP_SET_IO_CAPABILITY 0x0085
Silvio Lucio Oliva 70:d20d30f59b1c 133 typedef __packed struct _gap_set_io_capability_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 134 uint8_t io_capability;
Silvio Lucio Oliva 70:d20d30f59b1c 135 } PACKED gap_set_io_capability_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 136 #define GAP_SET_IO_CAPABILITY_CP_SIZE 1
Silvio Lucio Oliva 70:d20d30f59b1c 137
Silvio Lucio Oliva 70:d20d30f59b1c 138 #define OCF_GAP_SET_AUTH_REQUIREMENT 0x0086
Silvio Lucio Oliva 70:d20d30f59b1c 139 typedef __packed struct _gap_set_auth_requirement_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 140 uint8_t mitm_mode;
Silvio Lucio Oliva 70:d20d30f59b1c 141 uint8_t oob_enable;
Silvio Lucio Oliva 70:d20d30f59b1c 142 uint8_t oob_data[16];
Silvio Lucio Oliva 70:d20d30f59b1c 143 uint8_t min_encryption_key_size;
Silvio Lucio Oliva 70:d20d30f59b1c 144 uint8_t max_encryption_key_size;
Silvio Lucio Oliva 70:d20d30f59b1c 145 uint8_t use_fixed_pin;
Silvio Lucio Oliva 70:d20d30f59b1c 146 uint32_t fixed_pin;
Silvio Lucio Oliva 70:d20d30f59b1c 147 uint8_t bonding_mode;
Silvio Lucio Oliva 70:d20d30f59b1c 148 } PACKED gap_set_auth_requirement_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 149 #define GAP_SET_AUTH_REQUIREMENT_CP_SIZE 26
Silvio Lucio Oliva 70:d20d30f59b1c 150
Silvio Lucio Oliva 70:d20d30f59b1c 151 #define OCF_GAP_SET_AUTHOR_REQUIREMENT 0x0087
Silvio Lucio Oliva 70:d20d30f59b1c 152 typedef __packed struct _gap_set_author_requirement_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 153 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 154 uint8_t authorization_enable;
Silvio Lucio Oliva 70:d20d30f59b1c 155 } PACKED gap_set_author_requirement_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 156 #define GAP_SET_AUTHOR_REQUIREMENT_CP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 157
Silvio Lucio Oliva 70:d20d30f59b1c 158 #define OCF_GAP_PASSKEY_RESPONSE 0x0088
Silvio Lucio Oliva 70:d20d30f59b1c 159 typedef __packed struct _gap_passkey_response_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 160 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 161 uint32_t passkey;
Silvio Lucio Oliva 70:d20d30f59b1c 162 } PACKED gap_passkey_response_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 163 #define GAP_PASSKEY_RESPONSE_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 164
Silvio Lucio Oliva 70:d20d30f59b1c 165 #define OCF_GAP_AUTHORIZATION_RESPONSE 0x0089
Silvio Lucio Oliva 70:d20d30f59b1c 166 typedef __packed struct _gap_authorization_response_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 167 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 168 uint8_t authorize;
Silvio Lucio Oliva 70:d20d30f59b1c 169 } PACKED gap_authorization_response_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 170 #define GAP_AUTHORIZATION_RESPONSE_CP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 171
Silvio Lucio Oliva 70:d20d30f59b1c 172 #define OCF_GAP_INIT 0x008A
apalmieri 126:32039585a969 173 typedef __packed struct _gap_init_cp_IDB05A1{
Silvio Lucio Oliva 70:d20d30f59b1c 174 uint8_t role;
Silvio Lucio Oliva 70:d20d30f59b1c 175 uint8_t privacy_enabled;
Silvio Lucio Oliva 70:d20d30f59b1c 176 uint8_t device_name_char_len;
apalmieri 126:32039585a969 177 } PACKED gap_init_cp_IDB05A1;
apalmieri 126:32039585a969 178 #define GAP_INIT_CP_SIZE_IDB05A1 3
apalmieri 126:32039585a969 179
apalmieri 126:32039585a969 180 typedef __packed struct _gap_init_cp_IDB04A1{
Silvio Lucio Oliva 70:d20d30f59b1c 181 uint8_t role;
apalmieri 126:32039585a969 182 } PACKED gap_init_cp_IDB04A1;
apalmieri 126:32039585a969 183 #define GAP_INIT_CP_SIZE_IDB04A1 1
Silvio Lucio Oliva 70:d20d30f59b1c 184 typedef __packed struct _gap_init_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 185 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 186 uint16_t service_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 187 uint16_t dev_name_char_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 188 uint16_t appearance_char_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 189 } PACKED gap_init_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 190 #define GAP_INIT_RP_SIZE 7
Silvio Lucio Oliva 70:d20d30f59b1c 191
Silvio Lucio Oliva 70:d20d30f59b1c 192 #define OCF_GAP_SET_NON_CONNECTABLE 0x008B
apalmieri 126:32039585a969 193 typedef __packed struct _gap_set_non_connectable_cp_IDB05A1{
Silvio Lucio Oliva 70:d20d30f59b1c 194 uint8_t advertising_event_type;
Silvio Lucio Oliva 70:d20d30f59b1c 195 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 196 #endif
apalmieri 126:32039585a969 197 } PACKED gap_set_non_connectable_cp_IDB05A1;
apalmieri 126:32039585a969 198
apalmieri 126:32039585a969 199 typedef __packed struct _gap_set_non_connectable_cp_IDB04A1{
apalmieri 126:32039585a969 200 uint8_t advertising_event_type;
apalmieri 126:32039585a969 201 } PACKED gap_set_non_connectable_cp_IDB04A1;
Silvio Lucio Oliva 70:d20d30f59b1c 202
Silvio Lucio Oliva 70:d20d30f59b1c 203 #define OCF_GAP_SET_UNDIRECTED_CONNECTABLE 0x008C
Silvio Lucio Oliva 70:d20d30f59b1c 204 typedef __packed struct _gap_set_undirected_connectable_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 205 uint8_t adv_filter_policy;
Silvio Lucio Oliva 70:d20d30f59b1c 206 uint8_t own_addr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 207 } PACKED gap_set_undirected_connectable_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 208 #define GAP_SET_UNDIRECTED_CONNECTABLE_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 209
Silvio Lucio Oliva 70:d20d30f59b1c 210 #define OCF_GAP_SLAVE_SECURITY_REQUEST 0x008D
Silvio Lucio Oliva 70:d20d30f59b1c 211 typedef __packed struct _gap_slave_security_request_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 212 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 213 uint8_t bonding;
Silvio Lucio Oliva 70:d20d30f59b1c 214 uint8_t mitm_protection;
Silvio Lucio Oliva 70:d20d30f59b1c 215 } PACKED gap_slave_security_request_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 216 #define GAP_SLAVE_SECURITY_REQUEST_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 217
Silvio Lucio Oliva 70:d20d30f59b1c 218 #define OCF_GAP_UPDATE_ADV_DATA 0x008E
Silvio Lucio Oliva 70:d20d30f59b1c 219
Silvio Lucio Oliva 70:d20d30f59b1c 220 #define OCF_GAP_DELETE_AD_TYPE 0x008F
Silvio Lucio Oliva 70:d20d30f59b1c 221 typedef __packed struct _gap_delete_ad_type_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 222 uint8_t ad_type;
Silvio Lucio Oliva 70:d20d30f59b1c 223 } PACKED gap_delete_ad_type_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 224 #define GAP_DELETE_AD_TYPE_CP_SIZE 1
Silvio Lucio Oliva 70:d20d30f59b1c 225
Silvio Lucio Oliva 70:d20d30f59b1c 226 #define OCF_GAP_GET_SECURITY_LEVEL 0x0090
Silvio Lucio Oliva 70:d20d30f59b1c 227 typedef __packed struct _gap_get_security_level_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 228 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 229 uint8_t mitm_protection;
Silvio Lucio Oliva 70:d20d30f59b1c 230 uint8_t bonding;
Silvio Lucio Oliva 70:d20d30f59b1c 231 uint8_t oob_data;
Silvio Lucio Oliva 70:d20d30f59b1c 232 uint8_t passkey_required;
Silvio Lucio Oliva 70:d20d30f59b1c 233 } PACKED gap_get_security_level_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 234 #define GAP_GET_SECURITY_LEVEL_RP_SIZE 5
Silvio Lucio Oliva 70:d20d30f59b1c 235
Silvio Lucio Oliva 70:d20d30f59b1c 236 #define OCF_GAP_SET_EVT_MASK 0x0091
Silvio Lucio Oliva 70:d20d30f59b1c 237 typedef __packed struct _gap_set_evt_mask_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 238 uint16_t evt_mask;
Silvio Lucio Oliva 70:d20d30f59b1c 239 } PACKED gap_set_evt_mask_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 240 #define GAP_SET_EVT_MASK_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 241
Silvio Lucio Oliva 70:d20d30f59b1c 242 #define OCF_GAP_CONFIGURE_WHITELIST 0x0092
Silvio Lucio Oliva 70:d20d30f59b1c 243
Silvio Lucio Oliva 70:d20d30f59b1c 244 #define OCF_GAP_TERMINATE 0x0093
Silvio Lucio Oliva 70:d20d30f59b1c 245 typedef __packed struct _gap_terminate_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 246 uint16_t handle;
Silvio Lucio Oliva 70:d20d30f59b1c 247 uint8_t reason;
Silvio Lucio Oliva 70:d20d30f59b1c 248 } PACKED gap_terminate_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 249 #define GAP_TERMINATE_CP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 250
Silvio Lucio Oliva 70:d20d30f59b1c 251 #define OCF_GAP_CLEAR_SECURITY_DB 0x0094
Silvio Lucio Oliva 70:d20d30f59b1c 252
Silvio Lucio Oliva 70:d20d30f59b1c 253 #define OCF_GAP_ALLOW_REBOND_DB 0x0095
apalmieri 126:32039585a969 254
apalmieri 126:32039585a969 255 typedef __packed struct _gap_allow_rebond_cp_IDB05A1{
Silvio Lucio Oliva 70:d20d30f59b1c 256 uint16_t conn_handle;
apalmieri 126:32039585a969 257 } PACKED gap_allow_rebond_cp_IDB05A1;
Silvio Lucio Oliva 70:d20d30f59b1c 258
Silvio Lucio Oliva 70:d20d30f59b1c 259 #define OCF_GAP_START_LIMITED_DISCOVERY_PROC 0x0096
Silvio Lucio Oliva 70:d20d30f59b1c 260 typedef __packed struct _gap_start_limited_discovery_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 261 uint16_t scanInterval;
Silvio Lucio Oliva 70:d20d30f59b1c 262 uint16_t scanWindow;
Silvio Lucio Oliva 70:d20d30f59b1c 263 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 264 uint8_t filterDuplicates;
Silvio Lucio Oliva 70:d20d30f59b1c 265 } PACKED gap_start_limited_discovery_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 266 #define GAP_START_LIMITED_DISCOVERY_PROC_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 267
Silvio Lucio Oliva 70:d20d30f59b1c 268 #define OCF_GAP_START_GENERAL_DISCOVERY_PROC 0x0097
Silvio Lucio Oliva 70:d20d30f59b1c 269 typedef __packed struct _gap_start_general_discovery_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 270 uint16_t scanInterval;
Silvio Lucio Oliva 70:d20d30f59b1c 271 uint16_t scanWindow;
Silvio Lucio Oliva 70:d20d30f59b1c 272 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 273 uint8_t filterDuplicates;
Silvio Lucio Oliva 70:d20d30f59b1c 274 } PACKED gap_start_general_discovery_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 275 #define GAP_START_GENERAL_DISCOVERY_PROC_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 276
Silvio Lucio Oliva 70:d20d30f59b1c 277 #define OCF_GAP_START_NAME_DISCOVERY_PROC 0x0098
Silvio Lucio Oliva 70:d20d30f59b1c 278 typedef __packed struct _gap_start_name_discovery_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 279 uint16_t scanInterval;
Silvio Lucio Oliva 70:d20d30f59b1c 280 uint16_t scanWindow;
Silvio Lucio Oliva 70:d20d30f59b1c 281 uint8_t peer_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 282 tBDAddr peer_bdaddr;
Silvio Lucio Oliva 70:d20d30f59b1c 283 uint8_t own_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 284 uint16_t conn_min_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 285 uint16_t conn_max_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 286 uint16_t conn_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 287 uint16_t supervision_timeout;
Silvio Lucio Oliva 70:d20d30f59b1c 288 uint16_t min_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 289 uint16_t max_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 290 } PACKED gap_start_name_discovery_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 291 #define GAP_START_NAME_DISCOVERY_PROC_CP_SIZE 24
Silvio Lucio Oliva 70:d20d30f59b1c 292
Silvio Lucio Oliva 70:d20d30f59b1c 293 #define OCF_GAP_START_AUTO_CONN_ESTABLISH_PROC 0x0099
Silvio Lucio Oliva 70:d20d30f59b1c 294
Silvio Lucio Oliva 70:d20d30f59b1c 295 #define OCF_GAP_START_GENERAL_CONN_ESTABLISH_PROC 0x009A
apalmieri 126:32039585a969 296 typedef __packed struct _gap_start_general_conn_establish_proc_cp_IDB05A1{
Silvio Lucio Oliva 70:d20d30f59b1c 297 uint8_t scan_type;
Silvio Lucio Oliva 70:d20d30f59b1c 298 uint16_t scan_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 299 uint16_t scan_window;
Silvio Lucio Oliva 70:d20d30f59b1c 300 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 301 uint8_t filter_duplicates;
apalmieri 126:32039585a969 302 } PACKED gap_start_general_conn_establish_proc_cp_IDB05A1;
apalmieri 126:32039585a969 303
apalmieri 126:32039585a969 304 typedef __packed struct _gap_start_general_conn_establish_proc_cp_IDB04A1{
Silvio Lucio Oliva 70:d20d30f59b1c 305 uint8_t scan_type;
Silvio Lucio Oliva 70:d20d30f59b1c 306 uint16_t scan_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 307 uint16_t scan_window;
Silvio Lucio Oliva 70:d20d30f59b1c 308 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 309 uint8_t filter_duplicates;
Silvio Lucio Oliva 70:d20d30f59b1c 310 uint8_t use_reconn_addr;
Silvio Lucio Oliva 70:d20d30f59b1c 311 tBDAddr reconn_addr;
apalmieri 126:32039585a969 312 } PACKED gap_start_general_conn_establish_proc_cp_IDB04A1;
Silvio Lucio Oliva 70:d20d30f59b1c 313
Silvio Lucio Oliva 70:d20d30f59b1c 314 #define OCF_GAP_START_SELECTIVE_CONN_ESTABLISH_PROC 0x009B
Silvio Lucio Oliva 70:d20d30f59b1c 315 #define GAP_START_SELECTIVE_CONN_ESTABLISH_PROC_CP_SIZE 8
Silvio Lucio Oliva 70:d20d30f59b1c 316 typedef __packed struct _gap_start_selective_conn_establish_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 317 uint8_t scan_type;
Silvio Lucio Oliva 70:d20d30f59b1c 318 uint16_t scan_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 319 uint16_t scan_window;
Silvio Lucio Oliva 70:d20d30f59b1c 320 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 321 uint8_t filter_duplicates;
Silvio Lucio Oliva 70:d20d30f59b1c 322 uint8_t num_whitelist_entries;
Silvio Lucio Oliva 70:d20d30f59b1c 323 uint8_t addr_array[HCI_MAX_PAYLOAD_SIZE-GAP_START_SELECTIVE_CONN_ESTABLISH_PROC_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 324 } PACKED gap_start_selective_conn_establish_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 325
Silvio Lucio Oliva 70:d20d30f59b1c 326 #define OCF_GAP_CREATE_CONNECTION 0x009C
Silvio Lucio Oliva 70:d20d30f59b1c 327 typedef __packed struct _gap_create_connection_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 328 uint16_t scanInterval;
Silvio Lucio Oliva 70:d20d30f59b1c 329 uint16_t scanWindow;
Silvio Lucio Oliva 70:d20d30f59b1c 330 uint8_t peer_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 331 tBDAddr peer_bdaddr;
Silvio Lucio Oliva 70:d20d30f59b1c 332 uint8_t own_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 333 uint16_t conn_min_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 334 uint16_t conn_max_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 335 uint16_t conn_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 336 uint16_t supervision_timeout;
Silvio Lucio Oliva 70:d20d30f59b1c 337 uint16_t min_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 338 uint16_t max_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 339 } PACKED gap_create_connection_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 340 #define GAP_CREATE_CONNECTION_CP_SIZE 24
Silvio Lucio Oliva 70:d20d30f59b1c 341
Silvio Lucio Oliva 70:d20d30f59b1c 342 #define OCF_GAP_TERMINATE_GAP_PROCEDURE 0x009D
Silvio Lucio Oliva 70:d20d30f59b1c 343
Silvio Lucio Oliva 70:d20d30f59b1c 344 #define OCF_GAP_START_CONNECTION_UPDATE 0x009E
Silvio Lucio Oliva 70:d20d30f59b1c 345 typedef __packed struct _gap_start_connection_update_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 346 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 347 uint16_t conn_min_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 348 uint16_t conn_max_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 349 uint16_t conn_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 350 uint16_t supervision_timeout;
Silvio Lucio Oliva 70:d20d30f59b1c 351 uint16_t min_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 352 uint16_t max_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 353 } PACKED gap_start_connection_update_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 354 #define GAP_START_CONNECTION_UPDATE_CP_SIZE 14
Silvio Lucio Oliva 70:d20d30f59b1c 355
Silvio Lucio Oliva 70:d20d30f59b1c 356 #define OCF_GAP_SEND_PAIRING_REQUEST 0x009F
Silvio Lucio Oliva 70:d20d30f59b1c 357 typedef __packed struct _gap_send_pairing_request_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 358 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 359 uint8_t force_rebond;
Silvio Lucio Oliva 70:d20d30f59b1c 360 } PACKED gap_send_pairing_request_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 361 #define GAP_GAP_SEND_PAIRING_REQUEST_CP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 362
Silvio Lucio Oliva 70:d20d30f59b1c 363 #define OCF_GAP_RESOLVE_PRIVATE_ADDRESS 0x00A0
Silvio Lucio Oliva 70:d20d30f59b1c 364 typedef __packed struct _gap_resolve_private_address_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 365 tBDAddr address;
Silvio Lucio Oliva 70:d20d30f59b1c 366 } PACKED gap_resolve_private_address_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 367 #define GAP_RESOLVE_PRIVATE_ADDRESS_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 368 typedef __packed struct _gap_resolve_private_address_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 369 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 370 tBDAddr address;
Silvio Lucio Oliva 70:d20d30f59b1c 371 } PACKED gap_resolve_private_address_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 372
Silvio Lucio Oliva 70:d20d30f59b1c 373 #define OCF_GAP_SET_BROADCAST_MODE 0x00A1
Silvio Lucio Oliva 70:d20d30f59b1c 374 #define GAP_SET_BROADCAST_MODE_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 375 typedef __packed struct _gap_set_broadcast_mode_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 376 uint16_t adv_interv_min;
Silvio Lucio Oliva 70:d20d30f59b1c 377 uint16_t adv_interv_max;
Silvio Lucio Oliva 70:d20d30f59b1c 378 uint8_t adv_type;
Silvio Lucio Oliva 70:d20d30f59b1c 379 uint8_t own_addr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 380 uint8_t var_len_data[HCI_MAX_PAYLOAD_SIZE-GAP_SET_BROADCAST_MODE_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 381 } PACKED gap_set_broadcast_mode_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 382
Silvio Lucio Oliva 70:d20d30f59b1c 383 #define OCF_GAP_START_OBSERVATION_PROC 0x00A2
Silvio Lucio Oliva 70:d20d30f59b1c 384 typedef __packed struct _gap_start_observation_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 385 uint16_t scan_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 386 uint16_t scan_window;
Silvio Lucio Oliva 70:d20d30f59b1c 387 uint8_t scan_type;
Silvio Lucio Oliva 70:d20d30f59b1c 388 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 389 uint8_t filter_duplicates;
Silvio Lucio Oliva 70:d20d30f59b1c 390 } PACKED gap_start_observation_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 391
Silvio Lucio Oliva 70:d20d30f59b1c 392 #define OCF_GAP_GET_BONDED_DEVICES 0x00A3
Silvio Lucio Oliva 70:d20d30f59b1c 393 typedef __packed struct _gap_get_bonded_devices_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 394 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 395 uint8_t num_addr;
Silvio Lucio Oliva 70:d20d30f59b1c 396 uint8_t dev_list[HCI_MAX_PAYLOAD_SIZE-HCI_EVENT_HDR_SIZE-EVT_CMD_COMPLETE_SIZE-1];
Silvio Lucio Oliva 70:d20d30f59b1c 397 } PACKED gap_get_bonded_devices_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 398
Silvio Lucio Oliva 70:d20d30f59b1c 399 #define OCF_GAP_IS_DEVICE_BONDED 0x00A4
Silvio Lucio Oliva 70:d20d30f59b1c 400 typedef __packed struct _gap_is_device_bonded_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 401 uint8_t peer_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 402 tBDAddr peer_address;
Silvio Lucio Oliva 70:d20d30f59b1c 403 } PACKED gap_is_device_bonded_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 404
Silvio Lucio Oliva 70:d20d30f59b1c 405
Silvio Lucio Oliva 70:d20d30f59b1c 406 #define OCF_GATT_INIT 0x0101
Silvio Lucio Oliva 70:d20d30f59b1c 407
Silvio Lucio Oliva 70:d20d30f59b1c 408 #define OCF_GATT_ADD_SERV 0x0102
Silvio Lucio Oliva 70:d20d30f59b1c 409 typedef __packed struct _gatt_add_serv_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 410 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 411 uint16_t handle;
Silvio Lucio Oliva 70:d20d30f59b1c 412 } PACKED gatt_add_serv_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 413 #define GATT_ADD_SERV_RP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 414
Silvio Lucio Oliva 70:d20d30f59b1c 415 #define OCF_GATT_INCLUDE_SERV 0x0103
Silvio Lucio Oliva 70:d20d30f59b1c 416 typedef __packed struct _gatt_include_serv_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 417 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 418 uint16_t handle;
Silvio Lucio Oliva 70:d20d30f59b1c 419 } PACKED gatt_include_serv_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 420 #define GATT_INCLUDE_SERV_RP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 421
Silvio Lucio Oliva 70:d20d30f59b1c 422 #define OCF_GATT_ADD_CHAR 0x0104
Silvio Lucio Oliva 70:d20d30f59b1c 423 typedef __packed struct _gatt_add_char_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 424 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 425 uint16_t handle;
Silvio Lucio Oliva 70:d20d30f59b1c 426 } PACKED gatt_add_char_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 427 #define GATT_ADD_CHAR_RP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 428
Silvio Lucio Oliva 70:d20d30f59b1c 429 #define OCF_GATT_ADD_CHAR_DESC 0x0105
Silvio Lucio Oliva 70:d20d30f59b1c 430 typedef __packed struct _gatt_add_char_desc_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 431 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 432 uint16_t handle;
Silvio Lucio Oliva 70:d20d30f59b1c 433 } PACKED gatt_add_char_desc_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 434 #define GATT_ADD_CHAR_DESC_RP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 435
Silvio Lucio Oliva 70:d20d30f59b1c 436 #define OCF_GATT_UPD_CHAR_VAL 0x0106
Silvio Lucio Oliva 70:d20d30f59b1c 437
Silvio Lucio Oliva 70:d20d30f59b1c 438 #define OCF_GATT_DEL_CHAR 0x0107
Silvio Lucio Oliva 70:d20d30f59b1c 439 typedef __packed struct _gatt_del_char_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 440 uint16_t service_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 441 uint16_t char_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 442 } PACKED gatt_del_char_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 443 #define GATT_DEL_CHAR_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 444
Silvio Lucio Oliva 70:d20d30f59b1c 445 #define OCF_GATT_DEL_SERV 0x0108
Silvio Lucio Oliva 70:d20d30f59b1c 446 typedef __packed struct _gatt_del_serv_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 447 uint16_t service_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 448 } PACKED gatt_del_serv_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 449 #define GATT_DEL_SERV_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 450
Silvio Lucio Oliva 70:d20d30f59b1c 451 #define OCF_GATT_DEL_INC_SERV 0x0109
Silvio Lucio Oliva 70:d20d30f59b1c 452 typedef __packed struct _gatt_del_inc_serv_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 453 uint16_t service_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 454 uint16_t inc_serv_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 455 } PACKED gatt_del_inc_serv_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 456 #define GATT_DEL_INC_SERV_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 457
Silvio Lucio Oliva 70:d20d30f59b1c 458 #define OCF_GATT_SET_EVT_MASK 0x010A
Silvio Lucio Oliva 70:d20d30f59b1c 459 typedef __packed struct _gatt_set_evt_mask_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 460 uint32_t evt_mask;
Silvio Lucio Oliva 70:d20d30f59b1c 461 } PACKED gatt_set_evt_mask_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 462 #define GATT_SET_EVT_MASK_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 463
Silvio Lucio Oliva 70:d20d30f59b1c 464 #define OCF_GATT_EXCHANGE_CONFIG 0x010B
Silvio Lucio Oliva 70:d20d30f59b1c 465 typedef __packed struct _gatt_exchange_config_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 466 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 467 } PACKED gatt_exchange_config_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 468 #define GATT_EXCHANGE_CONFIG_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 469
Silvio Lucio Oliva 70:d20d30f59b1c 470 #define OCF_ATT_FIND_INFO_REQ 0x010C
Silvio Lucio Oliva 70:d20d30f59b1c 471 typedef __packed struct _att_find_info_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 472 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 473 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 474 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 475 } PACKED att_find_info_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 476 #define ATT_FIND_INFO_REQ_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 477
Silvio Lucio Oliva 70:d20d30f59b1c 478 #define OCF_ATT_FIND_BY_TYPE_VALUE_REQ 0x010D
Silvio Lucio Oliva 70:d20d30f59b1c 479 #define ATT_FIND_BY_TYPE_VALUE_REQ_CP_SIZE 9
Silvio Lucio Oliva 70:d20d30f59b1c 480 typedef __packed struct _att_find_by_type_value_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 481 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 482 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 483 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 484 uint8_t uuid[2];
Silvio Lucio Oliva 70:d20d30f59b1c 485 uint8_t attr_val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 486 uint8_t attr_val[ATT_MTU - 7];
Silvio Lucio Oliva 70:d20d30f59b1c 487 } PACKED att_find_by_type_value_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 488
Silvio Lucio Oliva 70:d20d30f59b1c 489 #define OCF_ATT_READ_BY_TYPE_REQ 0x010E
Silvio Lucio Oliva 70:d20d30f59b1c 490 #define ATT_READ_BY_TYPE_REQ_CP_SIZE 7 // without UUID
Silvio Lucio Oliva 70:d20d30f59b1c 491 typedef __packed struct _att_read_by_type_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 492 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 493 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 494 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 495 uint8_t uuid_type;
Silvio Lucio Oliva 70:d20d30f59b1c 496 uint8_t uuid[16];
Silvio Lucio Oliva 70:d20d30f59b1c 497 } PACKED att_read_by_type_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 498
Silvio Lucio Oliva 70:d20d30f59b1c 499 #define OCF_ATT_READ_BY_GROUP_TYPE_REQ 0x010F
Silvio Lucio Oliva 70:d20d30f59b1c 500 #define ATT_READ_BY_GROUP_TYPE_REQ_CP_SIZE 7 // without UUID
Silvio Lucio Oliva 70:d20d30f59b1c 501 typedef __packed struct _att_read_by_group_type_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 502 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 503 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 504 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 505 uint8_t uuid_type;
Silvio Lucio Oliva 70:d20d30f59b1c 506 uint8_t uuid[16];
Silvio Lucio Oliva 70:d20d30f59b1c 507 } PACKED att_read_by_group_type_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 508
Silvio Lucio Oliva 70:d20d30f59b1c 509 #define OCF_ATT_PREPARE_WRITE_REQ 0x0110
Silvio Lucio Oliva 70:d20d30f59b1c 510 #define ATT_PREPARE_WRITE_REQ_CP_SIZE 7 // without attr_val
Silvio Lucio Oliva 70:d20d30f59b1c 511 typedef __packed struct _att_prepare_write_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 512 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 513 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 514 uint16_t value_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 515 uint8_t attr_val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 516 uint8_t attr_val[ATT_MTU-5];
Silvio Lucio Oliva 70:d20d30f59b1c 517 } PACKED att_prepare_write_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 518
Silvio Lucio Oliva 70:d20d30f59b1c 519 #define OCF_ATT_EXECUTE_WRITE_REQ 0x0111
Silvio Lucio Oliva 70:d20d30f59b1c 520 typedef __packed struct _att_execute_write_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 521 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 522 uint8_t execute;
Silvio Lucio Oliva 70:d20d30f59b1c 523 } PACKED att_execute_write_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 524 #define ATT_EXECUTE_WRITE_REQ_CP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 525
Silvio Lucio Oliva 70:d20d30f59b1c 526 #define OCF_GATT_DISC_ALL_PRIM_SERVICES 0X0112
Silvio Lucio Oliva 70:d20d30f59b1c 527 typedef __packed struct _gatt_disc_all_prim_serivces_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 528 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 529 } PACKED gatt_disc_all_prim_services_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 530 #define GATT_DISC_ALL_PRIM_SERVICES_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 531
Silvio Lucio Oliva 70:d20d30f59b1c 532 #define OCF_GATT_DISC_PRIM_SERVICE_BY_UUID 0x0113
Silvio Lucio Oliva 70:d20d30f59b1c 533 typedef __packed struct _gatt_disc_prim_service_by_uuid_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 534 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 535 uint8_t uuid_type;
Silvio Lucio Oliva 70:d20d30f59b1c 536 uint8_t uuid[16];
Silvio Lucio Oliva 70:d20d30f59b1c 537 } PACKED gatt_disc_prim_service_by_uuid_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 538 #define GATT_DISC_PRIM_SERVICE_BY_UUID_CP_SIZE 3 // Without uuid
Silvio Lucio Oliva 70:d20d30f59b1c 539
Silvio Lucio Oliva 70:d20d30f59b1c 540 #define OCF_GATT_FIND_INCLUDED_SERVICES 0X0114
Silvio Lucio Oliva 70:d20d30f59b1c 541 typedef __packed struct _gatt_disc_find_included_services_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 542 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 543 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 544 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 545 } PACKED gatt_find_included_services_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 546 #define GATT_FIND_INCLUDED_SERVICES_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 547
Silvio Lucio Oliva 70:d20d30f59b1c 548 #define OCF_GATT_DISC_ALL_CHARAC_OF_SERV 0X0115
Silvio Lucio Oliva 70:d20d30f59b1c 549 typedef __packed struct _gatt_disc_all_charac_of_serv_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 550 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 551 uint16_t start_attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 552 uint16_t end_attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 553 } PACKED gatt_disc_all_charac_of_serv_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 554 #define GATT_DISC_ALL_CHARAC_OF_SERV_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 555
Silvio Lucio Oliva 70:d20d30f59b1c 556 #define OCF_GATT_DISC_CHARAC_BY_UUID 0X0116
Silvio Lucio Oliva 70:d20d30f59b1c 557
Silvio Lucio Oliva 70:d20d30f59b1c 558 #define OCF_GATT_DISC_ALL_CHARAC_DESCRIPTORS 0X0117
Silvio Lucio Oliva 70:d20d30f59b1c 559 typedef __packed struct _gatt_disc_all_charac_descriptors_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 560 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 561 uint16_t char_val_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 562 uint16_t char_end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 563 } PACKED gatt_disc_all_charac_descriptors_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 564 #define GATT_DISC_ALL_CHARAC_DESCRIPTORS_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 565
Silvio Lucio Oliva 70:d20d30f59b1c 566 #define OCF_GATT_READ_CHARAC_VAL 0x0118
Silvio Lucio Oliva 70:d20d30f59b1c 567 typedef __packed struct _gatt_read_charac_val_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 568 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 569 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 570 } PACKED gatt_read_charac_val_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 571 #define GATT_READ_CHARAC_VAL_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 572
Silvio Lucio Oliva 70:d20d30f59b1c 573 #define OCF_GATT_READ_USING_CHARAC_UUID 0x0109
Silvio Lucio Oliva 70:d20d30f59b1c 574 typedef __packed struct _gatt_read_using_charac_uuid_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 575 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 576 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 577 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 578 uint8_t uuid_type;
Silvio Lucio Oliva 70:d20d30f59b1c 579 uint8_t uuid[16];
Silvio Lucio Oliva 70:d20d30f59b1c 580 } PACKED gatt_read_using_charac_uuid_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 581 #define GATT_READ_USING_CHARAC_UUID_CP_SIZE 7 // without UUID
Silvio Lucio Oliva 70:d20d30f59b1c 582
Silvio Lucio Oliva 70:d20d30f59b1c 583 #define OCF_GATT_READ_LONG_CHARAC_VAL 0x011A
Silvio Lucio Oliva 70:d20d30f59b1c 584 typedef __packed struct _gatt_read_long_charac_val_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 585 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 586 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 587 uint16_t val_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 588 } PACKED gatt_read_long_charac_val_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 589 #define GATT_READ_LONG_CHARAC_VAL_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 590
Silvio Lucio Oliva 70:d20d30f59b1c 591 #define OCF_GATT_READ_MULTIPLE_CHARAC_VAL 0x011B
Silvio Lucio Oliva 70:d20d30f59b1c 592 #define GATT_READ_MULTIPLE_CHARAC_VAL_CP_SIZE 3 // without set_of_handles
Silvio Lucio Oliva 70:d20d30f59b1c 593 typedef __packed struct _gatt_read_multiple_charac_val_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 594 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 595 uint8_t num_handles;
Silvio Lucio Oliva 70:d20d30f59b1c 596 uint8_t set_of_handles[HCI_MAX_PAYLOAD_SIZE-GATT_READ_MULTIPLE_CHARAC_VAL_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 597 } PACKED gatt_read_multiple_charac_val_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 598
Silvio Lucio Oliva 70:d20d30f59b1c 599 #define OCF_GATT_WRITE_CHAR_VALUE 0x011C
Silvio Lucio Oliva 70:d20d30f59b1c 600
Silvio Lucio Oliva 70:d20d30f59b1c 601 #define OCF_GATT_WRITE_LONG_CHARAC_VAL 0x011D
Silvio Lucio Oliva 70:d20d30f59b1c 602 #define GATT_WRITE_LONG_CHARAC_VAL_CP_SIZE 7 // without set_of_handles
Silvio Lucio Oliva 70:d20d30f59b1c 603 typedef __packed struct _gatt_write_long_charac_val_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 604 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 605 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 606 uint16_t val_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 607 uint8_t val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 608 uint8_t attr_val[HCI_MAX_PAYLOAD_SIZE-GATT_WRITE_LONG_CHARAC_VAL_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 609 } PACKED gatt_write_long_charac_val_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 610
Silvio Lucio Oliva 70:d20d30f59b1c 611 #define OCF_GATT_WRITE_CHARAC_RELIABLE 0x011E
Silvio Lucio Oliva 70:d20d30f59b1c 612 #define GATT_WRITE_CHARAC_RELIABLE_CP_SIZE 7 // without set_of_handles
Silvio Lucio Oliva 70:d20d30f59b1c 613 typedef __packed struct _gatt_write_charac_reliable_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 614 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 615 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 616 uint16_t val_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 617 uint8_t val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 618 uint8_t attr_val[HCI_MAX_PAYLOAD_SIZE-GATT_WRITE_CHARAC_RELIABLE_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 619 } PACKED gatt_write_charac_reliable_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 620
Silvio Lucio Oliva 70:d20d30f59b1c 621 #define OCF_GATT_WRITE_LONG_CHARAC_DESC 0x011F
Silvio Lucio Oliva 70:d20d30f59b1c 622 #define GATT_WRITE_LONG_CHARAC_DESC_CP_SIZE 7 // without set_of_handles
Silvio Lucio Oliva 70:d20d30f59b1c 623 typedef __packed struct _gatt_write_long_charac_desc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 624 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 625 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 626 uint16_t val_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 627 uint8_t val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 628 uint8_t attr_val[HCI_MAX_PAYLOAD_SIZE-GATT_WRITE_LONG_CHARAC_DESC_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 629 } PACKED gatt_write_long_charac_desc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 630
Silvio Lucio Oliva 70:d20d30f59b1c 631 #define OCF_GATT_READ_LONG_CHARAC_DESC 0x0120
Silvio Lucio Oliva 70:d20d30f59b1c 632 typedef __packed struct _gatt_read_long_charac_desc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 633 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 634 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 635 uint16_t val_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 636 } PACKED gatt_read_long_charac_desc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 637 #define GATT_READ_LONG_CHARAC_DESC_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 638
Silvio Lucio Oliva 70:d20d30f59b1c 639 #define OCF_GATT_WRITE_CHAR_DESCRIPTOR 0x0121
Silvio Lucio Oliva 70:d20d30f59b1c 640
Silvio Lucio Oliva 70:d20d30f59b1c 641 #define OCF_GATT_READ_CHAR_DESCRIPTOR 0x0122
Silvio Lucio Oliva 70:d20d30f59b1c 642 typedef __packed struct _gatt_read_charac_desc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 643 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 644 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 645 } PACKED gatt_read_charac_desc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 646 #define GATT_READ_CHAR_DESCRIPTOR_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 647
Silvio Lucio Oliva 70:d20d30f59b1c 648 #define OCF_GATT_WRITE_WITHOUT_RESPONSE 0x0123
Silvio Lucio Oliva 70:d20d30f59b1c 649 #define GATT_WRITE_WITHOUT_RESPONSE_CP_SIZE 5 // without attr_val
Silvio Lucio Oliva 70:d20d30f59b1c 650 typedef __packed struct _gatt_write_without_resp_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 651 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 652 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 653 uint8_t val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 654 uint8_t attr_val[ATT_MTU - 3];
Silvio Lucio Oliva 70:d20d30f59b1c 655 } PACKED gatt_write_without_resp_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 656
Silvio Lucio Oliva 70:d20d30f59b1c 657 #define OCF_GATT_SIGNED_WRITE_WITHOUT_RESPONSE 0x0124
Silvio Lucio Oliva 70:d20d30f59b1c 658 #define GATT_SIGNED_WRITE_WITHOUT_RESPONSE_CP_SIZE 5 // without attr_val
Silvio Lucio Oliva 70:d20d30f59b1c 659 typedef __packed struct _gatt_signed_write_without_resp_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 660 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 661 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 662 uint8_t val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 663 uint8_t attr_val[ATT_MTU - 13];
Silvio Lucio Oliva 70:d20d30f59b1c 664 } PACKED gatt_signed_write_without_resp_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 665
Silvio Lucio Oliva 70:d20d30f59b1c 666 #define OCF_GATT_CONFIRM_INDICATION 0x0125
Silvio Lucio Oliva 70:d20d30f59b1c 667 typedef __packed struct _gatt_confirm_indication_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 668 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 669 } PACKED gatt_confirm_indication_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 670 #define GATT_CONFIRM_INDICATION_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 671
Silvio Lucio Oliva 70:d20d30f59b1c 672 #define OCF_GATT_WRITE_RESPONSE 0x0126
Silvio Lucio Oliva 70:d20d30f59b1c 673
Silvio Lucio Oliva 70:d20d30f59b1c 674 #define OCF_GATT_ALLOW_READ 0x0127
Silvio Lucio Oliva 70:d20d30f59b1c 675 typedef __packed struct _gatt_allow_read_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 676 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 677 } PACKED gatt_allow_read_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 678 #define GATT_ALLOW_READ_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 679
Silvio Lucio Oliva 70:d20d30f59b1c 680 #define OCF_GATT_SET_SECURITY_PERMISSION 0x0128
Silvio Lucio Oliva 70:d20d30f59b1c 681 typedef __packed struct _gatt_set_security_permission_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 682 uint16_t service_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 683 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 684 uint8_t security_permission;
Silvio Lucio Oliva 70:d20d30f59b1c 685 } PACKED gatt_set_security_permission_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 686 #define GATT_GATT_SET_SECURITY_PERMISSION_CP_SIZE 5
Silvio Lucio Oliva 70:d20d30f59b1c 687
Silvio Lucio Oliva 70:d20d30f59b1c 688 #define OCF_GATT_SET_DESC_VAL 0x0129
Silvio Lucio Oliva 70:d20d30f59b1c 689
Silvio Lucio Oliva 70:d20d30f59b1c 690 #define OCF_GATT_READ_HANDLE_VALUE 0x012A
Silvio Lucio Oliva 70:d20d30f59b1c 691 typedef __packed struct _gatt_read_handle_val_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 692 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 693 } PACKED gatt_read_handle_val_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 694 #define GATT_READ_HANDLE_VALUE_RP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 695 typedef __packed struct _gatt_read_handle_val_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 696 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 697 uint16_t value_len;
Silvio Lucio Oliva 70:d20d30f59b1c 698 uint8_t value[HCI_MAX_PAYLOAD_SIZE-GATT_READ_HANDLE_VALUE_RP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 699 } PACKED gatt_read_handle_val_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 700
Silvio Lucio Oliva 70:d20d30f59b1c 701 #define OCF_GATT_READ_HANDLE_VALUE_OFFSET 0x012B
Silvio Lucio Oliva 70:d20d30f59b1c 702 typedef __packed struct _gatt_read_handle_val_offset_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 703 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 704 uint8_t offset;
Silvio Lucio Oliva 70:d20d30f59b1c 705 } PACKED gatt_read_handle_val_offset_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 706 #define GATT_READ_HANDLE_VALUE_OFFSET_RP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 707 typedef __packed struct _gatt_read_handle_val_offset_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 708 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 709 uint8_t value_len;
Silvio Lucio Oliva 70:d20d30f59b1c 710 uint8_t value[HCI_MAX_PAYLOAD_SIZE-GATT_READ_HANDLE_VALUE_OFFSET_RP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 711 } PACKED gatt_read_handle_val_offset_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 712
Silvio Lucio Oliva 70:d20d30f59b1c 713 #define OCF_L2CAP_CONN_PARAM_UPDATE_REQ 0x0181
Silvio Lucio Oliva 70:d20d30f59b1c 714 typedef __packed struct _l2cap_conn_param_update_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 715 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 716 uint16_t interval_min;
Silvio Lucio Oliva 70:d20d30f59b1c 717 uint16_t interval_max;
Silvio Lucio Oliva 70:d20d30f59b1c 718 uint16_t slave_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 719 uint16_t timeout_multiplier;
Silvio Lucio Oliva 70:d20d30f59b1c 720 } PACKED l2cap_conn_param_update_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 721 #define L2CAP_CONN_PARAM_UPDATE_REQ_CP_SIZE 10
Silvio Lucio Oliva 70:d20d30f59b1c 722
Silvio Lucio Oliva 70:d20d30f59b1c 723 #define OCF_L2CAP_CONN_PARAM_UPDATE_RESP 0x0182
apalmieri 126:32039585a969 724 typedef __packed struct _l2cap_conn_param_update_resp_cp_IDB05A1{
Silvio Lucio Oliva 70:d20d30f59b1c 725 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 726 uint16_t interval_min;
Silvio Lucio Oliva 70:d20d30f59b1c 727 uint16_t interval_max;
Silvio Lucio Oliva 70:d20d30f59b1c 728 uint16_t slave_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 729 uint16_t timeout_multiplier;
Silvio Lucio Oliva 70:d20d30f59b1c 730 uint16_t min_ce_length;
Silvio Lucio Oliva 70:d20d30f59b1c 731 uint16_t max_ce_length;
Silvio Lucio Oliva 70:d20d30f59b1c 732 uint8_t id;
Silvio Lucio Oliva 70:d20d30f59b1c 733 uint8_t accept;
apalmieri 126:32039585a969 734 } PACKED l2cap_conn_param_update_resp_cp_IDB05A1;
apalmieri 126:32039585a969 735
apalmieri 126:32039585a969 736 typedef __packed struct _l2cap_conn_param_update_resp_cp_IDB04A1{
Silvio Lucio Oliva 70:d20d30f59b1c 737 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 738 uint16_t interval_min;
Silvio Lucio Oliva 70:d20d30f59b1c 739 uint16_t interval_max;
Silvio Lucio Oliva 70:d20d30f59b1c 740 uint16_t slave_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 741 uint16_t timeout_multiplier;
Silvio Lucio Oliva 70:d20d30f59b1c 742 uint8_t id;
Silvio Lucio Oliva 70:d20d30f59b1c 743 uint8_t accept;
apalmieri 126:32039585a969 744 } PACKED l2cap_conn_param_update_resp_cp_IDB04A1;
Silvio Lucio Oliva 70:d20d30f59b1c 745
Silvio Lucio Oliva 70:d20d30f59b1c 746 /**
Silvio Lucio Oliva 70:d20d30f59b1c 747 * @defgroup BlueNRG_Events BlueNRG events (vendor specific)
Silvio Lucio Oliva 70:d20d30f59b1c 748 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 749 */
Silvio Lucio Oliva 70:d20d30f59b1c 750
Silvio Lucio Oliva 70:d20d30f59b1c 751 /**
Silvio Lucio Oliva 70:d20d30f59b1c 752 * Vendor specific event for BlueNRG.
Silvio Lucio Oliva 70:d20d30f59b1c 753 */
Silvio Lucio Oliva 70:d20d30f59b1c 754 typedef __packed struct _evt_blue_aci{
Silvio Lucio Oliva 70:d20d30f59b1c 755 uint16_t ecode; /**< One of the BlueNRG event codes. */
Silvio Lucio Oliva 70:d20d30f59b1c 756 uint8_t data[VARIABLE_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 757 } PACKED evt_blue_aci;
Silvio Lucio Oliva 70:d20d30f59b1c 758
Silvio Lucio Oliva 70:d20d30f59b1c 759
Silvio Lucio Oliva 70:d20d30f59b1c 760 /**
Silvio Lucio Oliva 70:d20d30f59b1c 761 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 762 */
Silvio Lucio Oliva 70:d20d30f59b1c 763
Silvio Lucio Oliva 70:d20d30f59b1c 764 #endif /* __BLUENRG_ACI_CONST_H_ */