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