15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 1999-2012 Broadcom Corporation 45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * you may not use this file except in compliance with the License. 75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * You may obtain a copy of the License at: 85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * See the License for the specific language governing permissions and 155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * limitations under the License. 165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * this file contains the main Bluetooth Manager (BTM) internal 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * definitions. 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTM_BLE_INT_H 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_INT_H 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gki.h" 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "hcidefs.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btm_ble_api.h" 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btm_int.h" 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "smp_api.h" 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* scanning enable status */ 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_SCAN_ENABLE 0x01 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_SCAN_DISABLE 0x00 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* advertising enable status */ 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_ADV_ENABLE 0x01 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_ADV_DISABLE 0x00 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* use the high 4 bits unused by inquiry mode */ 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_SELECT_SCAN 0x20 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_NAME_REQUEST 0x40 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_OBSERVE 0x80 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_MAX_WL_ENTRY 1 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_AD_DATA_LEN 31 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_ENC_MASK 0x03 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_DUPLICATE_ENABLE 1 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_DUPLICATE_DISABLE 0 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_GAP_DISC_SCAN_INT 18 /* Interval(scan_int) = 11.25 ms= 0x0010 * 0.625 ms */ 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_GAP_DISC_SCAN_WIN 18 /* scan_window = 11.25 ms= 0x0010 * 0.625 ms */ 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_GAP_ADV_INT 512 /* Tgap(gen_disc) = 1.28 s= 512 * 0.625 ms */ 647fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_GAP_LIM_TOUT 180 /* Tgap(lim_timeout) = 180s max */ 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 677fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_GAP_ADV_FAST_INT_1 48 /* TGAP(adv_fast_interval1) = 30(used) ~ 60 ms = 48 *0.625 */ 687fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_GAP_ADV_FAST_INT_2 160 /* TGAP(adv_fast_interval2) = 100(used) ~ 150 ms = 160 * 0.625 ms */ 697fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_GAP_ADV_SLOW_INT 2048 /* Tgap(adv_slow_interval) = 1.28 s= 512 * 0.625 ms */ 707fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_GAP_ADV_DIR_MAX_INT 800 /* Tgap(dir_conn_adv_int_max) = 500 ms = 800 * 0.625 ms */ 717fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_GAP_ADV_DIR_MIN_INT 400 /* Tgap(dir_conn_adv_int_min) = 250 ms = 400 * 0.625 ms */ 727fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 737fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_GAP_FAST_ADV_TOUT 30 747fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_SEC_REQ_ACT_NONE 0 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_SEC_REQ_ACT_ENCRYPT 1 /* encrypt the link using current key or key refresh */ 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_SEC_REQ_ACT_PAIR 2 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_SEC_REQ_ACT_DISCARD 3 /* discard the sec request while encryption is started but not completed */ 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tBTM_BLE_SEC_REQ_ACT; 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 81ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BLE_STATIC_PRIVATE_MSB_MASK 0x3f 82ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BLE_RESOLVE_ADDR_MSB 0x40 /* most significant bit, bit7, bit6 is 01 to be resolvable random */ 83ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BLE_RESOLVE_ADDR_MASK 0xc0 /* bit 6, and bit7 */ 84ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_BLE_IS_RESOLVE_BDA(x) ((x[0] & BLE_RESOLVE_ADDR_MASK) == BLE_RESOLVE_ADDR_MSB) 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 867fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* LE scan activity bit mask, continue with LE inquiry bits */ 877fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_LE_SELECT_CONN_ACTIVE 0x40 /* selection connection is in progress */ 887fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_LE_OBSERVE_ACTIVE 0x80 /* observe is in progress */ 897fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 907fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* BLE scan activity mask checking */ 917fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_IS_SCAN_ACTIVE(x) ((x) & BTM_BLE_SCAN_ACTIVE_MASK) 927fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_IS_INQ_ACTIVE(x) ((x) & BTM_BLE_INQUIRY_MASK) 937fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_IS_OBS_ACTIVE(x) ((x) & BTM_LE_OBSERVE_ACTIVE) 947fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_IS_SEL_CONN_ACTIVE(x) ((x) & BTM_LE_SELECT_CONN_ACTIVE) 957fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 data_mask; 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_flags; 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 ad_data[BTM_BLE_AD_DATA_LEN]; 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_pad; 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTM_BLE_LOCAL_ADV_DATA; 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 inq_count; /* Used for determining if a response has already been */ 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* received for the current inquiry operation. (We do not */ 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* want to flood the caller with multiple responses from */ 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* the same device. */ 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN scan_rsp; 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBLE_BD_ADDR le_bda; 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tINQ_LE_BDADDR; 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_ADV_DATA_LEN_MAX 31 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_CACHE_ADV_DATA_MAX 62 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_VALID_PRAM(x, min, max) (((x) >= (min) && (x) <= (max)) || ((x) == BTM_BLE_CONN_PARAM_UNDEF)) 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 119a6ce7751d84218c193eb90d390aef23217b1737eWei Wang#define BTM_BLE_PRIVATE_ADDR_INT 900 /* 15 minutes minimum for 120a6ce7751d84218c193eb90d390aef23217b1737eWei Wang random address refreshing */ 121a6ce7751d84218c193eb90d390aef23217b1737eWei Wang 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 discoverable_mode; 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 connectable_mode; 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 scan_window; 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 scan_interval; 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 scan_type; /* current scan type: active or passive */ 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 adv_interval_min; 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 adv_interval_max; 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BLE_AFP afp; /* advertising filter policy */ 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BLE_SFP sfp; /* scanning filter policy */ 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 135ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBLE_ADDR_TYPE adv_addr_type; 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 evt_type; 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 adv_mode; 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBLE_BD_ADDR direct_bda; 139ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BOOLEAN directed_conn; 1407fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta BOOLEAN fast_adv_on; 1417fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta TIMER_LIST_ENT fast_adv_timer; 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 adv_len; 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 adv_data_cache[BTM_BLE_CACHE_ADV_DATA_MAX]; 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* inquiry BD addr database */ 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 num_bd_entries; 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 max_bd_entries; 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BLE_LOCAL_ADV_DATA adv_data; 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BLE_ADV_CHNL_MAP adv_chnl_map; 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT inq_timer_ent; 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN scan_rsp; 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 state; /* Current state that the inquiry process is in */ 157ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta INT8 tx_power; 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_BLE_INQ_CB; 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* random address resolving complete callback */ 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef void (tBTM_BLE_RESOLVE_CBACK) (void * match_rec, void *p); 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 164ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battatypedef void (tBTM_BLE_ADDR_CBACK) (BD_ADDR_PTR static_random, void *p); 165ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* random address management control block */ 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1697fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta tBLE_ADDR_TYPE own_addr_type; /* local device LE address type */ 1707fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta BD_ADDR private_addr; 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR random_bda; 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN busy; 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 index; 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BLE_RESOLVE_CBACK *p_resolve_cback; 175ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_BLE_ADDR_CBACK *p_generate_cback; 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project void *p; 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT raddr_timer_ent; 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_LE_RANDOM_CB; 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_BLE_MAX_BG_CONN_DEV_NUM 10 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 min_conn_int; 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 max_conn_int; 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 slave_latency; 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 supervision_tout; 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTM_LE_CONN_PRAMS; 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 191ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 192ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battatypedef struct 193ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 194ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BD_ADDR bd_addr; 195ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 attr; 196ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BOOLEAN is_connected; 197ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BOOLEAN in_use; 198ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta}tBTM_LE_BG_CONN_DEV; 199ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 200ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* white list using state as a bit mask */ 201ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_BLE_WL_IDLE 0 202ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_BLE_WL_INIT 1 203ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_BLE_WL_SCAN 2 204ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_BLE_WL_ADV 4 205ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battatypedef UINT8 tBTM_BLE_WL_STATE; 206ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 207ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* BLE connection state */ 208ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BLE_CONN_IDLE 0 209ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BLE_DIR_CONN 1 210ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BLE_BG_CONN 2 2116975b4d711142b885af479721cada448952c6b41Andre Eisenbach#define BLE_CONN_CANCEL 3 212ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battatypedef UINT8 tBTM_BLE_CONN_ST; 213ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 214ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battatypedef struct 215ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 216ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta void *p_param; 217ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta}tBTM_BLE_CONN_REQ; 2186975b4d711142b885af479721cada448952c6b41Andre Eisenbach 2197fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* LE state request */ 2207fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_INVALID 0 2217fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_CONN_ADV 1 2227fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_INIT 2 2237fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_MASTER 3 2247fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_SLAVE 4 2257fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_LO_DUTY_DIR_ADV 5 2267fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_HI_DUTY_DIR_ADV 6 2277fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_NON_CONN_ADV 7 2287fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_PASSIVE_SCAN 8 2297fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_ACTIVE_SCAN 9 2307fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_SCAN_ADV 10 2317fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_MAX 11 2327fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battatypedef UINT8 tBTM_BLE_STATE; 2337fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 2347fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_CONN_ADV_BIT 0x0001 2357fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_INIT_BIT 0x0002 2367fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_MASTER_BIT 0x0004 2377fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_SLAVE_BIT 0x0008 2387fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_LO_DUTY_DIR_ADV_BIT 0x0010 2397fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_HI_DUTY_DIR_ADV_BIT 0x0020 2407fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_NON_CONN_ADV_BIT 0x0040 2417fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_PASSIVE_SCAN_BIT 0x0080 2427fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_ACTIVE_SCAN_BIT 0x0100 2437fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_SCAN_ADV_BIT 0x0200 2447fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battatypedef UINT16 tBTM_BLE_STATE_MASK; 2457fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 2467fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_ALL_MASK 0x03ff 2477fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_ALL_ADV_MASK (BTM_BLE_STATE_CONN_ADV_BIT|BTM_BLE_STATE_LO_DUTY_DIR_ADV_BIT|BTM_BLE_STATE_HI_DUTY_DIR_ADV_BIT|BTM_BLE_STATE_SCAN_ADV_BIT) 2487fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_ALL_SCAN_MASK (BTM_BLE_STATE_PASSIVE_SCAN_BIT|BTM_BLE_STATE_ACTIVE_SCAN_BIT) 2497fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define BTM_BLE_STATE_ALL_CONN_MASK (BTM_BLE_STATE_MASTER_BIT|BTM_BLE_STATE_SLAVE_BIT) 2506975b4d711142b885af479721cada448952c6b41Andre Eisenbach 2516975b4d711142b885af479721cada448952c6b41Andre Eisenbachtypedef struct 2526975b4d711142b885af479721cada448952c6b41Andre Eisenbach{ 2536975b4d711142b885af479721cada448952c6b41Andre Eisenbach BOOLEAN in_use; 2546975b4d711142b885af479721cada448952c6b41Andre Eisenbach BOOLEAN to_add; 2556975b4d711142b885af479721cada448952c6b41Andre Eisenbach BD_ADDR bd_addr; 2566975b4d711142b885af479721cada448952c6b41Andre Eisenbach UINT8 attr; 2576975b4d711142b885af479721cada448952c6b41Andre Eisenbach}tBTM_BLE_WL_OP; 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define BLE Device Management control structure 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2627fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta UINT8 scan_activity; /* LE scan activity mask */ 2637fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /***************************************************** 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** BLE Inquiry 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *****************************************************/ 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BLE_INQ_CB inq_var; 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2697fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta /* observer callback and timer */ 2707fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta tBTM_INQ_RESULTS_CB *p_obs_results_cb; 2717fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta tBTM_CMPL_CB *p_obs_cmpl_cb; 2727fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta TIMER_LIST_ENT obs_timer_ent; 2737fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* background connection procedure cb value */ 2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BLE_CONN_TYPE bg_conn_type; 2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 scan_int; 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 scan_win; 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BLE_SEL_CBACK *p_select_cback; 2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT scan_param_idle_timer; 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 281ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta /* white list information */ 282ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 num_empty_filter; /* Number of entries in white list */ 283ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 max_filter_entries; /* Maximum number of entries that can be stored */ 284ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_BLE_WL_STATE wl_state; 285ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 bg_dev_num; 286ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_LE_BG_CONN_DEV bg_dev_list[BTM_BLE_MAX_BG_CONN_DEV_NUM]; 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 288ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BUFFER_Q conn_pending_q; 289ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_BLE_CONN_ST conn_state; 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* random address management control block */ 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_LE_RANDOM_CB addr_mgnt_cb; 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN enabled; 29516fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadham BOOLEAN privacy; /* local privacy enabled or disabled */ 2966975b4d711142b885af479721cada448952c6b41Andre Eisenbach tBTM_BLE_WL_OP wl_op_q[BTM_BLE_MAX_BG_CONN_DEV_NUM]; 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef BTM_BLE_PC_ADV_TEST_MODE 2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BLE_SCAN_REQ_CBACK *p_scan_req_cback; 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3027fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta /* current BLE link state */ 3037fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta tBTM_BLE_STATE_MASK cur_states; /* bit mask of tBTM_BLE_STATE */ 3047fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_BLE_CB; 3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef __cplusplus 3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern "C" { 3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 3105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_timeout(TIMER_LIST_ENT *p_tle); 3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_process_adv_pkt (UINT8 *p); 3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_proc_scan_rsp_rpt (UINT8 *p); 3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_STATUS btm_ble_read_remote_name(BD_ADDR remote_bda, tBTM_INQ_INFO *p_cur, tBTM_CMPL_CB *p_cb); 3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_ble_cancel_remote_name(BD_ADDR remote_bda); 3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_STATUS btm_ble_set_discoverability(UINT16 combined_mode); 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_STATUS btm_ble_set_connectability(UINT16 combined_mode); 3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_STATUS btm_ble_start_inquiry (UINT8 mode, UINT8 duration); 320ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void btm_ble_dir_adv_tout(void); 3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3227fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battaextern void btm_ble_stop_scan(); 3237fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battaextern void btm_ble_stop_inquiry(void); 3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_init (void); 325ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void btm_ble_connected (UINT8 *bda, UINT16 handle, UINT8 enc_mode, UINT8 role, tBLE_ADDR_TYPE addr_type, BOOLEAN addr_matched); 3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_read_remote_features_complete(UINT8 *p); 3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_write_adv_enable_complete(UINT8 * p); 328ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void btm_ble_conn_complete(UINT8 *p, UINT16 evt_len); 3297fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battaextern void btm_read_ble_local_supported_states_complete(UINT8 *p, UINT16 evt_len); 330ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern tBTM_BLE_CONN_ST btm_ble_get_conn_st(void); 331ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void btm_ble_set_conn_st(tBTM_BLE_CONN_ST new_st); 332a6ce7751d84218c193eb90d390aef23217b1737eWei Wangextern UINT8 *btm_ble_build_adv_data(tBTM_BLE_AD_MASK *p_data_mask, UINT8 **p_dst, 333a6ce7751d84218c193eb90d390aef23217b1737eWei Wang tBTM_BLE_ADV_DATA *p_data); 3347fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battaextern tBTM_STATUS btm_ble_start_adv(void); 3357fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battaextern tBTM_STATUS btm_ble_stop_adv(void); 3367fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battaextern tBTM_STATUS btm_ble_start_scan (UINT8 filter_enb); 33724adb37e4106bf8544c7729d34451fdf2777c4dcPriti Agheraextern void btm_ble_create_ll_conn_complete (UINT8 status); 338ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 3395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* LE security function from btm_sec.c */ 340ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#if SMP_INCLUDED == TRUE 3415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_link_sec_check(BD_ADDR bd_addr, tBTM_LE_AUTH_REQ auth_req, tBTM_BLE_SEC_REQ_ACT *p_sec_req_act); 3425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_ltk_request_reply(BD_ADDR bda, BOOLEAN use_stk, BT_OCTET16 stk); 3435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT8 btm_proc_smp_cback(tSMP_EVT event, BD_ADDR bd_addr, tSMP_EVT_DATA *p_data); 3445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_STATUS btm_ble_set_encryption (BD_ADDR bd_addr, void *p_ref_data, UINT8 link_role); 3455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_ltk_request(UINT16 handle, UINT8 rand[8], UINT16 ediv); 3467fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battaextern tBTM_STATUS btm_ble_start_encrypt(BD_ADDR bda, BOOLEAN use_stk, BT_OCTET16 stk); 3475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_link_encrypted(BD_ADDR bd_addr, UINT8 encr_enable); 3485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 3495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* LE device management functions */ 3515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_reset_id( void ); 3525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* security related functions */ 3545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_increment_sign_ctr(BD_ADDR bd_addr, BOOLEAN is_local ); 3555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_get_local_div (BD_ADDR bd_addr, UINT16 *p_div); 3565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_ble_get_enc_key_type(BD_ADDR bd_addr, UINT8 *p_key_types); 3575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 358d8e52271f693c969266289e0e2b785c2de5df031Mike J. Chenextern void btm_ble_test_command_complete(UINT8 *p); 3595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_rand_enc_complete (UINT8 *p, UINT16 op_code, tBTM_RAND_ENC_CB *p_enc_cplt_cback); 36016fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadham 3615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_save_le_key(BD_ADDR bd_addr, tBTM_LE_KEY_TYPE key_type, tBTM_LE_KEY_VALUE *p_keys, BOOLEAN pass_to_application); 3625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_update_sec_key_size(BD_ADDR bd_addr, UINT8 enc_key_size); 3635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT8 btm_ble_read_sec_key_size(BD_ADDR bd_addr); 3645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* white list function */ 366b5c2cdc900b368a45401cadb6fa00cd2ce574d61Nitin Aroraextern BOOLEAN btm_update_dev_to_white_list(BOOLEAN to_add, BD_ADDR bd_addr); 367b5c2cdc900b368a45401cadb6fa00cd2ce574d61Nitin Aroraextern BOOLEAN btm_update_bg_conn_list(BOOLEAN to_add, BD_ADDR bd_addr); 3685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_update_scanner_filter_policy(tBTM_BLE_SFP scan_policy); 369b203d478f4835f5e35217874a1787e1914328f7cAndre Eisenbachextern void btm_update_scan_filter_policy(tBTM_BLE_AFP adv_policy); 3705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_clear_white_list (void); 3715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* background connection function */ 3735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_suspend_bg_conn(void); 374ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern BOOLEAN btm_ble_resume_bg_conn(void); 3755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_initiate_select_conn(BD_ADDR bda); 3765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_ble_start_auto_conn(BOOLEAN start); 3775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_ble_start_select_conn(BOOLEAN start,tBTM_BLE_SEL_CBACK *p_select_cback); 3785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_ble_renew_bg_conn_params(BOOLEAN add, BD_ADDR bd_addr); 3795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT8 btm_ble_count_unconn_dev_in_whitelist(void); 380ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void btm_write_dir_conn_wl(BD_ADDR target_addr); 38124adb37e4106bf8544c7729d34451fdf2777c4dcPriti Agheraextern void btm_ble_update_mode_operation(UINT8 link_role, BD_ADDR bda, UINT8 status); 3827fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battaextern BOOLEAN btm_execute_wl_dev_operation(void); 383ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 384ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* direct connection utility */ 385ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern BOOLEAN btm_send_pending_direct_conn(void); 386ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void btm_ble_enqueue_direct_conn_req(void *p_param); 3875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* BLE address management */ 389a6ce7751d84218c193eb90d390aef23217b1737eWei Wangextern void btm_gen_resolvable_private_addr (void *p_cmd_cplt_cback); 390ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void btm_gen_non_resolvable_private_addr (tBTM_BLE_ADDR_CBACK *p_cback, void *p); 3915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_resolve_random_addr(BD_ADDR random_bda, tBTM_BLE_RESOLVE_CBACK * p_cback, void *p); 392ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void btm_ble_update_reconnect_address(BD_ADDR bd_addr); 393a6ce7751d84218c193eb90d390aef23217b1737eWei Wangextern void btm_gen_resolve_paddr_low(tBTM_RAND_ENC *p); 394a6ce7751d84218c193eb90d390aef23217b1737eWei Wang 395a6ce7751d84218c193eb90d390aef23217b1737eWei Wangextern void btm_ble_multi_adv_configure_rpa (tBTM_BLE_MULTI_ADV_INST *p_inst); 396a6ce7751d84218c193eb90d390aef23217b1737eWei Wangextern void btm_ble_multi_adv_init(void); 39716fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadhamextern void* btm_ble_multi_adv_get_ref(UINT8 inst_id); 39816fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadhamextern void btm_ble_multi_adv_cleanup(void); 399a6ce7751d84218c193eb90d390aef23217b1737eWei Wangextern void btm_ble_multi_adv_reenable(UINT8 inst_id); 400ed534e330bf63c72e778fc8daae09ddd63c395b2Wei Wangextern void btm_ble_multi_adv_enb_privacy(BOOLEAN enable); 4014a7ad9be81cc2b515502f2c1fb1b7ec7e3104146Satya Callojiextern char btm_ble_map_adv_tx_power(int tx_power_index); 40216fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadhamextern void btm_ble_batchscan_init(void); 403adb7bb50469db992969295792a7ba3b73f9e24b3Satya Callojiextern void btm_ble_batchscan_cleanup(void); 4041a9247a1229aa65b3d1dce16426177bc5828e54dSatya Callojiextern void btm_ble_adv_filter_init(void); 40516fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadhamextern void btm_ble_adv_filter_cleanup(void); 4067fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battaextern BOOLEAN btm_ble_topology_check(tBTM_BLE_STATE_MASK request); 4077fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battaextern BOOLEAN btm_ble_clear_topology_mask(tBTM_BLE_STATE_MASK request_state); 4087fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Battaextern BOOLEAN btm_ble_set_topology_mask(tBTM_BLE_STATE_MASK request_state); 4095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 410ed534e330bf63c72e778fc8daae09ddd63c395b2Wei Wang/* BLE address mapping with CS feature */ 411ed534e330bf63c72e778fc8daae09ddd63c395b2Wei Wangextern BOOLEAN btm_public_addr_to_random_pseudo(BD_ADDR bd_addr, UINT8 *p_addr_type); 412ed534e330bf63c72e778fc8daae09ddd63c395b2Wei Wangextern BOOLEAN btm_random_pseudo_to_public(BD_ADDR random_pseudo, UINT8 *p_static_addr_type); 413ed534e330bf63c72e778fc8daae09ddd63c395b2Wei Wangextern void btm_ble_refresh_rra(BD_ADDR pseudo_bda, BD_ADDR rra); 414ed534e330bf63c72e778fc8daae09ddd63c395b2Wei Wang 4155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_BLE_CONFORMANCE_TESTING == TRUE 4165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBT_API extern void btm_ble_set_no_disc_if_pair_fail (BOOLEAN disble_disc); 4175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBT_API extern void btm_ble_set_test_mac_value (BOOLEAN enable, UINT8 *p_test_mac_val); 4185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBT_API extern void btm_ble_set_test_local_sign_cntr_value(BOOLEAN enable, UINT32 test_local_sign_cntr); 419ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi BattaBT_API extern void btm_set_random_address(BD_ADDR random_bda); 420a6ce7751d84218c193eb90d390aef23217b1737eWei WangBT_API extern void btm_ble_set_keep_rfu_in_auth_req(BOOLEAN keep_rfu); 4215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 4225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef __cplusplus 4255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 4275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 429