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 "bt_target.h" 28 29#if (BLE_INCLUDED == TRUE && (defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) 30 #include "bta_gatt_api.h" 31#endif 32 33 34 35/***************************************************************************** 36** Constants and data types 37*****************************************************************************/ 38 39 40#define BTA_COPY_DEVICE_CLASS(coddst, codsrc) {((UINT8 *)(coddst))[0] = ((UINT8 *)(codsrc))[0]; \ 41 ((UINT8 *)(coddst))[1] = ((UINT8 *)(codsrc))[1]; \ 42 ((UINT8 *)(coddst))[2] = ((UINT8 *)(codsrc))[2];} 43 44 45#define BTA_DM_MSG_LEN 50 46 47#define BTA_SERVICE_ID_TO_SERVICE_MASK(id) (1 << (id)) 48 49/* DM events */ 50enum 51{ 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_SET_VISIBILITY_EVT, 57 58 BTA_DM_ACL_CHANGE_EVT, 59 BTA_DM_API_ADD_DEVICE_EVT, 60 BTA_DM_API_REMOVE_ACL_EVT, 61 62 /* security API events */ 63 BTA_DM_API_BOND_EVT, 64 BTA_DM_API_BOND_CANCEL_EVT, 65 BTA_DM_API_PIN_REPLY_EVT, 66 67 /* power manger events */ 68 BTA_DM_PM_BTM_STATUS_EVT, 69 BTA_DM_PM_TIMER_EVT, 70 71 /* simple pairing events */ 72 BTA_DM_API_CONFIRM_EVT, 73 74 BTA_DM_API_SET_ENCRYPTION_EVT, 75 76#if (BTM_OOB_INCLUDED == TRUE) 77 BTA_DM_API_LOC_OOB_EVT, 78 BTA_DM_CI_IO_REQ_EVT, 79 BTA_DM_CI_RMT_OOB_EVT, 80#endif /* BTM_OOB_INCLUDED */ 81 82 83#if BLE_INCLUDED == TRUE 84 BTA_DM_API_ADD_BLEKEY_EVT, 85 BTA_DM_API_ADD_BLEDEVICE_EVT, 86 BTA_DM_API_BLE_PASSKEY_REPLY_EVT, 87 BTA_DM_API_BLE_CONFIRM_REPLY_EVT, 88 BTA_DM_API_BLE_SEC_GRANT_EVT, 89 BTA_DM_API_BLE_SET_BG_CONN_TYPE, 90 BTA_DM_API_BLE_CONN_PARAM_EVT, 91 BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT, 92 BTA_DM_API_BLE_SCAN_PARAM_EVT, 93 BTA_DM_API_BLE_OBSERVE_EVT, 94 BTA_DM_API_UPDATE_CONN_PARAM_EVT, 95#if BLE_PRIVACY_SPT == TRUE 96 BTA_DM_API_LOCAL_PRIVACY_EVT, 97#endif 98 BTA_DM_API_BLE_ADV_PARAM_EVT, 99 BTA_DM_API_BLE_SET_ADV_CONFIG_EVT, 100 BTA_DM_API_BLE_SET_SCAN_RSP_EVT, 101 BTA_DM_API_BLE_BROADCAST_EVT, 102 BTA_DM_API_SET_DATA_LENGTH_EVT, 103 104#if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE 105 BTA_DM_API_CFG_FILTER_COND_EVT, 106 BTA_DM_API_SCAN_FILTER_SETUP_EVT, 107 BTA_DM_API_SCAN_FILTER_ENABLE_EVT, 108#endif 109 BTA_DM_API_BLE_MULTI_ADV_ENB_EVT, 110 BTA_DM_API_BLE_MULTI_ADV_PARAM_UPD_EVT, 111 BTA_DM_API_BLE_MULTI_ADV_DATA_EVT, 112 BTA_DM_API_BLE_MULTI_ADV_DISABLE_EVT, 113 BTA_DM_API_BLE_SETUP_STORAGE_EVT, 114 BTA_DM_API_BLE_ENABLE_BATCH_SCAN_EVT, 115 BTA_DM_API_BLE_DISABLE_BATCH_SCAN_EVT, 116 BTA_DM_API_BLE_READ_SCAN_REPORTS_EVT, 117 BTA_DM_API_BLE_TRACK_ADVERTISER_EVT, 118 BTA_DM_API_BLE_ENERGY_INFO_EVT, 119 120#endif 121 122 BTA_DM_API_ENABLE_TEST_MODE_EVT, 123 BTA_DM_API_DISABLE_TEST_MODE_EVT, 124 BTA_DM_API_EXECUTE_CBACK_EVT, 125 BTA_DM_API_REMOVE_ALL_ACL_EVT, 126 BTA_DM_API_REMOVE_DEVICE_EVT, 127 BTA_DM_MAX_EVT 128}; 129 130 131/* DM search events */ 132enum 133{ 134 /* DM search API events */ 135 BTA_DM_API_SEARCH_EVT = BTA_SYS_EVT_START(BTA_ID_DM_SEARCH), 136 BTA_DM_API_SEARCH_CANCEL_EVT, 137 BTA_DM_API_DISCOVER_EVT, 138 BTA_DM_INQUIRY_CMPL_EVT, 139 BTA_DM_REMT_NAME_EVT, 140 BTA_DM_SDP_RESULT_EVT, 141 BTA_DM_SEARCH_CMPL_EVT, 142 BTA_DM_DISCOVERY_RESULT_EVT, 143 BTA_DM_API_DI_DISCOVER_EVT, 144 BTA_DM_DISC_CLOSE_TOUT_EVT 145 146}; 147 148/* data type for BTA_DM_API_ENABLE_EVT */ 149typedef struct 150{ 151 BT_HDR hdr; 152 tBTA_DM_SEC_CBACK *p_sec_cback; 153} tBTA_DM_API_ENABLE; 154 155/* data type for BTA_DM_API_SET_NAME_EVT */ 156typedef struct 157{ 158 BT_HDR hdr; 159 BD_NAME name; /* max 248 bytes name, plus must be Null terminated */ 160} tBTA_DM_API_SET_NAME; 161 162/* data type for BTA_DM_API_SET_VISIBILITY_EVT */ 163typedef struct 164{ 165 BT_HDR hdr; 166 tBTA_DM_DISC disc_mode; 167 tBTA_DM_CONN conn_mode; 168 UINT8 pair_mode; 169 UINT8 conn_paired_only; 170} tBTA_DM_API_SET_VISIBILITY; 171 172enum 173{ 174 BTA_DM_RS_NONE, /* straight API call */ 175 BTA_DM_RS_OK, /* the role switch result - successful */ 176 BTA_DM_RS_FAIL /* the role switch result - failed */ 177}; 178typedef UINT8 tBTA_DM_RS_RES; 179 180/* data type for BTA_DM_API_SEARCH_EVT */ 181typedef struct 182{ 183 BT_HDR hdr; 184 tBTA_DM_INQ inq_params; 185 tBTA_SERVICE_MASK services; 186 tBTA_DM_SEARCH_CBACK * p_cback; 187 tBTA_DM_RS_RES rs_res; 188#if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE 189 UINT8 num_uuid; 190 tBT_UUID *p_uuid; 191#endif 192} tBTA_DM_API_SEARCH; 193 194/* data type for BTA_DM_API_DISCOVER_EVT */ 195typedef struct 196{ 197 BT_HDR hdr; 198 BD_ADDR bd_addr; 199 tBTA_SERVICE_MASK services; 200 tBTA_DM_SEARCH_CBACK * p_cback; 201 BOOLEAN sdp_search; 202 tBTA_TRANSPORT transport; 203#if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE 204 UINT8 num_uuid; 205 tBT_UUID *p_uuid; 206#endif 207 tSDP_UUID uuid; 208} tBTA_DM_API_DISCOVER; 209 210/* data type for BTA_DM_API_DI_DISC_EVT */ 211typedef struct 212{ 213 BT_HDR hdr; 214 BD_ADDR bd_addr; 215 tBTA_DISCOVERY_DB *p_sdp_db; 216 UINT32 len; 217 tBTA_DM_SEARCH_CBACK * p_cback; 218}tBTA_DM_API_DI_DISC; 219 220/* data type for BTA_DM_API_BOND_EVT */ 221typedef struct 222{ 223 BT_HDR hdr; 224 BD_ADDR bd_addr; 225 tBTA_TRANSPORT transport; 226} tBTA_DM_API_BOND; 227 228/* data type for BTA_DM_API_BOND_CANCEL_EVT */ 229typedef struct 230{ 231 BT_HDR hdr; 232 BD_ADDR bd_addr; 233 tBTA_TRANSPORT transport; 234} tBTA_DM_API_BOND_CANCEL; 235 236/* data type for BTA_DM_API_PIN_REPLY_EVT */ 237typedef struct 238{ 239 BT_HDR hdr; 240 BD_ADDR bd_addr; 241 BOOLEAN accept; 242 UINT8 pin_len; 243 UINT8 p_pin[PIN_CODE_LEN]; 244} tBTA_DM_API_PIN_REPLY; 245 246/* data type for BTA_DM_API_LOC_OOB_EVT */ 247typedef struct 248{ 249 BT_HDR hdr; 250} tBTA_DM_API_LOC_OOB; 251 252/* data type for BTA_DM_API_CONFIRM_EVT */ 253typedef struct 254{ 255 BT_HDR hdr; 256 BD_ADDR bd_addr; 257 BOOLEAN accept; 258} tBTA_DM_API_CONFIRM; 259 260/* data type for BTA_DM_CI_IO_REQ_EVT */ 261typedef struct 262{ 263 BT_HDR hdr; 264 BD_ADDR bd_addr; 265 tBTA_IO_CAP io_cap; 266 tBTA_OOB_DATA oob_data; 267 tBTA_AUTH_REQ auth_req; 268} tBTA_DM_CI_IO_REQ; 269 270/* data type for BTA_DM_CI_RMT_OOB_EVT */ 271typedef struct 272{ 273 BT_HDR hdr; 274 BD_ADDR bd_addr; 275 BT_OCTET16 c; 276 BT_OCTET16 r; 277 BOOLEAN accept; 278} tBTA_DM_CI_RMT_OOB; 279 280/* data type for BTA_DM_REMT_NAME_EVT */ 281typedef struct 282{ 283 BT_HDR hdr; 284 tBTA_DM_SEARCH result; 285} tBTA_DM_REM_NAME; 286 287/* data type for tBTA_DM_DISC_RESULT */ 288typedef struct 289{ 290 BT_HDR hdr; 291 tBTA_DM_SEARCH result; 292} tBTA_DM_DISC_RESULT; 293 294 295/* data type for BTA_DM_INQUIRY_CMPL_EVT */ 296typedef struct 297{ 298 BT_HDR hdr; 299 UINT8 num; 300} tBTA_DM_INQUIRY_CMPL; 301 302/* data type for BTA_DM_SDP_RESULT_EVT */ 303typedef struct 304{ 305 BT_HDR hdr; 306 UINT16 sdp_result; 307} tBTA_DM_SDP_RESULT; 308 309/* data type for BTA_DM_ACL_CHANGE_EVT */ 310typedef struct 311{ 312 BT_HDR hdr; 313 tBTM_BL_EVENT event; 314 UINT8 busy_level; 315 UINT8 busy_level_flags; 316 BOOLEAN is_new; 317 UINT8 new_role; 318 BD_ADDR bd_addr; 319 UINT8 hci_status; 320#if BLE_INCLUDED == TRUE 321 UINT16 handle; 322 tBT_TRANSPORT transport; 323#endif 324} tBTA_DM_ACL_CHANGE; 325 326/* data type for BTA_DM_PM_BTM_STATUS_EVT */ 327typedef struct 328{ 329 330 BT_HDR hdr; 331 BD_ADDR bd_addr; 332 tBTM_PM_STATUS status; 333 UINT16 value; 334 UINT8 hci_status; 335 336} tBTA_DM_PM_BTM_STATUS; 337 338/* data type for BTA_DM_PM_TIMER_EVT */ 339typedef struct 340{ 341 BT_HDR hdr; 342 BD_ADDR bd_addr; 343 tBTA_DM_PM_ACTION pm_request; 344} tBTA_DM_PM_TIMER; 345 346 347/* data type for BTA_DM_API_ADD_DEVICE_EVT */ 348typedef struct 349{ 350 BT_HDR hdr; 351 BD_ADDR bd_addr; 352 DEV_CLASS dc; 353 LINK_KEY link_key; 354 tBTA_SERVICE_MASK tm; 355 BOOLEAN is_trusted; 356 UINT8 key_type; 357 tBTA_IO_CAP io_cap; 358 BOOLEAN link_key_known; 359 BOOLEAN dc_known; 360 BD_NAME bd_name; 361 UINT8 features[BTA_FEATURE_BYTES_PER_PAGE * (BTA_EXT_FEATURES_PAGE_MAX + 1)]; 362 UINT8 pin_length; 363} tBTA_DM_API_ADD_DEVICE; 364 365/* data type for BTA_DM_API_REMOVE_ACL_EVT */ 366typedef struct 367{ 368 BT_HDR hdr; 369 BD_ADDR bd_addr; 370} tBTA_DM_API_REMOVE_DEVICE; 371 372/* data type for BTA_DM_API_EXECUTE_CBACK_EVT */ 373typedef struct 374{ 375 BT_HDR hdr; 376 void * p_param; 377 tBTA_DM_EXEC_CBACK *p_exec_cback; 378} tBTA_DM_API_EXECUTE_CBACK; 379 380/* data type for tBTA_DM_API_SET_ENCRYPTION */ 381typedef struct 382{ 383 BT_HDR hdr; 384 tBTA_TRANSPORT transport; 385 tBTA_DM_ENCRYPT_CBACK *p_callback; 386 tBTA_DM_BLE_SEC_ACT sec_act; 387 BD_ADDR bd_addr; 388} tBTA_DM_API_SET_ENCRYPTION; 389 390#if BLE_INCLUDED == TRUE 391typedef struct 392{ 393 BT_HDR hdr; 394 BD_ADDR bd_addr; 395 tBTA_LE_KEY_VALUE blekey; 396 tBTA_LE_KEY_TYPE key_type; 397 398}tBTA_DM_API_ADD_BLEKEY; 399 400typedef struct 401{ 402 BT_HDR hdr; 403 BD_ADDR bd_addr; 404 tBT_DEVICE_TYPE dev_type ; 405 tBLE_ADDR_TYPE addr_type; 406 407}tBTA_DM_API_ADD_BLE_DEVICE; 408 409typedef struct 410{ 411 BT_HDR hdr; 412 BD_ADDR bd_addr; 413 BOOLEAN accept; 414 UINT32 passkey; 415}tBTA_DM_API_PASSKEY_REPLY; 416 417typedef struct 418{ 419 BT_HDR hdr; 420 BD_ADDR bd_addr; 421 tBTA_DM_BLE_SEC_GRANT res; 422}tBTA_DM_API_BLE_SEC_GRANT; 423 424 425typedef struct 426{ 427 BT_HDR hdr; 428 tBTA_DM_BLE_CONN_TYPE bg_conn_type; 429 tBTA_DM_BLE_SEL_CBACK *p_select_cback; 430}tBTA_DM_API_BLE_SET_BG_CONN_TYPE; 431 432/* set prefered BLE connection parameters for a device */ 433typedef struct 434{ 435 BT_HDR hdr; 436 BD_ADDR peer_bda; 437 UINT16 conn_int_min; 438 UINT16 conn_int_max; 439 UINT16 supervision_tout; 440 UINT16 slave_latency; 441 442}tBTA_DM_API_BLE_CONN_PARAMS; 443 444typedef struct 445{ 446 BT_HDR hdr; 447 BD_ADDR peer_bda; 448 BOOLEAN privacy_enable; 449 450}tBTA_DM_API_ENABLE_PRIVACY; 451 452typedef struct 453{ 454 BT_HDR hdr; 455 BOOLEAN privacy_enable; 456}tBTA_DM_API_LOCAL_PRIVACY; 457 458/* set scan parameter for BLE connections */ 459typedef struct 460{ 461 BT_HDR hdr; 462 tBTA_GATTC_IF client_if; 463 UINT32 scan_int; 464 UINT32 scan_window; 465 tBLE_SCAN_MODE scan_mode; 466 tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback; 467}tBTA_DM_API_BLE_SCAN_PARAMS; 468 469/* set scan parameter for BLE connections */ 470typedef struct 471{ 472 BT_HDR hdr; 473 UINT16 scan_int; 474 UINT16 scan_window; 475} tBTA_DM_API_BLE_CONN_SCAN_PARAMS; 476 477/* Data type for start/stop observe */ 478typedef struct 479{ 480 BT_HDR hdr; 481 BOOLEAN start; 482 UINT16 duration; 483 tBTA_DM_SEARCH_CBACK * p_cback; 484}tBTA_DM_API_BLE_OBSERVE; 485 486typedef struct 487{ 488 BT_HDR hdr; 489 BD_ADDR remote_bda; 490 UINT16 tx_data_length; 491}tBTA_DM_API_BLE_SET_DATA_LENGTH; 492 493/* set adv parameter for BLE advertising */ 494typedef struct 495{ 496 BT_HDR hdr; 497 UINT16 adv_int_min; 498 UINT16 adv_int_max; 499 tBLE_BD_ADDR *p_dir_bda; 500}tBTA_DM_API_BLE_ADV_PARAMS; 501 502typedef struct 503{ 504 BT_HDR hdr; 505 BOOLEAN enable; 506 507}tBTA_DM_API_BLE_FEATURE; 508 509/* multi adv data structure */ 510typedef struct 511{ 512 BT_HDR hdr; 513 tBTA_BLE_MULTI_ADV_CBACK *p_cback; 514 void *p_ref; 515 tBTA_BLE_ADV_PARAMS *p_params; 516}tBTA_DM_API_BLE_MULTI_ADV_ENB; 517 518typedef struct 519{ 520 BT_HDR hdr; 521 UINT8 inst_id; 522 tBTA_BLE_ADV_PARAMS *p_params; 523}tBTA_DM_API_BLE_MULTI_ADV_PARAM; 524 525typedef struct 526{ 527 BT_HDR hdr; 528 UINT8 inst_id; 529 BOOLEAN is_scan_rsp; 530 tBTA_BLE_AD_MASK data_mask; 531 tBTA_BLE_ADV_DATA *p_data; 532}tBTA_DM_API_BLE_MULTI_ADV_DATA; 533 534typedef struct 535{ 536 BT_HDR hdr; 537 UINT8 inst_id; 538}tBTA_DM_API_BLE_MULTI_ADV_DISABLE; 539 540typedef struct 541{ 542 BT_HDR hdr; 543 UINT32 data_mask; 544 tBTA_BLE_ADV_DATA *p_adv_cfg; 545 tBTA_SET_ADV_DATA_CMPL_CBACK *p_adv_data_cback; 546}tBTA_DM_API_SET_ADV_CONFIG; 547 548typedef struct 549{ 550 BT_HDR hdr; 551 UINT8 batch_scan_full_max; 552 UINT8 batch_scan_trunc_max; 553 UINT8 batch_scan_notify_threshold; 554 tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback; 555 tBTA_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback; 556 tBTA_BLE_SCAN_REP_CBACK *p_read_rep_cback; 557 tBTA_DM_BLE_REF_VALUE ref_value; 558} tBTA_DM_API_SET_STORAGE_CONFIG; 559 560typedef struct 561{ 562 BT_HDR hdr; 563 tBTA_BLE_BATCH_SCAN_MODE scan_mode; 564 UINT32 scan_int; 565 UINT32 scan_window; 566 tBTA_BLE_DISCARD_RULE discard_rule; 567 tBLE_ADDR_TYPE addr_type; 568 tBTA_DM_BLE_REF_VALUE ref_value; 569} tBTA_DM_API_ENABLE_SCAN; 570 571typedef struct 572{ 573 BT_HDR hdr; 574 tBTA_DM_BLE_REF_VALUE ref_value; 575} tBTA_DM_API_DISABLE_SCAN; 576 577typedef struct 578{ 579 BT_HDR hdr; 580 tBTA_BLE_BATCH_SCAN_MODE scan_type; 581 tBTA_DM_BLE_REF_VALUE ref_value; 582} tBTA_DM_API_READ_SCAN_REPORTS; 583 584typedef struct 585{ 586 BT_HDR hdr; 587 tBTA_DM_BLE_REF_VALUE ref_value; 588 tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback; 589} tBTA_DM_API_TRACK_ADVERTISER; 590 591typedef struct 592{ 593 BT_HDR hdr; 594 tBTA_BLE_ENERGY_INFO_CBACK *p_energy_info_cback; 595} tBTA_DM_API_ENERGY_INFO; 596 597#endif /* BLE_INCLUDED */ 598 599/* data type for BTA_DM_API_REMOVE_ACL_EVT */ 600typedef struct 601{ 602 BT_HDR hdr; 603 BD_ADDR bd_addr; 604 BOOLEAN remove_dev; 605 tBTA_TRANSPORT transport; 606 607}tBTA_DM_API_REMOVE_ACL; 608 609/* data type for BTA_DM_API_REMOVE_ALL_ACL_EVT */ 610typedef struct 611{ 612 BT_HDR hdr; 613 tBTA_DM_LINK_TYPE link_type; 614 615} tBTA_DM_API_REMOVE_ALL_ACL; 616typedef struct 617{ 618 BT_HDR hdr; 619 BD_ADDR bd_addr; 620 UINT16 min_int; 621 UINT16 max_int; 622 UINT16 latency; 623 UINT16 timeout; 624}tBTA_DM_API_UPDATE_CONN_PARAM; 625 626#if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE 627typedef struct 628{ 629 BT_HDR hdr; 630 tBTA_DM_BLE_SCAN_COND_OP action; 631 tBTA_DM_BLE_PF_COND_TYPE cond_type; 632 tBTA_DM_BLE_PF_FILT_INDEX filt_index; 633 tBTA_DM_BLE_PF_COND_PARAM *p_cond_param; 634 tBTA_DM_BLE_PF_CFG_CBACK *p_filt_cfg_cback; 635 tBTA_DM_BLE_REF_VALUE ref_value; 636}tBTA_DM_API_CFG_FILTER_COND; 637 638typedef struct 639{ 640 BT_HDR hdr; 641 UINT8 action; 642 tBTA_DM_BLE_PF_STATUS_CBACK *p_filt_status_cback; 643 tBTA_DM_BLE_REF_VALUE ref_value; 644}tBTA_DM_API_ENABLE_SCAN_FILTER; 645 646typedef struct 647{ 648 BT_HDR hdr; 649 UINT8 action; 650 tBTA_DM_BLE_PF_FILT_INDEX filt_index; 651 tBTA_DM_BLE_PF_FILT_PARAMS filt_params; 652 tBLE_BD_ADDR *p_target; 653 tBTA_DM_BLE_PF_PARAM_CBACK *p_filt_param_cback; 654 tBTA_DM_BLE_REF_VALUE ref_value; 655}tBTA_DM_API_SCAN_FILTER_PARAM_SETUP; 656#endif 657 658/* union of all data types */ 659typedef union 660{ 661 /* GKI event buffer header */ 662 BT_HDR hdr; 663 tBTA_DM_API_ENABLE enable; 664 665 tBTA_DM_API_SET_NAME set_name; 666 667 tBTA_DM_API_SET_VISIBILITY set_visibility; 668 669 tBTA_DM_API_ADD_DEVICE add_dev; 670 671 tBTA_DM_API_REMOVE_DEVICE remove_dev; 672 673 tBTA_DM_API_SEARCH search; 674 675 tBTA_DM_API_DISCOVER discover; 676 677 tBTA_DM_API_BOND bond; 678 679 tBTA_DM_API_BOND_CANCEL bond_cancel; 680 681 tBTA_DM_API_PIN_REPLY pin_reply; 682 683 tBTA_DM_API_LOC_OOB loc_oob; 684 tBTA_DM_API_CONFIRM confirm; 685 tBTA_DM_CI_IO_REQ ci_io_req; 686 tBTA_DM_CI_RMT_OOB ci_rmt_oob; 687 688 tBTA_DM_REM_NAME rem_name; 689 690 tBTA_DM_DISC_RESULT disc_result; 691 692 tBTA_DM_INQUIRY_CMPL inq_cmpl; 693 694 tBTA_DM_SDP_RESULT sdp_event; 695 696 tBTA_DM_ACL_CHANGE acl_change; 697 698 tBTA_DM_PM_BTM_STATUS pm_status; 699 700 tBTA_DM_PM_TIMER pm_timer; 701 702 tBTA_DM_API_DI_DISC di_disc; 703 704 tBTA_DM_API_EXECUTE_CBACK exec_cback; 705 706 tBTA_DM_API_SET_ENCRYPTION set_encryption; 707 708#if BLE_INCLUDED == TRUE 709 tBTA_DM_API_ADD_BLEKEY add_ble_key; 710 tBTA_DM_API_ADD_BLE_DEVICE add_ble_device; 711 tBTA_DM_API_PASSKEY_REPLY ble_passkey_reply; 712 tBTA_DM_API_BLE_SEC_GRANT ble_sec_grant; 713 tBTA_DM_API_BLE_SET_BG_CONN_TYPE ble_set_bd_conn_type; 714 tBTA_DM_API_BLE_CONN_PARAMS ble_set_conn_params; 715 tBTA_DM_API_BLE_CONN_SCAN_PARAMS ble_set_conn_scan_params; 716 tBTA_DM_API_BLE_SCAN_PARAMS ble_set_scan_params; 717 tBTA_DM_API_BLE_OBSERVE ble_observe; 718 tBTA_DM_API_ENABLE_PRIVACY ble_remote_privacy; 719 tBTA_DM_API_LOCAL_PRIVACY ble_local_privacy; 720 tBTA_DM_API_BLE_ADV_PARAMS ble_set_adv_params; 721 tBTA_DM_API_SET_ADV_CONFIG ble_set_adv_data; 722#if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE 723 tBTA_DM_API_SCAN_FILTER_PARAM_SETUP ble_scan_filt_param_setup; 724 tBTA_DM_API_CFG_FILTER_COND ble_cfg_filter_cond; 725 tBTA_DM_API_ENABLE_SCAN_FILTER ble_enable_scan_filt; 726#endif 727 tBTA_DM_API_UPDATE_CONN_PARAM ble_update_conn_params; 728 tBTA_DM_API_BLE_SET_DATA_LENGTH ble_set_data_length; 729 730 tBTA_DM_API_BLE_MULTI_ADV_ENB ble_multi_adv_enb; 731 tBTA_DM_API_BLE_MULTI_ADV_PARAM ble_multi_adv_param; 732 tBTA_DM_API_BLE_MULTI_ADV_DATA ble_multi_adv_data; 733 tBTA_DM_API_BLE_MULTI_ADV_DISABLE ble_multi_adv_disable; 734 735 tBTA_DM_API_SET_STORAGE_CONFIG ble_set_storage; 736 tBTA_DM_API_ENABLE_SCAN ble_enable_scan; 737 tBTA_DM_API_READ_SCAN_REPORTS ble_read_reports; 738 tBTA_DM_API_DISABLE_SCAN ble_disable_scan; 739 tBTA_DM_API_TRACK_ADVERTISER ble_track_advert; 740 tBTA_DM_API_ENERGY_INFO ble_energy_info; 741#endif 742 743 tBTA_DM_API_REMOVE_ACL remove_acl; 744 tBTA_DM_API_REMOVE_ALL_ACL remove_all_acl; 745 746} tBTA_DM_MSG; 747 748 749#define BTA_DM_NUM_PEER_DEVICE 7 750 751#define BTA_DM_NOT_CONNECTED 0 752#define BTA_DM_CONNECTED 1 753#define BTA_DM_UNPAIRING 2 754typedef UINT8 tBTA_DM_CONN_STATE; 755 756 757#define BTA_DM_DI_NONE 0x00 /* nothing special */ 758#define BTA_DM_DI_USE_SSR 0x10 /* set this bit if ssr is supported for this link */ 759#define BTA_DM_DI_AV_ACTIVE 0x20 /* set this bit if AV is active for this link */ 760#define BTA_DM_DI_SET_SNIFF 0x01 /* set this bit if call BTM_SetPowerMode(sniff) */ 761#define BTA_DM_DI_INT_SNIFF 0x02 /* set this bit if call BTM_SetPowerMode(sniff) & enter sniff mode */ 762#define BTA_DM_DI_ACP_SNIFF 0x04 /* set this bit if peer init sniff */ 763typedef UINT8 tBTA_DM_DEV_INFO; 764 765/* set power mode request type */ 766#define BTA_DM_PM_RESTART 1 767#define BTA_DM_PM_NEW_REQ 2 768#define BTA_DM_PM_EXECUTE 3 769typedef UINT8 tBTA_DM_PM_REQ; 770 771typedef struct 772{ 773 BD_ADDR peer_bdaddr; 774 UINT16 link_policy; 775 tBTA_DM_CONN_STATE conn_state; 776 tBTA_PREF_ROLES pref_role; 777 BOOLEAN in_use; 778 tBTA_DM_DEV_INFO info; 779 tBTA_DM_ENCRYPT_CBACK *p_encrypt_cback; 780#if (BTM_SSR_INCLUDED == TRUE) 781 tBTM_PM_STATUS prev_low; /* previous low power mode used */ 782#endif 783 tBTA_DM_PM_ACTION pm_mode_attempted; 784 tBTA_DM_PM_ACTION pm_mode_failed; 785 BOOLEAN remove_dev_pending; 786#if BLE_INCLUDED == TRUE 787 UINT16 conn_handle; 788 tBT_TRANSPORT transport; 789#endif 790} tBTA_DM_PEER_DEVICE; 791 792 793 794/* structure to store list of 795 active connections */ 796typedef struct 797{ 798 tBTA_DM_PEER_DEVICE peer_device[BTA_DM_NUM_PEER_DEVICE]; 799 UINT8 count; 800#if BLE_INCLUDED == TRUE 801 UINT8 le_count; 802#endif 803} tBTA_DM_ACTIVE_LINK; 804 805 806typedef struct 807{ 808 BD_ADDR peer_bdaddr; 809 tBTA_SYS_ID id; 810 UINT8 app_id; 811 tBTA_SYS_CONN_STATUS state; 812 BOOLEAN new_request; 813 814} tBTA_DM_SRVCS; 815 816#ifndef BTA_DM_NUM_CONN_SRVS 817#define BTA_DM_NUM_CONN_SRVS 10 818#endif 819 820typedef struct 821{ 822 823 UINT8 count; 824 tBTA_DM_SRVCS conn_srvc[BTA_DM_NUM_CONN_SRVS]; 825 826} tBTA_DM_CONNECTED_SRVCS; 827 828typedef struct 829{ 830#define BTA_DM_PM_SNIFF_TIMER_IDX 0 831#define BTA_DM_PM_PARK_TIMER_IDX 1 832#define BTA_DM_PM_SUSPEND_TIMER_IDX 2 833#define BTA_DM_PM_MODE_TIMER_MAX 3 834 /* 835 * Keep three different timers for PARK, SNIFF and SUSPEND if TBFC is 836 * supported. 837 */ 838 TIMER_LIST_ENT timer[BTA_DM_PM_MODE_TIMER_MAX]; 839 840 UINT8 srvc_id[BTA_DM_PM_MODE_TIMER_MAX]; 841 UINT8 pm_action[BTA_DM_PM_MODE_TIMER_MAX]; 842 UINT8 active; /* number of active timer */ 843 844 BD_ADDR peer_bdaddr; 845 BOOLEAN in_use; 846} tBTA_PM_TIMER; 847 848extern tBTA_DM_CONNECTED_SRVCS bta_dm_conn_srvcs; 849 850#define BTA_DM_NUM_PM_TIMER 7 851 852/* DM control block */ 853typedef struct 854{ 855 BOOLEAN is_bta_dm_active; 856 tBTA_DM_ACTIVE_LINK device_list; 857 tBTA_DM_SEC_CBACK *p_sec_cback; 858#if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE)) 859 tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback; 860 tBTA_DM_BLE_PF_CFG_CBACK *p_scan_filt_cfg_cback; 861 tBTA_DM_BLE_PF_STATUS_CBACK *p_scan_filt_status_cback; 862 tBTA_DM_BLE_PF_PARAM_CBACK *p_scan_filt_param_cback; 863 tBTA_BLE_MULTI_ADV_CBACK *p_multi_adv_cback; 864 tBTA_BLE_ENERGY_INFO_CBACK *p_energy_info_cback; 865#endif 866 UINT16 state; 867 BOOLEAN disabling; 868 TIMER_LIST_ENT disable_timer; 869 UINT32 wbt_sdp_handle; /* WIDCOMM Extensions SDP record handle */ 870 UINT8 wbt_scn; /* WIDCOMM Extensions SCN */ 871 UINT8 num_master_only; 872 UINT8 pm_id; 873 tBTA_PM_TIMER pm_timer[BTA_DM_NUM_PM_TIMER]; 874 UINT32 role_policy_mask; /* the bits set indicates the modules that wants to remove role switch from the default link policy */ 875 UINT16 cur_policy; /* current default link policy */ 876 UINT16 rs_event; /* the event waiting for role switch */ 877 UINT8 cur_av_count; /* current AV connecions */ 878 BOOLEAN disable_pair_mode; /* disable pair mode or not */ 879 BOOLEAN conn_paired_only; /* allow connectable to paired device only or not */ 880 tBTA_DM_API_SEARCH search_msg; 881 UINT16 page_scan_interval; 882 UINT16 page_scan_window; 883 UINT16 inquiry_scan_interval; 884 UINT16 inquiry_scan_window; 885 886 /* Storage for pin code request parameters */ 887 BD_ADDR pin_bd_addr; 888 DEV_CLASS pin_dev_class; 889 tBTA_DM_SEC_EVT pin_evt; 890 UINT32 num_val; /* the numeric value for comparison. If just_works, do not show this number to UI */ 891 BOOLEAN just_works; /* TRUE, if "Just Works" association model */ 892#if ( BTA_EIR_CANNED_UUID_LIST != TRUE ) 893 /* store UUID list for EIR */ 894 TIMER_LIST_ENT app_ready_timer; 895 UINT32 eir_uuid[BTM_EIR_SERVICE_ARRAY_SIZE]; 896#if (BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) 897 tBT_UUID custom_uuid[BTA_EIR_SERVER_NUM_CUSTOM_UUID]; 898#endif 899 900#endif 901 902 903 tBTA_DM_ENCRYPT_CBACK *p_encrypt_cback; 904 TIMER_LIST_ENT switch_delay_timer; 905 906} tBTA_DM_CB; 907 908#ifndef BTA_DM_SDP_DB_SIZE 909#define BTA_DM_SDP_DB_SIZE 250 910#endif 911 912/* DM search control block */ 913typedef struct 914{ 915 916 tBTA_DM_SEARCH_CBACK * p_search_cback; 917 tBTM_INQ_INFO * p_btm_inq_info; 918 tBTA_SERVICE_MASK services; 919 tBTA_SERVICE_MASK services_to_search; 920 tBTA_SERVICE_MASK services_found; 921 tSDP_DISCOVERY_DB * p_sdp_db; 922 UINT16 state; 923 BD_ADDR peer_bdaddr; 924 BOOLEAN name_discover_done; 925 BD_NAME peer_name; 926 TIMER_LIST_ENT search_timer; 927 UINT8 service_index; 928 tBTA_DM_MSG * p_search_queue; /* search or discover commands during search cancel stored here */ 929 BOOLEAN wait_disc; 930 BOOLEAN sdp_results; 931 tSDP_UUID uuid; 932 UINT8 peer_scn; 933 BOOLEAN sdp_search; 934 BOOLEAN cancel_pending; /* inquiry cancel is pending */ 935 tBTA_TRANSPORT transport; 936#if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE)) 937 tBTA_DM_SEARCH_CBACK * p_scan_cback; 938#if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE)) 939 tBTA_GATTC_IF client_if; 940 UINT8 num_uuid; 941 tBT_UUID *p_srvc_uuid; 942 UINT8 uuid_to_search; 943 BOOLEAN gatt_disc_active; 944 UINT16 conn_id; 945 UINT8 * p_ble_rawdata; 946 UINT32 ble_raw_size; 947 UINT32 ble_raw_used; 948 TIMER_LIST_ENT gatt_close_timer; /* GATT channel close delay timer */ 949 BD_ADDR pending_close_bda; /* pending GATT channel remote device address */ 950#endif 951#endif 952 953 954} tBTA_DM_SEARCH_CB; 955 956/* DI control block */ 957typedef struct 958{ 959 tSDP_DISCOVERY_DB * p_di_db; /* pointer to the DI discovery database */ 960 UINT8 di_num; /* total local DI record number */ 961 UINT32 di_handle[BTA_DI_NUM_MAX]; /* local DI record handle, the first one is primary record */ 962}tBTA_DM_DI_CB; 963 964/* DM search state */ 965enum 966{ 967 968 BTA_DM_SEARCH_IDLE, 969 BTA_DM_SEARCH_ACTIVE, 970 BTA_DM_SEARCH_CANCELLING, 971 BTA_DM_DISCOVER_ACTIVE 972 973}; 974 975 976 977typedef struct 978{ 979 DEV_CLASS dev_class; /* local device class */ 980 UINT16 policy_settings; /* link policy setting hold, sniff, park, MS switch */ 981 UINT16 page_timeout; /* timeout for page in slots */ 982 UINT16 link_timeout; /* link supervision timeout in slots */ 983 BOOLEAN avoid_scatter; /* TRUE to avoid scatternet when av is streaming (be the master) */ 984 985} tBTA_DM_CFG; 986 987extern const UINT32 bta_service_id_to_btm_srv_id_lkup_tbl[]; 988 989 990typedef struct 991{ 992 UINT8 id; 993 UINT8 app_id; 994 UINT8 cfg; 995 996} tBTA_DM_RM ; 997 998extern tBTA_DM_CFG *p_bta_dm_cfg; 999extern tBTA_DM_RM *p_bta_dm_rm_cfg; 1000 1001typedef struct 1002{ 1003 1004 UINT8 id; 1005 UINT8 app_id; 1006 UINT8 spec_idx; /* index of spec table to use */ 1007 1008} tBTA_DM_PM_CFG; 1009 1010 1011typedef struct 1012{ 1013 1014 tBTA_DM_PM_ACTION power_mode; 1015 UINT16 timeout; 1016 1017} tBTA_DM_PM_ACTN; 1018 1019typedef struct 1020{ 1021 1022 UINT8 allow_mask; /* mask of sniff/hold/park modes to allow */ 1023#if (BTM_SSR_INCLUDED == TRUE) 1024 UINT8 ssr; /* set SSR on conn open/unpark */ 1025#endif 1026 tBTA_DM_PM_ACTN actn_tbl [BTA_DM_PM_NUM_EVTS][2]; 1027 1028} tBTA_DM_PM_SPEC; 1029 1030typedef struct 1031{ 1032 UINT16 max_lat; 1033 UINT16 min_rmt_to; 1034 UINT16 min_loc_to; 1035} tBTA_DM_SSR_SPEC; 1036 1037typedef struct 1038{ 1039 UINT16 manufacturer; 1040 UINT16 lmp_sub_version; 1041 UINT8 lmp_version; 1042}tBTA_DM_LMP_VER_INFO; 1043 1044extern tBTA_DM_PM_CFG *p_bta_dm_pm_cfg; 1045extern tBTA_DM_PM_SPEC *p_bta_dm_pm_spec; 1046extern tBTM_PM_PWR_MD *p_bta_dm_pm_md; 1047#if (BTM_SSR_INCLUDED == TRUE) 1048extern tBTA_DM_SSR_SPEC *p_bta_dm_ssr_spec; 1049#endif 1050 1051/* update dynamic BRCM Aware EIR data */ 1052extern const tBTA_DM_EIR_CONF bta_dm_eir_cfg; 1053extern tBTA_DM_EIR_CONF *p_bta_dm_eir_cfg; 1054 1055/* DM control block */ 1056#if BTA_DYNAMIC_MEMORY == FALSE 1057extern tBTA_DM_CB bta_dm_cb; 1058#else 1059extern tBTA_DM_CB *bta_dm_cb_ptr; 1060#define bta_dm_cb (*bta_dm_cb_ptr) 1061#endif 1062 1063/* DM search control block */ 1064#if BTA_DYNAMIC_MEMORY == FALSE 1065extern tBTA_DM_SEARCH_CB bta_dm_search_cb; 1066#else 1067extern tBTA_DM_SEARCH_CB *bta_dm_search_cb_ptr; 1068#define bta_dm_search_cb (*bta_dm_search_cb_ptr) 1069#endif 1070 1071/* DI control block */ 1072#if BTA_DYNAMIC_MEMORY == FALSE 1073extern tBTA_DM_DI_CB bta_dm_di_cb; 1074#else 1075extern tBTA_DM_DI_CB *bta_dm_di_cb_ptr; 1076#define bta_dm_di_cb (*bta_dm_di_cb_ptr) 1077#endif 1078 1079extern BOOLEAN bta_dm_sm_execute(BT_HDR *p_msg); 1080extern void bta_dm_sm_disable( void ); 1081extern BOOLEAN bta_dm_search_sm_execute(BT_HDR *p_msg); 1082extern void bta_dm_search_sm_disable( void ); 1083 1084 1085extern void bta_dm_enable (tBTA_DM_MSG *p_data); 1086extern void bta_dm_disable (tBTA_DM_MSG *p_data); 1087extern void bta_dm_set_dev_name (tBTA_DM_MSG *p_data); 1088extern void bta_dm_set_visibility (tBTA_DM_MSG *p_data); 1089 1090extern void bta_dm_set_scan_config(tBTA_DM_MSG *p_data); 1091extern void bta_dm_vendor_spec_command(tBTA_DM_MSG *p_data); 1092extern void bta_dm_bond (tBTA_DM_MSG *p_data); 1093extern void bta_dm_bond_cancel (tBTA_DM_MSG *p_data); 1094extern void bta_dm_pin_reply (tBTA_DM_MSG *p_data); 1095extern void bta_dm_acl_change(tBTA_DM_MSG *p_data); 1096extern void bta_dm_add_device (tBTA_DM_MSG *p_data); 1097extern void bta_dm_remove_device (tBTA_DM_MSG *p_data); 1098extern void bta_dm_close_acl(tBTA_DM_MSG *p_data); 1099 1100 1101extern void bta_dm_pm_btm_status(tBTA_DM_MSG *p_data); 1102extern void bta_dm_pm_timer(tBTA_DM_MSG *p_data); 1103extern void bta_dm_add_ampkey (tBTA_DM_MSG *p_data); 1104 1105#if BLE_INCLUDED == TRUE 1106extern void bta_dm_add_blekey (tBTA_DM_MSG *p_data); 1107extern void bta_dm_add_ble_device (tBTA_DM_MSG *p_data); 1108extern void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data); 1109extern void bta_dm_ble_confirm_reply (tBTA_DM_MSG *p_data); 1110extern void bta_dm_security_grant (tBTA_DM_MSG *p_data); 1111extern void bta_dm_ble_set_bg_conn_type (tBTA_DM_MSG *p_data); 1112extern void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data); 1113extern void bta_dm_ble_set_scan_params(tBTA_DM_MSG *p_data); 1114extern void bta_dm_ble_set_conn_scan_params (tBTA_DM_MSG *p_data); 1115extern void bta_dm_close_gatt_conn(tBTA_DM_MSG *p_data); 1116extern void bta_dm_ble_observe (tBTA_DM_MSG *p_data); 1117extern void bta_dm_ble_update_conn_params (tBTA_DM_MSG *p_data); 1118extern void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data); 1119extern void bta_dm_ble_set_adv_params (tBTA_DM_MSG *p_data); 1120extern void bta_dm_ble_set_adv_config (tBTA_DM_MSG *p_data); 1121extern void bta_dm_ble_set_scan_rsp (tBTA_DM_MSG *p_data); 1122extern void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data); 1123extern void bta_dm_ble_set_data_length(tBTA_DM_MSG *p_data); 1124 1125#if BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE 1126extern void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data); 1127extern void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data); 1128extern void bta_dm_enable_scan_filter(tBTA_DM_MSG *p_data); 1129#endif 1130extern void btm_dm_ble_multi_adv_disable(tBTA_DM_MSG *p_data); 1131extern void bta_dm_ble_multi_adv_data(tBTA_DM_MSG *p_data); 1132extern void bta_dm_ble_multi_adv_upd_param(tBTA_DM_MSG *p_data); 1133extern void bta_dm_ble_multi_adv_enb(tBTA_DM_MSG *p_data); 1134 1135extern void bta_dm_ble_setup_storage(tBTA_DM_MSG *p_data); 1136extern void bta_dm_ble_enable_batch_scan(tBTA_DM_MSG * p_data); 1137extern void bta_dm_ble_disable_batch_scan(tBTA_DM_MSG * p_data); 1138extern void bta_dm_ble_read_scan_reports(tBTA_DM_MSG * p_data); 1139extern void bta_dm_ble_track_advertiser(tBTA_DM_MSG * p_data); 1140extern void bta_dm_ble_get_energy_info(tBTA_DM_MSG *p_data); 1141 1142#endif 1143extern void bta_dm_set_encryption(tBTA_DM_MSG *p_data); 1144extern void bta_dm_confirm(tBTA_DM_MSG *p_data); 1145#if (BTM_OOB_INCLUDED == TRUE) 1146extern void bta_dm_loc_oob(tBTA_DM_MSG *p_data); 1147extern void bta_dm_ci_io_req_act(tBTA_DM_MSG *p_data); 1148extern void bta_dm_ci_rmt_oob_act(tBTA_DM_MSG *p_data); 1149#endif /* BTM_OOB_INCLUDED */ 1150 1151extern void bta_dm_init_pm(void); 1152extern void bta_dm_disable_pm(void); 1153 1154extern UINT8 bta_dm_get_av_count(void); 1155extern void bta_dm_search_start (tBTA_DM_MSG *p_data); 1156extern void bta_dm_search_cancel (tBTA_DM_MSG *p_data); 1157extern void bta_dm_discover (tBTA_DM_MSG *p_data); 1158extern void bta_dm_di_disc (tBTA_DM_MSG *p_data); 1159extern void bta_dm_inq_cmpl (tBTA_DM_MSG *p_data); 1160extern void bta_dm_rmt_name (tBTA_DM_MSG *p_data); 1161extern void bta_dm_sdp_result (tBTA_DM_MSG *p_data); 1162extern void bta_dm_search_cmpl (tBTA_DM_MSG *p_data); 1163extern void bta_dm_free_sdp_db (tBTA_DM_MSG *p_data); 1164extern void bta_dm_disc_result (tBTA_DM_MSG *p_data); 1165extern void bta_dm_search_result (tBTA_DM_MSG *p_data); 1166extern void bta_dm_discovery_cmpl (tBTA_DM_MSG *p_data); 1167extern void bta_dm_queue_search (tBTA_DM_MSG *p_data); 1168extern void bta_dm_queue_disc (tBTA_DM_MSG *p_data); 1169extern void bta_dm_search_clear_queue (tBTA_DM_MSG *p_data); 1170extern void bta_dm_search_cancel_cmpl (tBTA_DM_MSG *p_data); 1171extern void bta_dm_search_cancel_notify (tBTA_DM_MSG *p_data); 1172extern void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data); 1173extern void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data); 1174extern tBTA_DM_PEER_DEVICE * bta_dm_find_peer_device(BD_ADDR peer_addr); 1175 1176extern void bta_dm_pm_active(BD_ADDR peer_addr); 1177 1178void bta_dm_eir_update_uuid(UINT16 uuid16, BOOLEAN adding); 1179 1180extern void bta_dm_enable_test_mode(tBTA_DM_MSG *p_data); 1181extern void bta_dm_disable_test_mode(tBTA_DM_MSG *p_data); 1182extern void bta_dm_execute_callback(tBTA_DM_MSG *p_data); 1183 1184 1185extern void bta_dm_remove_all_acl(tBTA_DM_MSG *p_data); 1186#endif /* BTA_DM_INT_H */ 1187