Devchannel Team / X_NUCLEO_IDB0XA1

Dependents:   Hello_BLE F446RE-BLE

Fork of X_NUCLEO_IDB0XA1 by ST

Committer:
Silvio Lucio Oliva
Date:
Mon Jun 08 17:08:01 2015 +0200
Revision:
70:d20d30f59b1c
Child:
126:32039585a969
Initial commit for mbed support

Signed-off-by: Silvio Lucio Oliva <silvio.oliva@st.com>

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
Silvio Lucio Oliva 70:d20d30f59b1c 118 typedef __packed struct _gap_set_direct_conectable_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 119 uint8_t own_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 120 #if BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 121 uint8_t directed_adv_type;
Silvio Lucio Oliva 70:d20d30f59b1c 122 #endif
Silvio Lucio Oliva 70:d20d30f59b1c 123 uint8_t direct_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 124 tBDAddr direct_bdaddr;
Silvio Lucio Oliva 70:d20d30f59b1c 125 } PACKED gap_set_direct_conectable_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 126 #define GAP_SET_DIRECT_CONNECTABLE_CP_SIZE 8
Silvio Lucio Oliva 70:d20d30f59b1c 127
Silvio Lucio Oliva 70:d20d30f59b1c 128 #define OCF_GAP_SET_IO_CAPABILITY 0x0085
Silvio Lucio Oliva 70:d20d30f59b1c 129 typedef __packed struct _gap_set_io_capability_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 130 uint8_t io_capability;
Silvio Lucio Oliva 70:d20d30f59b1c 131 } PACKED gap_set_io_capability_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 132 #define GAP_SET_IO_CAPABILITY_CP_SIZE 1
Silvio Lucio Oliva 70:d20d30f59b1c 133
Silvio Lucio Oliva 70:d20d30f59b1c 134 #define OCF_GAP_SET_AUTH_REQUIREMENT 0x0086
Silvio Lucio Oliva 70:d20d30f59b1c 135 typedef __packed struct _gap_set_auth_requirement_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 136 uint8_t mitm_mode;
Silvio Lucio Oliva 70:d20d30f59b1c 137 uint8_t oob_enable;
Silvio Lucio Oliva 70:d20d30f59b1c 138 uint8_t oob_data[16];
Silvio Lucio Oliva 70:d20d30f59b1c 139 uint8_t min_encryption_key_size;
Silvio Lucio Oliva 70:d20d30f59b1c 140 uint8_t max_encryption_key_size;
Silvio Lucio Oliva 70:d20d30f59b1c 141 uint8_t use_fixed_pin;
Silvio Lucio Oliva 70:d20d30f59b1c 142 uint32_t fixed_pin;
Silvio Lucio Oliva 70:d20d30f59b1c 143 uint8_t bonding_mode;
Silvio Lucio Oliva 70:d20d30f59b1c 144 } PACKED gap_set_auth_requirement_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 145 #define GAP_SET_AUTH_REQUIREMENT_CP_SIZE 26
Silvio Lucio Oliva 70:d20d30f59b1c 146
Silvio Lucio Oliva 70:d20d30f59b1c 147 #define OCF_GAP_SET_AUTHOR_REQUIREMENT 0x0087
Silvio Lucio Oliva 70:d20d30f59b1c 148 typedef __packed struct _gap_set_author_requirement_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 149 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 150 uint8_t authorization_enable;
Silvio Lucio Oliva 70:d20d30f59b1c 151 } PACKED gap_set_author_requirement_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 152 #define GAP_SET_AUTHOR_REQUIREMENT_CP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 153
Silvio Lucio Oliva 70:d20d30f59b1c 154 #define OCF_GAP_PASSKEY_RESPONSE 0x0088
Silvio Lucio Oliva 70:d20d30f59b1c 155 typedef __packed struct _gap_passkey_response_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 156 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 157 uint32_t passkey;
Silvio Lucio Oliva 70:d20d30f59b1c 158 } PACKED gap_passkey_response_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 159 #define GAP_PASSKEY_RESPONSE_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 160
Silvio Lucio Oliva 70:d20d30f59b1c 161 #define OCF_GAP_AUTHORIZATION_RESPONSE 0x0089
Silvio Lucio Oliva 70:d20d30f59b1c 162 typedef __packed struct _gap_authorization_response_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 163 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 164 uint8_t authorize;
Silvio Lucio Oliva 70:d20d30f59b1c 165 } PACKED gap_authorization_response_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 166 #define GAP_AUTHORIZATION_RESPONSE_CP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 167
Silvio Lucio Oliva 70:d20d30f59b1c 168 #define OCF_GAP_INIT 0x008A
Silvio Lucio Oliva 70:d20d30f59b1c 169 #ifdef BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 170 ///@cond BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 171 typedef __packed struct _gap_init_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 172 uint8_t role;
Silvio Lucio Oliva 70:d20d30f59b1c 173 uint8_t privacy_enabled;
Silvio Lucio Oliva 70:d20d30f59b1c 174 uint8_t device_name_char_len;
Silvio Lucio Oliva 70:d20d30f59b1c 175 } PACKED gap_init_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 176 #define GAP_INIT_CP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 177 ///@endcond
Silvio Lucio Oliva 70:d20d30f59b1c 178 #else
Silvio Lucio Oliva 70:d20d30f59b1c 179 ///@cond BLUENRG
Silvio Lucio Oliva 70:d20d30f59b1c 180 typedef __packed struct _gap_init_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 181 uint8_t role;
Silvio Lucio Oliva 70:d20d30f59b1c 182 } PACKED gap_init_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 183 #define GAP_INIT_CP_SIZE 1
Silvio Lucio Oliva 70:d20d30f59b1c 184 ///@endcond
Silvio Lucio Oliva 70:d20d30f59b1c 185 #endif
Silvio Lucio Oliva 70:d20d30f59b1c 186 typedef __packed struct _gap_init_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 187 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 188 uint16_t service_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 189 uint16_t dev_name_char_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 190 uint16_t appearance_char_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 191 } PACKED gap_init_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 192 #define GAP_INIT_RP_SIZE 7
Silvio Lucio Oliva 70:d20d30f59b1c 193
Silvio Lucio Oliva 70:d20d30f59b1c 194 #define OCF_GAP_SET_NON_CONNECTABLE 0x008B
Silvio Lucio Oliva 70:d20d30f59b1c 195 typedef __packed struct _gap_set_non_connectable_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 196 uint8_t advertising_event_type;
Silvio Lucio Oliva 70:d20d30f59b1c 197 #if BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 198 ///@cond BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 199 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 200 ///@endcond
Silvio Lucio Oliva 70:d20d30f59b1c 201 #endif
Silvio Lucio Oliva 70:d20d30f59b1c 202 } PACKED gap_set_non_connectable_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 203
Silvio Lucio Oliva 70:d20d30f59b1c 204 #define OCF_GAP_SET_UNDIRECTED_CONNECTABLE 0x008C
Silvio Lucio Oliva 70:d20d30f59b1c 205 typedef __packed struct _gap_set_undirected_connectable_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 206 uint8_t adv_filter_policy;
Silvio Lucio Oliva 70:d20d30f59b1c 207 uint8_t own_addr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 208 } PACKED gap_set_undirected_connectable_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 209 #define GAP_SET_UNDIRECTED_CONNECTABLE_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 210
Silvio Lucio Oliva 70:d20d30f59b1c 211 #define OCF_GAP_SLAVE_SECURITY_REQUEST 0x008D
Silvio Lucio Oliva 70:d20d30f59b1c 212 typedef __packed struct _gap_slave_security_request_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 213 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 214 uint8_t bonding;
Silvio Lucio Oliva 70:d20d30f59b1c 215 uint8_t mitm_protection;
Silvio Lucio Oliva 70:d20d30f59b1c 216 } PACKED gap_slave_security_request_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 217 #define GAP_SLAVE_SECURITY_REQUEST_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 218
Silvio Lucio Oliva 70:d20d30f59b1c 219 #define OCF_GAP_UPDATE_ADV_DATA 0x008E
Silvio Lucio Oliva 70:d20d30f59b1c 220
Silvio Lucio Oliva 70:d20d30f59b1c 221 #define OCF_GAP_DELETE_AD_TYPE 0x008F
Silvio Lucio Oliva 70:d20d30f59b1c 222 typedef __packed struct _gap_delete_ad_type_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 223 uint8_t ad_type;
Silvio Lucio Oliva 70:d20d30f59b1c 224 } PACKED gap_delete_ad_type_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 225 #define GAP_DELETE_AD_TYPE_CP_SIZE 1
Silvio Lucio Oliva 70:d20d30f59b1c 226
Silvio Lucio Oliva 70:d20d30f59b1c 227 #define OCF_GAP_GET_SECURITY_LEVEL 0x0090
Silvio Lucio Oliva 70:d20d30f59b1c 228 typedef __packed struct _gap_get_security_level_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 229 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 230 uint8_t mitm_protection;
Silvio Lucio Oliva 70:d20d30f59b1c 231 uint8_t bonding;
Silvio Lucio Oliva 70:d20d30f59b1c 232 uint8_t oob_data;
Silvio Lucio Oliva 70:d20d30f59b1c 233 uint8_t passkey_required;
Silvio Lucio Oliva 70:d20d30f59b1c 234 } PACKED gap_get_security_level_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 235 #define GAP_GET_SECURITY_LEVEL_RP_SIZE 5
Silvio Lucio Oliva 70:d20d30f59b1c 236
Silvio Lucio Oliva 70:d20d30f59b1c 237 #define OCF_GAP_SET_EVT_MASK 0x0091
Silvio Lucio Oliva 70:d20d30f59b1c 238 typedef __packed struct _gap_set_evt_mask_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 239 uint16_t evt_mask;
Silvio Lucio Oliva 70:d20d30f59b1c 240 } PACKED gap_set_evt_mask_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 241 #define GAP_SET_EVT_MASK_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 242
Silvio Lucio Oliva 70:d20d30f59b1c 243 #define OCF_GAP_CONFIGURE_WHITELIST 0x0092
Silvio Lucio Oliva 70:d20d30f59b1c 244
Silvio Lucio Oliva 70:d20d30f59b1c 245 #define OCF_GAP_TERMINATE 0x0093
Silvio Lucio Oliva 70:d20d30f59b1c 246 typedef __packed struct _gap_terminate_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 247 uint16_t handle;
Silvio Lucio Oliva 70:d20d30f59b1c 248 uint8_t reason;
Silvio Lucio Oliva 70:d20d30f59b1c 249 } PACKED gap_terminate_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 250 #define GAP_TERMINATE_CP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 251
Silvio Lucio Oliva 70:d20d30f59b1c 252 #define OCF_GAP_CLEAR_SECURITY_DB 0x0094
Silvio Lucio Oliva 70:d20d30f59b1c 253
Silvio Lucio Oliva 70:d20d30f59b1c 254 #define OCF_GAP_ALLOW_REBOND_DB 0x0095
Silvio Lucio Oliva 70:d20d30f59b1c 255 #if BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 256 ///@cond BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 257 typedef __packed struct _gap_allow_rebond_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 258 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 259 } PACKED gap_allow_rebond_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 260 ///@endcond
Silvio Lucio Oliva 70:d20d30f59b1c 261 #endif
Silvio Lucio Oliva 70:d20d30f59b1c 262
Silvio Lucio Oliva 70:d20d30f59b1c 263
Silvio Lucio Oliva 70:d20d30f59b1c 264 #define OCF_GAP_START_LIMITED_DISCOVERY_PROC 0x0096
Silvio Lucio Oliva 70:d20d30f59b1c 265 typedef __packed struct _gap_start_limited_discovery_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 266 uint16_t scanInterval;
Silvio Lucio Oliva 70:d20d30f59b1c 267 uint16_t scanWindow;
Silvio Lucio Oliva 70:d20d30f59b1c 268 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 269 uint8_t filterDuplicates;
Silvio Lucio Oliva 70:d20d30f59b1c 270 } PACKED gap_start_limited_discovery_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 271 #define GAP_START_LIMITED_DISCOVERY_PROC_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 272
Silvio Lucio Oliva 70:d20d30f59b1c 273 #define OCF_GAP_START_GENERAL_DISCOVERY_PROC 0x0097
Silvio Lucio Oliva 70:d20d30f59b1c 274 typedef __packed struct _gap_start_general_discovery_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 275 uint16_t scanInterval;
Silvio Lucio Oliva 70:d20d30f59b1c 276 uint16_t scanWindow;
Silvio Lucio Oliva 70:d20d30f59b1c 277 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 278 uint8_t filterDuplicates;
Silvio Lucio Oliva 70:d20d30f59b1c 279 } PACKED gap_start_general_discovery_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 280 #define GAP_START_GENERAL_DISCOVERY_PROC_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 281
Silvio Lucio Oliva 70:d20d30f59b1c 282 #define OCF_GAP_START_NAME_DISCOVERY_PROC 0x0098
Silvio Lucio Oliva 70:d20d30f59b1c 283 typedef __packed struct _gap_start_name_discovery_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 284 uint16_t scanInterval;
Silvio Lucio Oliva 70:d20d30f59b1c 285 uint16_t scanWindow;
Silvio Lucio Oliva 70:d20d30f59b1c 286 uint8_t peer_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 287 tBDAddr peer_bdaddr;
Silvio Lucio Oliva 70:d20d30f59b1c 288 uint8_t own_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 289 uint16_t conn_min_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 290 uint16_t conn_max_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 291 uint16_t conn_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 292 uint16_t supervision_timeout;
Silvio Lucio Oliva 70:d20d30f59b1c 293 uint16_t min_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 294 uint16_t max_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 295 } PACKED gap_start_name_discovery_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 296 #define GAP_START_NAME_DISCOVERY_PROC_CP_SIZE 24
Silvio Lucio Oliva 70:d20d30f59b1c 297
Silvio Lucio Oliva 70:d20d30f59b1c 298 #define OCF_GAP_START_AUTO_CONN_ESTABLISH_PROC 0x0099
Silvio Lucio Oliva 70:d20d30f59b1c 299
Silvio Lucio Oliva 70:d20d30f59b1c 300 #define OCF_GAP_START_GENERAL_CONN_ESTABLISH_PROC 0x009A
Silvio Lucio Oliva 70:d20d30f59b1c 301 #if BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 302 ///@cond BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 303 typedef __packed struct _gap_start_general_conn_establish_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 304 uint8_t scan_type;
Silvio Lucio Oliva 70:d20d30f59b1c 305 uint16_t scan_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 306 uint16_t scan_window;
Silvio Lucio Oliva 70:d20d30f59b1c 307 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 308 uint8_t filter_duplicates;
Silvio Lucio Oliva 70:d20d30f59b1c 309 } PACKED gap_start_general_conn_establish_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 310 ///@endcond
Silvio Lucio Oliva 70:d20d30f59b1c 311 #else
Silvio Lucio Oliva 70:d20d30f59b1c 312 ///@cond BLUENRG
Silvio Lucio Oliva 70:d20d30f59b1c 313 typedef __packed struct _gap_start_general_conn_establish_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 314 uint8_t scan_type;
Silvio Lucio Oliva 70:d20d30f59b1c 315 uint16_t scan_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 316 uint16_t scan_window;
Silvio Lucio Oliva 70:d20d30f59b1c 317 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 318 uint8_t filter_duplicates;
Silvio Lucio Oliva 70:d20d30f59b1c 319 uint8_t use_reconn_addr;
Silvio Lucio Oliva 70:d20d30f59b1c 320 tBDAddr reconn_addr;
Silvio Lucio Oliva 70:d20d30f59b1c 321 } PACKED gap_start_general_conn_establish_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 322 ///@endcond
Silvio Lucio Oliva 70:d20d30f59b1c 323 #endif
Silvio Lucio Oliva 70:d20d30f59b1c 324
Silvio Lucio Oliva 70:d20d30f59b1c 325 #define OCF_GAP_START_SELECTIVE_CONN_ESTABLISH_PROC 0x009B
Silvio Lucio Oliva 70:d20d30f59b1c 326 #define GAP_START_SELECTIVE_CONN_ESTABLISH_PROC_CP_SIZE 8
Silvio Lucio Oliva 70:d20d30f59b1c 327 typedef __packed struct _gap_start_selective_conn_establish_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 328 uint8_t scan_type;
Silvio Lucio Oliva 70:d20d30f59b1c 329 uint16_t scan_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 330 uint16_t scan_window;
Silvio Lucio Oliva 70:d20d30f59b1c 331 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 332 uint8_t filter_duplicates;
Silvio Lucio Oliva 70:d20d30f59b1c 333 uint8_t num_whitelist_entries;
Silvio Lucio Oliva 70:d20d30f59b1c 334 uint8_t addr_array[HCI_MAX_PAYLOAD_SIZE-GAP_START_SELECTIVE_CONN_ESTABLISH_PROC_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 335 } PACKED gap_start_selective_conn_establish_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 336
Silvio Lucio Oliva 70:d20d30f59b1c 337 #define OCF_GAP_CREATE_CONNECTION 0x009C
Silvio Lucio Oliva 70:d20d30f59b1c 338 typedef __packed struct _gap_create_connection_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 339 uint16_t scanInterval;
Silvio Lucio Oliva 70:d20d30f59b1c 340 uint16_t scanWindow;
Silvio Lucio Oliva 70:d20d30f59b1c 341 uint8_t peer_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 342 tBDAddr peer_bdaddr;
Silvio Lucio Oliva 70:d20d30f59b1c 343 uint8_t own_bdaddr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 344 uint16_t conn_min_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 345 uint16_t conn_max_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 346 uint16_t conn_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 347 uint16_t supervision_timeout;
Silvio Lucio Oliva 70:d20d30f59b1c 348 uint16_t min_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 349 uint16_t max_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 350 } PACKED gap_create_connection_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 351 #define GAP_CREATE_CONNECTION_CP_SIZE 24
Silvio Lucio Oliva 70:d20d30f59b1c 352
Silvio Lucio Oliva 70:d20d30f59b1c 353 #define OCF_GAP_TERMINATE_GAP_PROCEDURE 0x009D
Silvio Lucio Oliva 70:d20d30f59b1c 354
Silvio Lucio Oliva 70:d20d30f59b1c 355 #define OCF_GAP_START_CONNECTION_UPDATE 0x009E
Silvio Lucio Oliva 70:d20d30f59b1c 356 typedef __packed struct _gap_start_connection_update_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 357 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 358 uint16_t conn_min_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 359 uint16_t conn_max_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 360 uint16_t conn_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 361 uint16_t supervision_timeout;
Silvio Lucio Oliva 70:d20d30f59b1c 362 uint16_t min_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 363 uint16_t max_conn_length;
Silvio Lucio Oliva 70:d20d30f59b1c 364 } PACKED gap_start_connection_update_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 365 #define GAP_START_CONNECTION_UPDATE_CP_SIZE 14
Silvio Lucio Oliva 70:d20d30f59b1c 366
Silvio Lucio Oliva 70:d20d30f59b1c 367 #define OCF_GAP_SEND_PAIRING_REQUEST 0x009F
Silvio Lucio Oliva 70:d20d30f59b1c 368 typedef __packed struct _gap_send_pairing_request_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 369 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 370 uint8_t force_rebond;
Silvio Lucio Oliva 70:d20d30f59b1c 371 } PACKED gap_send_pairing_request_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 372 #define GAP_GAP_SEND_PAIRING_REQUEST_CP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 373
Silvio Lucio Oliva 70:d20d30f59b1c 374 #define OCF_GAP_RESOLVE_PRIVATE_ADDRESS 0x00A0
Silvio Lucio Oliva 70:d20d30f59b1c 375 typedef __packed struct _gap_resolve_private_address_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 376 tBDAddr address;
Silvio Lucio Oliva 70:d20d30f59b1c 377 } PACKED gap_resolve_private_address_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 378 #define GAP_RESOLVE_PRIVATE_ADDRESS_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 379 #if BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 380 ///@cond BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 381 typedef __packed struct _gap_resolve_private_address_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 382 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 383 tBDAddr address;
Silvio Lucio Oliva 70:d20d30f59b1c 384 } PACKED gap_resolve_private_address_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 385 ///@endcond
Silvio Lucio Oliva 70:d20d30f59b1c 386 #endif
Silvio Lucio Oliva 70:d20d30f59b1c 387
Silvio Lucio Oliva 70:d20d30f59b1c 388 #define OCF_GAP_SET_BROADCAST_MODE 0x00A1
Silvio Lucio Oliva 70:d20d30f59b1c 389 #define GAP_SET_BROADCAST_MODE_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 390 typedef __packed struct _gap_set_broadcast_mode_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 391 uint16_t adv_interv_min;
Silvio Lucio Oliva 70:d20d30f59b1c 392 uint16_t adv_interv_max;
Silvio Lucio Oliva 70:d20d30f59b1c 393 uint8_t adv_type;
Silvio Lucio Oliva 70:d20d30f59b1c 394 uint8_t own_addr_type;
Silvio Lucio Oliva 70:d20d30f59b1c 395 uint8_t var_len_data[HCI_MAX_PAYLOAD_SIZE-GAP_SET_BROADCAST_MODE_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 396 } PACKED gap_set_broadcast_mode_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 397
Silvio Lucio Oliva 70:d20d30f59b1c 398 #define OCF_GAP_START_OBSERVATION_PROC 0x00A2
Silvio Lucio Oliva 70:d20d30f59b1c 399 typedef __packed struct _gap_start_observation_proc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 400 uint16_t scan_interval;
Silvio Lucio Oliva 70:d20d30f59b1c 401 uint16_t scan_window;
Silvio Lucio Oliva 70:d20d30f59b1c 402 uint8_t scan_type;
Silvio Lucio Oliva 70:d20d30f59b1c 403 uint8_t own_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 404 uint8_t filter_duplicates;
Silvio Lucio Oliva 70:d20d30f59b1c 405 } PACKED gap_start_observation_proc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 406
Silvio Lucio Oliva 70:d20d30f59b1c 407 #define OCF_GAP_GET_BONDED_DEVICES 0x00A3
Silvio Lucio Oliva 70:d20d30f59b1c 408 typedef __packed struct _gap_get_bonded_devices_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 409 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 410 uint8_t num_addr;
Silvio Lucio Oliva 70:d20d30f59b1c 411 uint8_t dev_list[HCI_MAX_PAYLOAD_SIZE-HCI_EVENT_HDR_SIZE-EVT_CMD_COMPLETE_SIZE-1];
Silvio Lucio Oliva 70:d20d30f59b1c 412 } PACKED gap_get_bonded_devices_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 413
Silvio Lucio Oliva 70:d20d30f59b1c 414 #define OCF_GAP_IS_DEVICE_BONDED 0x00A4
Silvio Lucio Oliva 70:d20d30f59b1c 415 typedef __packed struct _gap_is_device_bonded_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 416 uint8_t peer_address_type;
Silvio Lucio Oliva 70:d20d30f59b1c 417 tBDAddr peer_address;
Silvio Lucio Oliva 70:d20d30f59b1c 418 } PACKED gap_is_device_bonded_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 419
Silvio Lucio Oliva 70:d20d30f59b1c 420
Silvio Lucio Oliva 70:d20d30f59b1c 421 #define OCF_GATT_INIT 0x0101
Silvio Lucio Oliva 70:d20d30f59b1c 422
Silvio Lucio Oliva 70:d20d30f59b1c 423 #define OCF_GATT_ADD_SERV 0x0102
Silvio Lucio Oliva 70:d20d30f59b1c 424 typedef __packed struct _gatt_add_serv_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 425 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 426 uint16_t handle;
Silvio Lucio Oliva 70:d20d30f59b1c 427 } PACKED gatt_add_serv_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 428 #define GATT_ADD_SERV_RP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 429
Silvio Lucio Oliva 70:d20d30f59b1c 430 #define OCF_GATT_INCLUDE_SERV 0x0103
Silvio Lucio Oliva 70:d20d30f59b1c 431 typedef __packed struct _gatt_include_serv_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 432 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 433 uint16_t handle;
Silvio Lucio Oliva 70:d20d30f59b1c 434 } PACKED gatt_include_serv_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 435 #define GATT_INCLUDE_SERV_RP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 436
Silvio Lucio Oliva 70:d20d30f59b1c 437 #define OCF_GATT_ADD_CHAR 0x0104
Silvio Lucio Oliva 70:d20d30f59b1c 438 typedef __packed struct _gatt_add_char_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 439 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 440 uint16_t handle;
Silvio Lucio Oliva 70:d20d30f59b1c 441 } PACKED gatt_add_char_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 442 #define GATT_ADD_CHAR_RP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 443
Silvio Lucio Oliva 70:d20d30f59b1c 444 #define OCF_GATT_ADD_CHAR_DESC 0x0105
Silvio Lucio Oliva 70:d20d30f59b1c 445 typedef __packed struct _gatt_add_char_desc_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 446 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 447 uint16_t handle;
Silvio Lucio Oliva 70:d20d30f59b1c 448 } PACKED gatt_add_char_desc_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 449 #define GATT_ADD_CHAR_DESC_RP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 450
Silvio Lucio Oliva 70:d20d30f59b1c 451 #define OCF_GATT_UPD_CHAR_VAL 0x0106
Silvio Lucio Oliva 70:d20d30f59b1c 452
Silvio Lucio Oliva 70:d20d30f59b1c 453 #define OCF_GATT_DEL_CHAR 0x0107
Silvio Lucio Oliva 70:d20d30f59b1c 454 typedef __packed struct _gatt_del_char_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 455 uint16_t service_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 456 uint16_t char_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 457 } PACKED gatt_del_char_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 458 #define GATT_DEL_CHAR_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 459
Silvio Lucio Oliva 70:d20d30f59b1c 460 #define OCF_GATT_DEL_SERV 0x0108
Silvio Lucio Oliva 70:d20d30f59b1c 461 typedef __packed struct _gatt_del_serv_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 462 uint16_t service_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 463 } PACKED gatt_del_serv_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 464 #define GATT_DEL_SERV_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 465
Silvio Lucio Oliva 70:d20d30f59b1c 466 #define OCF_GATT_DEL_INC_SERV 0x0109
Silvio Lucio Oliva 70:d20d30f59b1c 467 typedef __packed struct _gatt_del_inc_serv_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 468 uint16_t service_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 469 uint16_t inc_serv_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 470 } PACKED gatt_del_inc_serv_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 471 #define GATT_DEL_INC_SERV_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 472
Silvio Lucio Oliva 70:d20d30f59b1c 473 #define OCF_GATT_SET_EVT_MASK 0x010A
Silvio Lucio Oliva 70:d20d30f59b1c 474 typedef __packed struct _gatt_set_evt_mask_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 475 uint32_t evt_mask;
Silvio Lucio Oliva 70:d20d30f59b1c 476 } PACKED gatt_set_evt_mask_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 477 #define GATT_SET_EVT_MASK_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 478
Silvio Lucio Oliva 70:d20d30f59b1c 479 #define OCF_GATT_EXCHANGE_CONFIG 0x010B
Silvio Lucio Oliva 70:d20d30f59b1c 480 typedef __packed struct _gatt_exchange_config_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 481 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 482 } PACKED gatt_exchange_config_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 483 #define GATT_EXCHANGE_CONFIG_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 484
Silvio Lucio Oliva 70:d20d30f59b1c 485 #define OCF_ATT_FIND_INFO_REQ 0x010C
Silvio Lucio Oliva 70:d20d30f59b1c 486 typedef __packed struct _att_find_info_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 487 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 488 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 489 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 490 } PACKED att_find_info_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 491 #define ATT_FIND_INFO_REQ_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 492
Silvio Lucio Oliva 70:d20d30f59b1c 493 #define OCF_ATT_FIND_BY_TYPE_VALUE_REQ 0x010D
Silvio Lucio Oliva 70:d20d30f59b1c 494 #define ATT_FIND_BY_TYPE_VALUE_REQ_CP_SIZE 9
Silvio Lucio Oliva 70:d20d30f59b1c 495 typedef __packed struct _att_find_by_type_value_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 496 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 497 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 498 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 499 uint8_t uuid[2];
Silvio Lucio Oliva 70:d20d30f59b1c 500 uint8_t attr_val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 501 uint8_t attr_val[ATT_MTU - 7];
Silvio Lucio Oliva 70:d20d30f59b1c 502 } PACKED att_find_by_type_value_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 503
Silvio Lucio Oliva 70:d20d30f59b1c 504 #define OCF_ATT_READ_BY_TYPE_REQ 0x010E
Silvio Lucio Oliva 70:d20d30f59b1c 505 #define ATT_READ_BY_TYPE_REQ_CP_SIZE 7 // without UUID
Silvio Lucio Oliva 70:d20d30f59b1c 506 typedef __packed struct _att_read_by_type_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 507 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 508 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 509 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 510 uint8_t uuid_type;
Silvio Lucio Oliva 70:d20d30f59b1c 511 uint8_t uuid[16];
Silvio Lucio Oliva 70:d20d30f59b1c 512 } PACKED att_read_by_type_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 513
Silvio Lucio Oliva 70:d20d30f59b1c 514 #define OCF_ATT_READ_BY_GROUP_TYPE_REQ 0x010F
Silvio Lucio Oliva 70:d20d30f59b1c 515 #define ATT_READ_BY_GROUP_TYPE_REQ_CP_SIZE 7 // without UUID
Silvio Lucio Oliva 70:d20d30f59b1c 516 typedef __packed struct _att_read_by_group_type_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 517 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 518 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 519 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 520 uint8_t uuid_type;
Silvio Lucio Oliva 70:d20d30f59b1c 521 uint8_t uuid[16];
Silvio Lucio Oliva 70:d20d30f59b1c 522 } PACKED att_read_by_group_type_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 523
Silvio Lucio Oliva 70:d20d30f59b1c 524 #define OCF_ATT_PREPARE_WRITE_REQ 0x0110
Silvio Lucio Oliva 70:d20d30f59b1c 525 #define ATT_PREPARE_WRITE_REQ_CP_SIZE 7 // without attr_val
Silvio Lucio Oliva 70:d20d30f59b1c 526 typedef __packed struct _att_prepare_write_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 527 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 528 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 529 uint16_t value_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 530 uint8_t attr_val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 531 uint8_t attr_val[ATT_MTU-5];
Silvio Lucio Oliva 70:d20d30f59b1c 532 } PACKED att_prepare_write_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 533
Silvio Lucio Oliva 70:d20d30f59b1c 534 #define OCF_ATT_EXECUTE_WRITE_REQ 0x0111
Silvio Lucio Oliva 70:d20d30f59b1c 535 typedef __packed struct _att_execute_write_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 536 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 537 uint8_t execute;
Silvio Lucio Oliva 70:d20d30f59b1c 538 } PACKED att_execute_write_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 539 #define ATT_EXECUTE_WRITE_REQ_CP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 540
Silvio Lucio Oliva 70:d20d30f59b1c 541 #define OCF_GATT_DISC_ALL_PRIM_SERVICES 0X0112
Silvio Lucio Oliva 70:d20d30f59b1c 542 typedef __packed struct _gatt_disc_all_prim_serivces_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 543 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 544 } PACKED gatt_disc_all_prim_services_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 545 #define GATT_DISC_ALL_PRIM_SERVICES_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 546
Silvio Lucio Oliva 70:d20d30f59b1c 547 #define OCF_GATT_DISC_PRIM_SERVICE_BY_UUID 0x0113
Silvio Lucio Oliva 70:d20d30f59b1c 548 typedef __packed struct _gatt_disc_prim_service_by_uuid_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 549 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 550 uint8_t uuid_type;
Silvio Lucio Oliva 70:d20d30f59b1c 551 uint8_t uuid[16];
Silvio Lucio Oliva 70:d20d30f59b1c 552 } PACKED gatt_disc_prim_service_by_uuid_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 553 #define GATT_DISC_PRIM_SERVICE_BY_UUID_CP_SIZE 3 // Without uuid
Silvio Lucio Oliva 70:d20d30f59b1c 554
Silvio Lucio Oliva 70:d20d30f59b1c 555 #define OCF_GATT_FIND_INCLUDED_SERVICES 0X0114
Silvio Lucio Oliva 70:d20d30f59b1c 556 typedef __packed struct _gatt_disc_find_included_services_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 557 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 558 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 559 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 560 } PACKED gatt_find_included_services_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 561 #define GATT_FIND_INCLUDED_SERVICES_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 562
Silvio Lucio Oliva 70:d20d30f59b1c 563 #define OCF_GATT_DISC_ALL_CHARAC_OF_SERV 0X0115
Silvio Lucio Oliva 70:d20d30f59b1c 564 typedef __packed struct _gatt_disc_all_charac_of_serv_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 565 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 566 uint16_t start_attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 567 uint16_t end_attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 568 } PACKED gatt_disc_all_charac_of_serv_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 569 #define GATT_DISC_ALL_CHARAC_OF_SERV_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 570
Silvio Lucio Oliva 70:d20d30f59b1c 571 #define OCF_GATT_DISC_CHARAC_BY_UUID 0X0116
Silvio Lucio Oliva 70:d20d30f59b1c 572
Silvio Lucio Oliva 70:d20d30f59b1c 573 #define OCF_GATT_DISC_ALL_CHARAC_DESCRIPTORS 0X0117
Silvio Lucio Oliva 70:d20d30f59b1c 574 typedef __packed struct _gatt_disc_all_charac_descriptors_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 575 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 576 uint16_t char_val_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 577 uint16_t char_end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 578 } PACKED gatt_disc_all_charac_descriptors_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 579 #define GATT_DISC_ALL_CHARAC_DESCRIPTORS_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 580
Silvio Lucio Oliva 70:d20d30f59b1c 581 #define OCF_GATT_READ_CHARAC_VAL 0x0118
Silvio Lucio Oliva 70:d20d30f59b1c 582 typedef __packed struct _gatt_read_charac_val_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 583 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 584 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 585 } PACKED gatt_read_charac_val_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 586 #define GATT_READ_CHARAC_VAL_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 587
Silvio Lucio Oliva 70:d20d30f59b1c 588 #define OCF_GATT_READ_USING_CHARAC_UUID 0x0109
Silvio Lucio Oliva 70:d20d30f59b1c 589 typedef __packed struct _gatt_read_using_charac_uuid_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 590 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 591 uint16_t start_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 592 uint16_t end_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 593 uint8_t uuid_type;
Silvio Lucio Oliva 70:d20d30f59b1c 594 uint8_t uuid[16];
Silvio Lucio Oliva 70:d20d30f59b1c 595 } PACKED gatt_read_using_charac_uuid_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 596 #define GATT_READ_USING_CHARAC_UUID_CP_SIZE 7 // without UUID
Silvio Lucio Oliva 70:d20d30f59b1c 597
Silvio Lucio Oliva 70:d20d30f59b1c 598 #define OCF_GATT_READ_LONG_CHARAC_VAL 0x011A
Silvio Lucio Oliva 70:d20d30f59b1c 599 typedef __packed struct _gatt_read_long_charac_val_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 600 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 601 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 602 uint16_t val_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 603 } PACKED gatt_read_long_charac_val_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 604 #define GATT_READ_LONG_CHARAC_VAL_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 605
Silvio Lucio Oliva 70:d20d30f59b1c 606 #define OCF_GATT_READ_MULTIPLE_CHARAC_VAL 0x011B
Silvio Lucio Oliva 70:d20d30f59b1c 607 #define GATT_READ_MULTIPLE_CHARAC_VAL_CP_SIZE 3 // without set_of_handles
Silvio Lucio Oliva 70:d20d30f59b1c 608 typedef __packed struct _gatt_read_multiple_charac_val_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 609 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 610 uint8_t num_handles;
Silvio Lucio Oliva 70:d20d30f59b1c 611 uint8_t set_of_handles[HCI_MAX_PAYLOAD_SIZE-GATT_READ_MULTIPLE_CHARAC_VAL_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 612 } PACKED gatt_read_multiple_charac_val_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 613
Silvio Lucio Oliva 70:d20d30f59b1c 614 #define OCF_GATT_WRITE_CHAR_VALUE 0x011C
Silvio Lucio Oliva 70:d20d30f59b1c 615
Silvio Lucio Oliva 70:d20d30f59b1c 616 #define OCF_GATT_WRITE_LONG_CHARAC_VAL 0x011D
Silvio Lucio Oliva 70:d20d30f59b1c 617 #define GATT_WRITE_LONG_CHARAC_VAL_CP_SIZE 7 // without set_of_handles
Silvio Lucio Oliva 70:d20d30f59b1c 618 typedef __packed struct _gatt_write_long_charac_val_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 619 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 620 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 621 uint16_t val_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 622 uint8_t val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 623 uint8_t attr_val[HCI_MAX_PAYLOAD_SIZE-GATT_WRITE_LONG_CHARAC_VAL_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 624 } PACKED gatt_write_long_charac_val_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 625
Silvio Lucio Oliva 70:d20d30f59b1c 626 #define OCF_GATT_WRITE_CHARAC_RELIABLE 0x011E
Silvio Lucio Oliva 70:d20d30f59b1c 627 #define GATT_WRITE_CHARAC_RELIABLE_CP_SIZE 7 // without set_of_handles
Silvio Lucio Oliva 70:d20d30f59b1c 628 typedef __packed struct _gatt_write_charac_reliable_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 629 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 630 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 631 uint16_t val_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 632 uint8_t val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 633 uint8_t attr_val[HCI_MAX_PAYLOAD_SIZE-GATT_WRITE_CHARAC_RELIABLE_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 634 } PACKED gatt_write_charac_reliable_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 635
Silvio Lucio Oliva 70:d20d30f59b1c 636 #define OCF_GATT_WRITE_LONG_CHARAC_DESC 0x011F
Silvio Lucio Oliva 70:d20d30f59b1c 637 #define GATT_WRITE_LONG_CHARAC_DESC_CP_SIZE 7 // without set_of_handles
Silvio Lucio Oliva 70:d20d30f59b1c 638 typedef __packed struct _gatt_write_long_charac_desc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 639 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 640 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 641 uint16_t val_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 642 uint8_t val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 643 uint8_t attr_val[HCI_MAX_PAYLOAD_SIZE-GATT_WRITE_LONG_CHARAC_DESC_CP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 644 } PACKED gatt_write_long_charac_desc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 645
Silvio Lucio Oliva 70:d20d30f59b1c 646 #define OCF_GATT_READ_LONG_CHARAC_DESC 0x0120
Silvio Lucio Oliva 70:d20d30f59b1c 647 typedef __packed struct _gatt_read_long_charac_desc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 648 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 649 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 650 uint16_t val_offset;
Silvio Lucio Oliva 70:d20d30f59b1c 651 } PACKED gatt_read_long_charac_desc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 652 #define GATT_READ_LONG_CHARAC_DESC_CP_SIZE 6
Silvio Lucio Oliva 70:d20d30f59b1c 653
Silvio Lucio Oliva 70:d20d30f59b1c 654 #define OCF_GATT_WRITE_CHAR_DESCRIPTOR 0x0121
Silvio Lucio Oliva 70:d20d30f59b1c 655
Silvio Lucio Oliva 70:d20d30f59b1c 656 #define OCF_GATT_READ_CHAR_DESCRIPTOR 0x0122
Silvio Lucio Oliva 70:d20d30f59b1c 657 typedef __packed struct _gatt_read_charac_desc_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 658 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 659 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 660 } PACKED gatt_read_charac_desc_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 661 #define GATT_READ_CHAR_DESCRIPTOR_CP_SIZE 4
Silvio Lucio Oliva 70:d20d30f59b1c 662
Silvio Lucio Oliva 70:d20d30f59b1c 663 #define OCF_GATT_WRITE_WITHOUT_RESPONSE 0x0123
Silvio Lucio Oliva 70:d20d30f59b1c 664 #define GATT_WRITE_WITHOUT_RESPONSE_CP_SIZE 5 // without attr_val
Silvio Lucio Oliva 70:d20d30f59b1c 665 typedef __packed struct _gatt_write_without_resp_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 666 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 667 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 668 uint8_t val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 669 uint8_t attr_val[ATT_MTU - 3];
Silvio Lucio Oliva 70:d20d30f59b1c 670 } PACKED gatt_write_without_resp_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 671
Silvio Lucio Oliva 70:d20d30f59b1c 672 #define OCF_GATT_SIGNED_WRITE_WITHOUT_RESPONSE 0x0124
Silvio Lucio Oliva 70:d20d30f59b1c 673 #define GATT_SIGNED_WRITE_WITHOUT_RESPONSE_CP_SIZE 5 // without attr_val
Silvio Lucio Oliva 70:d20d30f59b1c 674 typedef __packed struct _gatt_signed_write_without_resp_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 675 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 676 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 677 uint8_t val_len;
Silvio Lucio Oliva 70:d20d30f59b1c 678 uint8_t attr_val[ATT_MTU - 13];
Silvio Lucio Oliva 70:d20d30f59b1c 679 } PACKED gatt_signed_write_without_resp_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 680
Silvio Lucio Oliva 70:d20d30f59b1c 681 #define OCF_GATT_CONFIRM_INDICATION 0x0125
Silvio Lucio Oliva 70:d20d30f59b1c 682 typedef __packed struct _gatt_confirm_indication_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 683 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 684 } PACKED gatt_confirm_indication_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 685 #define GATT_CONFIRM_INDICATION_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 686
Silvio Lucio Oliva 70:d20d30f59b1c 687 #define OCF_GATT_WRITE_RESPONSE 0x0126
Silvio Lucio Oliva 70:d20d30f59b1c 688
Silvio Lucio Oliva 70:d20d30f59b1c 689 #define OCF_GATT_ALLOW_READ 0x0127
Silvio Lucio Oliva 70:d20d30f59b1c 690 typedef __packed struct _gatt_allow_read_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 691 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 692 } PACKED gatt_allow_read_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 693 #define GATT_ALLOW_READ_CP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 694
Silvio Lucio Oliva 70:d20d30f59b1c 695 #define OCF_GATT_SET_SECURITY_PERMISSION 0x0128
Silvio Lucio Oliva 70:d20d30f59b1c 696 typedef __packed struct _gatt_set_security_permission_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 697 uint16_t service_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 698 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 699 uint8_t security_permission;
Silvio Lucio Oliva 70:d20d30f59b1c 700 } PACKED gatt_set_security_permission_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 701 #define GATT_GATT_SET_SECURITY_PERMISSION_CP_SIZE 5
Silvio Lucio Oliva 70:d20d30f59b1c 702
Silvio Lucio Oliva 70:d20d30f59b1c 703 #define OCF_GATT_SET_DESC_VAL 0x0129
Silvio Lucio Oliva 70:d20d30f59b1c 704
Silvio Lucio Oliva 70:d20d30f59b1c 705 #define OCF_GATT_READ_HANDLE_VALUE 0x012A
Silvio Lucio Oliva 70:d20d30f59b1c 706 typedef __packed struct _gatt_read_handle_val_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 707 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 708 } PACKED gatt_read_handle_val_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 709 #define GATT_READ_HANDLE_VALUE_RP_SIZE 3
Silvio Lucio Oliva 70:d20d30f59b1c 710 typedef __packed struct _gatt_read_handle_val_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 711 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 712 uint16_t value_len;
Silvio Lucio Oliva 70:d20d30f59b1c 713 uint8_t value[HCI_MAX_PAYLOAD_SIZE-GATT_READ_HANDLE_VALUE_RP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 714 } PACKED gatt_read_handle_val_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 715
Silvio Lucio Oliva 70:d20d30f59b1c 716 #define OCF_GATT_READ_HANDLE_VALUE_OFFSET 0x012B
Silvio Lucio Oliva 70:d20d30f59b1c 717 typedef __packed struct _gatt_read_handle_val_offset_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 718 uint16_t attr_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 719 uint8_t offset;
Silvio Lucio Oliva 70:d20d30f59b1c 720 } PACKED gatt_read_handle_val_offset_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 721 #define GATT_READ_HANDLE_VALUE_OFFSET_RP_SIZE 2
Silvio Lucio Oliva 70:d20d30f59b1c 722 typedef __packed struct _gatt_read_handle_val_offset_rp{
Silvio Lucio Oliva 70:d20d30f59b1c 723 uint8_t status;
Silvio Lucio Oliva 70:d20d30f59b1c 724 uint8_t value_len;
Silvio Lucio Oliva 70:d20d30f59b1c 725 uint8_t value[HCI_MAX_PAYLOAD_SIZE-GATT_READ_HANDLE_VALUE_OFFSET_RP_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 726 } PACKED gatt_read_handle_val_offset_rp;
Silvio Lucio Oliva 70:d20d30f59b1c 727
Silvio Lucio Oliva 70:d20d30f59b1c 728 #define OCF_L2CAP_CONN_PARAM_UPDATE_REQ 0x0181
Silvio Lucio Oliva 70:d20d30f59b1c 729 typedef __packed struct _l2cap_conn_param_update_req_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 730 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 731 uint16_t interval_min;
Silvio Lucio Oliva 70:d20d30f59b1c 732 uint16_t interval_max;
Silvio Lucio Oliva 70:d20d30f59b1c 733 uint16_t slave_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 734 uint16_t timeout_multiplier;
Silvio Lucio Oliva 70:d20d30f59b1c 735 } PACKED l2cap_conn_param_update_req_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 736 #define L2CAP_CONN_PARAM_UPDATE_REQ_CP_SIZE 10
Silvio Lucio Oliva 70:d20d30f59b1c 737
Silvio Lucio Oliva 70:d20d30f59b1c 738 #define OCF_L2CAP_CONN_PARAM_UPDATE_RESP 0x0182
Silvio Lucio Oliva 70:d20d30f59b1c 739 #if BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 740 ///@cond BLUENRG_MS
Silvio Lucio Oliva 70:d20d30f59b1c 741 typedef __packed struct _l2cap_conn_param_update_resp_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 742 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 743 uint16_t interval_min;
Silvio Lucio Oliva 70:d20d30f59b1c 744 uint16_t interval_max;
Silvio Lucio Oliva 70:d20d30f59b1c 745 uint16_t slave_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 746 uint16_t timeout_multiplier;
Silvio Lucio Oliva 70:d20d30f59b1c 747 uint16_t min_ce_length;
Silvio Lucio Oliva 70:d20d30f59b1c 748 uint16_t max_ce_length;
Silvio Lucio Oliva 70:d20d30f59b1c 749 uint8_t id;
Silvio Lucio Oliva 70:d20d30f59b1c 750 uint8_t accept;
Silvio Lucio Oliva 70:d20d30f59b1c 751 } PACKED l2cap_conn_param_update_resp_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 752 ///@endcond
Silvio Lucio Oliva 70:d20d30f59b1c 753 #else
Silvio Lucio Oliva 70:d20d30f59b1c 754 ///@cond BLUENRG
Silvio Lucio Oliva 70:d20d30f59b1c 755 typedef __packed struct _l2cap_conn_param_update_resp_cp{
Silvio Lucio Oliva 70:d20d30f59b1c 756 uint16_t conn_handle;
Silvio Lucio Oliva 70:d20d30f59b1c 757 uint16_t interval_min;
Silvio Lucio Oliva 70:d20d30f59b1c 758 uint16_t interval_max;
Silvio Lucio Oliva 70:d20d30f59b1c 759 uint16_t slave_latency;
Silvio Lucio Oliva 70:d20d30f59b1c 760 uint16_t timeout_multiplier;
Silvio Lucio Oliva 70:d20d30f59b1c 761 uint8_t id;
Silvio Lucio Oliva 70:d20d30f59b1c 762 uint8_t accept;
Silvio Lucio Oliva 70:d20d30f59b1c 763 } PACKED l2cap_conn_param_update_resp_cp;
Silvio Lucio Oliva 70:d20d30f59b1c 764 ///@endcond
Silvio Lucio Oliva 70:d20d30f59b1c 765 #endif
Silvio Lucio Oliva 70:d20d30f59b1c 766
Silvio Lucio Oliva 70:d20d30f59b1c 767 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
Silvio Lucio Oliva 70:d20d30f59b1c 768
Silvio Lucio Oliva 70:d20d30f59b1c 769 /**
Silvio Lucio Oliva 70:d20d30f59b1c 770 * @defgroup BlueNRG_Events BlueNRG events (vendor specific)
Silvio Lucio Oliva 70:d20d30f59b1c 771 * @{
Silvio Lucio Oliva 70:d20d30f59b1c 772 */
Silvio Lucio Oliva 70:d20d30f59b1c 773
Silvio Lucio Oliva 70:d20d30f59b1c 774 /**
Silvio Lucio Oliva 70:d20d30f59b1c 775 * Vendor specific event for BlueNRG.
Silvio Lucio Oliva 70:d20d30f59b1c 776 */
Silvio Lucio Oliva 70:d20d30f59b1c 777 typedef __packed struct _evt_blue_aci{
Silvio Lucio Oliva 70:d20d30f59b1c 778 uint16_t ecode; /**< One of the BlueNRG event codes. */
Silvio Lucio Oliva 70:d20d30f59b1c 779 uint8_t data[VARIABLE_SIZE];
Silvio Lucio Oliva 70:d20d30f59b1c 780 } PACKED evt_blue_aci;
Silvio Lucio Oliva 70:d20d30f59b1c 781
Silvio Lucio Oliva 70:d20d30f59b1c 782
Silvio Lucio Oliva 70:d20d30f59b1c 783 /**
Silvio Lucio Oliva 70:d20d30f59b1c 784 * @}
Silvio Lucio Oliva 70:d20d30f59b1c 785 */
Silvio Lucio Oliva 70:d20d30f59b1c 786
Silvio Lucio Oliva 70:d20d30f59b1c 787 #endif /* __BLUENRG_ACI_CONST_H_ */