NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
bta_dm_int.h
1/******************************************************************************
2 *
3 * NOTICE OF CHANGES
4 * 2024/03/26:
5 * - Add tBTA_DM_COMPRESS_CFG structure for RVL target
6 * - Added prototypes missing from bta_dm_act
7 *
8 * Compile with REVOLUTION defined to include these changes.
9 *
10 ******************************************************************************/
11
12
13
14/******************************************************************************
15 *
16 * Copyright (C) 2003-2012 Broadcom Corporation
17 *
18 * Licensed under the Apache License, Version 2.0 (the "License");
19 * you may not use this file except in compliance with the License.
20 * You may obtain a copy of the License at:
21 *
22 * http://www.apache.org/licenses/LICENSE-2.0
23 *
24 * Unless required by applicable law or agreed to in writing, software
25 * distributed under the License is distributed on an "AS IS" BASIS,
26 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
27 * See the License for the specific language governing permissions and
28 * limitations under the License.
29 *
30 ******************************************************************************/
31
32/******************************************************************************
33 *
34 * This is the private interface file for the BTA device manager.
35 *
36 ******************************************************************************/
37#ifndef BTA_DM_INT_H
38#define BTA_DM_INT_H
39
40#include "bt_target.h"
41
42#if (BLE_INCLUDED == TRUE && (defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE))
43 #include "bta_gatt_api.h"
44#endif
45
46
47
48/*****************************************************************************
49** Constants and data types
50*****************************************************************************/
51
52
53#define BTA_COPY_DEVICE_CLASS(coddst, codsrc) {((UINT8 *)(coddst))[0] = ((UINT8 *)(codsrc))[0]; \
54 ((UINT8 *)(coddst))[1] = ((UINT8 *)(codsrc))[1]; \
55 ((UINT8 *)(coddst))[2] = ((UINT8 *)(codsrc))[2];}
56
57
58#define BTA_DM_MSG_LEN 50
59
60#define BTA_SERVICE_ID_TO_SERVICE_MASK(id) (1 << (id))
61
62/* DM events */
63enum
64{
65 /* device manager local device API events */
66 BTA_DM_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_DM),
67 BTA_DM_API_DISABLE_EVT,
68 BTA_DM_API_SET_NAME_EVT,
69 BTA_DM_API_SET_VISIBILITY_EVT,
70 BTA_DM_API_SET_AFH_CHANNELS_EVT,
71 BTA_API_DM_SIG_STRENGTH_EVT,
72 BTA_DM_API_VENDOR_SPECIFIC_COMMAND_EVT,
73 BTA_DM_API_TX_INQPWR_EVT,
74 BTA_DM_ACL_CHANGE_EVT,
75 BTA_DM_API_ADD_DEVICE_EVT,
76
77 /* security API events */
78 BTA_DM_API_BOND_EVT,
79 BTA_DM_API_BOND_CANCEL_EVT,
80 BTA_DM_API_PIN_REPLY_EVT,
81 BTA_DM_API_LINK_POLICY_EVT,
82 BTA_DM_API_AUTH_REPLY_EVT,
83
84 /* power manger events */
85 BTA_DM_PM_BTM_STATUS_EVT,
86 BTA_DM_PM_TIMER_EVT,
87
88 /* simple pairing events */
89 BTA_DM_API_CONFIRM_EVT,
90
91 BTA_DM_API_SET_ENCRYPTION_EVT,
92
93#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
94 BTA_DM_API_PASKY_CANCEL_EVT,
95#endif
96#if (BTM_OOB_INCLUDED == TRUE)
97 BTA_DM_API_LOC_OOB_EVT,
98 BTA_DM_CI_IO_REQ_EVT,
99 BTA_DM_CI_RMT_OOB_EVT,
100#endif /* BTM_OOB_INCLUDED */
101
102 BTA_DM_API_REMOVE_DEVICE_EVT,
103
104#if BLE_INCLUDED == TRUE
105 BTA_DM_API_ADD_BLEKEY_EVT,
106 BTA_DM_API_ADD_BLEDEVICE_EVT,
107 BTA_DM_API_BLE_PASSKEY_REPLY_EVT,
108 BTA_DM_API_BLE_SEC_GRANT_EVT,
109 BTA_DM_API_BLE_SET_BG_CONN_TYPE,
110 BTA_DM_API_BLE_CONN_PARAM_EVT,
111 BTA_DM_API_BLE_SCAN_PARAM_EVT,
112#endif
113
114#if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
115 BTA_DM_API_UPDATE_EIR_UUID_EVT,
116#endif
117#if (BTM_EIR_SERVER_INCLUDED == TRUE)
118 BTA_DM_API_SET_EIR_CONFIG_EVT,
119#endif
120
121 BTA_DM_API_ENABLE_TEST_MODE_EVT,
122 BTA_DM_API_DISABLE_TEST_MODE_EVT,
123 BTA_DM_API_EXECUTE_CBACK_EVT,
124 BTA_DM_API_SET_AFH_CHANNEL_ASSESMENT_EVT,
125 BTA_DM_MAX_EVT
126};
127
128
129/* DM search events */
130enum
131{
132 /* DM search API events */
133 BTA_DM_API_SEARCH_EVT = BTA_SYS_EVT_START(BTA_ID_DM_SEARCH),
134 BTA_DM_API_SEARCH_CANCEL_EVT,
135 BTA_DM_API_DISCOVER_EVT,
136 BTA_DM_INQUIRY_CMPL_EVT,
137 BTA_DM_REMT_NAME_EVT,
138 BTA_DM_SDP_RESULT_EVT,
139 BTA_DM_SEARCH_CMPL_EVT,
140 BTA_DM_DISCOVERY_RESULT_EVT,
141 BTA_DM_API_DI_DISCOVER_EVT
142
143};
144
145/* data type for BTA_DM_API_ENABLE_EVT */
146typedef struct
147{
148 BT_HDR hdr;
149 tBTA_DM_SEC_CBACK *p_sec_cback;
151
152/* data type for BTA_DM_API_SET_NAME_EVT */
153typedef struct
154{
155 BT_HDR hdr;
156 char name[BD_NAME_LEN];
158
159/* data type for BTA_DM_API_SET_VISIBILITY_EVT */
160typedef struct
161{
162 BT_HDR hdr;
163 tBTA_DM_DISC disc_mode;
164 tBTA_DM_CONN conn_mode;
165 UINT8 pair_mode;
166 UINT8 conn_paired_only;
168
169/* data type for BTA_DM_API_SET_AFH_CHANNELS_EVT */
170typedef struct
171{
172 BT_HDR hdr;
173 UINT8 first;
174 UINT8 last;
176
177/* data type for BTA_DM_API_VENDOR_SPECIFIC_COMMAND_EVT */
178typedef struct
179{
180 BT_HDR hdr;
181 UINT16 opcode;
182 UINT8 param_len;
183 UINT8 *p_param_buf;
184 tBTA_VENDOR_CMPL_CBACK *p_cback;
185
187
188enum
189{
190 BTA_DM_RS_NONE, /* straight API call */
191 BTA_DM_RS_OK, /* the role switch result - successful */
192 BTA_DM_RS_FAIL /* the role switch result - failed */
193};
194typedef UINT8 tBTA_DM_RS_RES;
195
196/* data type for BTA_DM_API_SEARCH_EVT */
197typedef struct
198{
199 BT_HDR hdr;
200 tBTA_DM_INQ inq_params;
201 tBTA_SERVICE_MASK services;
202 tBTA_DM_SEARCH_CBACK * p_cback;
203 tBTA_DM_RS_RES rs_res;
204#if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE
205 UINT8 num_uuid;
206 tBT_UUID *p_uuid;
207#endif
209
210/* data type for BTA_DM_API_DISCOVER_EVT */
211typedef struct
212{
213 BT_HDR hdr;
214 BD_ADDR bd_addr;
215 tBTA_SERVICE_MASK services;
216 tBTA_DM_SEARCH_CBACK * p_cback;
217 BOOLEAN sdp_search;
218#if BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE
219 UINT8 num_uuid;
220 tBT_UUID *p_uuid;
221#endif
222 tSDP_UUID uuid;
224
225/* data type for BTA_DM_API_DI_DISC_EVT */
226typedef struct
227{
228 BT_HDR hdr;
229 BD_ADDR bd_addr;
230 tBTA_DISCOVERY_DB *p_sdp_db;
231 UINT32 len;
232 tBTA_DM_SEARCH_CBACK * p_cback;
234
235/* data type for BTA_DM_API_BOND_EVT */
236typedef struct
237{
238 BT_HDR hdr;
239 BD_ADDR bd_addr;
241
242/* data type for BTA_DM_API_BOND_CANCEL_EVT */
243typedef struct
244{
245 BT_HDR hdr;
246 BD_ADDR bd_addr;
248
249/* data type for BTA_DM_API_PIN_REPLY_EVT */
250typedef struct
251{
252 BT_HDR hdr;
253 BD_ADDR bd_addr;
254 BOOLEAN accept;
255 UINT8 pin_len;
256 UINT8 p_pin[PIN_CODE_LEN];
258
259/* data type for BTA_DM_API_LINK_POLICY_EVT */
260typedef struct
261{
262 BT_HDR hdr;
263 BD_ADDR bd_addr;
264 UINT16 policy_mask;
265 BOOLEAN set;
267
268/* data type for BTA_DM_API_AUTH_REPLY_EVT */
269typedef struct
270{
271 BT_HDR hdr;
272 BD_ADDR bd_addr;
273 tBTA_SERVICE_ID service;
274 tBTA_AUTH_RESP response;
276
277/* data type for BTA_DM_API_LOC_OOB_EVT */
278typedef struct
279{
280 BT_HDR hdr;
282
283/* data type for BTA_DM_API_CONFIRM_EVT */
284typedef struct
285{
286 BT_HDR hdr;
287 BD_ADDR bd_addr;
288 BOOLEAN accept;
290
291/* data type for BTA_DM_API_PASKY_CANCEL_EVT*/
292typedef struct
293{
294 BT_HDR hdr;
295 BD_ADDR bd_addr;
297
298/* data type for BTA_DM_CI_IO_REQ_EVT */
299typedef struct
300{
301 BT_HDR hdr;
302 BD_ADDR bd_addr;
303 tBTA_IO_CAP io_cap;
304 tBTA_OOB_DATA oob_data;
305 tBTA_AUTH_REQ auth_req;
307
308/* data type for BTA_DM_CI_RMT_OOB_EVT */
309typedef struct
310{
311 BT_HDR hdr;
312 BD_ADDR bd_addr;
313 BT_OCTET16 c;
314 BT_OCTET16 r;
315 BOOLEAN accept;
317
318/* data type for BTA_DM_REMT_NAME_EVT */
319typedef struct
320{
321 BT_HDR hdr;
322 tBTA_DM_SEARCH result;
324
325/* data type for tBTA_DM_DISC_RESULT */
326typedef struct
327{
328 BT_HDR hdr;
329 tBTA_DM_SEARCH result;
331
332
333/* data type for BTA_DM_INQUIRY_CMPL_EVT */
334typedef struct
335{
336 BT_HDR hdr;
337 UINT8 num;
339
340/* data type for BTA_DM_SDP_RESULT_EVT */
341typedef struct
342{
343 BT_HDR hdr;
344 UINT16 sdp_result;
346
347/* data type for BTA_API_DM_SIG_STRENGTH_EVT */
348typedef struct
349{
350 BT_HDR hdr;
351 tBTA_SIG_STRENGTH_MASK mask;
352 UINT16 period;
353 BOOLEAN start;
355
356/* data type for tBTA_API_DM_TX_INQPWR */
357typedef struct
358{
359 BT_HDR hdr;
360 INT8 tx_power;
362
363/* data type for BTA_DM_ACL_CHANGE_EVT */
364typedef struct
365{
366 BT_HDR hdr;
367 tBTM_BL_EVENT event;
368 UINT8 busy_level;
369 BOOLEAN is_new;
370 UINT8 new_role;
371 BD_ADDR bd_addr;
372 UINT8 hci_status;
374
375/* data type for BTA_DM_PM_BTM_STATUS_EVT */
376typedef struct
377{
378
379 BT_HDR hdr;
380 BD_ADDR bd_addr;
381 tBTM_PM_STATUS status;
382 UINT16 value;
383 UINT8 hci_status;
384
386
387/* data type for BTA_DM_PM_TIMER_EVT */
388typedef struct
389{
390 BT_HDR hdr;
391 BD_ADDR bd_addr;
392
394
395
396/* data type for BTA_DM_API_ADD_DEVICE_EVT */
397typedef struct
398{
399 BT_HDR hdr;
400 BD_ADDR bd_addr;
401 DEV_CLASS dc;
402 LINK_KEY link_key;
403 tBTA_SERVICE_MASK tm;
404 BOOLEAN is_trusted;
405 UINT8 key_type;
406 tBTA_IO_CAP io_cap;
407 BOOLEAN link_key_known;
408 BOOLEAN dc_known;
409 BD_NAME bd_name;
410 BD_FEATURES features;
412
413/* data type for BTA_DM_API_REMOVE_ACL_EVT */
414typedef struct
415{
416 BT_HDR hdr;
417 BD_ADDR bd_addr;
419
420/* data type for BTA_DM_API_EXECUTE_CBACK_EVT */
421typedef struct
422{
423 BT_HDR hdr;
424 void * p_param;
425 tBTA_DM_EXEC_CBACK *p_exec_cback;
427
428/* data type for tBTA_DM_API_SET_ENCRYPTION */
429typedef struct
430{
431 BT_HDR hdr;
432 tBTA_DM_ENCRYPT_CBACK *p_callback;
433 tBTA_DM_BLE_SEC_ACT sec_act;
434 BD_ADDR bd_addr;
436
437#if BLE_INCLUDED == TRUE
438typedef struct
439{
440 BT_HDR hdr;
441 BD_ADDR bd_addr;
442 tBTA_LE_KEY_VALUE blekey;
443 tBTA_LE_KEY_TYPE key_type;
444
446
447typedef struct
448{
449 BT_HDR hdr;
450 BD_ADDR bd_addr;
451 tBT_DEVICE_TYPE dev_type ;
452 tBLE_ADDR_TYPE addr_type;
453
455
456typedef struct
457{
458 BT_HDR hdr;
459 BD_ADDR bd_addr;
460 BOOLEAN accept;
461 UINT32 passkey;
463
464typedef struct
465{
466 BT_HDR hdr;
467 BD_ADDR bd_addr;
468 tBTA_DM_BLE_SEC_GRANT res;
470
471
472typedef struct
473{
474 BT_HDR hdr;
475 tBTA_DM_BLE_CONN_TYPE bg_conn_type;
476 tBTA_DM_BLE_SEL_CBACK *p_select_cback;
478
479/* set prefered BLE connection parameters for a device */
480typedef struct
481{
482 BT_HDR hdr;
483 BD_ADDR peer_bda;
484 UINT16 conn_int_min;
485 UINT16 conn_int_max;
486 UINT16 supervision_tout;
487 UINT16 slave_latency;
488
490
491/* set scan parameter for BLE connections */
492typedef struct
493{
494 BT_HDR hdr;
495 UINT16 scan_int;
496 UINT16 scan_window;
498
499#endif
500
501typedef struct
502{
503 BT_HDR hdr;
504 BOOLEAN enable_or_disable;
506
507#if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
508/* data type for BTA_DM_API_UPDATE_EIR_UUID_EVT */
509typedef struct
510{
511 BT_HDR hdr;
512 BOOLEAN is_add;
513 tBT_UUID uuid;
514}tBTA_DM_API_UPDATE_EIR_UUID;
515#endif
516
517#if (BTM_EIR_SERVER_INCLUDED == TRUE)
518/* data type for BTA_DM_API_SET_EIR_CONFIG_EVT */
519typedef struct
520{
521 BT_HDR hdr;
522 tBTA_DM_EIR_CONF *p_eir_cfg;
524#endif
525
526/* union of all data types */
527typedef union
528{
529 /* GKI event buffer header */
530 BT_HDR hdr;
531 tBTA_DM_API_ENABLE enable;
532
533 tBTA_DM_API_SET_NAME set_name;
534
535 tBTA_DM_API_SET_VISIBILITY set_visibility;
536
537 tBTA_DM_API_SET_AFH_CHANNELS_EVT set_afhchannels;
538
540
542
543 tBTA_DM_API_REMOVE_DEVICE remove_dev;
544
545 tBTA_DM_API_SEARCH search;
546
547 tBTA_DM_API_DISCOVER discover;
548
549 tBTA_DM_API_BOND bond;
550
551 tBTA_DM_API_BOND_CANCEL bond_cancel;
552
553 tBTA_DM_API_PIN_REPLY pin_reply;
554 tBTA_DM_API_LINK_POLICY link_policy;
555
556 tBTA_DM_API_LOC_OOB loc_oob;
557 tBTA_DM_API_CONFIRM confirm;
558 tBTA_DM_API_PASKY_CANCEL passkey_cancel;
559 tBTA_DM_CI_IO_REQ ci_io_req;
560 tBTA_DM_CI_RMT_OOB ci_rmt_oob;
561
562 tBTA_DM_API_AUTH_REPLY auth_reply;
563
564 tBTA_DM_REM_NAME rem_name;
565
566 tBTA_DM_DISC_RESULT disc_result;
567
568 tBTA_DM_INQUIRY_CMPL inq_cmpl;
569
570 tBTA_DM_SDP_RESULT sdp_event;
571
572 tBTA_API_DM_SIG_STRENGTH sig_strength;
573
574 tBTA_API_DM_TX_INQPWR tx_inq_pwr;
575
576 tBTA_DM_ACL_CHANGE acl_change;
577
578 tBTA_DM_PM_BTM_STATUS pm_status;
579
580 tBTA_DM_PM_TIMER pm_timer;
581
582 tBTA_DM_API_DI_DISC di_disc;
583
584 tBTA_DM_API_EXECUTE_CBACK exec_cback;
585
586 tBTA_DM_API_SET_ENCRYPTION set_encryption;
587
588#if BLE_INCLUDED == TRUE
589 tBTA_DM_API_ADD_BLEKEY add_ble_key;
590 tBTA_DM_API_ADD_BLE_DEVICE add_ble_device;
591 tBTA_DM_API_PASSKEY_REPLY ble_passkey_reply;
592 tBTA_DM_API_BLE_SEC_GRANT ble_sec_grant;
593 tBTA_DM_API_BLE_SET_BG_CONN_TYPE ble_set_bd_conn_type;
594 tBTA_DM_API_BLE_CONN_PARAMS ble_set_conn_params;
595 tBTA_DM_API_BLE_SCAN_PARAMS ble_set_scan_params;
596#endif
597
598 tBTA_DM_API_SET_AFH_CHANNEL_ASSESSMENT set_afh_channel_assessment;
599
600#if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
601 tBTA_DM_API_UPDATE_EIR_UUID update_eir_uuid;
602#endif
603#if (BTM_EIR_SERVER_INCLUDED == TRUE)
604 tBTA_DM_API_SET_EIR_CONFIG set_eir_cfg;
605#endif
606
608
609
610#define BTA_DM_NUM_PEER_DEVICE 7
611
612#define BTA_DM_NOT_CONNECTED 0
613#define BTA_DM_CONNECTED 1
614#define BTA_DM_UNPAIRING 2
615typedef UINT8 tBTA_DM_CONN_STATE;
616
617
618#define BTA_DM_DI_NONE 0x00 /* nothing special */
619#define BTA_DM_DI_USE_SSR 0x10 /* set this bit if ssr is supported for this link */
620#define BTA_DM_DI_AV_ACTIVE 0x20 /* set this bit if AV is active for this link */
621#define BTA_DM_DI_SET_SNIFF 0x01 /* set this bit if call BTM_SetPowerMode(sniff) */
622#define BTA_DM_DI_INT_SNIFF 0x02 /* set this bit if call BTM_SetPowerMode(sniff) & enter sniff mode */
623#define BTA_DM_DI_ACP_SNIFF 0x04 /* set this bit if peer init sniff */
624typedef UINT8 tBTA_DM_DEV_INFO;
625
626typedef struct
627{
628 BD_ADDR peer_bdaddr;
629 UINT16 link_policy;
630 tBTA_DM_CONN_STATE conn_state;
631 tBTA_PREF_ROLES pref_role;
632 BOOLEAN in_use;
633 tBTA_DM_DEV_INFO info;
634#if (BTM_SSR_INCLUDED == TRUE)
635 tBTM_PM_STATUS prev_low; /* previous low power mode used */
636#endif
637 tBTA_DM_PM_ACTTION pm_mode_attempted;
638 tBTA_DM_PM_ACTTION pm_mode_failed;
639
641
642
643
644/* structure to store list of
645 active connections */
646typedef struct
647{
648 tBTA_DM_PEER_DEVICE peer_device[BTA_DM_NUM_PEER_DEVICE];
649 UINT8 count;
650
652
653
654typedef struct
655{
656 BD_ADDR peer_bdaddr;
657 tBTA_SYS_ID id;
658 UINT8 app_id;
659 tBTA_SYS_CONN_STATUS state;
660
661
663
664#define BTA_DM_NUM_CONN_SRVS 5
665
666typedef struct
667{
668
669 UINT8 count;
670 tBTA_DM_SRVCS conn_srvc[BTA_DM_NUM_CONN_SRVS];
671
673
674typedef struct
675{
676 TIMER_LIST_ENT timer;
677 BD_ADDR peer_bdaddr;
678 BOOLEAN in_use;
679
681
682extern tBTA_DM_CONNECTED_SRVCS bta_dm_conn_srvcs;
683
684#define BTA_DM_NUM_PM_TIMER 3
685
686/* DM control block */
687typedef struct
688{
689 BOOLEAN is_bta_dm_active;
690 tBTA_DM_ACTIVE_LINK device_list;
691 tBTA_DM_SEC_CBACK *p_sec_cback;
692 TIMER_LIST_ENT signal_strength_timer;
693 tBTA_SIG_STRENGTH_MASK signal_strength_mask;
694 UINT16 state;
695 UINT16 signal_strength_period;
696 BOOLEAN disabling;
697 TIMER_LIST_ENT disable_timer;
698 UINT32 wbt_sdp_handle; /* WIDCOMM Extensions SDP record handle */
699 UINT8 wbt_scn; /* WIDCOMM Extensions SCN */
700 UINT8 num_master_only;
701 UINT8 pm_id;
702 tBTA_PM_TIMER pm_timer[BTA_DM_NUM_PM_TIMER];
703 UINT32 role_policy_mask; /* the bits set indicates the modules that wants to remove role switch from the default link policy */
704 UINT16 cur_policy; /* current default link policy */
705 UINT16 rs_event; /* the event waiting for role switch */
706 UINT8 cur_av_count; /* current AV connecions */
707 BOOLEAN disable_pair_mode; /* disable pair mode or not */
708 BOOLEAN conn_paired_only; /* allow connectable to paired device only or not */
709 tBTA_DM_API_SEARCH search_msg;
710 UINT16 page_scan_interval;
711 UINT16 page_scan_window;
712 UINT16 inquiry_scan_interval;
713 UINT16 inquiry_scan_window;
714
715 /* Storage for pin code request parameters */
716 BD_ADDR pin_bd_addr;
717 DEV_CLASS pin_dev_class;
718 tBTA_DM_SEC_EVT pin_evt;
719 UINT32 num_val; /* the numeric value for comparison. If just_works, do not show this number to UI */
720 BOOLEAN just_works; /* TRUE, if "Just Works" association model */
721#if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )
722 /* store UUID list for EIR */
723 TIMER_LIST_ENT app_ready_timer;
724 UINT32 eir_uuid[BTM_EIR_SERVICE_ARRAY_SIZE];
725#if (BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
726 tBT_UUID custom_uuid[BTA_EIR_SERVER_NUM_CUSTOM_UUID];
727#endif
728
729#endif
730
731 tBTA_DM_ENCRYPT_CBACK *p_encrypt_cback;
732 tBTA_DM_BLE_SEC_ACT sec_act;
733 TIMER_LIST_ENT switch_delay_timer;
734
735} tBTA_DM_CB;
736
737#ifndef BTA_DM_SDP_DB_SIZE
738#define BTA_DM_SDP_DB_SIZE 250
739#endif
740
741/* DM search control block */
742typedef struct
743{
744
745 tBTA_DM_SEARCH_CBACK * p_search_cback;
746 tBTM_INQ_INFO * p_btm_inq_info;
747 tBTA_SERVICE_MASK services;
748 tBTA_SERVICE_MASK services_to_search;
749 tBTA_SERVICE_MASK services_found;
750 tSDP_DISCOVERY_DB * p_sdp_db;
751 UINT16 state;
752 BD_ADDR peer_bdaddr;
753 BOOLEAN name_discover_done;
754 char peer_name[BD_NAME_LEN];
755 TIMER_LIST_ENT search_timer;
756 UINT8 service_index;
757 tBTA_DM_MSG * p_search_queue; /* search or discover commands during search cancel stored here */
758 BOOLEAN wait_disc;
759 BOOLEAN sdp_results;
760 tSDP_UUID uuid;
761 UINT8 peer_scn;
762 BOOLEAN sdp_search;
763
764#if ((defined BLE_INCLUDED) && (BLE_INCLUDED == TRUE))
765#if ((defined BTA_GATT_INCLUDED) && (BTA_GATT_INCLUDED == TRUE))
766 tBTA_GATTC_IF client_if;
767 UINT8 num_uuid;
768 tBT_UUID *p_srvc_uuid;
769 UINT8 uuid_to_search;
770 BOOLEAN gatt_disc_active;
771 UINT16 conn_id;
772 UINT8 * p_ble_rawdata;
773 UINT32 ble_raw_size;
774 UINT32 ble_raw_used;
775#endif
776#endif
777
778
780
781/* DI control block */
782typedef struct
783{
784 tSDP_DISCOVERY_DB * p_di_db; /* pointer to the DI discovery database */
785 UINT8 di_num; /* total local DI record number */
786 UINT32 di_handle[BTA_DI_NUM_MAX]; /* local DI record handle, the first one is primary record */
788
789/* DM search state */
790enum
791{
792
793 BTA_DM_SEARCH_IDLE,
794 BTA_DM_SEARCH_ACTIVE,
795 BTA_DM_SEARCH_CANCELLING,
796 BTA_DM_DISCOVER_ACTIVE
797
798};
799
800
801
802typedef struct
803{
804 DEV_CLASS dev_class; /* local device class */
805 UINT16 policy_settings; /* link policy setting hold, sniff, park, MS switch */
806 UINT16 page_timeout; /* timeout for page in slots */
807 UINT16 link_timeout; /* link supervision timeout in slots */
808 BOOLEAN avoid_scatter; /* TRUE to avoid scatternet when av is streaming (be the master) */
809
811
812extern const UINT32 bta_service_id_to_btm_srv_id_lkup_tbl[];
813
814extern const tBTA_DM_CFG bta_dm_cfg;
815
816
817
818#define BTA_ALL_APP_ID 0xff
819
820typedef struct
821{
822 UINT8 id;
823 UINT8 app_id;
824 UINT8 cfg;
825
826} tBTA_DM_RM ;
827
828extern tBTA_DM_CFG *p_bta_dm_cfg;
829extern tBTA_DM_RM *p_bta_dm_rm_cfg;
830
831typedef struct
832{
833
834 UINT8 id;
835 UINT8 app_id;
836 UINT8 spec_idx; /* index of spec table to use */
837
839
840
841#ifdef REVOLUTION
842typedef struct
843{
844 UINT8 id;
845 UINT8 app_id;
846 UINT8 mask;
847} tBTA_DM_COMPRESS_CFG;
848
849extern tBTA_DM_COMPRESS_CFG* p_bta_dm_compress_cfg;
850#endif
851
852typedef struct
853{
854
855 tBTA_DM_PM_ACTTION power_mode;
856 UINT16 timeout;
857
859
860typedef struct
861{
862
863 UINT8 allow_mask; /* mask of sniff/hold/park modes to allow */
864#if (BTM_SSR_INCLUDED == TRUE)
865 UINT8 ssr; /* set SSR on conn open/unpark */
866#endif
867 tBTA_DM_PM_ACTN actn_tbl [BTA_DM_PM_NUM_EVTS][2];
868
870
871typedef struct
872{
873 UINT16 max_lat;
874 UINT16 min_rmt_to;
875 UINT16 min_loc_to;
877
878typedef struct
879{
880 UINT16 manufacturer;
881 UINT16 lmp_sub_version;
882 UINT8 lmp_version;
884
885extern tBTA_DM_PM_CFG *p_bta_dm_pm_cfg;
886extern tBTA_DM_PM_SPEC *p_bta_dm_pm_spec;
887extern tBTM_PM_PWR_MD *p_bta_dm_pm_md;
888#if (BTM_SSR_INCLUDED == TRUE)
889extern tBTA_DM_SSR_SPEC *p_bta_dm_ssr_spec;
890#endif
891
892#if ( BTM_EIR_SERVER_INCLUDED == TRUE )
893/* update dynamic BRCM Aware EIR data */
894extern const tBTA_DM_EIR_CONF bta_dm_eir_cfg;
895extern tBTA_DM_EIR_CONF *p_bta_dm_eir_cfg;
896#endif
897
898/* DM control block */
899#if BTA_DYNAMIC_MEMORY == FALSE
900extern tBTA_DM_CB bta_dm_cb;
901#else
902extern tBTA_DM_CB *bta_dm_cb_ptr;
903#define bta_dm_cb (*bta_dm_cb_ptr)
904#endif
905
906/* DM search control block */
907#if BTA_DYNAMIC_MEMORY == FALSE
908extern tBTA_DM_SEARCH_CB bta_dm_search_cb;
909#else
910extern tBTA_DM_SEARCH_CB *bta_dm_search_cb_ptr;
911#define bta_dm_search_cb (*bta_dm_search_cb_ptr)
912#endif
913
914/* DI control block */
915#if BTA_DYNAMIC_MEMORY == FALSE
916extern tBTA_DM_DI_CB bta_dm_di_cb;
917#else
918extern tBTA_DM_DI_CB *bta_dm_di_cb_ptr;
919#define bta_dm_di_cb (*bta_dm_di_cb_ptr)
920#endif
921
922extern BOOLEAN bta_dm_sm_execute(BT_HDR *p_msg);
923extern void bta_dm_sm_disable( void );
924extern BOOLEAN bta_dm_search_sm_execute(BT_HDR *p_msg);
925extern void bta_dm_search_sm_disable( void );
926
927
928extern void bta_dm_enable (tBTA_DM_MSG *p_data);
929extern void bta_dm_disable (tBTA_DM_MSG *p_data);
930extern void bta_dm_set_dev_name (tBTA_DM_MSG *p_data);
931extern void bta_dm_set_visibility (tBTA_DM_MSG *p_data);
932extern void bta_dm_set_afhchannels (tBTA_DM_MSG *p_data);
933extern void bta_dm_vendor_spec_command(tBTA_DM_MSG *p_data);
934extern void bta_dm_bond (tBTA_DM_MSG *p_data);
935extern void bta_dm_bond_cancel (tBTA_DM_MSG *p_data);
936extern void bta_dm_pin_reply (tBTA_DM_MSG *p_data);
937extern void bta_dm_link_policy (tBTA_DM_MSG *p_data);
938extern void bta_dm_auth_reply (tBTA_DM_MSG *p_data);
939extern void bta_dm_signal_strength(tBTA_DM_MSG *p_data);
940extern void bta_dm_tx_inqpower(tBTA_DM_MSG *p_data);
941extern void bta_dm_acl_change(tBTA_DM_MSG *p_data);
942extern void bta_dm_add_device (tBTA_DM_MSG *p_data);
943extern void bta_dm_remove_device (tBTA_DM_MSG *p_data);
944
945
946extern void bta_dm_pm_btm_status(tBTA_DM_MSG *p_data);
947extern void bta_dm_pm_timer(tBTA_DM_MSG *p_data);
948extern void bta_dm_add_ampkey (tBTA_DM_MSG *p_data);
949
950#if BLE_INCLUDED == TRUE
951extern void bta_dm_add_blekey (tBTA_DM_MSG *p_data);
952extern void bta_dm_add_ble_device (tBTA_DM_MSG *p_data);
953extern void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data);
954extern void bta_dm_security_grant (tBTA_DM_MSG *p_data);
955extern void bta_dm_ble_set_bg_conn_type (tBTA_DM_MSG *p_data);
956extern void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data);
957extern void bta_dm_ble_set_scan_params (tBTA_DM_MSG *p_data);
958#endif
959extern void bta_dm_set_encryption(tBTA_DM_MSG *p_data);
960extern void bta_dm_confirm(tBTA_DM_MSG *p_data);
961extern void bta_dm_passkey_cancel(tBTA_DM_MSG *p_data);
962#if (BTM_OOB_INCLUDED == TRUE)
963extern void bta_dm_loc_oob(tBTA_DM_MSG *p_data);
964extern void bta_dm_ci_io_req_act(tBTA_DM_MSG *p_data);
965extern void bta_dm_ci_rmt_oob_act(tBTA_DM_MSG *p_data);
966#endif /* BTM_OOB_INCLUDED */
967
968extern void bta_dm_init_pm(void);
969extern void bta_dm_disable_pm(void);
970
971extern void bta_dm_search_start (tBTA_DM_MSG *p_data);
972extern void bta_dm_search_cancel (tBTA_DM_MSG *p_data);
973extern void bta_dm_discover (tBTA_DM_MSG *p_data);
974extern void bta_dm_di_disc (tBTA_DM_MSG *p_data);
975extern void bta_dm_inq_cmpl (tBTA_DM_MSG *p_data);
976extern void bta_dm_rmt_name (tBTA_DM_MSG *p_data);
977extern void bta_dm_sdp_result (tBTA_DM_MSG *p_data);
978extern void bta_dm_search_cmpl (tBTA_DM_MSG *p_data);
979extern void bta_dm_free_sdp_db (tBTA_DM_MSG *p_data);
980extern void bta_dm_disc_result (tBTA_DM_MSG *p_data);
981extern void bta_dm_search_result (tBTA_DM_MSG *p_data);
982extern void bta_dm_discovery_cmpl (tBTA_DM_MSG *p_data);
983extern void bta_dm_queue_search (tBTA_DM_MSG *p_data);
984extern void bta_dm_queue_disc (tBTA_DM_MSG *p_data);
985extern void bta_dm_search_clear_queue (tBTA_DM_MSG *p_data);
986extern void bta_dm_search_cancel_cmpl (tBTA_DM_MSG *p_data);
987extern void bta_dm_search_cancel_notify (tBTA_DM_MSG *p_data);
988extern void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data);
989extern void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data);
990extern tBTA_DM_PEER_DEVICE * bta_dm_find_peer_device(BD_ADDR peer_addr);
991extern void bta_dm_immediate_disable(void);
992
993extern void bta_dm_pm_active(BD_ADDR peer_addr);
994
995#if ( BTM_EIR_SERVER_INCLUDED == TRUE )
996void bta_dm_eir_update_uuid(UINT16 uuid16, BOOLEAN adding);
997#else
998#define bta_dm_eir_update_uuid(x, y)
999#endif
1000
1001#if ( BTM_EIR_SERVER_INCLUDED == TRUE )&&( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
1002extern void bta_dm_update_eir_uuid (tBTA_DM_MSG *p_data);
1003#endif
1004#if (BTM_EIR_SERVER_INCLUDED == TRUE)
1005extern void bta_dm_set_eir_config (tBTA_DM_MSG *p_data);
1006#endif
1007extern void bta_dm_enable_test_mode(tBTA_DM_MSG *p_data);
1008extern void bta_dm_disable_test_mode(tBTA_DM_MSG *p_data);
1009extern void bta_dm_execute_callback(tBTA_DM_MSG *p_data);
1010
1011extern void bta_dm_set_afh_channel_assesment(tBTA_DM_MSG *p_data);
1012
1013#endif /* BTA_DM_INT_H */
1014