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