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