blob: 0ab037c933c7fc3dbdd12099e96f20b39b748075 [file] [log] [blame]
The Android Open Source Project5738f832012-12-12 16:00:35 -08001/******************************************************************************
2 *
3 * Copyright (C) 2003-2012 Broadcom Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 ******************************************************************************/
18
19/******************************************************************************
20 *
21 * This is the private interface file for the BTA device manager.
22 *
23 ******************************************************************************/
24#ifndef BTA_DM_INT_H
25#define BTA_DM_INT_H
26
27#include "bt_target.h"
28
Marie Janssene9e58ce2016-06-17 14:12:17 -070029#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
30#include "bta_gatt_api.h"
The Android Open Source Project5738f832012-12-12 16:00:35 -080031#endif
32
33
34
35/*****************************************************************************
36** Constants and data types
37*****************************************************************************/
38
39
Marie Janssene9e58ce2016-06-17 14:12:17 -070040#define BTA_COPY_DEVICE_CLASS(coddst, codsrc) {((uint8_t *)(coddst))[0] = ((uint8_t *)(codsrc))[0]; \
41 ((uint8_t *)(coddst))[1] = ((uint8_t *)(codsrc))[1]; \
42 ((uint8_t *)(coddst))[2] = ((uint8_t *)(codsrc))[2];}
The Android Open Source Project5738f832012-12-12 16:00:35 -080043
44
45#define BTA_DM_MSG_LEN 50
46
47#define BTA_SERVICE_ID_TO_SERVICE_MASK(id) (1 << (id))
48
49/* DM events */
50enum
51{
52 /* device manager local device API events */
53 BTA_DM_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_DM),
54 BTA_DM_API_DISABLE_EVT,
55 BTA_DM_API_SET_NAME_EVT,
56 BTA_DM_API_SET_VISIBILITY_EVT,
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -070057
The Android Open Source Project5738f832012-12-12 16:00:35 -080058 BTA_DM_ACL_CHANGE_EVT,
59 BTA_DM_API_ADD_DEVICE_EVT,
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -080060 BTA_DM_API_REMOVE_ACL_EVT,
The Android Open Source Project5738f832012-12-12 16:00:35 -080061
62 /* security API events */
63 BTA_DM_API_BOND_EVT,
64 BTA_DM_API_BOND_CANCEL_EVT,
65 BTA_DM_API_PIN_REPLY_EVT,
The Android Open Source Project5738f832012-12-12 16:00:35 -080066
67 /* power manger events */
68 BTA_DM_PM_BTM_STATUS_EVT,
69 BTA_DM_PM_TIMER_EVT,
70
71 /* simple pairing events */
72 BTA_DM_API_CONFIRM_EVT,
73
74 BTA_DM_API_SET_ENCRYPTION_EVT,
75
The Android Open Source Project5738f832012-12-12 16:00:35 -080076 BTA_DM_API_LOC_OOB_EVT,
77 BTA_DM_CI_IO_REQ_EVT,
78 BTA_DM_CI_RMT_OOB_EVT,
The Android Open Source Project5738f832012-12-12 16:00:35 -080079
The Android Open Source Project5738f832012-12-12 16:00:35 -080080
Marie Janssene9e58ce2016-06-17 14:12:17 -070081#if (BLE_INCLUDED == TRUE)
The Android Open Source Project5738f832012-12-12 16:00:35 -080082 BTA_DM_API_ADD_BLEKEY_EVT,
83 BTA_DM_API_ADD_BLEDEVICE_EVT,
84 BTA_DM_API_BLE_PASSKEY_REPLY_EVT,
Satya Calloji444a8da2015-03-06 10:38:22 -080085 BTA_DM_API_BLE_CONFIRM_REPLY_EVT,
The Android Open Source Project5738f832012-12-12 16:00:35 -080086 BTA_DM_API_BLE_SEC_GRANT_EVT,
87 BTA_DM_API_BLE_SET_BG_CONN_TYPE,
88 BTA_DM_API_BLE_CONN_PARAM_EVT,
Satya Calloji5725fc62015-03-31 13:24:32 -070089 BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT,
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -070090 BTA_DM_API_BLE_SCAN_PARAM_EVT,
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -080091 BTA_DM_API_BLE_OBSERVE_EVT,
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -070092 BTA_DM_API_UPDATE_CONN_PARAM_EVT,
Marie Janssene9e58ce2016-06-17 14:12:17 -070093#if (BLE_PRIVACY_SPT == TRUE)
Wei Wanga6ce7752014-05-20 06:30:32 +000094 BTA_DM_API_LOCAL_PRIVACY_EVT,
95#endif
Andre Eisenbacheeeac992013-11-08 10:23:52 -080096 BTA_DM_API_BLE_BROADCAST_EVT,
Priti Aghera636d6712014-12-18 13:55:48 -080097 BTA_DM_API_SET_DATA_LENGTH_EVT,
Andre Eisenbachb203d472013-11-20 17:23:06 -080098
Marie Janssene9e58ce2016-06-17 14:12:17 -070099#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
Andre Eisenbachb203d472013-11-20 17:23:06 -0800100 BTA_DM_API_CFG_FILTER_COND_EVT,
Satya Calloji1a9247a2014-06-05 13:15:15 -0700101 BTA_DM_API_SCAN_FILTER_SETUP_EVT,
102 BTA_DM_API_SCAN_FILTER_ENABLE_EVT,
Andre Eisenbachb203d472013-11-20 17:23:06 -0800103#endif
Satya Callojic4e25962014-05-10 23:46:24 -0700104 BTA_DM_API_BLE_SETUP_STORAGE_EVT,
105 BTA_DM_API_BLE_ENABLE_BATCH_SCAN_EVT,
106 BTA_DM_API_BLE_DISABLE_BATCH_SCAN_EVT,
107 BTA_DM_API_BLE_READ_SCAN_REPORTS_EVT,
108 BTA_DM_API_BLE_TRACK_ADVERTISER_EVT,
Satya Callojie5ba8842014-07-03 17:18:02 -0700109 BTA_DM_API_BLE_ENERGY_INFO_EVT,
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700110
The Android Open Source Project5738f832012-12-12 16:00:35 -0800111#endif
112
The Android Open Source Project5738f832012-12-12 16:00:35 -0800113 BTA_DM_API_ENABLE_TEST_MODE_EVT,
114 BTA_DM_API_DISABLE_TEST_MODE_EVT,
115 BTA_DM_API_EXECUTE_CBACK_EVT,
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700116 BTA_DM_API_REMOVE_ALL_ACL_EVT,
117 BTA_DM_API_REMOVE_DEVICE_EVT,
The Android Open Source Project5738f832012-12-12 16:00:35 -0800118 BTA_DM_MAX_EVT
119};
120
121
122/* DM search events */
123enum
124{
125 /* DM search API events */
126 BTA_DM_API_SEARCH_EVT = BTA_SYS_EVT_START(BTA_ID_DM_SEARCH),
127 BTA_DM_API_SEARCH_CANCEL_EVT,
128 BTA_DM_API_DISCOVER_EVT,
129 BTA_DM_INQUIRY_CMPL_EVT,
130 BTA_DM_REMT_NAME_EVT,
131 BTA_DM_SDP_RESULT_EVT,
132 BTA_DM_SEARCH_CMPL_EVT,
133 BTA_DM_DISCOVERY_RESULT_EVT,
Andre Eisenbach6975b4d2013-08-05 16:55:38 -0700134 BTA_DM_API_DI_DISCOVER_EVT,
135 BTA_DM_DISC_CLOSE_TOUT_EVT
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700136
The Android Open Source Project5738f832012-12-12 16:00:35 -0800137};
138
139/* data type for BTA_DM_API_ENABLE_EVT */
140typedef struct
141{
142 BT_HDR hdr;
143 tBTA_DM_SEC_CBACK *p_sec_cback;
144} tBTA_DM_API_ENABLE;
145
146/* data type for BTA_DM_API_SET_NAME_EVT */
147typedef struct
148{
149 BT_HDR hdr;
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800150 BD_NAME name; /* max 248 bytes name, plus must be Null terminated */
The Android Open Source Project5738f832012-12-12 16:00:35 -0800151} tBTA_DM_API_SET_NAME;
152
153/* data type for BTA_DM_API_SET_VISIBILITY_EVT */
154typedef struct
155{
156 BT_HDR hdr;
157 tBTA_DM_DISC disc_mode;
158 tBTA_DM_CONN conn_mode;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700159 uint8_t pair_mode;
160 uint8_t conn_paired_only;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800161} tBTA_DM_API_SET_VISIBILITY;
162
The Android Open Source Project5738f832012-12-12 16:00:35 -0800163enum
164{
165 BTA_DM_RS_NONE, /* straight API call */
166 BTA_DM_RS_OK, /* the role switch result - successful */
167 BTA_DM_RS_FAIL /* the role switch result - failed */
168};
Marie Janssene9e58ce2016-06-17 14:12:17 -0700169typedef uint8_t tBTA_DM_RS_RES;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800170
171/* data type for BTA_DM_API_SEARCH_EVT */
172typedef struct
173{
174 BT_HDR hdr;
175 tBTA_DM_INQ inq_params;
176 tBTA_SERVICE_MASK services;
177 tBTA_DM_SEARCH_CBACK * p_cback;
178 tBTA_DM_RS_RES rs_res;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700179#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
180 uint8_t num_uuid;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800181 tBT_UUID *p_uuid;
182#endif
183} tBTA_DM_API_SEARCH;
184
185/* data type for BTA_DM_API_DISCOVER_EVT */
186typedef struct
187{
188 BT_HDR hdr;
189 BD_ADDR bd_addr;
190 tBTA_SERVICE_MASK services;
191 tBTA_DM_SEARCH_CBACK * p_cback;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700192 bool sdp_search;
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700193 tBTA_TRANSPORT transport;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700194#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
195 uint8_t num_uuid;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800196 tBT_UUID *p_uuid;
197#endif
198 tSDP_UUID uuid;
199} tBTA_DM_API_DISCOVER;
200
201/* data type for BTA_DM_API_DI_DISC_EVT */
202typedef struct
203{
204 BT_HDR hdr;
205 BD_ADDR bd_addr;
206 tBTA_DISCOVERY_DB *p_sdp_db;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700207 uint32_t len;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800208 tBTA_DM_SEARCH_CBACK * p_cback;
209}tBTA_DM_API_DI_DISC;
210
211/* data type for BTA_DM_API_BOND_EVT */
212typedef struct
213{
214 BT_HDR hdr;
215 BD_ADDR bd_addr;
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700216 tBTA_TRANSPORT transport;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800217} tBTA_DM_API_BOND;
218
219/* data type for BTA_DM_API_BOND_CANCEL_EVT */
220typedef struct
221{
222 BT_HDR hdr;
223 BD_ADDR bd_addr;
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700224 tBTA_TRANSPORT transport;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800225} tBTA_DM_API_BOND_CANCEL;
226
227/* data type for BTA_DM_API_PIN_REPLY_EVT */
228typedef struct
229{
230 BT_HDR hdr;
231 BD_ADDR bd_addr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700232 bool accept;
233 uint8_t pin_len;
234 uint8_t p_pin[PIN_CODE_LEN];
The Android Open Source Project5738f832012-12-12 16:00:35 -0800235} tBTA_DM_API_PIN_REPLY;
236
The Android Open Source Project5738f832012-12-12 16:00:35 -0800237/* data type for BTA_DM_API_LOC_OOB_EVT */
238typedef struct
239{
240 BT_HDR hdr;
241} tBTA_DM_API_LOC_OOB;
242
243/* data type for BTA_DM_API_CONFIRM_EVT */
244typedef struct
245{
246 BT_HDR hdr;
247 BD_ADDR bd_addr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700248 bool accept;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800249} tBTA_DM_API_CONFIRM;
250
The Android Open Source Project5738f832012-12-12 16:00:35 -0800251/* data type for BTA_DM_CI_IO_REQ_EVT */
252typedef struct
253{
254 BT_HDR hdr;
255 BD_ADDR bd_addr;
256 tBTA_IO_CAP io_cap;
257 tBTA_OOB_DATA oob_data;
258 tBTA_AUTH_REQ auth_req;
259} tBTA_DM_CI_IO_REQ;
260
261/* data type for BTA_DM_CI_RMT_OOB_EVT */
262typedef struct
263{
264 BT_HDR hdr;
265 BD_ADDR bd_addr;
266 BT_OCTET16 c;
267 BT_OCTET16 r;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700268 bool accept;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800269} tBTA_DM_CI_RMT_OOB;
270
271/* data type for BTA_DM_REMT_NAME_EVT */
272typedef struct
273{
274 BT_HDR hdr;
275 tBTA_DM_SEARCH result;
276} tBTA_DM_REM_NAME;
277
278/* data type for tBTA_DM_DISC_RESULT */
279typedef struct
280{
281 BT_HDR hdr;
282 tBTA_DM_SEARCH result;
283} tBTA_DM_DISC_RESULT;
284
285
286/* data type for BTA_DM_INQUIRY_CMPL_EVT */
287typedef struct
288{
289 BT_HDR hdr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700290 uint8_t num;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800291} tBTA_DM_INQUIRY_CMPL;
292
293/* data type for BTA_DM_SDP_RESULT_EVT */
294typedef struct
295{
296 BT_HDR hdr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700297 uint16_t sdp_result;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800298} tBTA_DM_SDP_RESULT;
299
The Android Open Source Project5738f832012-12-12 16:00:35 -0800300/* data type for BTA_DM_ACL_CHANGE_EVT */
301typedef struct
302{
303 BT_HDR hdr;
304 tBTM_BL_EVENT event;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700305 uint8_t busy_level;
306 uint8_t busy_level_flags;
307 bool is_new;
308 uint8_t new_role;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800309 BD_ADDR bd_addr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700310 uint8_t hci_status;
311#if (BLE_INCLUDED == TRUE)
312 uint16_t handle;
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700313 tBT_TRANSPORT transport;
314#endif
The Android Open Source Project5738f832012-12-12 16:00:35 -0800315} tBTA_DM_ACL_CHANGE;
316
317/* data type for BTA_DM_PM_BTM_STATUS_EVT */
318typedef struct
319{
320
321 BT_HDR hdr;
322 BD_ADDR bd_addr;
323 tBTM_PM_STATUS status;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700324 uint16_t value;
325 uint8_t hci_status;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800326
327} tBTA_DM_PM_BTM_STATUS;
328
329/* data type for BTA_DM_PM_TIMER_EVT */
330typedef struct
331{
332 BT_HDR hdr;
333 BD_ADDR bd_addr;
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700334 tBTA_DM_PM_ACTION pm_request;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800335} tBTA_DM_PM_TIMER;
336
337
338/* data type for BTA_DM_API_ADD_DEVICE_EVT */
339typedef struct
340{
341 BT_HDR hdr;
342 BD_ADDR bd_addr;
343 DEV_CLASS dc;
344 LINK_KEY link_key;
345 tBTA_SERVICE_MASK tm;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700346 bool is_trusted;
347 uint8_t key_type;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800348 tBTA_IO_CAP io_cap;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700349 bool link_key_known;
350 bool dc_known;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800351 BD_NAME bd_name;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700352 uint8_t features[BTA_FEATURE_BYTES_PER_PAGE * (BTA_EXT_FEATURES_PAGE_MAX + 1)];
353 uint8_t pin_length;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800354} tBTA_DM_API_ADD_DEVICE;
355
356/* data type for BTA_DM_API_REMOVE_ACL_EVT */
357typedef struct
358{
359 BT_HDR hdr;
360 BD_ADDR bd_addr;
361} tBTA_DM_API_REMOVE_DEVICE;
362
363/* data type for BTA_DM_API_EXECUTE_CBACK_EVT */
364typedef struct
365{
366 BT_HDR hdr;
367 void * p_param;
368 tBTA_DM_EXEC_CBACK *p_exec_cback;
369} tBTA_DM_API_EXECUTE_CBACK;
370
371/* data type for tBTA_DM_API_SET_ENCRYPTION */
372typedef struct
373{
374 BT_HDR hdr;
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700375 tBTA_TRANSPORT transport;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800376 tBTA_DM_ENCRYPT_CBACK *p_callback;
377 tBTA_DM_BLE_SEC_ACT sec_act;
378 BD_ADDR bd_addr;
379} tBTA_DM_API_SET_ENCRYPTION;
380
Marie Janssene9e58ce2016-06-17 14:12:17 -0700381#if (BLE_INCLUDED == TRUE)
The Android Open Source Project5738f832012-12-12 16:00:35 -0800382typedef struct
383{
384 BT_HDR hdr;
385 BD_ADDR bd_addr;
386 tBTA_LE_KEY_VALUE blekey;
387 tBTA_LE_KEY_TYPE key_type;
388
389}tBTA_DM_API_ADD_BLEKEY;
390
391typedef struct
392{
393 BT_HDR hdr;
394 BD_ADDR bd_addr;
395 tBT_DEVICE_TYPE dev_type ;
396 tBLE_ADDR_TYPE addr_type;
397
398}tBTA_DM_API_ADD_BLE_DEVICE;
399
400typedef struct
401{
402 BT_HDR hdr;
403 BD_ADDR bd_addr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700404 bool accept;
405 uint32_t passkey;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800406}tBTA_DM_API_PASSKEY_REPLY;
407
408typedef struct
409{
410 BT_HDR hdr;
411 BD_ADDR bd_addr;
412 tBTA_DM_BLE_SEC_GRANT res;
413}tBTA_DM_API_BLE_SEC_GRANT;
414
415
416typedef struct
417{
418 BT_HDR hdr;
419 tBTA_DM_BLE_CONN_TYPE bg_conn_type;
420 tBTA_DM_BLE_SEL_CBACK *p_select_cback;
421}tBTA_DM_API_BLE_SET_BG_CONN_TYPE;
422
423/* set prefered BLE connection parameters for a device */
424typedef struct
425{
426 BT_HDR hdr;
427 BD_ADDR peer_bda;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700428 uint16_t conn_int_min;
429 uint16_t conn_int_max;
430 uint16_t supervision_tout;
431 uint16_t slave_latency;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800432
433}tBTA_DM_API_BLE_CONN_PARAMS;
434
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800435typedef struct
436{
437 BT_HDR hdr;
438 BD_ADDR peer_bda;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700439 bool privacy_enable;
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800440
441}tBTA_DM_API_ENABLE_PRIVACY;
442
443typedef struct
444{
445 BT_HDR hdr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700446 bool privacy_enable;
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800447}tBTA_DM_API_LOCAL_PRIVACY;
448
The Android Open Source Project5738f832012-12-12 16:00:35 -0800449/* set scan parameter for BLE connections */
450typedef struct
451{
Satya Calloji5725fc62015-03-31 13:24:32 -0700452 BT_HDR hdr;
453 tBTA_GATTC_IF client_if;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700454 uint32_t scan_int;
455 uint32_t scan_window;
Satya Calloji5725fc62015-03-31 13:24:32 -0700456 tBLE_SCAN_MODE scan_mode;
457 tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800458}tBTA_DM_API_BLE_SCAN_PARAMS;
459
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700460/* set scan parameter for BLE connections */
461typedef struct
462{
463 BT_HDR hdr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700464 uint16_t scan_int;
465 uint16_t scan_window;
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700466} tBTA_DM_API_BLE_CONN_SCAN_PARAMS;
467
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800468/* Data type for start/stop observe */
469typedef struct
470{
471 BT_HDR hdr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700472 bool start;
473 uint16_t duration;
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800474 tBTA_DM_SEARCH_CBACK * p_cback;
475}tBTA_DM_API_BLE_OBSERVE;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800476
Priti Aghera636d6712014-12-18 13:55:48 -0800477typedef struct
478{
479 BT_HDR hdr;
480 BD_ADDR remote_bda;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700481 uint16_t tx_data_length;
Priti Aghera636d6712014-12-18 13:55:48 -0800482}tBTA_DM_API_BLE_SET_DATA_LENGTH;
483
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800484/* set adv parameter for BLE advertising */
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800485
486typedef struct
487{
488 BT_HDR hdr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700489 bool enable;
Wei Wanga6ce7752014-05-20 06:30:32 +0000490
491}tBTA_DM_API_BLE_FEATURE;
492
Jakub Pawlowski5b12a832016-08-11 03:30:47 -0700493/* adv data structure */
Satya Callojic4e25962014-05-10 23:46:24 -0700494typedef struct
495{
496 BT_HDR hdr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700497 uint8_t batch_scan_full_max;
498 uint8_t batch_scan_trunc_max;
499 uint8_t batch_scan_notify_threshold;
Satya Callojic4e25962014-05-10 23:46:24 -0700500 tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback;
501 tBTA_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback;
502 tBTA_BLE_SCAN_REP_CBACK *p_read_rep_cback;
503 tBTA_DM_BLE_REF_VALUE ref_value;
504} tBTA_DM_API_SET_STORAGE_CONFIG;
505
506typedef struct
507{
508 BT_HDR hdr;
Satya Calloji5725fc62015-03-31 13:24:32 -0700509 tBTA_BLE_BATCH_SCAN_MODE scan_mode;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700510 uint32_t scan_int;
511 uint32_t scan_window;
Satya Callojic4e25962014-05-10 23:46:24 -0700512 tBTA_BLE_DISCARD_RULE discard_rule;
513 tBLE_ADDR_TYPE addr_type;
514 tBTA_DM_BLE_REF_VALUE ref_value;
515} tBTA_DM_API_ENABLE_SCAN;
516
517typedef struct
518{
519 BT_HDR hdr;
520 tBTA_DM_BLE_REF_VALUE ref_value;
521} tBTA_DM_API_DISABLE_SCAN;
522
523typedef struct
524{
525 BT_HDR hdr;
Satya Calloji5725fc62015-03-31 13:24:32 -0700526 tBTA_BLE_BATCH_SCAN_MODE scan_type;
Satya Callojic4e25962014-05-10 23:46:24 -0700527 tBTA_DM_BLE_REF_VALUE ref_value;
528} tBTA_DM_API_READ_SCAN_REPORTS;
529
530typedef struct
531{
532 BT_HDR hdr;
Satya Calloji1acb61c2014-06-14 23:16:18 -0700533 tBTA_DM_BLE_REF_VALUE ref_value;
534 tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback;
Satya Callojic4e25962014-05-10 23:46:24 -0700535} tBTA_DM_API_TRACK_ADVERTISER;
536
Satya Callojie5ba8842014-07-03 17:18:02 -0700537typedef struct
538{
539 BT_HDR hdr;
540 tBTA_BLE_ENERGY_INFO_CBACK *p_energy_info_cback;
541} tBTA_DM_API_ENERGY_INFO;
542
Wei Wanga6ce7752014-05-20 06:30:32 +0000543#endif /* BLE_INCLUDED */
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800544
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800545/* data type for BTA_DM_API_REMOVE_ACL_EVT */
546typedef struct
547{
548 BT_HDR hdr;
549 BD_ADDR bd_addr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700550 bool remove_dev;
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700551 tBTA_TRANSPORT transport;
552
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800553}tBTA_DM_API_REMOVE_ACL;
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700554
555/* data type for BTA_DM_API_REMOVE_ALL_ACL_EVT */
556typedef struct
557{
558 BT_HDR hdr;
559 tBTA_DM_LINK_TYPE link_type;
560
561} tBTA_DM_API_REMOVE_ALL_ACL;
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700562typedef struct
563{
564 BT_HDR hdr;
565 BD_ADDR bd_addr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700566 uint16_t min_int;
567 uint16_t max_int;
568 uint16_t latency;
569 uint16_t timeout;
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700570}tBTA_DM_API_UPDATE_CONN_PARAM;
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800571
Marie Janssene9e58ce2016-06-17 14:12:17 -0700572#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
Andre Eisenbachb203d472013-11-20 17:23:06 -0800573typedef struct
574{
575 BT_HDR hdr;
576 tBTA_DM_BLE_SCAN_COND_OP action;
577 tBTA_DM_BLE_PF_COND_TYPE cond_type;
Satya Calloji1a9247a2014-06-05 13:15:15 -0700578 tBTA_DM_BLE_PF_FILT_INDEX filt_index;
Andre Eisenbachb203d472013-11-20 17:23:06 -0800579 tBTA_DM_BLE_PF_COND_PARAM *p_cond_param;
Satya Calloji1a9247a2014-06-05 13:15:15 -0700580 tBTA_DM_BLE_PF_CFG_CBACK *p_filt_cfg_cback;
581 tBTA_DM_BLE_REF_VALUE ref_value;
Andre Eisenbachb203d472013-11-20 17:23:06 -0800582}tBTA_DM_API_CFG_FILTER_COND;
583
584typedef struct
585{
586 BT_HDR hdr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700587 uint8_t action;
Satya Calloji1a9247a2014-06-05 13:15:15 -0700588 tBTA_DM_BLE_PF_STATUS_CBACK *p_filt_status_cback;
589 tBTA_DM_BLE_REF_VALUE ref_value;
Andre Eisenbachb203d472013-11-20 17:23:06 -0800590}tBTA_DM_API_ENABLE_SCAN_FILTER;
Satya Calloji1a9247a2014-06-05 13:15:15 -0700591
592typedef struct
593{
594 BT_HDR hdr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700595 uint8_t action;
Satya Calloji1a9247a2014-06-05 13:15:15 -0700596 tBTA_DM_BLE_PF_FILT_INDEX filt_index;
Nitin Arora643aea52014-09-11 18:35:55 -0700597 tBTA_DM_BLE_PF_FILT_PARAMS filt_params;
Satya Calloji1a9247a2014-06-05 13:15:15 -0700598 tBLE_BD_ADDR *p_target;
599 tBTA_DM_BLE_PF_PARAM_CBACK *p_filt_param_cback;
600 tBTA_DM_BLE_REF_VALUE ref_value;
601}tBTA_DM_API_SCAN_FILTER_PARAM_SETUP;
Andre Eisenbachb203d472013-11-20 17:23:06 -0800602#endif
603
The Android Open Source Project5738f832012-12-12 16:00:35 -0800604/* union of all data types */
605typedef union
606{
607 /* GKI event buffer header */
608 BT_HDR hdr;
609 tBTA_DM_API_ENABLE enable;
610
611 tBTA_DM_API_SET_NAME set_name;
612
613 tBTA_DM_API_SET_VISIBILITY set_visibility;
614
The Android Open Source Project5738f832012-12-12 16:00:35 -0800615 tBTA_DM_API_ADD_DEVICE add_dev;
616
617 tBTA_DM_API_REMOVE_DEVICE remove_dev;
618
619 tBTA_DM_API_SEARCH search;
620
621 tBTA_DM_API_DISCOVER discover;
622
623 tBTA_DM_API_BOND bond;
624
625 tBTA_DM_API_BOND_CANCEL bond_cancel;
626
627 tBTA_DM_API_PIN_REPLY pin_reply;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800628
629 tBTA_DM_API_LOC_OOB loc_oob;
630 tBTA_DM_API_CONFIRM confirm;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800631 tBTA_DM_CI_IO_REQ ci_io_req;
632 tBTA_DM_CI_RMT_OOB ci_rmt_oob;
633
The Android Open Source Project5738f832012-12-12 16:00:35 -0800634 tBTA_DM_REM_NAME rem_name;
635
636 tBTA_DM_DISC_RESULT disc_result;
637
638 tBTA_DM_INQUIRY_CMPL inq_cmpl;
639
640 tBTA_DM_SDP_RESULT sdp_event;
641
The Android Open Source Project5738f832012-12-12 16:00:35 -0800642 tBTA_DM_ACL_CHANGE acl_change;
643
644 tBTA_DM_PM_BTM_STATUS pm_status;
645
646 tBTA_DM_PM_TIMER pm_timer;
647
648 tBTA_DM_API_DI_DISC di_disc;
649
650 tBTA_DM_API_EXECUTE_CBACK exec_cback;
651
652 tBTA_DM_API_SET_ENCRYPTION set_encryption;
653
Marie Janssene9e58ce2016-06-17 14:12:17 -0700654#if (BLE_INCLUDED == TRUE)
The Android Open Source Project5738f832012-12-12 16:00:35 -0800655 tBTA_DM_API_ADD_BLEKEY add_ble_key;
656 tBTA_DM_API_ADD_BLE_DEVICE add_ble_device;
657 tBTA_DM_API_PASSKEY_REPLY ble_passkey_reply;
658 tBTA_DM_API_BLE_SEC_GRANT ble_sec_grant;
659 tBTA_DM_API_BLE_SET_BG_CONN_TYPE ble_set_bd_conn_type;
660 tBTA_DM_API_BLE_CONN_PARAMS ble_set_conn_params;
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700661 tBTA_DM_API_BLE_CONN_SCAN_PARAMS ble_set_conn_scan_params;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800662 tBTA_DM_API_BLE_SCAN_PARAMS ble_set_scan_params;
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800663 tBTA_DM_API_BLE_OBSERVE ble_observe;
664 tBTA_DM_API_ENABLE_PRIVACY ble_remote_privacy;
665 tBTA_DM_API_LOCAL_PRIVACY ble_local_privacy;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700666#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
Satya Calloji1a9247a2014-06-05 13:15:15 -0700667 tBTA_DM_API_SCAN_FILTER_PARAM_SETUP ble_scan_filt_param_setup;
Andre Eisenbachb203d472013-11-20 17:23:06 -0800668 tBTA_DM_API_CFG_FILTER_COND ble_cfg_filter_cond;
Satya Calloji1a9247a2014-06-05 13:15:15 -0700669 tBTA_DM_API_ENABLE_SCAN_FILTER ble_enable_scan_filt;
Andre Eisenbachb203d472013-11-20 17:23:06 -0800670#endif
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700671 tBTA_DM_API_UPDATE_CONN_PARAM ble_update_conn_params;
Priti Aghera636d6712014-12-18 13:55:48 -0800672 tBTA_DM_API_BLE_SET_DATA_LENGTH ble_set_data_length;
673
Satya Callojic4e25962014-05-10 23:46:24 -0700674 tBTA_DM_API_SET_STORAGE_CONFIG ble_set_storage;
675 tBTA_DM_API_ENABLE_SCAN ble_enable_scan;
676 tBTA_DM_API_READ_SCAN_REPORTS ble_read_reports;
677 tBTA_DM_API_DISABLE_SCAN ble_disable_scan;
678 tBTA_DM_API_TRACK_ADVERTISER ble_track_advert;
Satya Callojie5ba8842014-07-03 17:18:02 -0700679 tBTA_DM_API_ENERGY_INFO ble_energy_info;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800680#endif
681
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800682 tBTA_DM_API_REMOVE_ACL remove_acl;
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700683 tBTA_DM_API_REMOVE_ALL_ACL remove_all_acl;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800684
685} tBTA_DM_MSG;
686
687
688#define BTA_DM_NUM_PEER_DEVICE 7
689
690#define BTA_DM_NOT_CONNECTED 0
691#define BTA_DM_CONNECTED 1
692#define BTA_DM_UNPAIRING 2
Marie Janssene9e58ce2016-06-17 14:12:17 -0700693typedef uint8_t tBTA_DM_CONN_STATE;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800694
695
696#define BTA_DM_DI_NONE 0x00 /* nothing special */
697#define BTA_DM_DI_USE_SSR 0x10 /* set this bit if ssr is supported for this link */
698#define BTA_DM_DI_AV_ACTIVE 0x20 /* set this bit if AV is active for this link */
699#define BTA_DM_DI_SET_SNIFF 0x01 /* set this bit if call BTM_SetPowerMode(sniff) */
700#define BTA_DM_DI_INT_SNIFF 0x02 /* set this bit if call BTM_SetPowerMode(sniff) & enter sniff mode */
701#define BTA_DM_DI_ACP_SNIFF 0x04 /* set this bit if peer init sniff */
Marie Janssene9e58ce2016-06-17 14:12:17 -0700702typedef uint8_t tBTA_DM_DEV_INFO;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800703
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700704/* set power mode request type */
705#define BTA_DM_PM_RESTART 1
706#define BTA_DM_PM_NEW_REQ 2
707#define BTA_DM_PM_EXECUTE 3
Marie Janssene9e58ce2016-06-17 14:12:17 -0700708typedef uint8_t tBTA_DM_PM_REQ;
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700709
The Android Open Source Project5738f832012-12-12 16:00:35 -0800710typedef struct
711{
712 BD_ADDR peer_bdaddr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700713 uint16_t link_policy;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800714 tBTA_DM_CONN_STATE conn_state;
715 tBTA_PREF_ROLES pref_role;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700716 bool in_use;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800717 tBTA_DM_DEV_INFO info;
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700718 tBTA_DM_ENCRYPT_CBACK *p_encrypt_cback;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800719#if (BTM_SSR_INCLUDED == TRUE)
720 tBTM_PM_STATUS prev_low; /* previous low power mode used */
721#endif
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700722 tBTA_DM_PM_ACTION pm_mode_attempted;
723 tBTA_DM_PM_ACTION pm_mode_failed;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700724 bool remove_dev_pending;
725#if (BLE_INCLUDED == TRUE)
726 uint16_t conn_handle;
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700727 tBT_TRANSPORT transport;
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700728#endif
The Android Open Source Project5738f832012-12-12 16:00:35 -0800729} tBTA_DM_PEER_DEVICE;
730
731
732
733/* structure to store list of
734 active connections */
735typedef struct
736{
737 tBTA_DM_PEER_DEVICE peer_device[BTA_DM_NUM_PEER_DEVICE];
Marie Janssene9e58ce2016-06-17 14:12:17 -0700738 uint8_t count;
739#if (BLE_INCLUDED == TRUE)
740 uint8_t le_count;
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700741#endif
The Android Open Source Project5738f832012-12-12 16:00:35 -0800742} tBTA_DM_ACTIVE_LINK;
743
744
745typedef struct
746{
747 BD_ADDR peer_bdaddr;
748 tBTA_SYS_ID id;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700749 uint8_t app_id;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800750 tBTA_SYS_CONN_STATUS state;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700751 bool new_request;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800752
753} tBTA_DM_SRVCS;
754
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700755#ifndef BTA_DM_NUM_CONN_SRVS
756#define BTA_DM_NUM_CONN_SRVS 10
757#endif
The Android Open Source Project5738f832012-12-12 16:00:35 -0800758
759typedef struct
760{
761
Marie Janssene9e58ce2016-06-17 14:12:17 -0700762 uint8_t count;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800763 tBTA_DM_SRVCS conn_srvc[BTA_DM_NUM_CONN_SRVS];
764
765} tBTA_DM_CONNECTED_SRVCS;
766
767typedef struct
768{
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700769#define BTA_DM_PM_SNIFF_TIMER_IDX 0
770#define BTA_DM_PM_PARK_TIMER_IDX 1
771#define BTA_DM_PM_SUSPEND_TIMER_IDX 2
772#define BTA_DM_PM_MODE_TIMER_MAX 3
773 /*
774 * Keep three different timers for PARK, SNIFF and SUSPEND if TBFC is
775 * supported.
776 */
Pavlin Radoslavov78bcff72015-12-04 17:36:34 -0800777 alarm_t * timer[BTA_DM_PM_MODE_TIMER_MAX];
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700778
Marie Janssene9e58ce2016-06-17 14:12:17 -0700779 uint8_t srvc_id[BTA_DM_PM_MODE_TIMER_MAX];
780 uint8_t pm_action[BTA_DM_PM_MODE_TIMER_MAX];
781 uint8_t active; /* number of active timer */
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700782
The Android Open Source Project5738f832012-12-12 16:00:35 -0800783 BD_ADDR peer_bdaddr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700784 bool in_use;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800785} tBTA_PM_TIMER;
786
787extern tBTA_DM_CONNECTED_SRVCS bta_dm_conn_srvcs;
788
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700789#define BTA_DM_NUM_PM_TIMER 7
The Android Open Source Project5738f832012-12-12 16:00:35 -0800790
791/* DM control block */
792typedef struct
793{
Marie Janssene9e58ce2016-06-17 14:12:17 -0700794 bool is_bta_dm_active;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800795 tBTA_DM_ACTIVE_LINK device_list;
796 tBTA_DM_SEC_CBACK *p_sec_cback;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700797#if (BLE_INCLUDED == TRUE)
Satya Callojic4e25962014-05-10 23:46:24 -0700798 tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback;
Satya Calloji1a9247a2014-06-05 13:15:15 -0700799 tBTA_DM_BLE_PF_CFG_CBACK *p_scan_filt_cfg_cback;
800 tBTA_DM_BLE_PF_STATUS_CBACK *p_scan_filt_status_cback;
801 tBTA_DM_BLE_PF_PARAM_CBACK *p_scan_filt_param_cback;
Prerepa Viswanadham16fe0822014-08-07 11:38:06 -0700802 tBTA_BLE_ENERGY_INFO_CBACK *p_energy_info_cback;
Prerepa Viswanadhamb9447032014-08-07 18:30:59 -0700803#endif
Marie Janssene9e58ce2016-06-17 14:12:17 -0700804 uint16_t state;
805 bool disabling;
Pavlin Radoslavov78bcff72015-12-04 17:36:34 -0800806 alarm_t *disable_timer;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700807 uint32_t wbt_sdp_handle; /* WIDCOMM Extensions SDP record handle */
808 uint8_t wbt_scn; /* WIDCOMM Extensions SCN */
809 uint8_t num_master_only;
810 uint8_t pm_id;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800811 tBTA_PM_TIMER pm_timer[BTA_DM_NUM_PM_TIMER];
Marie Janssene9e58ce2016-06-17 14:12:17 -0700812 uint32_t role_policy_mask; /* the bits set indicates the modules that wants to remove role switch from the default link policy */
813 uint16_t cur_policy; /* current default link policy */
814 uint16_t rs_event; /* the event waiting for role switch */
815 uint8_t cur_av_count; /* current AV connecions */
816 bool disable_pair_mode; /* disable pair mode or not */
817 bool conn_paired_only; /* allow connectable to paired device only or not */
The Android Open Source Project5738f832012-12-12 16:00:35 -0800818 tBTA_DM_API_SEARCH search_msg;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700819 uint16_t page_scan_interval;
820 uint16_t page_scan_window;
821 uint16_t inquiry_scan_interval;
822 uint16_t inquiry_scan_window;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800823
824 /* Storage for pin code request parameters */
825 BD_ADDR pin_bd_addr;
826 DEV_CLASS pin_dev_class;
827 tBTA_DM_SEC_EVT pin_evt;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700828 uint32_t num_val; /* the numeric value for comparison. If just_works, do not show this number to UI */
829 bool just_works; /* true, if "Just Works" association model */
830#if (BTA_EIR_CANNED_UUID_LIST != TRUE)
The Android Open Source Project5738f832012-12-12 16:00:35 -0800831 /* store UUID list for EIR */
Marie Janssene9e58ce2016-06-17 14:12:17 -0700832 uint32_t eir_uuid[BTM_EIR_SERVICE_ARRAY_SIZE];
The Android Open Source Project5738f832012-12-12 16:00:35 -0800833#if (BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
834 tBT_UUID custom_uuid[BTA_EIR_SERVER_NUM_CUSTOM_UUID];
835#endif
836
837#endif
838
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700839
840 tBTA_DM_ENCRYPT_CBACK *p_encrypt_cback;
Pavlin Radoslavov78bcff72015-12-04 17:36:34 -0800841 alarm_t *switch_delay_timer;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800842
843} tBTA_DM_CB;
844
The Android Open Source Project5738f832012-12-12 16:00:35 -0800845/* DM search control block */
846typedef struct
847{
848
849 tBTA_DM_SEARCH_CBACK * p_search_cback;
850 tBTM_INQ_INFO * p_btm_inq_info;
851 tBTA_SERVICE_MASK services;
852 tBTA_SERVICE_MASK services_to_search;
853 tBTA_SERVICE_MASK services_found;
854 tSDP_DISCOVERY_DB * p_sdp_db;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700855 uint16_t state;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800856 BD_ADDR peer_bdaddr;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700857 bool name_discover_done;
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800858 BD_NAME peer_name;
Pavlin Radoslavov78bcff72015-12-04 17:36:34 -0800859 alarm_t * search_timer;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700860 uint8_t service_index;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800861 tBTA_DM_MSG * p_search_queue; /* search or discover commands during search cancel stored here */
Marie Janssene9e58ce2016-06-17 14:12:17 -0700862 bool wait_disc;
863 bool sdp_results;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800864 tSDP_UUID uuid;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700865 uint8_t peer_scn;
866 bool sdp_search;
867 bool cancel_pending; /* inquiry cancel is pending */
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -0700868 tBTA_TRANSPORT transport;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700869#if (BLE_INCLUDED == TRUE)
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -0800870 tBTA_DM_SEARCH_CBACK * p_scan_cback;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700871#if (BTA_GATT_INCLUDED == TRUE)
The Android Open Source Project5738f832012-12-12 16:00:35 -0800872 tBTA_GATTC_IF client_if;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700873 uint8_t num_uuid;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800874 tBT_UUID *p_srvc_uuid;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700875 uint8_t uuid_to_search;
876 bool gatt_disc_active;
877 uint16_t conn_id;
878 uint8_t * p_ble_rawdata;
879 uint32_t ble_raw_size;
880 uint32_t ble_raw_used;
Pavlin Radoslavov78bcff72015-12-04 17:36:34 -0800881 alarm_t * gatt_close_timer; /* GATT channel close delay timer */
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700882 BD_ADDR pending_close_bda; /* pending GATT channel remote device address */
The Android Open Source Project5738f832012-12-12 16:00:35 -0800883#endif
884#endif
885
886
887} tBTA_DM_SEARCH_CB;
888
889/* DI control block */
890typedef struct
891{
892 tSDP_DISCOVERY_DB * p_di_db; /* pointer to the DI discovery database */
Marie Janssene9e58ce2016-06-17 14:12:17 -0700893 uint8_t di_num; /* total local DI record number */
894 uint32_t di_handle[BTA_DI_NUM_MAX]; /* local DI record handle, the first one is primary record */
The Android Open Source Project5738f832012-12-12 16:00:35 -0800895}tBTA_DM_DI_CB;
896
897/* DM search state */
898enum
899{
900
901 BTA_DM_SEARCH_IDLE,
902 BTA_DM_SEARCH_ACTIVE,
903 BTA_DM_SEARCH_CANCELLING,
904 BTA_DM_DISCOVER_ACTIVE
905
906};
907
908
909
910typedef struct
911{
912 DEV_CLASS dev_class; /* local device class */
Marie Janssene9e58ce2016-06-17 14:12:17 -0700913 uint16_t policy_settings; /* link policy setting hold, sniff, park, MS switch */
914 uint16_t page_timeout; /* timeout for page in slots */
915 uint16_t link_timeout; /* link supervision timeout in slots */
916 bool avoid_scatter; /* true to avoid scatternet when av is streaming (be the master) */
The Android Open Source Project5738f832012-12-12 16:00:35 -0800917
918} tBTA_DM_CFG;
919
Marie Janssene9e58ce2016-06-17 14:12:17 -0700920extern const uint32_t bta_service_id_to_btm_srv_id_lkup_tbl[];
The Android Open Source Project5738f832012-12-12 16:00:35 -0800921
The Android Open Source Project5738f832012-12-12 16:00:35 -0800922
The Android Open Source Project5738f832012-12-12 16:00:35 -0800923typedef struct
924{
Marie Janssene9e58ce2016-06-17 14:12:17 -0700925 uint8_t id;
926 uint8_t app_id;
927 uint8_t cfg;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800928
929} tBTA_DM_RM ;
930
931extern tBTA_DM_CFG *p_bta_dm_cfg;
932extern tBTA_DM_RM *p_bta_dm_rm_cfg;
933
934typedef struct
935{
936
Marie Janssene9e58ce2016-06-17 14:12:17 -0700937 uint8_t id;
938 uint8_t app_id;
939 uint8_t spec_idx; /* index of spec table to use */
The Android Open Source Project5738f832012-12-12 16:00:35 -0800940
941} tBTA_DM_PM_CFG;
942
943
944typedef struct
945{
946
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -0700947 tBTA_DM_PM_ACTION power_mode;
Marie Janssene9e58ce2016-06-17 14:12:17 -0700948 uint16_t timeout;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800949
950} tBTA_DM_PM_ACTN;
951
952typedef struct
953{
954
Marie Janssene9e58ce2016-06-17 14:12:17 -0700955 uint8_t allow_mask; /* mask of sniff/hold/park modes to allow */
The Android Open Source Project5738f832012-12-12 16:00:35 -0800956#if (BTM_SSR_INCLUDED == TRUE)
Marie Janssene9e58ce2016-06-17 14:12:17 -0700957 uint8_t ssr; /* set SSR on conn open/unpark */
The Android Open Source Project5738f832012-12-12 16:00:35 -0800958#endif
959 tBTA_DM_PM_ACTN actn_tbl [BTA_DM_PM_NUM_EVTS][2];
960
961} tBTA_DM_PM_SPEC;
962
963typedef struct
964{
Marie Janssene9e58ce2016-06-17 14:12:17 -0700965 uint16_t max_lat;
966 uint16_t min_rmt_to;
967 uint16_t min_loc_to;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800968} tBTA_DM_SSR_SPEC;
969
970typedef struct
971{
Marie Janssene9e58ce2016-06-17 14:12:17 -0700972 uint16_t manufacturer;
973 uint16_t lmp_sub_version;
974 uint8_t lmp_version;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800975}tBTA_DM_LMP_VER_INFO;
976
Marie Janssene9e58ce2016-06-17 14:12:17 -0700977extern const uint16_t bta_service_id_to_uuid_lkup_tbl [];
Jakub Pawlowskib7938c12016-05-26 17:57:22 -0700978
The Android Open Source Project5738f832012-12-12 16:00:35 -0800979extern tBTA_DM_PM_CFG *p_bta_dm_pm_cfg;
980extern tBTA_DM_PM_SPEC *p_bta_dm_pm_spec;
981extern tBTM_PM_PWR_MD *p_bta_dm_pm_md;
982#if (BTM_SSR_INCLUDED == TRUE)
983extern tBTA_DM_SSR_SPEC *p_bta_dm_ssr_spec;
984#endif
985
The Android Open Source Project5738f832012-12-12 16:00:35 -0800986/* update dynamic BRCM Aware EIR data */
987extern const tBTA_DM_EIR_CONF bta_dm_eir_cfg;
988extern tBTA_DM_EIR_CONF *p_bta_dm_eir_cfg;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800989
990/* DM control block */
The Android Open Source Project5738f832012-12-12 16:00:35 -0800991extern tBTA_DM_CB bta_dm_cb;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800992
993/* DM search control block */
The Android Open Source Project5738f832012-12-12 16:00:35 -0800994extern tBTA_DM_SEARCH_CB bta_dm_search_cb;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800995
996/* DI control block */
The Android Open Source Project5738f832012-12-12 16:00:35 -0800997extern tBTA_DM_DI_CB bta_dm_di_cb;
The Android Open Source Project5738f832012-12-12 16:00:35 -0800998
Marie Janssene9e58ce2016-06-17 14:12:17 -0700999extern bool bta_dm_sm_execute(BT_HDR *p_msg);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001000extern void bta_dm_sm_disable( void );
Marie Janssene9e58ce2016-06-17 14:12:17 -07001001extern bool bta_dm_search_sm_execute(BT_HDR *p_msg);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001002extern void bta_dm_search_sm_disable( void );
1003
1004
1005extern void bta_dm_enable (tBTA_DM_MSG *p_data);
1006extern void bta_dm_disable (tBTA_DM_MSG *p_data);
Pavlin Radoslavov78bcff72015-12-04 17:36:34 -08001007extern void bta_dm_init_cb(void);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001008extern void bta_dm_set_dev_name (tBTA_DM_MSG *p_data);
1009extern void bta_dm_set_visibility (tBTA_DM_MSG *p_data);
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -07001010
1011extern void bta_dm_set_scan_config(tBTA_DM_MSG *p_data);
1012extern void bta_dm_vendor_spec_command(tBTA_DM_MSG *p_data);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001013extern void bta_dm_bond (tBTA_DM_MSG *p_data);
1014extern void bta_dm_bond_cancel (tBTA_DM_MSG *p_data);
1015extern void bta_dm_pin_reply (tBTA_DM_MSG *p_data);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001016extern void bta_dm_acl_change(tBTA_DM_MSG *p_data);
1017extern void bta_dm_add_device (tBTA_DM_MSG *p_data);
1018extern void bta_dm_remove_device (tBTA_DM_MSG *p_data);
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -08001019extern void bta_dm_close_acl(tBTA_DM_MSG *p_data);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001020
1021
1022extern void bta_dm_pm_btm_status(tBTA_DM_MSG *p_data);
1023extern void bta_dm_pm_timer(tBTA_DM_MSG *p_data);
1024extern void bta_dm_add_ampkey (tBTA_DM_MSG *p_data);
1025
Marie Janssene9e58ce2016-06-17 14:12:17 -07001026#if (BLE_INCLUDED == TRUE)
The Android Open Source Project5738f832012-12-12 16:00:35 -08001027extern void bta_dm_add_blekey (tBTA_DM_MSG *p_data);
1028extern void bta_dm_add_ble_device (tBTA_DM_MSG *p_data);
1029extern void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data);
Satya Calloji444a8da2015-03-06 10:38:22 -08001030extern void bta_dm_ble_confirm_reply (tBTA_DM_MSG *p_data);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001031extern void bta_dm_security_grant (tBTA_DM_MSG *p_data);
1032extern void bta_dm_ble_set_bg_conn_type (tBTA_DM_MSG *p_data);
1033extern void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data);
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -07001034extern void bta_dm_ble_set_scan_params(tBTA_DM_MSG *p_data);
Satya Calloji5725fc62015-03-31 13:24:32 -07001035extern void bta_dm_ble_set_conn_scan_params (tBTA_DM_MSG *p_data);
Andre Eisenbach6975b4d2013-08-05 16:55:38 -07001036extern void bta_dm_close_gatt_conn(tBTA_DM_MSG *p_data);
Ganesh Ganapathi Battaead3cde2013-02-05 15:22:31 -08001037extern void bta_dm_ble_observe (tBTA_DM_MSG *p_data);
Ganesh Ganapathi Batta7fa4fba2014-04-16 16:50:09 -07001038extern void bta_dm_ble_update_conn_params (tBTA_DM_MSG *p_data);
Wei Wanged534e32014-05-20 06:30:13 +00001039extern void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data);
Jakub Pawlowski5b12a832016-08-11 03:30:47 -07001040extern void bta_dm_ble_set_adv_params(uint16_t adv_int_min, uint16_t adv_int_max,
1041 tBLE_BD_ADDR *p_dir_bda);
Jakub Pawlowski5b12a832016-08-11 03:30:47 -07001042
Andre Eisenbacheeeac992013-11-08 10:23:52 -08001043extern void bta_dm_ble_broadcast (tBTA_DM_MSG *p_data);
Priti Aghera636d6712014-12-18 13:55:48 -08001044extern void bta_dm_ble_set_data_length(tBTA_DM_MSG *p_data);
Andre Eisenbach5c44e452013-08-06 18:19:37 -07001045
Marie Janssene9e58ce2016-06-17 14:12:17 -07001046#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
Andre Eisenbachb203d472013-11-20 17:23:06 -08001047extern void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data);
Satya Calloji1a9247a2014-06-05 13:15:15 -07001048extern void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data);
1049extern void bta_dm_enable_scan_filter(tBTA_DM_MSG *p_data);
Andre Eisenbachb203d472013-11-20 17:23:06 -08001050#endif
1051
Satya Callojic4e25962014-05-10 23:46:24 -07001052extern void bta_dm_ble_setup_storage(tBTA_DM_MSG *p_data);
1053extern void bta_dm_ble_enable_batch_scan(tBTA_DM_MSG * p_data);
1054extern void bta_dm_ble_disable_batch_scan(tBTA_DM_MSG * p_data);
1055extern void bta_dm_ble_read_scan_reports(tBTA_DM_MSG * p_data);
Satya Calloji1acb61c2014-06-14 23:16:18 -07001056extern void bta_dm_ble_track_advertiser(tBTA_DM_MSG * p_data);
Satya Callojie5ba8842014-07-03 17:18:02 -07001057extern void bta_dm_ble_get_energy_info(tBTA_DM_MSG *p_data);
Satya Calloji1acb61c2014-06-14 23:16:18 -07001058
The Android Open Source Project5738f832012-12-12 16:00:35 -08001059#endif
1060extern void bta_dm_set_encryption(tBTA_DM_MSG *p_data);
1061extern void bta_dm_confirm(tBTA_DM_MSG *p_data);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001062extern void bta_dm_loc_oob(tBTA_DM_MSG *p_data);
1063extern void bta_dm_ci_io_req_act(tBTA_DM_MSG *p_data);
1064extern void bta_dm_ci_rmt_oob_act(tBTA_DM_MSG *p_data);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001065
1066extern void bta_dm_init_pm(void);
1067extern void bta_dm_disable_pm(void);
1068
Marie Janssene9e58ce2016-06-17 14:12:17 -07001069extern uint8_t bta_dm_get_av_count(void);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001070extern void bta_dm_search_start (tBTA_DM_MSG *p_data);
1071extern void bta_dm_search_cancel (tBTA_DM_MSG *p_data);
1072extern void bta_dm_discover (tBTA_DM_MSG *p_data);
1073extern void bta_dm_di_disc (tBTA_DM_MSG *p_data);
1074extern void bta_dm_inq_cmpl (tBTA_DM_MSG *p_data);
1075extern void bta_dm_rmt_name (tBTA_DM_MSG *p_data);
1076extern void bta_dm_sdp_result (tBTA_DM_MSG *p_data);
1077extern void bta_dm_search_cmpl (tBTA_DM_MSG *p_data);
1078extern void bta_dm_free_sdp_db (tBTA_DM_MSG *p_data);
1079extern void bta_dm_disc_result (tBTA_DM_MSG *p_data);
1080extern void bta_dm_search_result (tBTA_DM_MSG *p_data);
1081extern void bta_dm_discovery_cmpl (tBTA_DM_MSG *p_data);
1082extern void bta_dm_queue_search (tBTA_DM_MSG *p_data);
1083extern void bta_dm_queue_disc (tBTA_DM_MSG *p_data);
1084extern void bta_dm_search_clear_queue (tBTA_DM_MSG *p_data);
1085extern void bta_dm_search_cancel_cmpl (tBTA_DM_MSG *p_data);
1086extern void bta_dm_search_cancel_notify (tBTA_DM_MSG *p_data);
1087extern void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data);
1088extern void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data);
Jakub Pawlowski063ca022016-04-25 10:43:02 -07001089extern tBTA_DM_PEER_DEVICE * bta_dm_find_peer_device(const BD_ADDR peer_addr);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001090
Marie Janssene9e58ce2016-06-17 14:12:17 -07001091void bta_dm_eir_update_uuid(uint16_t uuid16, bool adding);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001092
The Android Open Source Project5738f832012-12-12 16:00:35 -08001093extern void bta_dm_enable_test_mode(tBTA_DM_MSG *p_data);
1094extern void bta_dm_disable_test_mode(tBTA_DM_MSG *p_data);
1095extern void bta_dm_execute_callback(tBTA_DM_MSG *p_data);
1096
VenkatRaghavan VijayaRaghavan76356ae2015-04-21 11:32:29 -07001097
1098extern void bta_dm_remove_all_acl(tBTA_DM_MSG *p_data);
The Android Open Source Project5738f832012-12-12 16:00:35 -08001099#endif /* BTA_DM_INT_H */