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