1 /****************************************************************************** 2 * 3 * Copyright (C) 2003-2012 Broadcom Corporation 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at: 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 ******************************************************************************/ 18 19 /****************************************************************************** 20 * 21 * This is the private interface file for the BTA device manager. 22 * 23 ******************************************************************************/ 24 #ifndef BTA_DM_INT_H 25 #define BTA_DM_INT_H 26 27 #include "common/bt_target.h" 28 #include "freertos/semphr.h" 29 #include "bta/bta_sys.h" 30 #if (BLE_INCLUDED == TRUE && (defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) 31 #include "bta/bta_gatt_api.h" 32 #endif 33 34 35 36 /***************************************************************************** 37 ** Constants and data types 38 *****************************************************************************/ 39 40 41 #define BTA_COPY_DEVICE_CLASS(coddst, codsrc) {((UINT8 *)(coddst))[0] = ((UINT8 *)(codsrc))[0]; \ 42 ((UINT8 *)(coddst))[1] = ((UINT8 *)(codsrc))[1]; \ 43 ((UINT8 *)(coddst))[2] = ((UINT8 *)(codsrc))[2];} 44 45 46 #define BTA_DM_MSG_LEN 50 47 48 #define BTA_SERVICE_ID_TO_SERVICE_MASK(id) (1 << (id)) 49 50 /* DM events */ 51 enum { 52 /* device manager local device API events */ 53 BTA_DM_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_DM), 54 BTA_DM_API_DISABLE_EVT, 55 BTA_DM_API_SET_NAME_EVT, 56 BTA_DM_API_GET_NAME_EVT, 57 BTA_DM_API_SEND_VENDOR_HCI_CMD_EVT, 58 #if (CLASSIC_BT_INCLUDED == TRUE) 59 BTA_DM_API_CONFIG_EIR_EVT, 60 BTA_DM_API_SET_ACL_PKT_TYPES_EVT, 61 #endif 62 BTA_DM_API_SET_AFH_CHANNELS_EVT, 63 #if (SDP_INCLUDED == TRUE) 64 BTA_DM_API_GET_REMOTE_NAME_EVT, 65 #endif 66 BTA_DM_API_SET_VISIBILITY_EVT, 67 68 BTA_DM_ACL_CHANGE_EVT, 69 BTA_DM_API_ADD_DEVICE_EVT, 70 BTA_DM_API_REMOVE_ACL_EVT, 71 #if (SMP_INCLUDED == TRUE) 72 /* security API events */ 73 BTA_DM_API_BOND_EVT, 74 BTA_DM_API_BOND_CANCEL_EVT, 75 BTA_DM_API_SET_PIN_TYPE_EVT, 76 BTA_DM_API_PIN_REPLY_EVT, 77 #endif ///SMP_INCLUDED == TRUE 78 #if (BTA_DM_PM_INCLUDED == TRUE) 79 /* power manager events */ 80 BTA_DM_PM_BTM_STATUS_EVT, 81 BTA_DM_PM_TIMER_EVT, 82 #endif /* #if (BTA_DM_PM_INCLUDED == TRUE) */ 83 #if (BTA_DM_QOS_INCLUDED == TRUE) 84 /* Quality of Service set events */ 85 BTA_DM_API_QOS_SET_EVT, 86 #endif /* #if (BTA_DM_QOS_INCLUDED == TRUE) */ 87 #if (SMP_INCLUDED == TRUE) 88 /* simple pairing events */ 89 BTA_DM_API_CONFIRM_EVT, 90 #if (BT_SSP_INCLUDED == TRUE) 91 BTA_DM_API_KEY_REQ_EVT, 92 #endif ///BT_SSP_INCLUDED == TRUE 93 BTA_DM_API_SET_ENCRYPTION_EVT, 94 #endif ///SMP_INCLUDED == TRUE 95 #if (BTM_OOB_INCLUDED == TRUE && SMP_INCLUDED == TRUE) 96 BTA_DM_API_LOC_OOB_EVT, 97 BTA_DM_API_OOB_REPLY_EVT, 98 BTA_DM_API_SC_OOB_REPLY_EVT, 99 BTA_DM_API_SC_CR_OOB_DATA_EVT, 100 BTA_DM_CI_IO_REQ_EVT, 101 BTA_DM_CI_RMT_OOB_EVT, 102 #endif /* BTM_OOB_INCLUDED */ 103 104 105 #if BLE_INCLUDED == TRUE 106 #if SMP_INCLUDED == TRUE 107 BTA_DM_API_ADD_BLEKEY_EVT, 108 BTA_DM_API_ADD_BLEDEVICE_EVT, 109 BTA_DM_API_BLE_PASSKEY_REPLY_EVT, 110 BTA_DM_API_BLE_SET_STATIC_PASSKEY_EVT, 111 BTA_DM_API_BLE_CONFIRM_REPLY_EVT, 112 BTA_DM_API_BLE_SEC_GRANT_EVT, 113 #endif ///SMP_INCLUDED == TRUE 114 BTA_DM_API_BLE_SET_BG_CONN_TYPE, 115 BTA_DM_API_BLE_CONN_PARAM_EVT, 116 BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT, 117 BTA_DM_API_BLE_SCAN_PARAM_EVT, 118 /*******This event added by Yulong at 2016/10/25 to 119 support the scan filter setting for the APP******/ 120 BTA_DM_API_BLE_SCAN_FIL_PARAM_EVT, 121 BTA_DM_API_BLE_OBSERVE_EVT, 122 BTA_DM_API_BLE_SCAN_EVT, 123 BTA_DM_API_UPDATE_CONN_PARAM_EVT, 124 /*******This event added by Yulong at 2016/9/9 to 125 support the random address setting for the APP******/ 126 BTA_DM_API_SET_RAND_ADDR_EVT, 127 BTA_DM_API_CLEAR_RAND_ADDR_EVT, 128 /*******This event added by Yulong at 2016/10/19 to 129 support stop the ble advertising setting by the APP******/ 130 BTA_DM_API_BLE_STOP_ADV_EVT, 131 #if BLE_PRIVACY_SPT == TRUE 132 BTA_DM_API_LOCAL_PRIVACY_EVT, 133 #endif 134 BTA_DM_API_LOCAL_ICON_EVT, 135 BTA_DM_API_BLE_ADV_PARAM_EVT, 136 137 /*******This event added by Yulong at 2016/10/20 to 138 support setting the ble advertising param by the APP******/ 139 BTA_DM_API_BLE_ADV_PARAM_All_EVT, 140 BTA_DM_API_BLE_SET_ADV_CONFIG_EVT, 141 /* Add for set raw advertising data */ 142 BTA_DM_API_BLE_SET_ADV_CONFIG_RAW_EVT, 143 BTA_DM_API_BLE_SET_SCAN_RSP_EVT, 144 /* Add for set raw scan response data */ 145 BTA_DM_API_BLE_SET_SCAN_RSP_RAW_EVT, 146 BTA_DM_API_BLE_BROADCAST_EVT, 147 BTA_DM_API_SET_DATA_LENGTH_EVT, 148 BTA_DM_API_BLE_SET_LONG_ADV_EVT, 149 #if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE 150 BTA_DM_API_CFG_FILTER_COND_EVT, 151 BTA_DM_API_SCAN_FILTER_SETUP_EVT, 152 BTA_DM_API_SCAN_FILTER_ENABLE_EVT, 153 #endif 154 BTA_DM_API_BLE_MULTI_ADV_ENB_EVT, 155 BTA_DM_API_BLE_MULTI_ADV_PARAM_UPD_EVT, 156 BTA_DM_API_BLE_MULTI_ADV_DATA_EVT, 157 BTA_DM_API_BLE_MULTI_ADV_DISABLE_EVT, 158 BTA_DM_API_BLE_SETUP_STORAGE_EVT, 159 BTA_DM_API_BLE_ENABLE_BATCH_SCAN_EVT, 160 BTA_DM_API_BLE_DISABLE_BATCH_SCAN_EVT, 161 BTA_DM_API_BLE_READ_SCAN_REPORTS_EVT, 162 BTA_DM_API_BLE_TRACK_ADVERTISER_EVT, 163 BTA_DM_API_BLE_ENERGY_INFO_EVT, 164 BTA_DM_API_BLE_DISCONNECT_EVT, 165 166 #endif 167 168 BTA_DM_API_ENABLE_TEST_MODE_EVT, 169 BTA_DM_API_DISABLE_TEST_MODE_EVT, 170 BTA_DM_API_EXECUTE_CBACK_EVT, 171 BTA_DM_API_REMOVE_ALL_ACL_EVT, 172 BTA_DM_API_REMOVE_DEVICE_EVT, 173 BTA_DM_API_BLE_SET_CHANNELS_EVT, 174 BTA_DM_API_UPDATE_WHITE_LIST_EVT, 175 BTA_DM_API_CLEAR_WHITE_LIST_EVT, 176 BTA_DM_API_BLE_READ_ADV_TX_POWER_EVT, 177 BTA_DM_API_READ_RSSI_EVT, 178 #if BLE_INCLUDED == TRUE 179 BTA_DM_API_UPDATE_DUPLICATE_EXCEPTIONAL_LIST_EVT, 180 #endif 181 #if (BLE_50_FEATURE_SUPPORT == TRUE) 182 BTA_DM_API_READ_PHY_EVT, 183 BTA_DM_API_SET_PER_DEF_PHY_EVT, 184 BTA_DM_API_SET_PER_PHY_EVT, 185 BTA_DM_API_SET_EXT_ADV_RAND_ADDR_EVT, 186 BTA_DM_API_SET_EXT_ADV_PARAMS_EVT, 187 BTA_DM_API_CFG_ADV_DATA_RAW_EVT, 188 BTA_DM_API_EXT_ADV_ENABLE_EVT, 189 BTA_DM_API_EXT_ADV_SET_REMOVE_EVT, 190 BTA_DM_API_EXT_ADV_SET_CLEAR_EVT, 191 BTA_DM_API_PERIODIC_ADV_SET_PARAMS_EVT, 192 BTA_DM_API_PERIODIC_ADV_CFG_DATA_EVT, 193 BTA_DM_API_PERIODIC_ADV_ENABLE_EVT, 194 BTA_DM_API_PERIODIC_ADV_SYNC_EVT, 195 BTA_DM_API_PERIODIC_ADV_SYNC_CANCEL_EVT, 196 BTA_DM_API_PERIODIC_ADV_SYNC_TERMINATE_EVT, 197 BTA_DM_API_PERIODIC_ADV_ADD_DEV_TO_LSIT_EVT, 198 BTA_DM_API_PERIODIC_ADV_REMOVE_DEV_FROM_LSIT_EVT, 199 BTA_DM_API_PERIODIC_ADV_CLEAR_DEV_EVT, 200 BTA_DM_API_SET_EXT_SCAN_PARAMS_EVT, 201 BTA_DM_API_START_EXT_SCAN_EVT, 202 BTA_DM_API_SET_PERF_EXT_CONN_PARAMS_EVT, 203 BTA_DM_API_EXT_CONN_EVT, 204 BTA_DM_API_DTM_ENH_TX_START_EVT, 205 BTA_DM_API_DTM_ENH_RX_START_EVT, 206 #endif // #if (BLE_50_FEATURE_SUPPORT == TRUE) 207 #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE) 208 BTA_DM_API_PERIODIC_ADV_RECV_ENABLE_EVT, 209 BTA_DM_API_PERIODIC_ADV_SYNC_TRANS_EVT, 210 BTA_DM_API_PERIODIC_ADV_SET_INFO_TRANS_EVT, 211 BTA_DM_API_SET_PERIODIC_ADV_SYNC_TRANS_PARAMS_EVT, 212 #endif // #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE) 213 #if BLE_INCLUDED == TRUE 214 BTA_DM_API_DTM_TX_START_EVT, 215 BTA_DM_API_DTM_RX_START_EVT, 216 BTA_DM_API_DTM_STOP_EVT, 217 BTA_DM_API_BLE_CLEAR_ADV_EVT, 218 BTA_DM_API_SET_RPA_TIMEOUT_EVT, 219 BTA_DM_API_ADD_DEV_TO_RESOLVING_LIST_EVT, 220 BTA_DM_API_SET_PRIVACY_MODE_EVT, 221 BTA_DM_API_BLE_SET_CSA_SUPPORT_EVT, 222 #endif 223 BTA_DM_MAX_EVT 224 }; 225 226 227 /* DM search events */ 228 enum { 229 /* DM search API events */ 230 BTA_DM_API_SEARCH_EVT = BTA_SYS_EVT_START(BTA_ID_DM_SEARCH), 231 BTA_DM_API_SEARCH_CANCEL_EVT, 232 BTA_DM_API_DISCOVER_EVT, 233 BTA_DM_INQUIRY_CMPL_EVT, 234 BTA_DM_REMT_NAME_EVT, 235 BTA_DM_SDP_RESULT_EVT, 236 BTA_DM_SEARCH_CMPL_EVT, 237 BTA_DM_DISCOVERY_RESULT_EVT, 238 BTA_DM_API_DI_DISCOVER_EVT, 239 BTA_DM_DISC_CLOSE_TOUT_EVT, 240 }; 241 242 /* data type for BTA_DM_API_ENABLE_EVT */ 243 typedef struct { 244 BT_HDR hdr; 245 tBTA_DM_SEC_CBACK *p_sec_cback; 246 } tBTA_DM_API_ENABLE; 247 248 /* data type for BTA_DM_API_SET_NAME_EVT */ 249 typedef struct { 250 BT_HDR hdr; 251 BD_NAME name; /* max 248 bytes name, plus must be Null terminated */ 252 } tBTA_DM_API_SET_NAME; 253 254 typedef struct { 255 BT_HDR hdr; 256 tBTA_GET_DEV_NAME_CBACK *p_cback; 257 } tBTA_DM_API_GET_NAME; 258 259 typedef struct { 260 BT_HDR hdr; 261 UINT16 opcode; 262 UINT8 param_len; 263 UINT8 *p_param_buf; 264 tBTA_SEND_VENDOR_HCI_CMPL_CBACK *vendor_hci_cb; 265 }tBTA_DM_API_SEND_VENDOR_HCI_CMD; 266 267 /* data type for BTA_DM_API_CONFIG_EIR_EVT */ 268 typedef struct { 269 BT_HDR hdr; 270 BOOLEAN eir_fec_required; 271 BOOLEAN eir_included_name; 272 BOOLEAN eir_included_tx_power; 273 BOOLEAN eir_included_uuid; 274 UINT8 eir_flags; 275 UINT8 eir_manufac_spec_len; 276 UINT8 *eir_manufac_spec; 277 UINT8 eir_url_len; 278 UINT8 *eir_url; 279 UINT8 data[]; 280 }tBTA_DM_API_CONFIG_EIR; 281 282 /* data type for BTA_DM_API_SET_AFH_CHANNELS_EVT */ 283 typedef struct { 284 BT_HDR hdr; 285 AFH_CHANNELS channels; 286 tBTA_CMPL_CB *set_afh_cb; 287 }tBTA_DM_API_SET_AFH_CHANNELS; 288 289 /* data type for BTA_DM_API_SET_ACL_PKT_TYPES_EVT */ 290 typedef struct { 291 BT_HDR hdr; 292 BD_ADDR rmt_addr; 293 UINT16 pkt_types; 294 tBTM_CMPL_CB *set_acl_pkt_types_cb; 295 } tBTA_DM_API_SET_ACL_PKT_TYPES; 296 297 /* data type for BTA_DM_API_GET_REMOTE_NAME_EVT */ 298 typedef struct { 299 BT_HDR hdr; 300 BD_ADDR rmt_addr; 301 BD_NAME rmt_name; 302 tBTA_TRANSPORT transport; 303 tBTA_CMPL_CB *rmt_name_cb; 304 } tBTA_DM_API_GET_REMOTE_NAME; 305 306 #if (BLE_INCLUDED == TRUE) 307 /* data type for BTA_DM_API_BLE_SET_CHANNELS_EVT */ 308 typedef struct { 309 BT_HDR hdr; 310 AFH_CHANNELS channels; 311 tBTA_CMPL_CB *set_channels_cb; 312 }tBTA_DM_API_BLE_SET_CHANNELS; 313 314 typedef struct { 315 BT_HDR hdr; 316 BOOLEAN add_remove; 317 BD_ADDR remote_addr; 318 tBLE_ADDR_TYPE addr_type; 319 tBTA_UPDATE_WHITELIST_CBACK *update_wl_cb; 320 }tBTA_DM_API_UPDATE_WHITE_LIST; 321 322 typedef struct { 323 BT_HDR hdr; 324 UINT8 subcode; 325 UINT32 type; 326 BD_ADDR device_info; 327 tBTA_UPDATE_DUPLICATE_EXCEPTIONAL_LIST_CMPL_CBACK *exceptional_list_cb; 328 }tBTA_DM_API_UPDATE_DUPLICATE_EXCEPTIONAL_LIST; 329 330 typedef struct { 331 BT_HDR hdr; 332 tBTA_CMPL_CB *read_tx_power_cb; 333 }tBTA_DM_API_READ_ADV_TX_POWER; 334 #endif ///BLE_INCLUDED == TRUE 335 336 typedef struct { 337 BT_HDR hdr; 338 BD_ADDR remote_addr; 339 tBTA_TRANSPORT transport; 340 tBTA_CMPL_CB *read_rssi_cb; 341 }tBTA_DM_API_READ_RSSI; 342 343 /* data type for BTA_DM_API_SET_VISIBILITY_EVT */ 344 typedef struct { 345 BT_HDR hdr; 346 tBTA_DM_DISC disc_mode; 347 tBTA_DM_CONN conn_mode; 348 UINT8 pair_mode; 349 UINT8 conn_paired_only; 350 } tBTA_DM_API_SET_VISIBILITY; 351 352 enum { 353 BTA_DM_RS_NONE, /* straight API call */ 354 BTA_DM_RS_OK, /* the role switch result - successful */ 355 BTA_DM_RS_FAIL /* the role switch result - failed */ 356 }; 357 typedef UINT8 tBTA_DM_RS_RES; 358 359 /* data type for BTA_DM_API_SEARCH_EVT */ 360 typedef struct { 361 BT_HDR hdr; 362 tBTA_DM_INQ inq_params; 363 tBTA_SERVICE_MASK services; 364 tBTA_DM_SEARCH_CBACK *p_cback; 365 tBTA_DM_RS_RES rs_res; 366 #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE 367 UINT8 num_uuid; 368 tBT_UUID *p_uuid; 369 #endif 370 } tBTA_DM_API_SEARCH; 371 372 #if (SDP_INCLUDED == TRUE) 373 /* data type for BTA_DM_API_DISCOVER_EVT */ 374 typedef struct { 375 BT_HDR hdr; 376 BD_ADDR bd_addr; 377 tBTA_SERVICE_MASK services; 378 tBTA_DM_SEARCH_CBACK *p_cback; 379 BOOLEAN sdp_search; 380 tBTA_TRANSPORT transport; 381 #if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE 382 UINT8 num_uuid; 383 tBT_UUID *p_uuid; 384 #endif 385 tSDP_UUID uuid; 386 } tBTA_DM_API_DISCOVER; 387 #endif ///SDP_INCLUDED == TRUE 388 389 /* data type for BTA_DM_API_DI_DISC_EVT */ 390 typedef struct { 391 BT_HDR hdr; 392 BD_ADDR bd_addr; 393 #if (SDP_INCLUDED == TRUE) 394 tBTA_DISCOVERY_DB *p_sdp_db; 395 #endif ///SDP_INCLUDED == TRUE 396 UINT32 len; 397 tBTA_DM_SEARCH_CBACK *p_cback; 398 } tBTA_DM_API_DI_DISC; 399 400 /* data type for BTA_DM_API_BOND_EVT */ 401 typedef struct { 402 BT_HDR hdr; 403 BD_ADDR bd_addr; 404 tBTA_TRANSPORT transport; 405 } tBTA_DM_API_BOND; 406 407 /* data type for BTA_DM_API_BOND_CANCEL_EVT */ 408 typedef struct { 409 BT_HDR hdr; 410 BD_ADDR bd_addr; 411 tBTA_TRANSPORT transport; 412 } tBTA_DM_API_BOND_CANCEL; 413 414 /* data type for BTA_DM_API_SET_PIN_TYPE_EVT */ 415 typedef struct { 416 BT_HDR hdr; 417 UINT8 pin_type; 418 UINT8 pin_len; 419 UINT8 p_pin[PIN_CODE_LEN]; 420 } tBTA_DM_API_SET_PIN_TYPE; 421 422 /* data type for BTA_DM_API_PIN_REPLY_EVT */ 423 typedef struct { 424 BT_HDR hdr; 425 BD_ADDR bd_addr; 426 BOOLEAN accept; 427 UINT8 pin_len; 428 UINT8 p_pin[PIN_CODE_LEN]; 429 } tBTA_DM_API_PIN_REPLY; 430 431 /* data type for BTA_DM_API_LOC_OOB_EVT */ 432 typedef struct { 433 BT_HDR hdr; 434 } tBTA_DM_API_LOC_OOB; 435 436 /* data type for BTA_DM_API_OOB_REPLY_EVT */ 437 typedef struct { 438 BT_HDR hdr; 439 BD_ADDR bd_addr; 440 UINT8 len; 441 UINT8 value[BT_OCTET16_LEN]; 442 UINT8 c[BT_OCTET16_LEN]; 443 UINT8 r[BT_OCTET16_LEN]; 444 } tBTA_DM_API_OOB_REPLY; 445 446 /* data type for BTA_DM_API_SC_OOB_REPLY_EVT */ 447 typedef struct { 448 BT_HDR hdr; 449 BD_ADDR bd_addr; 450 UINT8 c[BT_OCTET16_LEN]; 451 UINT8 r[BT_OCTET16_LEN]; 452 } tBTA_DM_API_SC_OOB_REPLY; 453 454 /* data type for BTA_DM_API_SC_CR_OOB_DATA_EVT */ 455 typedef struct { 456 BT_HDR hdr; 457 } tBTA_DM_API_SC_CR_OOB_DATA; 458 459 /* data type for BTA_DM_API_CONFIRM_EVT */ 460 typedef struct { 461 BT_HDR hdr; 462 BD_ADDR bd_addr; 463 BOOLEAN accept; 464 } tBTA_DM_API_CONFIRM; 465 466 /* data type for BTA_DM_API_KEY_REQ_EVT */ 467 typedef struct { 468 BT_HDR hdr; 469 BD_ADDR bd_addr; 470 BOOLEAN accept; 471 UINT32 passkey; 472 } tBTA_DM_API_KEY_REQ; 473 474 /* data type for BTA_DM_CI_IO_REQ_EVT */ 475 typedef struct { 476 BT_HDR hdr; 477 BD_ADDR bd_addr; 478 tBTA_IO_CAP io_cap; 479 tBTA_OOB_DATA oob_data; 480 tBTA_AUTH_REQ auth_req; 481 } tBTA_DM_CI_IO_REQ; 482 483 /* data type for BTA_DM_CI_RMT_OOB_EVT */ 484 typedef struct { 485 BT_HDR hdr; 486 BD_ADDR bd_addr; 487 BT_OCTET16 c; 488 BT_OCTET16 r; 489 BOOLEAN accept; 490 } tBTA_DM_CI_RMT_OOB; 491 492 /* data type for BTA_DM_REMT_NAME_EVT */ 493 typedef struct { 494 BT_HDR hdr; 495 tBTA_DM_SEARCH result; 496 } tBTA_DM_REM_NAME; 497 498 /* data type for tBTA_DM_DISC_RESULT */ 499 typedef struct { 500 BT_HDR hdr; 501 tBTA_DM_SEARCH result; 502 } tBTA_DM_DISC_RESULT; 503 504 505 /* data type for BTA_DM_INQUIRY_CMPL_EVT */ 506 typedef struct { 507 BT_HDR hdr; 508 UINT8 num; 509 } tBTA_DM_INQUIRY_CMPL; 510 511 /* data type for BTA_DM_SDP_RESULT_EVT */ 512 typedef struct { 513 BT_HDR hdr; 514 UINT16 sdp_result; 515 } tBTA_DM_SDP_RESULT; 516 517 /* data type for BTA_DM_ACL_CHANGE_EVT */ 518 typedef struct { 519 BT_HDR hdr; 520 tBTM_BL_EVENT event; 521 UINT8 busy_level; 522 UINT8 busy_level_flags; 523 BOOLEAN is_new; 524 UINT8 new_role; 525 BD_ADDR bd_addr; 526 UINT8 hci_status; 527 BOOLEAN sc_downgrade; 528 #if BLE_INCLUDED == TRUE 529 UINT16 handle; 530 #endif 531 tBT_TRANSPORT transport; 532 } tBTA_DM_ACL_CHANGE; 533 534 #if (BTA_DM_PM_INCLUDED == TRUE) 535 /* data type for BTA_DM_PM_BTM_STATUS_EVT */ 536 typedef struct { 537 538 BT_HDR hdr; 539 BD_ADDR bd_addr; 540 tBTM_PM_STATUS status; 541 UINT16 value; 542 UINT8 hci_status; 543 544 } tBTA_DM_PM_BTM_STATUS; 545 546 /* data type for BTA_DM_PM_TIMER_EVT */ 547 typedef struct { 548 BT_HDR hdr; 549 BD_ADDR bd_addr; 550 tBTA_DM_PM_ACTION pm_request; 551 } tBTA_DM_PM_TIMER; 552 #endif /* #if (BTA_DM_PM_INCLUDED == TRUE) */ 553 554 #if (BTA_DM_QOS_INCLUDED == TRUE) 555 /* data type for BTA_DM_API_QOS_SET_EVT */ 556 typedef struct { 557 BT_HDR hdr; 558 BD_ADDR bd_addr; 559 UINT32 t_poll; 560 tBTM_CMPL_CB *p_cb; 561 } tBTA_DM_API_QOS_SET; 562 #endif /* #if (BTA_DM_QOS_INCLUDED == TRUE) */ 563 564 /* data type for BTA_DM_API_ADD_DEVICE_EVT */ 565 typedef struct { 566 BT_HDR hdr; 567 BD_ADDR bd_addr; 568 DEV_CLASS dc; 569 LINK_KEY link_key; 570 tBTA_SERVICE_MASK tm; 571 BOOLEAN is_trusted; 572 UINT8 key_type; 573 tBTA_IO_CAP io_cap; 574 BOOLEAN link_key_known; 575 BOOLEAN dc_known; 576 BD_NAME bd_name; 577 UINT8 features[BTA_FEATURE_BYTES_PER_PAGE * (BTA_EXT_FEATURES_PAGE_MAX + 1)]; 578 UINT8 pin_length; 579 UINT8 sc_support; 580 } tBTA_DM_API_ADD_DEVICE; 581 582 /* data type for BTA_DM_API_REMOVE_ACL_EVT */ 583 typedef struct { 584 BT_HDR hdr; 585 BD_ADDR bd_addr; 586 UINT8 transport; 587 } tBTA_DM_API_REMOVE_DEVICE; 588 589 /* data type for BTA_DM_API_EXECUTE_CBACK_EVT */ 590 typedef struct { 591 BT_HDR hdr; 592 void *p_param; 593 tBTA_DM_EXEC_CBACK *p_exec_cback; 594 } tBTA_DM_API_EXECUTE_CBACK; 595 596 /* data type for tBTA_DM_API_SET_ENCRYPTION */ 597 typedef struct { 598 BT_HDR hdr; 599 tBTA_TRANSPORT transport; 600 tBTA_DM_ENCRYPT_CBACK *p_callback; 601 tBTA_DM_BLE_SEC_ACT sec_act; 602 BD_ADDR bd_addr; 603 } tBTA_DM_API_SET_ENCRYPTION; 604 605 #if BLE_INCLUDED == TRUE 606 typedef struct { 607 BT_HDR hdr; 608 BD_ADDR bd_addr; 609 tBTA_LE_KEY_VALUE blekey; 610 tBTA_LE_KEY_TYPE key_type; 611 612 } tBTA_DM_API_ADD_BLEKEY; 613 614 typedef struct { 615 BT_HDR hdr; 616 BD_ADDR bd_addr; 617 tBT_DEVICE_TYPE dev_type ; 618 UINT32 auth_mode; 619 tBLE_ADDR_TYPE addr_type; 620 621 } tBTA_DM_API_ADD_BLE_DEVICE; 622 623 typedef struct { 624 BT_HDR hdr; 625 BD_ADDR bd_addr; 626 BOOLEAN accept; 627 UINT32 passkey; 628 } tBTA_DM_API_PASSKEY_REPLY; 629 630 typedef struct { 631 BT_HDR hdr; 632 BOOLEAN add; 633 UINT32 static_passkey; 634 } tBTA_DM_API_SET_DEFAULT_PASSKEY; 635 636 typedef struct { 637 BT_HDR hdr; 638 BD_ADDR bd_addr; 639 tBTA_DM_BLE_SEC_GRANT res; 640 } tBTA_DM_API_BLE_SEC_GRANT; 641 642 643 typedef struct { 644 BT_HDR hdr; 645 tBTA_DM_BLE_CONN_TYPE bg_conn_type; 646 tBTA_DM_BLE_SEL_CBACK *p_select_cback; 647 } tBTA_DM_API_BLE_SET_BG_CONN_TYPE; 648 649 /* set preferred BLE connection parameters for a device */ 650 typedef struct { 651 BT_HDR hdr; 652 BD_ADDR peer_bda; 653 UINT16 conn_int_min; 654 UINT16 conn_int_max; 655 UINT16 supervision_tout; 656 UINT16 slave_latency; 657 658 } tBTA_DM_API_BLE_CONN_PARAMS; 659 660 typedef struct { 661 BT_HDR hdr; 662 BD_ADDR peer_bda; 663 BOOLEAN privacy_enable; 664 665 } tBTA_DM_API_ENABLE_PRIVACY; 666 667 typedef struct { 668 BT_HDR hdr; 669 BOOLEAN privacy_enable; 670 tBTA_SET_LOCAL_PRIVACY_CBACK *set_local_privacy_cback; 671 } tBTA_DM_API_LOCAL_PRIVACY; 672 673 typedef struct { 674 BT_HDR hdr; 675 uint16_t icon; 676 } tBTA_DM_API_LOCAL_ICON; 677 678 /* set scan parameter for BLE connections */ 679 typedef struct { 680 BT_HDR hdr; 681 tBTA_GATTC_IF client_if; 682 UINT32 scan_int; 683 UINT32 scan_window; 684 tBLE_SCAN_MODE scan_mode; 685 tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback; 686 } tBTA_DM_API_BLE_SCAN_PARAMS; 687 688 typedef struct { 689 BT_HDR hdr; 690 tBTA_GATTC_IF client_if; 691 UINT32 scan_int; 692 UINT32 scan_window; 693 tBLE_SCAN_MODE scan_mode; 694 UINT8 addr_type_own; 695 UINT8 scan_duplicate_filter; 696 UINT8 scan_filter_policy; 697 tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback; 698 } tBTA_DM_API_BLE_SCAN_FILTER_PARAMS; 699 700 701 /* set scan parameter for BLE connections */ 702 typedef struct { 703 BT_HDR hdr; 704 UINT16 scan_int; 705 UINT16 scan_window; 706 } tBTA_DM_API_BLE_CONN_SCAN_PARAMS; 707 708 /* Data type for start/stop observe */ 709 typedef struct { 710 BT_HDR hdr; 711 BOOLEAN start; 712 UINT32 duration; 713 tBTA_DM_SEARCH_CBACK *p_cback; 714 tBTA_START_STOP_SCAN_CMPL_CBACK *p_start_scan_cback; 715 tBTA_START_STOP_SCAN_CMPL_CBACK *p_stop_scan_cback; 716 tBTA_START_STOP_ADV_CMPL_CBACK *p_stop_adv_cback; 717 } tBTA_DM_API_BLE_OBSERVE; 718 719 /* Data type for start/stop scan */ 720 typedef struct { 721 BT_HDR hdr; 722 BOOLEAN start; 723 UINT32 duration; 724 tBTA_DM_SEARCH_CBACK *p_cback; 725 tBTA_START_STOP_SCAN_CMPL_CBACK *p_start_scan_cback; 726 tBTA_START_STOP_SCAN_CMPL_CBACK *p_stop_scan_cback; 727 tBTA_START_STOP_ADV_CMPL_CBACK *p_stop_adv_cback; 728 } tBTA_DM_API_BLE_SCAN; 729 730 typedef struct { 731 BT_HDR hdr; 732 BD_ADDR remote_bda; 733 UINT16 tx_data_length; 734 tBTA_SET_PKT_DATA_LENGTH_CBACK *p_set_pkt_data_cback; 735 } tBTA_DM_API_BLE_SET_DATA_LENGTH; 736 737 /* set the address for BLE device 738 this type added by Yulong at 2016/9/9*/ 739 typedef struct { 740 BT_HDR hdr; 741 tBLE_ADDR_TYPE addr_type; 742 BD_ADDR address; 743 tBTA_SET_RAND_ADDR_CBACK *p_set_rand_addr_cback; 744 } tBTA_DM_APT_SET_DEV_ADDR; 745 746 typedef struct { 747 BT_HDR hdr; 748 } tBTA_DM_APT_CLEAR_ADDR; 749 750 typedef struct { 751 BT_HDR hdr; 752 UINT16 rpa_timeout; 753 tBTA_SET_RPA_TIMEOUT_CMPL_CBACK *p_set_rpa_timeout_cback; 754 } tBTA_DM_API_SET_RPA_TIMEOUT; 755 756 typedef struct { 757 BT_HDR hdr; // Event header 758 esp_bd_addr_t addr; // Bluetooth device address 759 UINT8 addr_type; // Type of the address 760 UINT8 irk[PEER_IRK_LEN]; // Identity Resolving Key (IRK) 761 tBTA_ADD_DEV_TO_RESOLVING_LIST_CMPL_CBACK *p_add_dev_to_resolving_list_callback; // Callback function pointer 762 } tBTA_DM_API_ADD_DEV_TO_RESOLVING_LIST; 763 764 /* set adv parameter for BLE advertising */ 765 typedef struct { 766 BT_HDR hdr; 767 UINT16 adv_int_min; 768 UINT16 adv_int_max; 769 tBLE_BD_ADDR *p_dir_bda; 770 } tBTA_DM_API_BLE_ADV_PARAMS; 771 772 /* set adv parameter for BLE advertising */ 773 typedef struct { 774 BT_HDR hdr; 775 UINT16 adv_int_min; 776 UINT16 adv_int_max; 777 UINT8 adv_type; 778 tBLE_ADDR_TYPE addr_type_own; 779 tBTM_BLE_ADV_CHNL_MAP channel_map; 780 tBTM_BLE_AFP adv_filter_policy; 781 tBLE_BD_ADDR *p_dir_bda; 782 tBTA_START_ADV_CMPL_CBACK *p_start_adv_cback; 783 } tBTA_DM_API_BLE_ADV_PARAMS_ALL; 784 785 786 typedef struct { 787 BT_HDR hdr; 788 BOOLEAN enable; 789 790 } tBTA_DM_API_BLE_FEATURE; 791 792 /* multi adv data structure */ 793 typedef struct { 794 BT_HDR hdr; 795 tBTA_BLE_MULTI_ADV_CBACK *p_cback; 796 void *p_ref; 797 tBTA_BLE_ADV_PARAMS *p_params; 798 } tBTA_DM_API_BLE_MULTI_ADV_ENB; 799 800 typedef struct { 801 BT_HDR hdr; 802 UINT8 inst_id; 803 tBTA_BLE_ADV_PARAMS *p_params; 804 } tBTA_DM_API_BLE_MULTI_ADV_PARAM; 805 806 typedef struct { 807 BT_HDR hdr; 808 UINT8 inst_id; 809 BOOLEAN is_scan_rsp; 810 tBTA_BLE_AD_MASK data_mask; 811 tBTA_BLE_ADV_DATA *p_data; 812 } tBTA_DM_API_BLE_MULTI_ADV_DATA; 813 814 typedef struct { 815 BT_HDR hdr; 816 UINT8 inst_id; 817 } tBTA_DM_API_BLE_MULTI_ADV_DISABLE; 818 819 typedef struct { 820 BT_HDR hdr; 821 UINT32 data_mask; 822 tBTA_BLE_ADV_DATA *p_adv_cfg; 823 tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback; 824 } tBTA_DM_API_SET_ADV_CONFIG; 825 826 /* raw scan response and raw advertising data use 827 the same structure */ 828 typedef struct { 829 BT_HDR hdr; 830 UINT8 *p_raw_adv; 831 UINT32 raw_adv_len; 832 tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback; 833 } tBTA_DM_API_SET_ADV_CONFIG_RAW; 834 835 typedef struct { 836 BT_HDR hdr; 837 UINT8 *adv_data; 838 UINT8 adv_data_len; 839 tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback; 840 } tBTA_DM_API_SET_LONG_ADV; 841 842 typedef struct { 843 BT_HDR hdr; 844 UINT8 batch_scan_full_max; 845 UINT8 batch_scan_trunc_max; 846 UINT8 batch_scan_notify_threshold; 847 tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback; 848 tBTA_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback; 849 tBTA_BLE_SCAN_REP_CBACK *p_read_rep_cback; 850 tBTA_DM_BLE_REF_VALUE ref_value; 851 } tBTA_DM_API_SET_STORAGE_CONFIG; 852 853 typedef struct { 854 BT_HDR hdr; 855 tBTA_BLE_BATCH_SCAN_MODE scan_mode; 856 UINT32 scan_int; 857 UINT32 scan_window; 858 tBTA_BLE_DISCARD_RULE discard_rule; 859 tBLE_ADDR_TYPE addr_type; 860 tBTA_DM_BLE_REF_VALUE ref_value; 861 } tBTA_DM_API_ENABLE_SCAN; 862 863 typedef struct { 864 BT_HDR hdr; 865 tBTA_DM_BLE_REF_VALUE ref_value; 866 } tBTA_DM_API_DISABLE_SCAN; 867 868 typedef struct { 869 BT_HDR hdr; 870 tBTA_BLE_BATCH_SCAN_MODE scan_type; 871 tBTA_DM_BLE_REF_VALUE ref_value; 872 } tBTA_DM_API_READ_SCAN_REPORTS; 873 874 typedef struct { 875 BT_HDR hdr; 876 tBTA_DM_BLE_REF_VALUE ref_value; 877 tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback; 878 } tBTA_DM_API_TRACK_ADVERTISER; 879 880 typedef struct { 881 BT_HDR hdr; 882 tBTA_BLE_ENERGY_INFO_CBACK *p_energy_info_cback; 883 } tBTA_DM_API_ENERGY_INFO; 884 885 typedef struct { 886 BT_HDR hdr; 887 BD_ADDR remote_bda; 888 } tBTA_DM_API_BLE_DISCONNECT; 889 890 typedef struct { 891 BT_HDR hdr; 892 UINT8 tx_channel; 893 UINT8 len_of_data; 894 UINT8 pkt_payload; 895 tBTA_DTM_CMD_CMPL_CBACK *p_dtm_cmpl_cback; 896 } tBTA_DM_API_BLE_DTM_TX_START; 897 898 typedef struct { 899 BT_HDR hdr; 900 UINT8 rx_channel; 901 tBTA_DTM_CMD_CMPL_CBACK *p_dtm_cmpl_cback; 902 } tBTA_DM_API_BLE_DTM_RX_START; 903 904 typedef struct { 905 BT_HDR hdr; 906 tBTA_DTM_CMD_CMPL_CBACK *p_dtm_cmpl_cback; 907 } tBTA_DM_API_BLE_DTM_STOP; 908 909 typedef struct { 910 BT_HDR hdr; 911 tBTA_CLEAR_ADV_CMPL_CBACK *p_clear_adv_cback; 912 } tBTA_DM_API_CLEAR_ADV; 913 914 typedef struct { 915 BT_HDR hdr; 916 tBLE_ADDR_TYPE addr_type; 917 BD_ADDR addr; 918 UINT8 privacy_mode; 919 tBTA_SET_PRIVACY_MODE_CMPL_CBACK *p_cback; 920 } tBTA_DM_API_SET_PRIVACY_MODE; 921 922 typedef struct { 923 BT_HDR hdr; 924 UINT8 csa_select; 925 tBTA_SET_CSA_SUPPORT_CMPL_CBACK *p_cback; 926 } tBTA_DM_API_BLE_SET_CSA_SUPPORT; 927 928 #endif /* BLE_INCLUDED */ 929 930 /* data type for BTA_DM_API_REMOVE_ACL_EVT */ 931 typedef struct { 932 BT_HDR hdr; 933 BD_ADDR bd_addr; 934 BOOLEAN remove_dev; 935 tBTA_TRANSPORT transport; 936 937 } tBTA_DM_API_REMOVE_ACL; 938 939 /* data type for BTA_DM_API_REMOVE_ALL_ACL_EVT */ 940 typedef struct { 941 BT_HDR hdr; 942 tBTA_DM_LINK_TYPE link_type; 943 944 } tBTA_DM_API_REMOVE_ALL_ACL; 945 typedef struct { 946 BT_HDR hdr; 947 BD_ADDR bd_addr; 948 UINT16 min_int; 949 UINT16 max_int; 950 UINT16 latency; 951 UINT16 timeout; 952 } tBTA_DM_API_UPDATE_CONN_PARAM; 953 954 #if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE 955 typedef struct { 956 BT_HDR hdr; 957 tBTA_DM_BLE_SCAN_COND_OP action; 958 tBTA_DM_BLE_PF_COND_TYPE cond_type; 959 tBTA_DM_BLE_PF_FILT_INDEX filt_index; 960 tBTA_DM_BLE_PF_COND_PARAM *p_cond_param; 961 tBTA_DM_BLE_PF_CFG_CBACK *p_filt_cfg_cback; 962 tBTA_DM_BLE_REF_VALUE ref_value; 963 } tBTA_DM_API_CFG_FILTER_COND; 964 965 typedef struct { 966 BT_HDR hdr; 967 UINT8 action; 968 tBTA_DM_BLE_PF_STATUS_CBACK *p_filt_status_cback; 969 tBTA_DM_BLE_REF_VALUE ref_value; 970 } tBTA_DM_API_ENABLE_SCAN_FILTER; 971 972 typedef struct { 973 BT_HDR hdr; 974 UINT8 action; 975 tBTA_DM_BLE_PF_FILT_INDEX filt_index; 976 tBTA_DM_BLE_PF_FILT_PARAMS filt_params; 977 tBLE_BD_ADDR *p_target; 978 tBTA_DM_BLE_PF_PARAM_CBACK *p_filt_param_cback; 979 tBTA_DM_BLE_REF_VALUE ref_value; 980 } tBTA_DM_API_SCAN_FILTER_PARAM_SETUP; 981 #endif 982 #if (BLE_50_FEATURE_SUPPORT == TRUE) 983 984 typedef struct { 985 BT_HDR hdr; 986 UINT8 tx_channel; 987 UINT8 len_of_data; 988 UINT8 pkt_payload; 989 UINT8 phy; 990 tBTA_DTM_CMD_CMPL_CBACK *p_dtm_cmpl_cback; 991 } tBTA_DM_API_BLE_DTM_ENH_TX_START; 992 typedef struct { 993 BT_HDR hdr; 994 UINT8 rx_channel; 995 UINT8 phy; 996 UINT8 modulation_index; 997 tBTA_DTM_CMD_CMPL_CBACK *p_dtm_cmpl_cback; 998 } tBTA_DM_API_BLE_DTM_ENH_RX_START; 999 1000 #define BTA_PHY_1M_MASK (1 << 0) 1001 #define BTA_PHY_2M_MASK (1 << 1) 1002 #define BTA_PHY_CODED_MASK (1 << 2) 1003 typedef struct { 1004 BT_HDR hdr; 1005 BD_ADDR bd_addr; 1006 } tBTA_DM_API_READ_PHY; 1007 1008 typedef struct { 1009 BT_HDR hdr; 1010 tBTA_DM_BLE_GAP_PHY_MASK tx_phy_mask; 1011 tBTA_DM_BLE_GAP_PHY_MASK rx_phy_mask; 1012 } tBTA_DM_API_SET_PER_DEF_PHY; 1013 1014 typedef struct { 1015 BT_HDR hdr; 1016 BD_ADDR bd_addr; 1017 UINT8 all_phys; 1018 tBTA_DM_BLE_GAP_PHY_MASK tx_phy_mask; 1019 tBTA_DM_BLE_GAP_PHY_MASK rx_phy_mask; 1020 UINT16 phy_options; 1021 } tBTA_DM_API_SET_PER_PHY; 1022 1023 typedef struct { 1024 BT_HDR hdr; 1025 UINT16 instance; 1026 BD_ADDR rand_addr; 1027 } tBTA_DM_API_EXT_ADV_SET_RAND_ADDR; 1028 1029 typedef struct { 1030 BT_HDR hdr; 1031 UINT16 instance; 1032 tBTA_DM_BLE_GAP_EXT_ADV_PARAMS params; 1033 } tBTA_DM_API_EXT_ADV_SET_PARAMS; 1034 1035 typedef struct { 1036 BT_HDR hdr; 1037 BOOLEAN is_scan_rsp; 1038 UINT8 instance; 1039 UINT16 length; 1040 UINT8 *data; 1041 } tBTA_DM_API_CFG_EXT_ADV_DATA; 1042 1043 typedef struct { 1044 BT_HDR hdr; 1045 BOOLEAN enable; 1046 UINT8 num; 1047 tBTA_DM_BLE_EXT_ADV *ext_adv; 1048 } tBTA_DM_API_BLE_EXT_ADV; 1049 1050 typedef struct { 1051 BT_HDR hdr; 1052 UINT16 instance; 1053 } tBTA_DM_API_BLE_EXT_ADV_SET_REMOVE; 1054 1055 typedef struct { 1056 BT_HDR hdr; 1057 } tBTA_DM_API_BLE_EXT_ADV_SET_CLEAR; 1058 1059 typedef struct { 1060 BT_HDR hdr; 1061 UINT8 instance; 1062 tBTA_DM_BLE_Periodic_Adv_Params params; 1063 } tBTA_DM_API_BLE_PERIODIC_ADV_SET_PARAMS; 1064 1065 typedef struct { 1066 BT_HDR hdr; 1067 UINT8 instance; 1068 UINT16 length; 1069 UINT8 *data; 1070 BOOLEAN only_update_did; 1071 } tBTA_DM_API_CFG_PERIODIC_ADV_DATA; 1072 1073 typedef struct { 1074 BT_HDR hdr; 1075 UINT8 instance; 1076 UINT8 enable; 1077 } tBTA_DM_API_ENABLE_PERIODIC_ADV; 1078 1079 typedef struct { 1080 BT_HDR hdr; 1081 tBTA_DM_BLE_Periodic_Sync_Params params; 1082 } tBTA_DM_API_PERIODIC_ADV_SYNC; 1083 1084 typedef struct { 1085 BT_HDR hdr; 1086 } tBTA_DM_API_PERIODIC_ADV_SYNC_CANCEL; 1087 1088 typedef struct { 1089 BT_HDR hdr; 1090 UINT16 sync_handle; 1091 } tBTA_DM_API_PERIODIC_ADV_SYNC_TERM; 1092 1093 typedef struct { 1094 BT_HDR hdr; 1095 tBLE_ADDR_TYPE addr_type; 1096 BD_ADDR addr; 1097 UINT16 sid; 1098 } tBTA_DM_API_PERIODIC_ADV_ADD_DEV_TO_LIST; 1099 1100 typedef struct { 1101 BT_HDR hdr; 1102 tBLE_ADDR_TYPE addr_type; 1103 BD_ADDR addr; 1104 UINT16 sid; 1105 } tBTA_DM_API_PERIODIC_ADV_REMOVE_DEV_FROM_LIST; 1106 1107 typedef struct { 1108 BT_HDR hdr; 1109 } tBTA_DM_API_PERIODIC_ADV_DEV_CLEAR; 1110 1111 1112 typedef struct { 1113 BT_HDR hdr; 1114 tBTA_DM_BLE_EXT_SCAN_PARAMS params; 1115 } tBTA_DM_API_SET_EXT_SCAN_PARAMS; 1116 1117 typedef struct { 1118 BT_HDR hdr; 1119 BOOLEAN start; 1120 UINT32 duration; 1121 UINT16 period; 1122 } tBTA_DM_API_EXT_SCAN; 1123 1124 typedef struct { 1125 BT_HDR hdr; 1126 BD_ADDR bd_addr; 1127 UINT8 phy_mask; 1128 tBTA_DM_BLE_CONN_PARAMS phy_1m_conn_params; 1129 tBTA_DM_BLE_CONN_PARAMS phy_2m_conn_params; 1130 tBTA_DM_BLE_CONN_PARAMS phy_coded_conn_params; 1131 } tBTA_DM_API_SET_PER_EXT_CONN_PARAMS; 1132 1133 typedef struct { 1134 BT_HDR hdr; 1135 tBLE_ADDR_TYPE own_addr_type; 1136 BD_ADDR peer_addr; 1137 } tBTA_DM_API_EXT_CONN; 1138 #endif //#if (BLE_50_FEATURE_SUPPORT == TRUE) 1139 1140 #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE) 1141 typedef struct { 1142 BT_HDR hdr; 1143 UINT16 sync_handle; 1144 UINT8 enable; 1145 } tBTA_DM_API_PERIODIC_ADV_RECV_ENABLE; 1146 1147 typedef struct { 1148 BT_HDR hdr; 1149 BD_ADDR addr; 1150 UINT16 service_data; 1151 UINT16 sync_handle; 1152 } tBTA_DM_API_PERIODIC_ADV_SYNC_TRANS; 1153 1154 typedef struct { 1155 BT_HDR hdr; 1156 BD_ADDR addr; 1157 UINT16 service_data; 1158 UINT8 adv_hanlde; 1159 } tBTA_DM_API_PERIODIC_ADV_SET_INFO_TRANS; 1160 1161 typedef struct { 1162 BT_HDR hdr; 1163 BD_ADDR addr; 1164 tBTA_DM_BLE_PAST_PARAMS params; 1165 } tBTA_DM_API_SET_PAST_PARAMS; 1166 #endif // #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE) 1167 1168 /* union of all data types */ 1169 typedef union { 1170 /* event buffer header */ 1171 BT_HDR hdr; 1172 tBTA_DM_API_ENABLE enable; 1173 1174 tBTA_DM_API_SET_NAME set_name; 1175 tBTA_DM_API_GET_NAME get_name; 1176 tBTA_DM_API_SEND_VENDOR_HCI_CMD vendor_hci_cmd; 1177 tBTA_DM_API_CONFIG_EIR config_eir; 1178 1179 tBTA_DM_API_SET_AFH_CHANNELS set_afh_channels; 1180 tBTA_DM_API_SET_ACL_PKT_TYPES set_acl_pkt_types; 1181 #if (SDP_INCLUDED == TRUE) 1182 tBTA_DM_API_GET_REMOTE_NAME get_rmt_name; 1183 #endif 1184 1185 #if (BLE_INCLUDED == TRUE) 1186 tBTA_DM_API_BLE_SET_CHANNELS ble_set_channels; 1187 tBTA_DM_API_UPDATE_WHITE_LIST white_list; 1188 tBTA_DM_API_READ_ADV_TX_POWER read_tx_power; 1189 #endif ///BLE_INCLUDED == TRUE 1190 tBTA_DM_API_READ_RSSI rssi; 1191 1192 tBTA_DM_API_SET_VISIBILITY set_visibility; 1193 1194 tBTA_DM_API_ADD_DEVICE add_dev; 1195 1196 tBTA_DM_API_REMOVE_DEVICE remove_dev; 1197 1198 tBTA_DM_API_SEARCH search; 1199 #if (SDP_INCLUDED == TRUE) 1200 tBTA_DM_API_DISCOVER discover; 1201 #endif ///SDP_INCLUDED == TRUE 1202 tBTA_DM_API_BOND bond; 1203 1204 tBTA_DM_API_BOND_CANCEL bond_cancel; 1205 1206 tBTA_DM_API_SET_PIN_TYPE set_pin_type; 1207 tBTA_DM_API_PIN_REPLY pin_reply; 1208 1209 tBTA_DM_API_LOC_OOB loc_oob; 1210 tBTA_DM_API_OOB_REPLY oob_reply; 1211 tBTA_DM_API_SC_OOB_REPLY sc_oob_reply; 1212 tBTA_DM_API_CONFIRM confirm; 1213 tBTA_DM_API_KEY_REQ key_req; 1214 tBTA_DM_CI_IO_REQ ci_io_req; 1215 tBTA_DM_CI_RMT_OOB ci_rmt_oob; 1216 1217 tBTA_DM_REM_NAME rem_name; 1218 1219 tBTA_DM_DISC_RESULT disc_result; 1220 1221 tBTA_DM_INQUIRY_CMPL inq_cmpl; 1222 1223 tBTA_DM_SDP_RESULT sdp_event; 1224 1225 tBTA_DM_ACL_CHANGE acl_change; 1226 1227 #if (BTA_DM_PM_INCLUDED == TRUE) 1228 tBTA_DM_PM_BTM_STATUS pm_status; 1229 1230 tBTA_DM_PM_TIMER pm_timer; 1231 #endif /* #if (BTA_DM_PM_INCLUDED == TRUE) */ 1232 1233 #if (BTA_DM_QOS_INCLUDED == TRUE) 1234 /* Quality of Service set events */ 1235 tBTA_DM_API_QOS_SET qos_set; 1236 #endif /* #if (BTA_DM_QOS_INCLUDED == TRUE) */ 1237 1238 tBTA_DM_API_DI_DISC di_disc; 1239 1240 tBTA_DM_API_EXECUTE_CBACK exec_cback; 1241 1242 tBTA_DM_API_SET_ENCRYPTION set_encryption; 1243 1244 #if BLE_INCLUDED == TRUE 1245 tBTA_DM_API_ADD_BLEKEY add_ble_key; 1246 tBTA_DM_API_ADD_BLE_DEVICE add_ble_device; 1247 tBTA_DM_API_PASSKEY_REPLY ble_passkey_reply; 1248 tBTA_DM_API_SET_DEFAULT_PASSKEY ble_set_static_passkey; 1249 tBTA_DM_API_BLE_SEC_GRANT ble_sec_grant; 1250 tBTA_DM_API_BLE_SET_BG_CONN_TYPE ble_set_bd_conn_type; 1251 tBTA_DM_API_BLE_CONN_PARAMS ble_set_conn_params; 1252 tBTA_DM_API_BLE_CONN_SCAN_PARAMS ble_set_conn_scan_params; 1253 tBTA_DM_API_BLE_SCAN_PARAMS ble_set_scan_params; 1254 tBTA_DM_API_BLE_SCAN_FILTER_PARAMS ble_set_scan_fil_params; 1255 tBTA_DM_API_BLE_OBSERVE ble_observe; 1256 tBTA_DM_API_BLE_SCAN ble_scan; 1257 tBTA_DM_API_ENABLE_PRIVACY ble_remote_privacy; 1258 tBTA_DM_API_LOCAL_PRIVACY ble_local_privacy; 1259 tBTA_DM_API_LOCAL_ICON ble_local_icon; 1260 tBTA_DM_API_BLE_ADV_PARAMS ble_set_adv_params; 1261 tBTA_DM_API_BLE_ADV_PARAMS_ALL ble_set_adv_params_all; 1262 tBTA_DM_API_SET_ADV_CONFIG ble_set_adv_data; 1263 tBTA_DM_API_SET_ADV_CONFIG_RAW ble_set_adv_data_raw; 1264 tBTA_DM_API_SET_LONG_ADV ble_set_long_adv_data; 1265 #if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE 1266 tBTA_DM_API_SCAN_FILTER_PARAM_SETUP ble_scan_filt_param_setup; 1267 tBTA_DM_API_CFG_FILTER_COND ble_cfg_filter_cond; 1268 tBTA_DM_API_ENABLE_SCAN_FILTER ble_enable_scan_filt; 1269 #endif 1270 tBTA_DM_API_UPDATE_CONN_PARAM ble_update_conn_params; 1271 tBTA_DM_API_BLE_SET_DATA_LENGTH ble_set_data_length; 1272 tBTA_DM_APT_SET_DEV_ADDR set_addr; 1273 tBTA_DM_APT_CLEAR_ADDR clear_addr; 1274 tBTA_DM_API_SET_RPA_TIMEOUT set_rpa_timeout; 1275 tBTA_DM_API_ADD_DEV_TO_RESOLVING_LIST add_dev_to_resolving_list; 1276 tBTA_DM_API_BLE_MULTI_ADV_ENB ble_multi_adv_enb; 1277 tBTA_DM_API_BLE_MULTI_ADV_PARAM ble_multi_adv_param; 1278 tBTA_DM_API_BLE_MULTI_ADV_DATA ble_multi_adv_data; 1279 tBTA_DM_API_BLE_MULTI_ADV_DISABLE ble_multi_adv_disable; 1280 1281 tBTA_DM_API_SET_STORAGE_CONFIG ble_set_storage; 1282 tBTA_DM_API_ENABLE_SCAN ble_enable_scan; 1283 tBTA_DM_API_READ_SCAN_REPORTS ble_read_reports; 1284 tBTA_DM_API_DISABLE_SCAN ble_disable_scan; 1285 tBTA_DM_API_TRACK_ADVERTISER ble_track_advert; 1286 tBTA_DM_API_ENERGY_INFO ble_energy_info; 1287 tBTA_DM_API_BLE_DISCONNECT ble_disconnect; 1288 tBTA_DM_API_UPDATE_DUPLICATE_EXCEPTIONAL_LIST ble_duplicate_exceptional_list; 1289 #if (BLE_50_FEATURE_SUPPORT == TRUE) 1290 tBTA_DM_API_READ_PHY ble_read_phy; 1291 tBTA_DM_API_SET_PER_DEF_PHY ble_set_per_def_phy; 1292 tBTA_DM_API_SET_PER_PHY ble_set_per_phy; 1293 tBTA_DM_API_EXT_ADV_SET_RAND_ADDR ble_set_ext_adv_rand_addr; 1294 tBTA_DM_API_EXT_ADV_SET_PARAMS ble_set_ext_adv_params; 1295 tBTA_DM_API_CFG_EXT_ADV_DATA ble_cfg_ext_adv_data; 1296 tBTA_DM_API_BLE_EXT_ADV ble_start_ext_adv; 1297 tBTA_DM_API_BLE_EXT_ADV_SET_REMOVE ble_ext_adv_set_remove; 1298 tBTA_DM_API_BLE_EXT_ADV_SET_CLEAR ble_ext_adv_set_clear; 1299 tBTA_DM_API_BLE_PERIODIC_ADV_SET_PARAMS ble_set_periodic_adv_params; 1300 tBTA_DM_API_CFG_PERIODIC_ADV_DATA ble_cfg_periodic_adv_data; 1301 tBTA_DM_API_ENABLE_PERIODIC_ADV ble_enable_periodic_adv; 1302 tBTA_DM_API_PERIODIC_ADV_SYNC ble_periodic_adv_sync; 1303 tBTA_DM_API_PERIODIC_ADV_SYNC_CANCEL ble_periodic_adv_sync_cancel; 1304 tBTA_DM_API_PERIODIC_ADV_SYNC_TERM ble_periodic_adv_sync_term; 1305 tBTA_DM_API_PERIODIC_ADV_ADD_DEV_TO_LIST ble_periodic_adv_add_dev_to_list; 1306 tBTA_DM_API_PERIODIC_ADV_REMOVE_DEV_FROM_LIST ble_periodic_adv_remove_dev_from_list; 1307 tBTA_DM_API_PERIODIC_ADV_DEV_CLEAR ble_periodic_adv_clear_dev; 1308 tBTA_DM_API_SET_EXT_SCAN_PARAMS ble_set_ext_scan_params; 1309 tBTA_DM_API_EXT_SCAN ble_ext_scan; 1310 tBTA_DM_API_SET_PER_EXT_CONN_PARAMS ble_set_per_ext_conn_params; 1311 tBTA_DM_API_BLE_DTM_ENH_TX_START dtm_enh_tx_start; 1312 tBTA_DM_API_BLE_DTM_ENH_RX_START dtm_enh_rx_start; 1313 #endif // #if (BLE_50_FEATURE_SUPPORT == TRUE) 1314 #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE) 1315 tBTA_DM_API_PERIODIC_ADV_RECV_ENABLE ble_periodic_adv_recv_enable; 1316 tBTA_DM_API_PERIODIC_ADV_SYNC_TRANS ble_periodic_adv_sync_trans; 1317 tBTA_DM_API_PERIODIC_ADV_SET_INFO_TRANS ble_periodic_adv_set_info_trans; 1318 tBTA_DM_API_SET_PAST_PARAMS ble_set_past_params; 1319 #endif // #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE) 1320 1321 tBTA_DM_API_BLE_DTM_TX_START dtm_tx_start; 1322 tBTA_DM_API_BLE_DTM_RX_START dtm_rx_start; 1323 tBTA_DM_API_BLE_DTM_STOP dtm_stop; 1324 tBTA_DM_API_CLEAR_ADV ble_clear_adv; 1325 tBTA_DM_API_SET_PRIVACY_MODE ble_set_privacy_mode; 1326 tBTA_DM_API_BLE_SET_CSA_SUPPORT ble_set_csa_support; 1327 #endif 1328 1329 tBTA_DM_API_REMOVE_ACL remove_acl; 1330 tBTA_DM_API_REMOVE_ALL_ACL remove_all_acl; 1331 1332 } tBTA_DM_MSG; 1333 1334 1335 #define BTA_DM_NUM_PEER_DEVICE MAX_ACL_CONNECTIONS 1336 1337 #define BTA_DM_NOT_CONNECTED 0 1338 #define BTA_DM_CONNECTED 1 1339 #define BTA_DM_UNPAIRING 2 1340 typedef UINT8 tBTA_DM_CONN_STATE; 1341 1342 1343 #define BTA_DM_DI_NONE 0x00 /* nothing special */ 1344 #define BTA_DM_DI_USE_SSR 0x10 /* set this bit if ssr is supported for this link */ 1345 #define BTA_DM_DI_AV_ACTIVE 0x20 /* set this bit if AV is active for this link */ 1346 #define BTA_DM_DI_SET_SNIFF 0x01 /* set this bit if call BTM_SetPowerMode(sniff) */ 1347 #define BTA_DM_DI_INT_SNIFF 0x02 /* set this bit if call BTM_SetPowerMode(sniff) & enter sniff mode */ 1348 #define BTA_DM_DI_ACP_SNIFF 0x04 /* set this bit if peer init sniff */ 1349 typedef UINT8 tBTA_DM_DEV_INFO; 1350 1351 /* set power mode request type */ 1352 #define BTA_DM_PM_RESTART 1 1353 #define BTA_DM_PM_NEW_REQ 2 1354 #define BTA_DM_PM_EXECUTE 3 1355 typedef UINT8 tBTA_DM_PM_REQ; 1356 1357 typedef struct { 1358 BD_ADDR peer_bdaddr; 1359 UINT16 link_policy; 1360 tBTA_DM_CONN_STATE conn_state; 1361 tBTA_PREF_ROLES pref_role; 1362 BOOLEAN in_use; 1363 tBTA_DM_DEV_INFO info; 1364 tBTA_DM_ENCRYPT_CBACK *p_encrypt_cback; 1365 #if (BTM_SSR_INCLUDED == TRUE) 1366 tBTM_PM_STATUS prev_low; /* previous low power mode used */ 1367 #endif 1368 tBTA_DM_PM_ACTION pm_mode_attempted; 1369 tBTA_DM_PM_ACTION pm_mode_failed; 1370 BOOLEAN remove_dev_pending; 1371 #if BLE_INCLUDED == TRUE 1372 UINT16 conn_handle; 1373 #endif 1374 tBT_TRANSPORT transport; 1375 } tBTA_DM_PEER_DEVICE; 1376 1377 1378 1379 /* structure to store list of 1380 active connections */ 1381 typedef struct { 1382 tBTA_DM_PEER_DEVICE peer_device[BTA_DM_NUM_PEER_DEVICE]; 1383 UINT8 count; 1384 #if BLE_INCLUDED == TRUE 1385 UINT8 le_count; 1386 #endif 1387 } tBTA_DM_ACTIVE_LINK; 1388 1389 1390 typedef struct { 1391 BD_ADDR peer_bdaddr; 1392 tBTA_SYS_ID id; 1393 UINT8 app_id; 1394 tBTA_SYS_CONN_STATUS state; 1395 BOOLEAN new_request; 1396 1397 } tBTA_DM_SRVCS; 1398 1399 #ifndef BTA_DM_NUM_CONN_SRVS 1400 #define BTA_DM_NUM_CONN_SRVS 10 1401 #endif 1402 1403 typedef struct { 1404 1405 UINT8 count; 1406 tBTA_DM_SRVCS conn_srvc[BTA_DM_NUM_CONN_SRVS]; 1407 1408 } tBTA_DM_CONNECTED_SRVCS; 1409 1410 1411 #if (BTA_DM_PM_INCLUDED == TRUE) 1412 1413 typedef struct { 1414 #define BTA_DM_PM_SNIFF_TIMER_IDX 0 1415 #define BTA_DM_PM_PARK_TIMER_IDX 1 1416 #define BTA_DM_PM_SUSPEND_TIMER_IDX 2 1417 #define BTA_DM_PM_MODE_TIMER_MAX 3 1418 /* 1419 * Keep three different timers for PARK, SNIFF and SUSPEND if TBFC is 1420 * supported. 1421 */ 1422 TIMER_LIST_ENT timer[BTA_DM_PM_MODE_TIMER_MAX]; 1423 1424 UINT8 srvc_id[BTA_DM_PM_MODE_TIMER_MAX]; 1425 UINT8 pm_action[BTA_DM_PM_MODE_TIMER_MAX]; 1426 UINT8 active; /* number of active timer */ 1427 1428 BD_ADDR peer_bdaddr; 1429 BOOLEAN in_use; 1430 } tBTA_PM_TIMER; 1431 1432 #define BTA_DM_NUM_PM_TIMER 7 1433 #endif /* #if (BTA_DM_PM_INCLUDED == TRUE) */ 1434 1435 /* DM control block */ 1436 typedef struct { 1437 BOOLEAN is_bta_dm_active; 1438 tBTA_DM_ACTIVE_LINK device_list; 1439 tBTA_DM_SEC_CBACK *p_sec_cback; 1440 #if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE)) 1441 tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback; 1442 tBTA_DM_BLE_PF_CFG_CBACK *p_scan_filt_cfg_cback; 1443 tBTA_DM_BLE_PF_STATUS_CBACK *p_scan_filt_status_cback; 1444 tBTA_DM_BLE_PF_PARAM_CBACK *p_scan_filt_param_cback; 1445 tBTA_BLE_MULTI_ADV_CBACK *p_multi_adv_cback; 1446 tBTA_BLE_ENERGY_INFO_CBACK *p_energy_info_cback; 1447 #endif 1448 UINT16 state; 1449 BOOLEAN disabling; 1450 TIMER_LIST_ENT disable_timer; 1451 UINT32 wbt_sdp_handle; /* WIDCOMM Extensions SDP record handle */ 1452 UINT8 wbt_scn; /* WIDCOMM Extensions SCN */ 1453 UINT8 num_master_only; 1454 #if (BTA_DM_PM_INCLUDED == TRUE) 1455 UINT8 pm_id; 1456 tBTA_PM_TIMER pm_timer[BTA_DM_NUM_PM_TIMER]; 1457 #endif /* #if (BTA_DM_PM_INCLUDED == TRUE) */ 1458 UINT32 role_policy_mask; /* the bits set indicates the modules that wants to remove role switch from the default link policy */ 1459 UINT16 cur_policy; /* current default link policy */ 1460 UINT16 rs_event; /* the event waiting for role switch */ 1461 UINT8 cur_av_count; /* current AV connections */ 1462 BOOLEAN disable_pair_mode; /* disable pair mode or not */ 1463 BOOLEAN conn_paired_only; /* allow connectable to paired device only or not */ 1464 tBTA_DM_API_SEARCH search_msg; 1465 1466 #if (CLASSIC_BT_INCLUDED == TRUE) 1467 UINT16 page_scan_interval; 1468 UINT16 page_scan_window; 1469 UINT16 inquiry_scan_interval; 1470 UINT16 inquiry_scan_window; 1471 1472 /* Storage for pin code request parameters */ 1473 BD_ADDR pin_bd_addr; 1474 DEV_CLASS pin_dev_class; 1475 tBTA_DM_SEC_EVT pin_evt; 1476 UINT32 num_val; /* the numeric value for comparison. If just_works, do not show this number to UI */ 1477 BOOLEAN just_works; /* TRUE, if "Just Works" association model */ 1478 #endif 1479 1480 #if ( BTA_EIR_CANNED_UUID_LIST != TRUE ) 1481 /* store UUID list for EIR */ 1482 TIMER_LIST_ENT app_ready_timer; 1483 UINT32 eir_uuid[BTM_EIR_SERVICE_ARRAY_SIZE]; 1484 #if (BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) 1485 tBT_UUID custom_uuid[BTA_EIR_SERVER_NUM_CUSTOM_UUID]; 1486 #endif 1487 1488 #endif 1489 1490 1491 tBTA_DM_ENCRYPT_CBACK *p_encrypt_cback; 1492 TIMER_LIST_ENT switch_delay_timer[BTA_DM_NUM_PEER_DEVICE]; 1493 1494 } tBTA_DM_CB; 1495 1496 #ifndef BTA_DM_SDP_DB_SIZE 1497 #define BTA_DM_SDP_DB_SIZE 250 1498 #endif 1499 1500 /* DM search control block */ 1501 typedef struct { 1502 1503 tBTA_DM_SEARCH_CBACK *p_search_cback; 1504 tBTM_INQ_INFO *p_btm_inq_info; 1505 tBTA_SERVICE_MASK services; 1506 tBTA_SERVICE_MASK services_to_search; 1507 tBTA_SERVICE_MASK services_found; 1508 #if (SDP_INCLUDED == TRUE) 1509 tSDP_DISCOVERY_DB *p_sdp_db; 1510 #endif ///SDP_INCLUDED == TRUE 1511 UINT16 state; 1512 BD_ADDR peer_bdaddr; 1513 BOOLEAN name_discover_done; 1514 BD_NAME peer_name; 1515 TIMER_LIST_ENT search_timer; 1516 UINT8 service_index; 1517 tBTA_DM_MSG *p_search_queue; /* search or discover commands during search cancel stored here */ 1518 BOOLEAN wait_disc; 1519 BOOLEAN sdp_results; 1520 #if (SDP_INCLUDED == TRUE) 1521 tSDP_UUID uuid; 1522 #endif ///SDP_INCLUDED == TRUE 1523 UINT8 peer_scn; 1524 BOOLEAN sdp_search; 1525 BOOLEAN cancel_pending; /* inquiry cancel is pending */ 1526 tBTA_TRANSPORT transport; 1527 #if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE)) 1528 tBTA_DM_SEARCH_CBACK *p_scan_cback; 1529 #if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE) && SDP_INCLUDED == TRUE) 1530 tBTA_GATTC_IF client_if; 1531 UINT8 num_uuid; 1532 tBT_UUID *p_srvc_uuid; 1533 UINT8 uuid_to_search; 1534 BOOLEAN gatt_disc_active; 1535 UINT16 conn_id; 1536 UINT8 *p_ble_rawdata; 1537 UINT32 ble_raw_size; 1538 UINT32 ble_raw_used; 1539 TIMER_LIST_ENT gatt_close_timer; /* GATT channel close delay timer */ 1540 BD_ADDR pending_close_bda; /* pending GATT channel remote device address */ 1541 #endif 1542 #endif 1543 1544 1545 } tBTA_DM_SEARCH_CB; 1546 1547 /* DI control block */ 1548 typedef struct { 1549 #if (SDP_INCLUDED == TRUE) 1550 tSDP_DISCOVERY_DB *p_di_db; /* pointer to the DI discovery database */ 1551 #endif ///SDP_INCLUDED == TRUE 1552 BOOLEAN uuid_added; 1553 UINT8 di_num; /* total local DI record number */ 1554 UINT32 di_handle[BTA_DI_NUM_MAX]; /* local DI record handle, the first one is primary record */ 1555 } tBTA_DM_DI_CB; 1556 1557 /* DM search state */ 1558 enum { 1559 1560 BTA_DM_SEARCH_IDLE, 1561 BTA_DM_SEARCH_ACTIVE, 1562 BTA_DM_SEARCH_CANCELLING, 1563 BTA_DM_DISCOVER_ACTIVE 1564 1565 }; 1566 1567 1568 1569 typedef struct { 1570 DEV_CLASS dev_class; /* local device class */ 1571 UINT16 policy_settings; /* link policy setting hold, sniff, park, MS switch */ 1572 UINT16 page_timeout; /* timeout for page in slots */ 1573 UINT16 link_timeout; /* link supervision timeout in slots */ 1574 BOOLEAN avoid_scatter; /* TRUE to avoid scatternet when av is streaming (be the master) */ 1575 1576 } tBTA_DM_CFG; 1577 1578 extern const UINT32 bta_service_id_to_btm_srv_id_lkup_tbl[]; 1579 1580 1581 typedef struct { 1582 UINT8 id; 1583 UINT8 app_id; 1584 UINT8 cfg; 1585 1586 } tBTA_DM_RM ; 1587 1588 extern tBTA_DM_CFG *const p_bta_dm_cfg; 1589 extern tBTA_DM_RM *const p_bta_dm_rm_cfg; 1590 1591 typedef struct { 1592 1593 UINT8 id; 1594 UINT8 app_id; 1595 UINT8 spec_idx; /* index of spec table to use */ 1596 1597 } tBTA_DM_PM_CFG; 1598 1599 1600 typedef struct { 1601 1602 tBTA_DM_PM_ACTION power_mode; 1603 UINT16 timeout; 1604 1605 } tBTA_DM_PM_ACTN; 1606 1607 typedef struct { 1608 1609 UINT8 allow_mask; /* mask of sniff/hold/park modes to allow */ 1610 #if (BTM_SSR_INCLUDED == TRUE) 1611 UINT8 ssr; /* set SSR on conn open/unpark */ 1612 #endif 1613 tBTA_DM_PM_ACTN actn_tbl [BTA_DM_PM_NUM_EVTS][2]; 1614 1615 } tBTA_DM_PM_SPEC; 1616 1617 typedef struct { 1618 UINT16 max_lat; 1619 UINT16 min_rmt_to; 1620 UINT16 min_loc_to; 1621 } tBTA_DM_SSR_SPEC; 1622 1623 typedef struct { 1624 UINT16 manufacturer; 1625 UINT16 lmp_sub_version; 1626 UINT8 lmp_version; 1627 } tBTA_DM_LMP_VER_INFO; 1628 1629 #if (BTA_DM_PM_INCLUDED == TRUE) 1630 extern tBTA_DM_PM_CFG *const p_bta_dm_pm_cfg; 1631 extern tBTA_DM_PM_SPEC *const p_bta_dm_pm_spec; 1632 extern tBTM_PM_PWR_MD *const p_bta_dm_pm_md; 1633 #if (BTM_SSR_INCLUDED == TRUE) 1634 extern tBTA_DM_SSR_SPEC *const p_bta_dm_ssr_spec; 1635 #endif 1636 #endif /* #if (BTA_DM_PM_INCLUDED == TRUE) */ 1637 1638 /* update dynamic BRCM Aware EIR data */ 1639 extern tBTA_DM_EIR_CONF bta_dm_eir_cfg; 1640 extern tBTA_DM_EIR_CONF *p_bta_dm_eir_cfg; 1641 1642 /* DM control block */ 1643 #if BTA_DYNAMIC_MEMORY == FALSE 1644 extern tBTA_DM_CB bta_dm_cb; 1645 #else 1646 extern tBTA_DM_CB *bta_dm_cb_ptr; 1647 #define bta_dm_cb (*bta_dm_cb_ptr) 1648 #endif 1649 1650 /* DM search control block */ 1651 #if BTA_DYNAMIC_MEMORY == FALSE 1652 extern tBTA_DM_SEARCH_CB bta_dm_search_cb; 1653 #else 1654 extern tBTA_DM_SEARCH_CB *bta_dm_search_cb_ptr; 1655 #define bta_dm_search_cb (*bta_dm_search_cb_ptr) 1656 #endif 1657 1658 /* DI control block */ 1659 #if BTA_DYNAMIC_MEMORY == FALSE 1660 extern tBTA_DM_DI_CB bta_dm_di_cb; 1661 #else 1662 extern tBTA_DM_DI_CB *bta_dm_di_cb_ptr; 1663 #define bta_dm_di_cb (*bta_dm_di_cb_ptr) 1664 extern SemaphoreHandle_t deinit_semaphore; 1665 #endif 1666 1667 #if BTA_DYNAMIC_MEMORY == FALSE 1668 extern tBTA_DM_CONNECTED_SRVCS bta_dm_conn_srvcs; 1669 #else 1670 extern tBTA_DM_CONNECTED_SRVCS *bta_dm_conn_srvcs_ptr; 1671 #define bta_dm_conn_srvcs (*bta_dm_conn_srvcs_ptr) 1672 #endif 1673 1674 /* Discovery raw data buffer */ 1675 #define MAX_DISC_RAW_DATA_BUF (1024) 1676 #if BTA_DYNAMIC_MEMORY == TRUE 1677 extern UINT8 *g_disc_raw_data_buf; 1678 #endif 1679 1680 extern BOOLEAN bta_dm_sm_execute(BT_HDR *p_msg); 1681 extern void bta_dm_sm_disable( void ); 1682 extern void bta_dm_sm_deinit(void); 1683 extern BOOLEAN bta_dm_search_sm_execute(BT_HDR *p_msg); 1684 extern void bta_dm_search_sm_disable( void ); 1685 1686 1687 extern void bta_dm_enable (tBTA_DM_MSG *p_data); 1688 extern void bta_dm_disable (tBTA_DM_MSG *p_data); 1689 extern void bta_dm_set_dev_name (tBTA_DM_MSG *p_data); 1690 extern void bta_dm_get_dev_name (tBTA_DM_MSG *p_data); 1691 extern void bta_dm_send_vendor_hci(tBTA_DM_MSG *p_data); 1692 #if (CLASSIC_BT_INCLUDED == TRUE) 1693 extern void bta_dm_config_eir (tBTA_DM_MSG *p_data); 1694 extern void bta_dm_set_acl_pkt_types (tBTA_DM_MSG *p_data); 1695 #endif 1696 extern void bta_dm_set_afh_channels (tBTA_DM_MSG *p_data); 1697 extern void bta_dm_read_rmt_name(tBTA_DM_MSG *p_data); 1698 extern void bta_dm_ble_set_channels (tBTA_DM_MSG *p_data); 1699 extern void bta_dm_update_white_list(tBTA_DM_MSG *p_data); 1700 extern void bta_dm_clear_white_list(tBTA_DM_MSG *p_data); 1701 extern void bta_dm_ble_read_adv_tx_power(tBTA_DM_MSG *p_data); 1702 extern void bta_dm_read_rssi(tBTA_DM_MSG *p_data); 1703 extern void bta_dm_set_visibility (tBTA_DM_MSG *p_data); 1704 1705 extern void bta_dm_set_scan_config(tBTA_DM_MSG *p_data); 1706 extern void bta_dm_vendor_spec_command(tBTA_DM_MSG *p_data); 1707 extern void bta_dm_bond (tBTA_DM_MSG *p_data); 1708 extern void bta_dm_bond_cancel (tBTA_DM_MSG *p_data); 1709 extern void bta_dm_set_pin_type (tBTA_DM_MSG *p_data); 1710 extern void bta_dm_pin_reply (tBTA_DM_MSG *p_data); 1711 extern void bta_dm_acl_change(tBTA_DM_MSG *p_data); 1712 extern void bta_dm_add_device (tBTA_DM_MSG *p_data); 1713 extern void bta_dm_remove_device (tBTA_DM_MSG *p_data); 1714 extern void bta_dm_close_acl(tBTA_DM_MSG *p_data); 1715 1716 extern void bta_dm_add_ampkey (tBTA_DM_MSG *p_data); 1717 1718 #if BLE_INCLUDED == TRUE 1719 extern void bta_dm_add_blekey (tBTA_DM_MSG *p_data); 1720 extern void bta_dm_add_ble_device (tBTA_DM_MSG *p_data); 1721 extern void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data); 1722 extern void bta_dm_ble_set_static_passkey(tBTA_DM_MSG *p_data); 1723 extern void bta_dm_ble_confirm_reply (tBTA_DM_MSG *p_data); 1724 extern void bta_dm_security_grant (tBTA_DM_MSG *p_data); 1725 extern void bta_dm_ble_set_bg_conn_type (tBTA_DM_MSG *p_data); 1726 extern void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data); 1727 extern void bta_dm_ble_set_scan_params(tBTA_DM_MSG *p_data); 1728 extern void bta_dm_ble_set_scan_fil_params(tBTA_DM_MSG *p_data); 1729 extern void bta_dm_ble_set_conn_scan_params (tBTA_DM_MSG *p_data); 1730 #if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE) && SDP_INCLUDED == TRUE) && (GATTC_INCLUDED == TRUE) 1731 extern void bta_dm_close_gatt_conn(tBTA_DM_MSG *p_data); 1732 #endif /* ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE) && SDP_INCLUDED == TRUE) && (GATTC_INCLUDED == TRUE) */ 1733 extern void bta_dm_ble_observe (tBTA_DM_MSG *p_data); 1734 extern void bta_dm_ble_scan (tBTA_DM_MSG *p_data); 1735 extern void bta_dm_ble_update_conn_params (tBTA_DM_MSG *p_data); 1736 extern void bta_dm_ble_disconnect (tBTA_DM_MSG *p_data); 1737 extern void bta_dm_ble_set_rand_address(tBTA_DM_MSG *p_data); 1738 extern void bta_dm_ble_clear_rand_address(tBTA_DM_MSG *p_data); 1739 extern void bta_dm_ble_stop_advertising(tBTA_DM_MSG *p_data); 1740 extern void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data); 1741 extern void bta_dm_ble_config_local_icon (tBTA_DM_MSG *p_data); 1742 extern void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data); 1743 extern void bta_dm_ble_set_adv_params_all(tBTA_DM_MSG *p_data); 1744 extern void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data); 1745 extern void bta_dm_ble_set_long_adv (tBTA_DM_MSG *p_data); 1746 extern void bta_dm_ble_set_adv_config_raw (tBTA_DM_MSG *p_data); 1747 extern void bta_dm_ble_set_scan_rsp (tBTA_DM_MSG *p_data); 1748 extern void bta_dm_ble_set_scan_rsp_raw (tBTA_DM_MSG *p_data); 1749 extern void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data); 1750 extern void bta_dm_ble_set_data_length(tBTA_DM_MSG *p_data); 1751 extern void bta_dm_ble_update_duplicate_exceptional_list(tBTA_DM_MSG *p_data); 1752 #if SMP_INCLUDED == TRUE 1753 extern void bta_dm_co_security_param_init(void); 1754 #endif 1755 #if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE 1756 extern void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data); 1757 extern void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data); 1758 extern void bta_dm_enable_scan_filter(tBTA_DM_MSG *p_data); 1759 #endif 1760 extern void btm_dm_ble_multi_adv_disable(tBTA_DM_MSG *p_data); 1761 extern void bta_dm_ble_multi_adv_data(tBTA_DM_MSG *p_data); 1762 extern void bta_dm_ble_multi_adv_upd_param(tBTA_DM_MSG *p_data); 1763 extern void bta_dm_ble_multi_adv_enb(tBTA_DM_MSG *p_data); 1764 extern void bta_dm_ble_gap_dtm_tx_start(tBTA_DM_MSG *p_data); 1765 extern void bta_dm_ble_gap_dtm_rx_start(tBTA_DM_MSG *p_data); 1766 extern void bta_dm_ble_gap_dtm_stop(tBTA_DM_MSG *p_data); 1767 extern void bta_dm_ble_gap_clear_adv(tBTA_DM_MSG *p_data); 1768 extern void bta_dm_ble_gap_set_rpa_timeout(tBTA_DM_MSG *p_data); 1769 extern void bta_dm_ble_gap_add_dev_to_resolving_list(tBTA_DM_MSG *p_data); 1770 extern void bta_dm_ble_gap_set_privacy_mode(tBTA_DM_MSG *p_data); 1771 extern void bta_dm_ble_gap_set_csa_support(tBTA_DM_MSG *p_data); 1772 #if (BLE_50_FEATURE_SUPPORT == TRUE) 1773 extern void bta_dm_ble_gap_dtm_enhance_tx_start(tBTA_DM_MSG *p_data); 1774 extern void bta_dm_ble_gap_dtm_enhance_rx_start(tBTA_DM_MSG *p_data); 1775 extern void bta_dm_ble_gap_read_phy(tBTA_DM_MSG *p_data); 1776 extern void bta_dm_ble_gap_set_prefer_default_phy(tBTA_DM_MSG *p_data); 1777 extern void bta_dm_ble_gap_set_prefer_phy(tBTA_DM_MSG *p_data); 1778 extern void bta_dm_ble_gap_ext_adv_set_rand_addr(tBTA_DM_MSG *p_data); 1779 extern void bta_dm_ble_gap_ext_adv_set_params(tBTA_DM_MSG *p_data); 1780 extern void bta_dm_ble_gap_config_ext_adv_data_raw(tBTA_DM_MSG *p_data); 1781 extern void bta_dm_ble_gap_set_ext_scan_params(tBTA_DM_MSG *p_data); 1782 extern void bta_dm_ble_gap_ext_scan(tBTA_DM_MSG *p_data); 1783 extern void bta_dm_ble_gap_set_prefer_ext_conn_params(tBTA_DM_MSG *p_data); 1784 #endif // #if (BLE_50_FEATURE_SUPPORT == TRUE) 1785 extern void bta_dm_ble_setup_storage(tBTA_DM_MSG *p_data); 1786 extern void bta_dm_ble_enable_batch_scan(tBTA_DM_MSG *p_data); 1787 extern void bta_dm_ble_disable_batch_scan(tBTA_DM_MSG *p_data); 1788 extern void bta_dm_ble_read_scan_reports(tBTA_DM_MSG *p_data); 1789 extern void bta_dm_ble_track_advertiser(tBTA_DM_MSG *p_data); 1790 extern void bta_dm_ble_get_energy_info(tBTA_DM_MSG *p_data); 1791 1792 #endif 1793 extern void bta_dm_set_encryption(tBTA_DM_MSG *p_data); 1794 extern void bta_dm_confirm(tBTA_DM_MSG *p_data); 1795 extern void bta_dm_key_req(tBTA_DM_MSG *p_data); 1796 1797 #if (BTA_HD_INCLUDED == TRUE) 1798 extern BOOLEAN bta_dm_check_if_only_hd_connected(BD_ADDR peer_addr); 1799 #endif /* BTA_HD_INCLUDED */ 1800 1801 #if (BTM_OOB_INCLUDED == TRUE) 1802 extern void bta_dm_loc_oob(tBTA_DM_MSG *p_data); 1803 extern void bta_dm_oob_reply(tBTA_DM_MSG *p_data); 1804 extern void bta_dm_sc_oob_reply(tBTA_DM_MSG *p_data); 1805 extern void bta_dm_sc_create_oob_data(tBTA_DM_MSG *p_data); 1806 extern void bta_dm_ci_io_req_act(tBTA_DM_MSG *p_data); 1807 extern void bta_dm_ci_rmt_oob_act(tBTA_DM_MSG *p_data); 1808 #endif /* BTM_OOB_INCLUDED */ 1809 1810 #if (BTA_DM_PM_INCLUDED == TRUE) 1811 extern void bta_dm_init_pm(void); 1812 extern void bta_dm_disable_pm(void); 1813 extern void bta_dm_pm_active(BD_ADDR peer_addr); 1814 extern void bta_dm_pm_btm_status(tBTA_DM_MSG *p_data); 1815 extern void bta_dm_pm_timer(tBTA_DM_MSG *p_data); 1816 #endif /* #if (BTA_DM_PM_INCLUDED == TRUE) */ 1817 1818 #if (BTA_DM_QOS_INCLUDED == TRUE) 1819 extern void bta_dm_set_qos(tBTA_DM_MSG *p_data); 1820 #endif /* #if (BTA_DM_QOS_INCLUDED == TRUE) */ 1821 1822 extern UINT8 bta_dm_get_av_count(void); 1823 extern void bta_dm_search_start (tBTA_DM_MSG *p_data); 1824 extern void bta_dm_search_cancel (tBTA_DM_MSG *p_data); 1825 extern void bta_dm_discover (tBTA_DM_MSG *p_data); 1826 #if (SDP_INCLUDED == TRUE) 1827 extern void bta_dm_di_disc (tBTA_DM_MSG *p_data); 1828 #endif ///SDP_INCLUDED == TRUE 1829 extern void bta_dm_inq_cmpl (tBTA_DM_MSG *p_data); 1830 extern void bta_dm_rmt_name (tBTA_DM_MSG *p_data); 1831 #if (SDP_INCLUDED == TRUE) 1832 extern void bta_dm_sdp_result (tBTA_DM_MSG *p_data); 1833 #endif ///SDP_INCLUDED == TRUE 1834 extern void bta_dm_search_cmpl (tBTA_DM_MSG *p_data); 1835 extern void bta_dm_free_sdp_db (tBTA_DM_MSG *p_data); 1836 extern void bta_dm_disc_result (tBTA_DM_MSG *p_data); 1837 extern void bta_dm_search_result (tBTA_DM_MSG *p_data); 1838 extern void bta_dm_discovery_cmpl (tBTA_DM_MSG *p_data); 1839 extern void bta_dm_queue_search (tBTA_DM_MSG *p_data); 1840 extern void bta_dm_queue_disc (tBTA_DM_MSG *p_data); 1841 extern void bta_dm_search_clear_queue (tBTA_DM_MSG *p_data); 1842 extern void bta_dm_search_cancel_cmpl (tBTA_DM_MSG *p_data); 1843 extern void bta_dm_search_cancel_notify (tBTA_DM_MSG *p_data); 1844 extern void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data); 1845 extern void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data); 1846 extern tBTA_DM_PEER_DEVICE *bta_dm_find_peer_device(BD_ADDR peer_addr); 1847 void bta_dm_eir_update_uuid(tBT_UUID uuid, BOOLEAN adding); 1848 1849 extern void bta_dm_enable_test_mode(tBTA_DM_MSG *p_data); 1850 extern void bta_dm_disable_test_mode(tBTA_DM_MSG *p_data); 1851 extern void bta_dm_execute_callback(tBTA_DM_MSG *p_data); 1852 1853 1854 extern void bta_dm_remove_all_acl(tBTA_DM_MSG *p_data); 1855 #if (BLE_50_FEATURE_SUPPORT == TRUE) 1856 extern void bta_dm_ble_gap_read_phy(tBTA_DM_MSG *p_data); 1857 1858 extern void bta_dm_ble_gap_set_prefer_default_phy(tBTA_DM_MSG *p_data); 1859 1860 extern void bta_dm_ble_gap_set_prefer_phy(tBTA_DM_MSG *p_data); 1861 1862 extern void bta_dm_ble_gap_ext_adv_set_rand_addr(tBTA_DM_MSG *p_data); 1863 1864 extern void bta_dm_ble_gap_ext_adv_set_params(tBTA_DM_MSG *p_data); 1865 1866 extern void bta_dm_ble_gap_config_ext_adv_data_raw(tBTA_DM_MSG *p_data); 1867 1868 extern void bta_dm_ble_gap_start_ext_adv(tBTA_DM_MSG *p_data); 1869 1870 extern void bta_dm_ble_gap_ext_adv_set_remove(tBTA_DM_MSG *p_data); 1871 1872 extern void bta_dm_ble_gap_ext_adv_set_clear(tBTA_DM_MSG *p_data); 1873 1874 extern void bta_dm_ble_gap_periodic_adv_set_params(tBTA_DM_MSG *p_data); 1875 1876 extern void bta_dm_ble_gap_periodic_adv_cfg_data_raw(tBTA_DM_MSG *p_data); 1877 1878 extern void bta_dm_ble_gap_periodic_adv_enable(tBTA_DM_MSG *p_data); 1879 1880 extern void bta_dm_ble_gap_periodic_adv_create_sync(tBTA_DM_MSG *p_data); 1881 1882 extern void bta_dm_ble_gap_periodic_adv_sync_cancel(tBTA_DM_MSG *p_data); 1883 1884 extern void bta_dm_ble_gap_periodic_adv_sync_terminate(tBTA_DM_MSG *p_data); 1885 1886 extern void bta_dm_ble_gap_periodic_adv_add_dev_to_list(tBTA_DM_MSG *p_data); 1887 1888 extern void bta_dm_ble_gap_periodic_adv_remove_dev_from_list(tBTA_DM_MSG *p_data); 1889 1890 extern void bta_dm_ble_gap_periodic_adv_clear_dev(tBTA_DM_MSG *p_data); 1891 1892 extern void bta_dm_ble_gap_set_ext_scan_params(tBTA_DM_MSG *p_data); 1893 1894 extern void bta_dm_ble_gap_ext_scan(tBTA_DM_MSG *p_data); 1895 1896 extern void bta_dm_ble_gap_set_prefer_ext_conn_params(tBTA_DM_MSG *p_data); 1897 #endif // #if (BLE_50_FEATURE_SUPPORT == TRUE) 1898 1899 #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE) 1900 extern void bta_dm_ble_gap_periodic_adv_recv_enable(tBTA_DM_MSG *p_data); 1901 1902 extern void bta_dm_ble_gap_periodic_adv_sync_trans(tBTA_DM_MSG *p_data); 1903 1904 extern void bta_dm_ble_gap_periodic_adv_set_info_trans(tBTA_DM_MSG *p_data); 1905 1906 extern void bta_dm_ble_gap_set_periodic_adv_sync_trans_params(tBTA_DM_MSG *p_data); 1907 #endif // #if (BLE_FEAT_PERIODIC_ADV_SYNC_TRANSFER == TRUE) 1908 1909 #endif /* BTA_DM_INT_H */ 1910