BLE shield

Fork of X_NUCLEO_IDB0XA1 by ST

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers bluenrg_aci_const.h Source File

bluenrg_aci_const.h

00001 /******************** (C) COPYRIGHT 2014 STMicroelectronics ********************
00002 * File Name          : bluenrg_aci_const.h
00003 * Author             : AMS - AAS
00004 * Version            : V1.0.0
00005 * Date               : 26-Jun-2014
00006 * Description        : Header file with ACI definitions for BlueNRG FW6.3.
00007 ********************************************************************************
00008 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
00009 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
00010 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
00011 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
00012 * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
00013 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
00014 *******************************************************************************/
00015 
00016 #ifndef __BLUENRG_ACI_CONST_H_
00017 #define __BLUENRG_ACI_CONST_H_
00018 
00019 #include "compiler.h"
00020 #include "link_layer.h"
00021 #include "hci_const.h"
00022 #include "bluenrg_gatt_server.h"
00023 
00024 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00025 
00026 #define OCF_HAL_WRITE_CONFIG_DATA   0x000C
00027 
00028 #define OCF_HAL_SET_TX_POWER_LEVEL          0x000F
00029 typedef __packed struct _hal_set_tx_power_level_cp{
00030     uint8_t en_high_power;
00031     uint8_t pa_level;
00032 } PACKED hal_set_tx_power_level_cp;
00033 #define HAL_SET_TX_POWER_LEVEL_CP_SIZE 2
00034 
00035 #define OCF_HAL_DEVICE_STANDBY          0x0013
00036 
00037 #define OCF_HAL_TONE_START                  0x0015
00038 typedef __packed struct _hal_tone_start_cp{
00039     uint8_t rf_channel;
00040 } PACKED hal_tone_start_cp;
00041 #define HAL_TONE_START_CP_SIZE 1
00042 
00043 #define OCF_HAL_TONE_STOP                   0x0016
00044 
00045 #define OCF_UPDATER_START                   0x0020
00046 #define OCF_UPDATER_REBOOT                  0x0021
00047 
00048 #define OCF_GET_UPDATER_VERSION                 0x0022
00049 typedef __packed struct _get_updater_version_rp{
00050     uint8_t         status;
00051     uint8_t         version;
00052 } PACKED get_updater_version_rp;
00053 #define GET_UPDATER_VERSION_RP_SIZE 2
00054 
00055 #define OCF_GET_UPDATER_BUFSIZE             0x0023
00056 typedef __packed struct _get_updater_bufsize_rp{
00057     uint8_t         status;
00058     uint8_t         buffer_size;
00059 } PACKED get_updater_bufsize_rp;
00060 #define GET_UPDATER_BUFSIZE_RP_SIZE 2
00061 
00062 #define OCF_UPDATER_ERASE_BLUE_FLAG         0x0024
00063 
00064 #define OCF_UPDATER_RESET_BLUE_FLAG         0x0025
00065 
00066 #define OCF_UPDATER_ERASE_SECTOR            0x0026
00067 typedef __packed struct _updater_erase_sector_cp{
00068     uint32_t    address;
00069 } PACKED updater_erase_sector_cp;
00070 #define UPDATER_ERASE_SECTOR_CP_SIZE 4
00071 
00072 #define OCF_UPDATER_PROG_DATA_BLOCK         0x0027
00073 #define UPDATER_PROG_DATA_BLOCK_CP_SIZE     6
00074 typedef __packed struct _updater_prog_data_block_cp{
00075     uint32_t    address;
00076     uint16_t    data_len;
00077     uint8_t     data[HCI_MAX_PAYLOAD_SIZE-UPDATER_PROG_DATA_BLOCK_CP_SIZE];
00078 } PACKED updater_prog_data_block_cp;
00079 
00080 #define OCF_UPDATER_READ_DATA_BLOCK         0x0028
00081 typedef __packed struct _updater_read_data_block_cp{
00082     uint32_t    address;
00083     uint16_t    data_len;
00084 } PACKED updater_read_data_block_cp;
00085 #define UPDATER_READ_DATA_BLOCK_CP_SIZE 6
00086 typedef __packed struct _updater_read_data_block_rp{
00087     uint8_t         status;
00088     uint8_t         data[VARIABLE_SIZE];
00089 } PACKED updater_read_data_block_rp;
00090 #define GET_UPDATER_BUFSIZE_RP_SIZE 2
00091 
00092 #define OCF_UPDATER_CALC_CRC                0x0029
00093 typedef __packed struct _updater_calc_crc_cp{
00094     uint32_t    address;
00095     uint8_t    num_sectors;
00096 } PACKED updater_calc_crc_cp;
00097 #define UPDATER_CALC_CRC_CP_SIZE 5
00098 typedef __packed struct _updater_calc_crc_rp{
00099     uint8_t         status;
00100     uint32_t        crc;
00101 } PACKED updater_calc_crc_rp;
00102 #define UPDATER_CALC_CRC_RP_SIZE 5
00103 
00104 #define OCF_UPDATER_HW_VERSION              0x002A
00105 typedef __packed struct _updater_hw_version_rp{
00106     uint8_t         status;
00107     uint8_t         version;
00108 } PACKED updater_hw_version_rp;
00109 #define UPDATER_HW_VERSION_RP_SIZE 2
00110 
00111 #define OCF_GAP_SET_NON_DISCOVERABLE        0x0081
00112 
00113 #define OCF_GAP_SET_LIMITED_DISCOVERABLE    0x0082
00114 
00115 #define OCF_GAP_SET_DISCOVERABLE            0x0083
00116 
00117 #define OCF_GAP_SET_DIRECT_CONNECTABLE      0x0084
00118 typedef __packed struct _gap_set_direct_conectable_cp_IDB05A1{
00119     uint8_t     own_bdaddr_type;
00120     uint8_t     directed_adv_type;
00121     uint8_t     direct_bdaddr_type;
00122     tBDAddr     direct_bdaddr;
00123 } PACKED gap_set_direct_conectable_cp_IDB05A1;
00124 
00125 typedef __packed struct _gap_set_direct_conectable_cp_IDB04A1{
00126     uint8_t     own_bdaddr_type;
00127     uint8_t     direct_bdaddr_type;
00128     tBDAddr     direct_bdaddr;
00129 } PACKED gap_set_direct_conectable_cp_IDB04A1;
00130 #define GAP_SET_DIRECT_CONNECTABLE_CP_SIZE 8
00131 
00132 #define OCF_GAP_SET_IO_CAPABILITY      0x0085
00133 typedef __packed struct _gap_set_io_capability_cp{
00134     uint8_t     io_capability;
00135 } PACKED gap_set_io_capability_cp;
00136 #define GAP_SET_IO_CAPABILITY_CP_SIZE 1
00137 
00138 #define OCF_GAP_SET_AUTH_REQUIREMENT      0x0086
00139 typedef __packed struct _gap_set_auth_requirement_cp{
00140     uint8_t mitm_mode;
00141     uint8_t     oob_enable;
00142     uint8_t     oob_data[16];
00143     uint8_t     min_encryption_key_size;
00144     uint8_t     max_encryption_key_size;
00145     uint8_t     use_fixed_pin;
00146     uint32_t    fixed_pin;
00147     uint8_t     bonding_mode;
00148 } PACKED gap_set_auth_requirement_cp;
00149 #define GAP_SET_AUTH_REQUIREMENT_CP_SIZE 26
00150 
00151 #define OCF_GAP_SET_AUTHOR_REQUIREMENT      0x0087
00152 typedef __packed struct _gap_set_author_requirement_cp{
00153   uint16_t      conn_handle;
00154   uint8_t       authorization_enable;
00155 } PACKED gap_set_author_requirement_cp;
00156 #define GAP_SET_AUTHOR_REQUIREMENT_CP_SIZE 3
00157 
00158 #define OCF_GAP_PASSKEY_RESPONSE      0x0088
00159 typedef __packed struct _gap_passkey_response_cp{
00160   uint16_t conn_handle;
00161   uint32_t passkey;
00162 } PACKED gap_passkey_response_cp;
00163 #define GAP_PASSKEY_RESPONSE_CP_SIZE 6
00164 
00165 #define OCF_GAP_AUTHORIZATION_RESPONSE      0x0089
00166 typedef __packed struct _gap_authorization_response_cp{
00167   uint16_t conn_handle;
00168   uint8_t  authorize;
00169 } PACKED gap_authorization_response_cp;
00170 #define GAP_AUTHORIZATION_RESPONSE_CP_SIZE 3
00171 
00172 #define OCF_GAP_INIT                0x008A
00173 typedef __packed struct _gap_init_cp_IDB05A1{
00174     uint8_t role;
00175     uint8_t privacy_enabled;
00176     uint8_t device_name_char_len; 
00177 } PACKED gap_init_cp_IDB05A1;
00178 #define GAP_INIT_CP_SIZE_IDB05A1 3
00179 
00180 typedef __packed struct _gap_init_cp_IDB04A1{
00181     uint8_t role;
00182 } PACKED gap_init_cp_IDB04A1;
00183 #define GAP_INIT_CP_SIZE_IDB04A1 1
00184 typedef __packed struct _gap_init_rp{
00185     uint8_t         status;
00186     uint16_t        service_handle;
00187     uint16_t        dev_name_char_handle;
00188     uint16_t        appearance_char_handle;
00189 } PACKED gap_init_rp;
00190 #define GAP_INIT_RP_SIZE 7
00191 
00192 #define OCF_GAP_SET_NON_CONNECTABLE      0x008B
00193 typedef __packed struct _gap_set_non_connectable_cp_IDB05A1{
00194     uint8_t advertising_event_type;
00195     uint8_t own_address_type;
00196 #endif
00197 } PACKED gap_set_non_connectable_cp_IDB05A1;
00198 
00199 typedef __packed struct _gap_set_non_connectable_cp_IDB04A1{
00200     uint8_t advertising_event_type;
00201 } PACKED gap_set_non_connectable_cp_IDB04A1;
00202 
00203 #define OCF_GAP_SET_UNDIRECTED_CONNECTABLE      0x008C
00204 typedef __packed struct _gap_set_undirected_connectable_cp{
00205     uint8_t adv_filter_policy;
00206     uint8_t own_addr_type;
00207 } PACKED gap_set_undirected_connectable_cp;
00208 #define GAP_SET_UNDIRECTED_CONNECTABLE_CP_SIZE 2
00209 
00210 #define OCF_GAP_SLAVE_SECURITY_REQUEST      0x008D
00211 typedef __packed struct _gap_slave_security_request_cp{
00212   uint16_t conn_handle;
00213   uint8_t  bonding;
00214   uint8_t  mitm_protection;
00215 } PACKED gap_slave_security_request_cp;
00216 #define GAP_SLAVE_SECURITY_REQUEST_CP_SIZE 4
00217 
00218 #define OCF_GAP_UPDATE_ADV_DATA      0x008E
00219 
00220 #define OCF_GAP_DELETE_AD_TYPE      0x008F
00221 typedef __packed struct _gap_delete_ad_type_cp{
00222     uint8_t ad_type;
00223 } PACKED gap_delete_ad_type_cp;
00224 #define GAP_DELETE_AD_TYPE_CP_SIZE 1
00225 
00226 #define OCF_GAP_GET_SECURITY_LEVEL      0x0090
00227 typedef __packed struct _gap_get_security_level_rp{
00228     uint8_t         status;
00229     uint8_t         mitm_protection;
00230     uint8_t         bonding;
00231     uint8_t         oob_data;
00232     uint8_t         passkey_required;
00233 } PACKED gap_get_security_level_rp;
00234 #define GAP_GET_SECURITY_LEVEL_RP_SIZE 5
00235 
00236 #define OCF_GAP_SET_EVT_MASK      0x0091
00237 typedef __packed struct _gap_set_evt_mask_cp{
00238     uint16_t    evt_mask;
00239 } PACKED gap_set_evt_mask_cp;
00240 #define GAP_SET_EVT_MASK_CP_SIZE 2
00241 
00242 #define OCF_GAP_CONFIGURE_WHITELIST   0x0092
00243 
00244 #define OCF_GAP_TERMINATE      0x0093
00245 typedef __packed struct _gap_terminate_cp{
00246   uint16_t handle;
00247   uint8_t  reason;
00248 } PACKED gap_terminate_cp;
00249 #define GAP_TERMINATE_CP_SIZE 3
00250 
00251 #define OCF_GAP_CLEAR_SECURITY_DB   0x0094
00252 
00253 #define OCF_GAP_ALLOW_REBOND_DB     0x0095
00254 
00255 typedef __packed struct _gap_allow_rebond_cp_IDB05A1{
00256   uint16_t conn_handle;
00257 } PACKED gap_allow_rebond_cp_IDB05A1;
00258 
00259 #define OCF_GAP_START_LIMITED_DISCOVERY_PROC   0x0096
00260 typedef __packed struct _gap_start_limited_discovery_proc_cp{
00261   uint16_t scanInterval;
00262   uint16_t scanWindow;
00263   uint8_t  own_address_type;
00264   uint8_t  filterDuplicates;
00265 } PACKED gap_start_limited_discovery_proc_cp;
00266 #define GAP_START_LIMITED_DISCOVERY_PROC_CP_SIZE 6
00267 
00268 #define OCF_GAP_START_GENERAL_DISCOVERY_PROC   0x0097
00269 typedef __packed struct _gap_start_general_discovery_proc_cp{
00270   uint16_t scanInterval;
00271   uint16_t scanWindow;
00272   uint8_t  own_address_type;
00273   uint8_t  filterDuplicates;
00274 } PACKED gap_start_general_discovery_proc_cp;
00275 #define GAP_START_GENERAL_DISCOVERY_PROC_CP_SIZE 6
00276 
00277 #define OCF_GAP_START_NAME_DISCOVERY_PROC   0x0098
00278 typedef __packed struct _gap_start_name_discovery_proc_cp{
00279   uint16_t scanInterval;
00280   uint16_t scanWindow;
00281   uint8_t peer_bdaddr_type;
00282   tBDAddr peer_bdaddr;
00283   uint8_t own_bdaddr_type;
00284   uint16_t conn_min_interval;
00285   uint16_t conn_max_interval;
00286   uint16_t conn_latency;
00287   uint16_t supervision_timeout;
00288   uint16_t min_conn_length;
00289   uint16_t max_conn_length;
00290 } PACKED gap_start_name_discovery_proc_cp;
00291 #define GAP_START_NAME_DISCOVERY_PROC_CP_SIZE 24
00292 
00293 #define OCF_GAP_START_AUTO_CONN_ESTABLISH_PROC  0x0099
00294 
00295 #define OCF_GAP_START_GENERAL_CONN_ESTABLISH_PROC  0x009A
00296 typedef __packed struct _gap_start_general_conn_establish_proc_cp_IDB05A1{
00297   uint8_t  scan_type;
00298   uint16_t scan_interval;
00299   uint16_t scan_window;
00300   uint8_t  own_address_type;
00301   uint8_t  filter_duplicates;
00302 } PACKED gap_start_general_conn_establish_proc_cp_IDB05A1;
00303 
00304 typedef __packed struct _gap_start_general_conn_establish_proc_cp_IDB04A1{
00305   uint8_t  scan_type;
00306   uint16_t scan_interval;
00307   uint16_t scan_window;
00308   uint8_t  own_address_type;
00309   uint8_t  filter_duplicates;
00310   uint8_t  use_reconn_addr;
00311   tBDAddr  reconn_addr;
00312 } PACKED gap_start_general_conn_establish_proc_cp_IDB04A1;
00313 
00314 #define OCF_GAP_START_SELECTIVE_CONN_ESTABLISH_PROC  0x009B
00315 #define GAP_START_SELECTIVE_CONN_ESTABLISH_PROC_CP_SIZE 8
00316 typedef __packed struct _gap_start_selective_conn_establish_proc_cp{
00317   uint8_t scan_type;
00318   uint16_t scan_interval;
00319   uint16_t scan_window;
00320   uint8_t own_address_type;
00321   uint8_t filter_duplicates;
00322   uint8_t num_whitelist_entries;
00323   uint8_t addr_array[HCI_MAX_PAYLOAD_SIZE-GAP_START_SELECTIVE_CONN_ESTABLISH_PROC_CP_SIZE];
00324 } PACKED gap_start_selective_conn_establish_proc_cp;
00325 
00326 #define OCF_GAP_CREATE_CONNECTION      0x009C
00327 typedef __packed struct _gap_create_connection_cp{
00328   uint16_t scanInterval;
00329   uint16_t scanWindow;
00330   uint8_t peer_bdaddr_type;
00331   tBDAddr peer_bdaddr;
00332   uint8_t own_bdaddr_type;
00333   uint16_t conn_min_interval;
00334   uint16_t conn_max_interval;
00335   uint16_t conn_latency;
00336   uint16_t supervision_timeout;
00337   uint16_t min_conn_length;
00338   uint16_t max_conn_length;
00339 } PACKED gap_create_connection_cp;
00340 #define GAP_CREATE_CONNECTION_CP_SIZE 24
00341 
00342 #define OCF_GAP_TERMINATE_GAP_PROCEDURE      0x009D
00343 
00344 #define OCF_GAP_START_CONNECTION_UPDATE      0x009E
00345 typedef __packed struct _gap_start_connection_update_cp{
00346   uint16_t conn_handle;
00347   uint16_t conn_min_interval;
00348   uint16_t conn_max_interval;
00349   uint16_t conn_latency;
00350   uint16_t supervision_timeout;
00351   uint16_t min_conn_length;
00352   uint16_t max_conn_length;
00353 } PACKED gap_start_connection_update_cp;
00354 #define GAP_START_CONNECTION_UPDATE_CP_SIZE 14
00355 
00356 #define OCF_GAP_SEND_PAIRING_REQUEST      0x009F
00357 typedef __packed struct _gap_send_pairing_request_cp{
00358   uint16_t conn_handle;
00359   uint8_t  force_rebond;
00360 } PACKED gap_send_pairing_request_cp;
00361 #define GAP_GAP_SEND_PAIRING_REQUEST_CP_SIZE 3
00362 
00363 #define OCF_GAP_RESOLVE_PRIVATE_ADDRESS   0x00A0
00364 typedef __packed struct _gap_resolve_private_address_cp{
00365   tBDAddr address;
00366 } PACKED gap_resolve_private_address_cp;
00367 #define GAP_RESOLVE_PRIVATE_ADDRESS_CP_SIZE 6
00368 typedef __packed struct _gap_resolve_private_address_rp{
00369   uint8_t status;
00370   tBDAddr address;
00371 } PACKED gap_resolve_private_address_rp;
00372   
00373 #define OCF_GAP_SET_BROADCAST_MODE   0x00A1
00374 #define GAP_SET_BROADCAST_MODE_CP_SIZE 6
00375 typedef __packed struct _gap_set_broadcast_mode_cp{
00376   uint16_t adv_interv_min;
00377   uint16_t adv_interv_max;
00378   uint8_t adv_type;
00379   uint8_t own_addr_type;
00380   uint8_t var_len_data[HCI_MAX_PAYLOAD_SIZE-GAP_SET_BROADCAST_MODE_CP_SIZE];
00381 } PACKED gap_set_broadcast_mode_cp;
00382 
00383 #define OCF_GAP_START_OBSERVATION_PROC   0x00A2
00384 typedef __packed struct _gap_start_observation_proc_cp{
00385   uint16_t scan_interval;
00386   uint16_t scan_window;
00387   uint8_t  scan_type;
00388   uint8_t  own_address_type;
00389   uint8_t  filter_duplicates;
00390 } PACKED gap_start_observation_proc_cp;
00391 
00392 #define OCF_GAP_GET_BONDED_DEVICES   0x00A3
00393 typedef __packed struct _gap_get_bonded_devices_rp{
00394     uint8_t     status;
00395     uint8_t     num_addr;
00396     uint8_t     dev_list[HCI_MAX_PAYLOAD_SIZE-HCI_EVENT_HDR_SIZE-EVT_CMD_COMPLETE_SIZE-1];
00397 } PACKED gap_get_bonded_devices_rp;
00398 
00399 #define OCF_GAP_IS_DEVICE_BONDED   0x00A4
00400 typedef __packed struct _gap_is_device_bonded_cp{
00401   uint8_t peer_address_type;
00402   tBDAddr peer_address;
00403 } PACKED gap_is_device_bonded_cp;
00404 
00405 
00406 #define OCF_GATT_INIT               0x0101
00407 
00408 #define OCF_GATT_ADD_SERV           0x0102
00409 typedef __packed struct _gatt_add_serv_rp{
00410     uint8_t         status;
00411     uint16_t        handle;
00412 } PACKED gatt_add_serv_rp;
00413 #define GATT_ADD_SERV_RP_SIZE 3
00414 
00415 #define OCF_GATT_INCLUDE_SERV       0x0103
00416 typedef __packed struct _gatt_include_serv_rp{
00417     uint8_t         status;
00418     uint16_t        handle;    
00419 } PACKED gatt_include_serv_rp;
00420 #define GATT_INCLUDE_SERV_RP_SIZE 3
00421 
00422 #define OCF_GATT_ADD_CHAR           0x0104
00423 typedef __packed struct _gatt_add_char_rp{
00424     uint8_t         status;
00425     uint16_t        handle;
00426 } PACKED gatt_add_char_rp;
00427 #define GATT_ADD_CHAR_RP_SIZE 3
00428 
00429 #define OCF_GATT_ADD_CHAR_DESC      0x0105
00430 typedef __packed struct _gatt_add_char_desc_rp{
00431     uint8_t         status;
00432     uint16_t        handle;
00433 } PACKED gatt_add_char_desc_rp;
00434 #define GATT_ADD_CHAR_DESC_RP_SIZE 3
00435 
00436 #define OCF_GATT_UPD_CHAR_VAL       0x0106
00437 
00438 #define OCF_GATT_DEL_CHAR           0x0107
00439 typedef __packed struct _gatt_del_char_cp{
00440     uint16_t    service_handle;
00441     uint16_t    char_handle;
00442 } PACKED gatt_del_char_cp;
00443 #define GATT_DEL_CHAR_CP_SIZE 4
00444 
00445 #define OCF_GATT_DEL_SERV           0x0108
00446 typedef __packed struct _gatt_del_serv_cp{
00447     uint16_t    service_handle;
00448 } PACKED gatt_del_serv_cp;
00449 #define GATT_DEL_SERV_CP_SIZE 2
00450 
00451 #define OCF_GATT_DEL_INC_SERV       0x0109
00452 typedef __packed struct _gatt_del_inc_serv_cp{
00453     uint16_t    service_handle;
00454     uint16_t    inc_serv_handle;
00455 } PACKED gatt_del_inc_serv_cp;
00456 #define GATT_DEL_INC_SERV_CP_SIZE 4
00457 
00458 #define OCF_GATT_SET_EVT_MASK      0x010A
00459 typedef __packed struct _gatt_set_evt_mask_cp{
00460     uint32_t    evt_mask;
00461 } PACKED gatt_set_evt_mask_cp;
00462 #define GATT_SET_EVT_MASK_CP_SIZE 4
00463 
00464 #define OCF_GATT_EXCHANGE_CONFIG      0x010B
00465 typedef __packed struct _gatt_exchange_config_cp{
00466     uint16_t    conn_handle;
00467 } PACKED gatt_exchange_config_cp;
00468 #define GATT_EXCHANGE_CONFIG_CP_SIZE 2
00469 
00470 #define OCF_ATT_FIND_INFO_REQ      0x010C
00471 typedef __packed struct _att_find_info_req_cp{
00472     uint16_t    conn_handle;
00473     uint16_t    start_handle;
00474     uint16_t    end_handle;
00475 } PACKED att_find_info_req_cp;
00476 #define ATT_FIND_INFO_REQ_CP_SIZE 6
00477 
00478 #define OCF_ATT_FIND_BY_TYPE_VALUE_REQ  0x010D
00479 #define ATT_FIND_BY_TYPE_VALUE_REQ_CP_SIZE 9
00480 typedef __packed struct _att_find_by_type_value_req_cp{
00481     uint16_t    conn_handle;
00482     uint16_t    start_handle;
00483     uint16_t    end_handle;
00484     uint8_t     uuid[2];
00485     uint8_t     attr_val_len;
00486     uint8_t     attr_val[ATT_MTU - 7];
00487 } PACKED att_find_by_type_value_req_cp;
00488 
00489 #define OCF_ATT_READ_BY_TYPE_REQ  0x010E
00490 #define ATT_READ_BY_TYPE_REQ_CP_SIZE 7  // without UUID
00491 typedef __packed struct _att_read_by_type_req_cp{
00492     uint16_t    conn_handle;
00493     uint16_t    start_handle;
00494     uint16_t    end_handle;
00495     uint8_t     uuid_type;
00496     uint8_t     uuid[16];
00497 } PACKED att_read_by_type_req_cp;
00498 
00499 #define OCF_ATT_READ_BY_GROUP_TYPE_REQ  0x010F
00500 #define ATT_READ_BY_GROUP_TYPE_REQ_CP_SIZE 7  // without UUID
00501 typedef __packed struct _att_read_by_group_type_req_cp{
00502     uint16_t    conn_handle;
00503     uint16_t    start_handle;
00504     uint16_t    end_handle;
00505     uint8_t     uuid_type;
00506     uint8_t     uuid[16];
00507 } PACKED att_read_by_group_type_req_cp;
00508 
00509 #define OCF_ATT_PREPARE_WRITE_REQ  0x0110
00510 #define ATT_PREPARE_WRITE_REQ_CP_SIZE 7  // without attr_val
00511 typedef __packed struct _att_prepare_write_req_cp{
00512     uint16_t    conn_handle;
00513     uint16_t    attr_handle;
00514     uint16_t    value_offset;
00515     uint8_t     attr_val_len;
00516     uint8_t     attr_val[ATT_MTU-5];
00517 } PACKED att_prepare_write_req_cp;
00518 
00519 #define OCF_ATT_EXECUTE_WRITE_REQ  0x0111
00520 typedef __packed struct _att_execute_write_req_cp{
00521     uint16_t    conn_handle;
00522     uint8_t     execute;
00523 } PACKED att_execute_write_req_cp;
00524 #define ATT_EXECUTE_WRITE_REQ_CP_SIZE 3
00525 
00526 #define OCF_GATT_DISC_ALL_PRIM_SERVICES 0X0112
00527 typedef __packed struct _gatt_disc_all_prim_serivces_cp{
00528   uint16_t conn_handle;
00529 } PACKED gatt_disc_all_prim_services_cp;
00530 #define GATT_DISC_ALL_PRIM_SERVICES_CP_SIZE 2
00531 
00532 #define OCF_GATT_DISC_PRIM_SERVICE_BY_UUID 0x0113
00533 typedef __packed struct _gatt_disc_prim_service_by_uuid_cp{
00534   uint16_t    conn_handle;
00535   uint8_t     uuid_type;
00536   uint8_t     uuid[16];
00537 } PACKED gatt_disc_prim_service_by_uuid_cp;
00538 #define GATT_DISC_PRIM_SERVICE_BY_UUID_CP_SIZE 3 // Without uuid
00539 
00540 #define OCF_GATT_FIND_INCLUDED_SERVICES 0X0114
00541 typedef __packed struct _gatt_disc_find_included_services_cp{
00542   uint16_t conn_handle;
00543   uint16_t start_handle;
00544   uint16_t end_handle;
00545 } PACKED gatt_find_included_services_cp;
00546 #define GATT_FIND_INCLUDED_SERVICES_CP_SIZE 6
00547 
00548 #define OCF_GATT_DISC_ALL_CHARAC_OF_SERV 0X0115
00549 typedef __packed struct _gatt_disc_all_charac_of_serv_cp{
00550   uint16_t conn_handle;
00551   uint16_t start_attr_handle;
00552   uint16_t end_attr_handle;
00553 } PACKED gatt_disc_all_charac_of_serv_cp;
00554 #define GATT_DISC_ALL_CHARAC_OF_SERV_CP_SIZE 6
00555 
00556 #define OCF_GATT_DISC_CHARAC_BY_UUID 0X0116
00557 
00558 #define OCF_GATT_DISC_ALL_CHARAC_DESCRIPTORS 0X0117
00559 typedef __packed struct _gatt_disc_all_charac_descriptors_cp{
00560   uint16_t conn_handle;
00561   uint16_t char_val_handle;
00562   uint16_t char_end_handle;
00563 } PACKED gatt_disc_all_charac_descriptors_cp;
00564 #define GATT_DISC_ALL_CHARAC_DESCRIPTORS_CP_SIZE 6
00565 
00566 #define OCF_GATT_READ_CHARAC_VAL   0x0118
00567 typedef __packed struct _gatt_read_charac_val_cp{
00568   uint16_t conn_handle;
00569   uint16_t attr_handle;
00570 } PACKED gatt_read_charac_val_cp;
00571 #define GATT_READ_CHARAC_VAL_CP_SIZE 4
00572 
00573 #define OCF_GATT_READ_USING_CHARAC_UUID  0x0109
00574 typedef __packed struct _gatt_read_using_charac_uuid_cp{
00575     uint16_t    conn_handle;
00576     uint16_t    start_handle;
00577     uint16_t    end_handle;
00578     uint8_t     uuid_type;
00579     uint8_t     uuid[16];
00580 } PACKED gatt_read_using_charac_uuid_cp;
00581 #define GATT_READ_USING_CHARAC_UUID_CP_SIZE 7  // without UUID
00582 
00583 #define OCF_GATT_READ_LONG_CHARAC_VAL   0x011A
00584 typedef __packed struct _gatt_read_long_charac_val_cp{
00585   uint16_t conn_handle;
00586   uint16_t attr_handle;
00587   uint16_t val_offset;
00588 } PACKED gatt_read_long_charac_val_cp;
00589 #define GATT_READ_LONG_CHARAC_VAL_CP_SIZE 6
00590 
00591 #define OCF_GATT_READ_MULTIPLE_CHARAC_VAL   0x011B
00592 #define GATT_READ_MULTIPLE_CHARAC_VAL_CP_SIZE 3  // without set_of_handles
00593 typedef __packed struct _gatt_read_multiple_charac_val_cp{
00594   uint16_t conn_handle;
00595   uint8_t num_handles;
00596   uint8_t  set_of_handles[HCI_MAX_PAYLOAD_SIZE-GATT_READ_MULTIPLE_CHARAC_VAL_CP_SIZE];
00597 } PACKED gatt_read_multiple_charac_val_cp;
00598 
00599 #define OCF_GATT_WRITE_CHAR_VALUE   0x011C
00600 
00601 #define OCF_GATT_WRITE_LONG_CHARAC_VAL   0x011D
00602 #define GATT_WRITE_LONG_CHARAC_VAL_CP_SIZE 7  // without set_of_handles
00603 typedef __packed struct _gatt_write_long_charac_val_cp{
00604   uint16_t conn_handle;
00605   uint16_t attr_handle;
00606   uint16_t val_offset;
00607   uint8_t  val_len;
00608   uint8_t  attr_val[HCI_MAX_PAYLOAD_SIZE-GATT_WRITE_LONG_CHARAC_VAL_CP_SIZE];
00609 } PACKED gatt_write_long_charac_val_cp;
00610 
00611 #define OCF_GATT_WRITE_CHARAC_RELIABLE   0x011E
00612 #define GATT_WRITE_CHARAC_RELIABLE_CP_SIZE 7  // without set_of_handles
00613 typedef __packed struct _gatt_write_charac_reliable_cp{
00614   uint16_t conn_handle;
00615   uint16_t attr_handle;
00616   uint16_t val_offset;
00617   uint8_t  val_len;
00618   uint8_t  attr_val[HCI_MAX_PAYLOAD_SIZE-GATT_WRITE_CHARAC_RELIABLE_CP_SIZE];
00619 } PACKED gatt_write_charac_reliable_cp;
00620 
00621 #define OCF_GATT_WRITE_LONG_CHARAC_DESC   0x011F
00622 #define GATT_WRITE_LONG_CHARAC_DESC_CP_SIZE 7  // without set_of_handles
00623 typedef __packed struct _gatt_write_long_charac_desc_cp{
00624   uint16_t conn_handle;
00625   uint16_t attr_handle;
00626   uint16_t val_offset;
00627   uint8_t  val_len;
00628   uint8_t  attr_val[HCI_MAX_PAYLOAD_SIZE-GATT_WRITE_LONG_CHARAC_DESC_CP_SIZE];
00629 } PACKED gatt_write_long_charac_desc_cp;
00630 
00631 #define OCF_GATT_READ_LONG_CHARAC_DESC   0x0120
00632 typedef __packed struct _gatt_read_long_charac_desc_cp{
00633   uint16_t conn_handle;
00634   uint16_t attr_handle;
00635   uint16_t val_offset;
00636 } PACKED gatt_read_long_charac_desc_cp;
00637 #define GATT_READ_LONG_CHARAC_DESC_CP_SIZE 6
00638 
00639 #define OCF_GATT_WRITE_CHAR_DESCRIPTOR      0x0121
00640 
00641 #define OCF_GATT_READ_CHAR_DESCRIPTOR       0x0122
00642 typedef __packed struct _gatt_read_charac_desc_cp{
00643   uint16_t conn_handle;
00644   uint16_t attr_handle;
00645 } PACKED gatt_read_charac_desc_cp;
00646 #define GATT_READ_CHAR_DESCRIPTOR_CP_SIZE 4
00647 
00648 #define OCF_GATT_WRITE_WITHOUT_RESPONSE     0x0123
00649 #define GATT_WRITE_WITHOUT_RESPONSE_CP_SIZE 5  // without attr_val
00650 typedef __packed struct _gatt_write_without_resp_cp{
00651   uint16_t conn_handle;
00652   uint16_t attr_handle;
00653   uint8_t  val_len;
00654   uint8_t  attr_val[ATT_MTU - 3];
00655 } PACKED gatt_write_without_resp_cp;
00656 
00657 #define OCF_GATT_SIGNED_WRITE_WITHOUT_RESPONSE     0x0124
00658 #define GATT_SIGNED_WRITE_WITHOUT_RESPONSE_CP_SIZE 5  // without attr_val
00659 typedef __packed struct _gatt_signed_write_without_resp_cp{
00660   uint16_t conn_handle;
00661   uint16_t attr_handle;
00662   uint8_t  val_len;
00663   uint8_t  attr_val[ATT_MTU - 13];
00664 } PACKED gatt_signed_write_without_resp_cp;
00665 
00666 #define OCF_GATT_CONFIRM_INDICATION                0x0125
00667 typedef __packed struct _gatt_confirm_indication_cp{
00668     uint16_t    conn_handle;
00669 } PACKED gatt_confirm_indication_cp;
00670 #define GATT_CONFIRM_INDICATION_CP_SIZE 2
00671 
00672 #define OCF_GATT_WRITE_RESPONSE                    0x0126
00673 
00674 #define OCF_GATT_ALLOW_READ         0x0127
00675 typedef __packed struct _gatt_allow_read_cp{
00676     uint16_t    conn_handle;
00677 } PACKED gatt_allow_read_cp;
00678 #define GATT_ALLOW_READ_CP_SIZE 2
00679 
00680 #define OCF_GATT_SET_SECURITY_PERMISSION            0x0128
00681 typedef __packed struct _gatt_set_security_permission_cp{
00682     uint16_t    service_handle;
00683     uint16_t    attr_handle;
00684     uint8_t     security_permission;
00685 } PACKED gatt_set_security_permission_cp;
00686 #define GATT_GATT_SET_SECURITY_PERMISSION_CP_SIZE 5
00687 
00688 #define OCF_GATT_SET_DESC_VAL       0x0129
00689 
00690 #define OCF_GATT_READ_HANDLE_VALUE      0x012A
00691 typedef __packed struct _gatt_read_handle_val_cp{
00692     uint16_t    attr_handle;
00693 } PACKED gatt_read_handle_val_cp;
00694 #define GATT_READ_HANDLE_VALUE_RP_SIZE 3
00695 typedef __packed struct _gatt_read_handle_val_rp{
00696     uint8_t     status;
00697     uint16_t    value_len;
00698     uint8_t     value[HCI_MAX_PAYLOAD_SIZE-GATT_READ_HANDLE_VALUE_RP_SIZE];
00699 } PACKED gatt_read_handle_val_rp;
00700 
00701 #define OCF_GATT_READ_HANDLE_VALUE_OFFSET      0x012B
00702 typedef __packed struct _gatt_read_handle_val_offset_cp{
00703     uint16_t    attr_handle;
00704     uint8_t     offset;
00705 } PACKED gatt_read_handle_val_offset_cp;
00706 #define GATT_READ_HANDLE_VALUE_OFFSET_RP_SIZE 2
00707 typedef __packed struct _gatt_read_handle_val_offset_rp{
00708     uint8_t     status;
00709     uint8_t     value_len;
00710     uint8_t     value[HCI_MAX_PAYLOAD_SIZE-GATT_READ_HANDLE_VALUE_OFFSET_RP_SIZE];
00711 } PACKED gatt_read_handle_val_offset_rp;
00712 
00713 #define OCF_L2CAP_CONN_PARAM_UPDATE_REQ  0x0181
00714 typedef __packed struct _l2cap_conn_param_update_req_cp{
00715   uint16_t conn_handle;
00716   uint16_t interval_min;
00717   uint16_t interval_max;
00718   uint16_t slave_latency;
00719   uint16_t timeout_multiplier;
00720 } PACKED l2cap_conn_param_update_req_cp;
00721 #define L2CAP_CONN_PARAM_UPDATE_REQ_CP_SIZE 10
00722 
00723 #define OCF_L2CAP_CONN_PARAM_UPDATE_RESP  0x0182
00724 typedef __packed struct _l2cap_conn_param_update_resp_cp_IDB05A1{
00725   uint16_t conn_handle;
00726   uint16_t interval_min;
00727   uint16_t interval_max;
00728   uint16_t slave_latency;
00729   uint16_t timeout_multiplier;
00730   uint16_t min_ce_length;
00731   uint16_t max_ce_length;
00732   uint8_t id;
00733   uint8_t accept;
00734 } PACKED l2cap_conn_param_update_resp_cp_IDB05A1;
00735 
00736 typedef __packed struct _l2cap_conn_param_update_resp_cp_IDB04A1{
00737   uint16_t conn_handle;
00738   uint16_t interval_min;
00739   uint16_t interval_max;
00740   uint16_t slave_latency;
00741   uint16_t timeout_multiplier;
00742   uint8_t id;
00743   uint8_t accept;
00744 } PACKED l2cap_conn_param_update_resp_cp_IDB04A1;
00745 
00746 /**
00747  * @defgroup BlueNRG_Events BlueNRG events (vendor specific)
00748  * @{
00749  */
00750 
00751 /**
00752  * Vendor specific event for BlueNRG.
00753  */
00754 typedef __packed struct _evt_blue_aci{
00755   uint16_t ecode; /**< One of the BlueNRG event codes. */
00756   uint8_t  data[VARIABLE_SIZE];
00757 } PACKED evt_blue_aci;
00758 
00759 
00760 /**
00761  * @}
00762  */
00763 
00764 #endif /* __BLUENRG_ACI_CONST_H_ */