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#ifndef BTM_INT_H 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_INT_H 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h" 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gki.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "hcidefs.h" 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if RFCOMM_INCLUDED == TRUE 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "rfcdefs.h" 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btm_api.h" 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BLE_INCLUDED == TRUE) 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btm_ble_int.h" 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (SMP_INCLUDED == TRUE) 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "smp_api.h" 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_MAX_LOC_BD_NAME_LEN > 0 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef char tBTM_LOC_BD_NAME[BTM_MAX_LOC_BD_NAME_LEN + 1]; 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_IS_CONNECTED(bda) (btm_bda_to_acl (bda) != NULL) 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for Server Channel Number (SCN) management 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_MAX_SCN PORT_MAX_RFC_PORTS 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 55a934f018b6c6a7eda4662a60f2f04828afc3ab77Zhihai Xu/* Definition for number of the remote device role saved 56a934f018b6c6a7eda4662a60f2f04828afc3ab77Zhihai Xu*/ 57a934f018b6c6a7eda4662a60f2f04828afc3ab77Zhihai Xu#define BTM_ROLE_DEVICE_NUM 4 58a934f018b6c6a7eda4662a60f2f04828afc3ab77Zhihai Xu 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define masks for supported and exception 2.0 ACL packet types 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_SUPPORTED_PKTS_MASK (HCI_PKT_TYPES_MASK_DM1 | \ 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_PKT_TYPES_MASK_DH1 | \ 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_PKT_TYPES_MASK_DM3 | \ 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_PKT_TYPES_MASK_DH3 | \ 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_PKT_TYPES_MASK_DM5 | \ 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_PKT_TYPES_MASK_DH5) 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_EXCEPTION_PKTS_MASK (HCI_PKT_TYPES_MASK_NO_2_DH1 | \ 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_PKT_TYPES_MASK_NO_3_DH1 | \ 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_PKT_TYPES_MASK_NO_2_DH3 | \ 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_PKT_TYPES_MASK_NO_3_DH3 | \ 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_PKT_TYPES_MASK_NO_2_DH5 | \ 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_PKT_TYPES_MASK_NO_3_DH5) 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 753aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach#define BTM_EPR_AVAILABLE(p) ((HCI_ATOMIC_ENCRYPT_SUPPORTED((p)->peer_lmp_features[HCI_EXT_FEATURES_PAGE_0]) && \ 763aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach HCI_ATOMIC_ENCRYPT_SUPPORTED(btm_cb.devcb.local_lmp_features[HCI_EXT_FEATURES_PAGE_0])) \ 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ? TRUE : FALSE) 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_IS_BRCM_CONTROLLER() (btm_cb.devcb.local_version.manufacturer == LMP_COMPID_BROADCOM) 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the ACL Management control structure 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 hci_handle; 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 pkt_types_mask; 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 restore_pkt_types; /* when coming in/out of SCO connection restore the packet types */ 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 clock_offset; 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR remote_addr; 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project DEV_CLASS remote_dc; 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_NAME remote_name; 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 manufacturer; 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 lmp_subversion; 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 link_super_tout; 963aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach BD_FEATURES peer_lmp_features[HCI_EXT_FEATURES_PAGE_MAX + 1]; /* Peer LMP Extended features mask table for the device */ 973aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach UINT8 num_read_pages; 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 lmp_version; 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN in_use; 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 link_role; 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN link_up_issued; /* True if busy_level link up has been issued */ 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_SWKEY_STATE_IDLE 0 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_SWKEY_STATE_MODE_CHANGE 1 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_SWKEY_STATE_ENCRYPTION_OFF 2 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_SWKEY_STATE_SWITCHING 3 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_SWKEY_STATE_ENCRYPTION_ON 4 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_SWKEY_STATE_IN_PROGRESS 5 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 switch_role_state; 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 change_key_state; 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_ENCRYPT_STATE_IDLE 0 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_ENCRYPT_STATE_ENCRYPT_OFF 1 /* encryption turning off */ 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_ENCRYPT_STATE_TEMP_FUNC 2 /* temporarily off for change link key or role switch */ 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ACL_ENCRYPT_STATE_ENCRYPT_ON 3 /* encryption turning on */ 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 encrypt_state; /* overall BTM encryption state */ 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_PWR_MGR_INCLUDED == FALSE 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mode; 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_PWR_MGR_INCLUDED */ 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BLE_INCLUDED == TRUE 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 is_le_link; 124ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BD_ADDR conn_addr; /* local device address used for this connection */ 125ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 conn_addr_type; /* local device address type for this connection */ 126ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BD_ADDR active_remote_addr; /* remote address used on this connection */ 127ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 active_remote_addr_type; /* local device address type for this connection */ 1283aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach BD_FEATURES peer_le_features; /* Peer LE Used features mask for the device */ 129ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tACL_CONN; 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************** 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** TIMER Definitions 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project******************************************************/ 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define TT_DEV_RESET 1 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define TT_DEV_RLN 2 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define TT_DEV_RLNKP 4 /* Read Link Policy Settings */ 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the Device Management control structure 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_DEV_STATUS_CB *p_dev_status_cb; /* Device status change callback */ 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_VS_EVT_CB *p_vend_spec_cb[BTM_MAX_VSE_CALLBACKS]; /* Register for vendor specific events */ 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_stored_link_key_cmpl_cb; /* Read/Write/Delete stored link key */ 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT reset_timer; 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_reset_cmpl_cb; /* Callback function to be called */ 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* when startup of the device is done */ 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT rln_timer; 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_rln_cmpl_cb; /* Callback function to be called when */ 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* read local name function complete */ 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT rlinkp_timer; 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_rlinkp_cmpl_cb; /* Callback function to be called when */ 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* read link policy function completes */ 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT rssi_timer; 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_rssi_cmpl_cb; /* Callback function to be called when */ 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* read rssi function completes */ 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT lnk_quality_timer; 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_lnk_qual_cmpl_cb;/* Callback function to be called when */ 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* read link quality function completes */ 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT txpwer_timer; 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_txpwer_cmpl_cb; /* Callback function to be called when */ 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* read inq tx power function completes */ 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT qossu_timer; 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_qossu_cmpl_cb; /* Callback function to be called when */ 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* qos setup function completes */ 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_ROLE_SWITCH_CMPL switch_role_ref_data; 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_switch_role_cb; /* Callback function to be called when */ 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* requested switch role is completed */ 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CHANGE_KEY_CMPL chg_link_key_ref_data; 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_chg_link_key_cb; /* Callback function to be called when */ 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* change of link key is completed */ 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT tx_power_timer; 1823aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach tBTM_CMPL_CB *p_tx_power_cmpl_cb;/* Callback function to be called */ 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR local_addr; /* BD_ADDR of the local device */ 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_VERSION_INFO local_version; /* Local Version Information */ 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project DEV_CLASS dev_class; /* Local device class */ 1873aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach 1883aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach /* Local LMP Extended features mask table for the device */ 1893aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach BD_FEATURES local_lmp_features[HCI_EXT_FEATURES_PAGE_MAX + 1]; 1903aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BLE_INCLUDED == TRUE 1923aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach BD_ADDR read_tx_pwr_addr; /* read TX power target address */ 1933aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach BD_FEATURES local_le_features; /* Local LE Supported features mask for the device */ 1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1953aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach tBTM_BLE_LOCAL_ID_KEYS id_keys; /* local BLE ID keys */ 1963aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach BT_OCTET16 er; /* BLE encryption key */ 1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_BLE_CONFORMANCE_TESTING == TRUE 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN no_disc_if_pair_fail; 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN enable_test_mac_val; 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_OCTET8 test_mac; 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN enable_test_local_sign_cntr; 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 test_local_sign_cntr; 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2063aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach#if BLE_INCLUDED == TRUE 2073aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach tBTM_CMPL_CB *p_le_test_cmd_cmpl_cb; /* Callback function to be called when 2083aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach LE test mode command has been sent successfully */ 2093aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach#endif 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BLE_INCLUDED */ 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_DEV_STATE_WAIT_RESET_CMPLT 0 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_DEV_STATE_WAIT_AFTER_RESET 1 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_DEV_STATE_READY 2 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 state; 2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_IO_CAP loc_io_caps; /* IO capability of the local device */ 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN loc_auth_req; /* the auth_req flag */ 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_FEATURES brcm_features; /* Broadcom specific features bit mask */ 2213aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach 2223aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach#define BTM_RE_READ_1ST_PAGE 0x01 /* Set it if you set at least one of "..._HOST_MAY_SUPP_..." bits */ 2233aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach#define BTM_HOST_MAY_SUPP_SSP 0x02 2243aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach#define BTM_HOST_MAY_SUPP_LE 0x04 2253aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach#define BTM_HOST_MAY_SUPP_SIMULT_BR_LE 0x08 2263aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach UINT8 lmp_features_host_may_support; /* The flags of LMP features host may support via BR/EDR ctrlr + BTM_RE_READ_1ST_PAGE */ 2279d140a9dc432e457a0437920d5f84c22e3baea0dGanesh Ganapathi Batta UINT8 supported_cmds[HCI_NUM_SUPP_COMMANDS_BYTES]; /* Supported Commands bit field */ 2283aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_DEVCB; 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the structures and constants used for inquiry 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions of limits for inquiries */ 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_PER_INQ_MIN_MAX_PERIOD HCI_PER_INQ_MIN_MAX_PERIOD 2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_PER_INQ_MAX_MAX_PERIOD HCI_PER_INQ_MAX_MAX_PERIOD 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_PER_INQ_MIN_MIN_PERIOD HCI_PER_INQ_MIN_MIN_PERIOD 2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_PER_INQ_MAX_MIN_PERIOD HCI_PER_INQ_MAX_MIN_PERIOD 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_MAX_INQUIRY_LENGTH HCI_MAX_INQUIRY_LENGTH 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_MIN_INQUIRY_LEN 0x01 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_MIN_INQ_TX_POWER -70 2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_MAX_INQ_TX_POWER 20 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_USE_INQ_RESULTS_FILTER == TRUE 2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 inq_count; /* Used for determining if a response has already been */ 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* received for the current inquiry operation. (We do not */ 2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* want to flood the caller with multiple responses from */ 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* the same device. */ 2535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr; 2545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tINQ_BDADDR; 2555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 time_of_resp; 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 inq_count; /* "timestamps" the entry with a particular inquiry count */ 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* Used for determining if a response has already been */ 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* received for the current inquiry operation. (We do not */ 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* want to flood the caller with multiple responses from */ 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* the same device. */ 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_INQ_INFO inq_info; 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN in_use; 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BLE_INCLUDED == TRUE) 2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN scan_rsp; 2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tINQ_DB_ENT; 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 274f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81Nitin Aroraenum 275f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81Nitin Arora{ 276f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81Nitin Arora INQ_NONE, 277f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81Nitin Arora INQ_LE_OBSERVE, 278f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81Nitin Arora INQ_GENERAL 279f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81Nitin Arora}; 280f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81Nitin Aroratypedef UINT8 tBTM_INQ_TYPE; 281f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81Nitin Arora 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_remname_cmpl_cb; 2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_EXT_RMT_NAME_TIMEOUT 40 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT rmt_name_timer_ent; 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 discoverable_mode; 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 connectable_mode; 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 page_scan_window; 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 page_scan_period; 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 inq_scan_window; 2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 inq_scan_period; 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 inq_scan_type; 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 page_scan_type; /* current page scan type */ 299f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81Nitin Arora tBTM_INQ_TYPE scan_type; 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR remname_bda; /* Name of bd addr for active remote name request */ 3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_RMT_NAME_INACTIVE 0 3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_RMT_NAME_EXT 0x1 /* Initiated through API */ 3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_RMT_NAME_SEC 0x2 /* Initiated internally by security manager */ 3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_RMT_NAME_INQ 0x4 /* Remote name initiated internally by inquiry */ 3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN remname_active; /* State of a remote name request by external API */ 3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_inq_cmpl_cb; 3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_INQ_RESULTS_CB *p_inq_results_cb; 310f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81Nitin Arora tBTM_CMPL_CB *p_inq_ble_cmpl_cb; /*completion callback exclusively for LE Observe*/ 311f4471c7e6ca7a0bd4846b2fe4fbe78d79ef37b81Nitin Arora tBTM_INQ_RESULTS_CB *p_inq_ble_results_cb;/*results callback exclusively for LE observe*/ 3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_inqfilter_cmpl_cb; /* Called (if not NULL) after inquiry filter completed */ 3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_INQ_DB_CHANGE_CB *p_inq_change_cb; /* Inquiry database changed callback */ 3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 inq_counter; /* Counter incremented each time an inquiry completes */ 3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* Used for determining whether or not duplicate devices */ 3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* have responded to the same inquiry */ 3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT inq_timer_ent; 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_USE_INQ_RESULTS_FILTER == TRUE 3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tINQ_BDADDR *p_bd_db; /* Pointer to memory that holds bdaddrs */ 3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 num_bd_entries; /* Number of entries in database */ 3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 max_bd_entries; /* Maximum number of entries that can be stored */ 3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 3235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tINQ_DB_ENT inq_db[BTM_INQ_DB_SIZE]; 3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_INQ_PARMS inqparms; /* Contains the parameters for the current inquiry */ 3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_INQUIRY_CMPL inq_cmpl_info; /* Status and number of responses from the last inquiry */ 3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 per_min_delay; /* Current periodic minimum delay */ 3285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 per_max_delay; /* Current periodic maximum delay */ 3295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN inqfilt_active; 3305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 pending_filt_complete_event; /* to take care of btm_event_filter_complete corresponding to */ 3315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* inquiry that has been cancelled*/ 3325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 inqfilt_type; /* Contains the inquiry filter type (BD ADDR, COD, or Clear) */ 3335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_INQ_INACTIVE_STATE 0 3355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_INQ_CLR_FILT_STATE 1 /* Currently clearing the inquiry filter preceeding the inquiry request */ 3365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* (bypassed if filtering is not used) */ 3375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_INQ_SET_FILT_STATE 2 /* Sets the new filter (or turns off filtering) in this state */ 3385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_INQ_ACTIVE_STATE 3 /* Actual inquiry or periodic inquiry is in progress */ 3395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_INQ_REMNAME_STATE 4 /* Remote name requests are active */ 3405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 state; /* Current state that the inquiry process is in */ 3425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 inq_active; /* Bit Mask indicating type of inquiry is active */ 3435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN no_inc_ssp; /* TRUE, to stop inquiry on incoming SSP */ 3447f3e42943b834ff0f556cd5c063a896f54d53167Matthew Xie#if (defined(BTA_HOST_INTERLEAVE_SEARCH) && BTA_HOST_INTERLEAVE_SEARCH == TRUE) 3457f3e42943b834ff0f556cd5c063a896f54d53167Matthew Xie btm_inq_state next_state; /*interleaving state to determine next mode to be inquired*/ 3467f3e42943b834ff0f556cd5c063a896f54d53167Matthew Xie#endif 3475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_INQUIRY_VAR_ST; 3485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* The MSB of the clock offset field indicates that the offset is valid if TRUE */ 3505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_CLOCK_OFFSET_VALID 0x8000 3515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the structures needed by security management 3535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 3545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_INVALID_HANDLE 0xFFFF 3565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 *BTM_BD_NAME_PTR; /* Pointer to Device name */ 3585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Security callback is called by this unit when security 3605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** procedures are completed. Parameters are 3615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** BD Address of remote 3625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Result of the operation 3635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 3645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef tBTM_SEC_CBACK tBTM_SEC_CALLBACK; 3655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef void (tBTM_SCO_IND_CBACK) (UINT16 sco_inx) ; 3675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* MACROs to convert from SCO packet types mask to ESCO and back */ 3695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SCO_PKT_TYPE_MASK ( HCI_PKT_TYPES_MASK_HV1 \ 3705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project | HCI_PKT_TYPES_MASK_HV2 \ 3715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project | HCI_PKT_TYPES_MASK_HV3) 3725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Mask defining only the SCO types of an esco packet type */ 3745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ESCO_PKT_TYPE_MASK ( HCI_ESCO_PKT_TYPES_MASK_HV1 \ 3755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project | HCI_ESCO_PKT_TYPES_MASK_HV2 \ 3765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project | HCI_ESCO_PKT_TYPES_MASK_HV3) 3775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SCO_2_ESCO(scotype) ((UINT16)(((scotype) & BTM_SCO_PKT_TYPE_MASK) >> 5)) 3795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_ESCO_2_SCO(escotype) ((UINT16)(((escotype) & BTM_ESCO_PKT_TYPE_MASK) << 5)) 3805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define masks for supported and exception 2.0 SCO packet types 3825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 3835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SCO_SUPPORTED_PKTS_MASK (HCI_ESCO_PKT_TYPES_MASK_HV1 | \ 3845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_ESCO_PKT_TYPES_MASK_HV2 | \ 3855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_ESCO_PKT_TYPES_MASK_HV3 | \ 3865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_ESCO_PKT_TYPES_MASK_EV3 | \ 3875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_ESCO_PKT_TYPES_MASK_EV4 | \ 3885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_ESCO_PKT_TYPES_MASK_EV5) 3895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SCO_EXCEPTION_PKTS_MASK (HCI_ESCO_PKT_TYPES_MASK_NO_2_EV3 | \ 3915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_ESCO_PKT_TYPES_MASK_NO_3_EV3 | \ 3925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_ESCO_PKT_TYPES_MASK_NO_2_EV5 | \ 3935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project HCI_ESCO_PKT_TYPES_MASK_NO_3_EV5) 3945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SCO_ROUTE_UNKNOWN 0xff 3975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the structure that contains (e)SCO data */ 3995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 4005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_ESCO_CBACK *p_esco_cback; /* Callback for eSCO events */ 4025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_ESCO_PARAMS setup; 4035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_ESCO_DATA data; /* Connection complete information */ 4045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 hci_status; 4055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_ESCO_INFO; 4065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the structure used for SCO Management 4085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 4095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 4105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_ESCO_INFO esco; /* Current settings */ 4125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_SCO_HCI_INCLUDED == TRUE 4135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BUFFER_Q xmit_data_q; /* SCO data transmitting queue */ 4145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 4155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SCO_CB *p_conn_cb; /* Callback for when connected */ 4165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SCO_CB *p_disc_cb; /* Callback for when disconnect */ 4175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 state; /* The state of the SCO link */ 4185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 hci_handle; /* HCI Handle */ 4195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_orig; /* TRUE if the originator */ 4205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN rem_bd_known; /* TRUE if remote BD addr known */ 4215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tSCO_CONN; 4235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SCO Management control block */ 4255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 4265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SCO_IND_CBACK *app_sco_ind_cb; 4285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_SCO_HCI_INCLUDED == TRUE 4295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SCO_DATA_CB *p_data_cb; /* Callback for SCO data over HCI */ 4305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 xmit_window_size; /* Total SCO window in bytes */ 4315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 4325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSCO_CONN sco_db[BTM_MAX_SCO_LINKS]; 4335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_ESCO_PARAMS def_esco_parms; 4345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR xfer_addr; 4355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 sco_disc_reason; 4365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN esco_supported; /* TRUE if 1.2 cntlr AND supports eSCO links */ 4375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SCO_TYPE desired_sco_mode; 4385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SCO_TYPE xfer_sco_type; 4395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SCO_PCM_PARAM sco_pcm_param; 4405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SCO_CODEC_TYPE codec_in_use; /* None, CVSD, MSBC, etc. */ 4415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_SCO_HCI_INCLUDED == TRUE 4425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SCO_ROUTE_TYPE sco_path; 4435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 4445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tSCO_CB; 4465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_SCO_INCLUDED == TRUE 4495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_set_sco_ind_cback( tBTM_SCO_IND_CBACK *sco_ind_cb ); 4505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_accept_sco_link(UINT16 sco_inx, tBTM_ESCO_PARAMS *p_setup, 4515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SCO_CB *p_conn_cb, tBTM_SCO_CB *p_disc_cb); 4525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_reject_sco_link(UINT16 sco_inx ); 4535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sco_chk_pend_rolechange (UINT16 hci_handle); 4545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 4555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btm_accept_sco_link(sco_inx, p_setup, p_conn_cb, p_disc_cb) 4565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btm_reject_sco_link(sco_inx) 4575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btm_set_sco_ind_cback(sco_ind_cb) 4585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btm_sco_chk_pend_rolechange(hci_handle) 4595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_SCO_INCLUDED */ 4605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* 4625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Define structure for Security Service Record. 4635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** A record exists for each service registered with the Security Manager 4645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 4655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 4665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 mx_proto_id; /* Service runs over this multiplexer protocol */ 4685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 orig_mx_chan_id; /* Channel on the multiplexer protocol */ 4695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 term_mx_chan_id; /* Channel on the multiplexer protocol */ 4705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 psm; /* L2CAP PSM value */ 4715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 security_flags; /* Bitmap of required security features */ 4725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 service_id; /* Passed in authorization callback */ 4735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (L2CAP_UCD_INCLUDED == TRUE) 4745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 ucd_security_flags; /* Bitmap of required security features for UCD */ 4755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 4765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_SEC_SERVICE_NAME_LEN > 0 4775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 orig_service_name[BTM_SEC_SERVICE_NAME_LEN + 1]; 4785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 term_service_name[BTM_SEC_SERVICE_NAME_LEN + 1]; 4795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 4805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_SEC_SERV_REC; 4815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BLE_INCLUDED == TRUE 4835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* LE Security information of device in Slave Role */ 4845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 4855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 4865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_OCTET16 irk; /* peer diverified identity root */ 4875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_OCTET16 ltk; /* peer long term key */ 4885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_OCTET16 csrk; /* peer SRK peer device used to secured sign local data */ 4895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_OCTET8 rand; /* random vector for LTK generation */ 4915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 ediv; /* LTK diversifier of this slave device */ 4925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 div; /* local DIV to generate local LTK=d1(ER,DIV,0) and CSRK=d1(ER,DIV,1) */ 4935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sec_level; /* local pairing security level */ 4945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 key_size; /* key size of the LTK delivered to peer device */ 4955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 srk_sec_level; /* security property of peer SRK for this device */ 4965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 local_csrk_sec_level; /* security property of local CSRK for this device */ 4975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 counter; /* peer sign counter for verifying rcv signed cmd */ 4995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 local_counter; /* local sign counter for sending signed write cmd*/ 5005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTM_SEC_BLE_KEYS; 5015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BLE_INCLUDED */ 5035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 5055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBLE_ADDR_TYPE ble_addr_type; /* LE device type: public or random address */ 507ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBLE_ADDR_TYPE static_addr_type; /* static address type */ 5085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR static_addr; /* static address */ 5095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if SMP_INCLUDED == TRUE 5115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_LE_KEY_TYPE key_type; /* bit mask of valid key types in record */ 5125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_BLE_KEYS keys; /* LE device security info in slave rode */ 5135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 5145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_SEC_BLE; 5155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* 5175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Define structure for Security Device Record. 5185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** A record exists for each device authenticated with this device 5195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 5205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 5215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 5225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_SERV_REC *p_cur_service; 5235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_CALLBACK *p_callback; 5245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project void *p_ref_data; 5255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 timestamp; /* Timestamp of the last connection */ 5265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 trusted_mask[BTM_SEC_SERVICE_ARRAY_SIZE]; /* Bitwise OR of trusted services */ 5275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 hci_handle; /* Handle to connection when exists */ 5285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 clock_offset; /* Latest known clock offset */ 5295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr; /* BD_ADDR of the device */ 5305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project DEV_CLASS dev_class; /* DEV_CLASS of the device */ 5315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project LINK_KEY link_key; /* Device link key */ 5325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 533ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_SEC_AUTHORIZED BTM_SEC_FLAG_AUTHORIZED /* 0x01 */ 534ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_SEC_AUTHENTICATED BTM_SEC_FLAG_AUTHENTICATED /* 0x02 */ 535ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_SEC_ENCRYPTED BTM_SEC_FLAG_ENCRYPTED /* 0x04 */ 5365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_NAME_KNOWN 0x08 537ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_SEC_LINK_KEY_KNOWN BTM_SEC_FLAG_LKEY_KNOWN /* 0x10 */ 5385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_LINK_KEY_AUTHED 0x20 5395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_ROLE_SWITCHED 0x40 5405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_IN_USE 0x80 5415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sec_flags; /* Current device security state */ 543ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 544ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTM_BD_NAME sec_bd_name; /* User friendly name of the device. (may be truncated to save space in dev_rec table) */ 5453aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach BD_FEATURES features[HCI_EXT_FEATURES_PAGE_MAX + 1]; /* Features supported by the device */ 5463aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach UINT8 num_read_pages; 5475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_STATE_IDLE 0 5495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_STATE_AUTHENTICATING 1 5505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_STATE_ENCRYPTING 2 5515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_STATE_GETTING_NAME 3 5525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_STATE_AUTHORIZING 4 5535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_STATE_SWITCHING_ROLE 5 5545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_STATE_DISCONNECTING 6 5555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_STATE_DELAY_FOR_ENC 7 /* delay to check for encryption to work around controller problems */ 5565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sec_state; /* Operating state */ 5585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_originator; /* TRUE if device is originating connection */ 5595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (L2CAP_UCD_INCLUDED == TRUE) 5605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_ucd; /* TRUE if device is sending or receiving UCD */ 5615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* if incoming security failed, received UCD will be discarded */ 5625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 5635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN role_master; /* TRUE if current mode is master */ 5645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 security_required; /* Security required for connection */ 5655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN link_key_not_sent; /* link key notification has not been sent waiting for name */ 5665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 link_key_type; /* Type of key used in pairing */ 5675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN link_key_changed; /* Changed link key during current connection */ 5685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 569ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_MAX_PRE_SM4_LKEY_TYPE BTM_LKEY_TYPE_REMOTE_UNIT /* the link key type used by legacy pairing */ 570ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 5715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SM4_UNKNOWN 0x00 5725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SM4_KNOWN 0x10 5735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SM4_TRUE 0x11 5745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SM4_REQ_PEND 0x08 /* set this bit when getting remote features */ 5755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SM4_UPGRADE 0x04 /* set this bit when upgrading link key */ 5765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SM4_RETRY 0x02 /* set this bit to retry on HCI_ERR_KEY_MISSING or HCI_ERR_LMP_ERR_TRANS_COLLISION */ 5775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SM4_DD_ACP 0x20 /* set this bit to indicate peer initiated dedicated bonding */ 5785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SM4_CONN_PEND 0x40 /* set this bit to indicate accepting acl conn; to be cleared on btm_acl_created */ 5795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sm4; /* BTM_SM4_TRUE, if the peer supports SM4 */ 5805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_IO_CAP rmt_io_caps; /* IO capability of the peer device */ 5815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN rmt_auth_req; /* the auth_req flag as in the IO caps rsp evt */ 5825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BLE_INCLUDED == TRUE) 5845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 enc_key_size; /* current link encryption key size */ 5855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_BLE ble; 5865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBT_DEVICE_TYPE device_type; 5875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_LE_CONN_PRAMS conn_params; 5885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 5895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// btla-specific ++ 5915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_DISC_DURING_RS == TRUE 5925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_RS_NOT_PENDING 0 /* Role Switch not in progress */ 5935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_RS_PENDING 1 /* Role Switch in progress */ 5945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_DISC_PENDING 2 /* Disconnect is pending */ 5955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 rs_disc_pending; 5965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 5975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// btla-specific -- 598ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_SEC_NO_LAST_SERVICE_ID 0 599ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT8 last_author_service_id; /* ID of last serviced authorized: Reset after each l2cap connection */ 600ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 6015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_SEC_DEV_REC; 6025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_IS_SM4(sm) ((BOOLEAN)(BTM_SM4_TRUE == ((sm)&BTM_SM4_TRUE))) 6045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_IS_SM4_LEGACY(sm) ((BOOLEAN)(BTM_SM4_KNOWN == ((sm)&BTM_SM4_TRUE))) 6055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_IS_SM4_UNKNOWN(sm) ((BOOLEAN)(BTM_SM4_UNKNOWN == ((sm)&BTM_SM4_TRUE))) 6065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* 6095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Define device configuration structure 6105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 6115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 6125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_MAX_LOC_BD_NAME_LEN > 0 6145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_LOC_BD_NAME bd_name; /* local Bluetooth device name */ 6155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 6165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN pin_type; /* TRUE if PIN type is fixed */ 6175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 pin_code_len; /* Bonding information */ 6185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project PIN_CODE pin_code; /* PIN CODE if pin type is fixed */ 6195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN connectable; /* If TRUE page scan should be enabled */ 6205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 def_inq_scan_mode; /* ??? limited/general/none */ 6215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_CFG; 6225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_PWR_MGR_INCLUDED == TRUE 6245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 6255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PM_ST_ACTIVE = BTM_PM_STS_ACTIVE, 6275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PM_ST_HOLD = BTM_PM_STS_HOLD, 6285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PM_ST_SNIFF = BTM_PM_STS_SNIFF, 6295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PM_ST_PARK = BTM_PM_STS_PARK, 6305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PM_ST_PENDING = BTM_PM_STS_PENDING 6315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 6325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tBTM_PM_STATE; 6335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 6355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PM_SET_MODE_EVT, /* Set power mode API is called. */ 6375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PM_UPDATE_EVT, 6385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PM_RD_MODE_EVT /* Read power mode API is called. */ 6395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 6405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tBTM_PM_EVENT; 6415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 6435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 event; 6455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 len; 6465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 link_ind; 6475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_PM_MSG_DATA; 6485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 6505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 hci_status; 6525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mode; 6535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 interval; 6545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_PM_MD_CHG_DATA; 6555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 6575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 pm_id; /* the entity that calls SetPowerMode API */ 6595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_PM_PWR_MD *p_pmd; 6605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_PM_SET_MD_DATA; 6615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 6635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project void *p_data; 6655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 link_ind; 6665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_PM_SM_DATA; 6675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 6695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_PM_PWR_MD req_mode[BTM_MAX_PM_RECORDS+1]; /* the desired mode and parameters of the connection*/ 6715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_PM_PWR_MD set_mode; /* the mode and parameters sent down to the host controller. */ 6725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 interval; /* the interval from last mode change event. */ 6735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BTM_SSR_INCLUDED == TRUE) 6745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 max_lat; /* stored SSR maximum latency */ 6755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 min_rmt_to;/* stored SSR minimum remote timeout */ 6765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 min_loc_to;/* stored SSR minimum local timeout */ 6775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 6785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_PM_STATE state; /* contains the current mode of the connection */ 6795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN chg_ind; /* a request change indication */ 6805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_PM_MCB; 6815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_PM_REC_NOT_USED 0 6835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 6845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_PM_STATUS_CBACK *cback;/* to notify the registered party of mode change event */ 6865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mask; /* registered request mask. 0, if this entry is not used */ 6875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_PM_RCB; 6885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_PWR_MGR_INCLUDED */ 6895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 6915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 6925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_BLI_ACL_UP_EVT, 6935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_BLI_ACL_DOWN_EVT, 6945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_BLI_PAGE_EVT, 6955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_BLI_PAGE_DONE_EVT, 6965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_BLI_INQ_EVT, 6975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_BLI_INQ_CANCEL_EVT, 6985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_BLI_INQ_DONE_EVT 6995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 7005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tBTM_BLI_EVENT; 7015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Pairing State */ 7035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 7045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 7055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PAIR_STATE_IDLE, /* Idle */ 7065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PAIR_STATE_GET_REM_NAME, /* Getting the remote name (to check for SM4) */ 7075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PAIR_STATE_WAIT_PIN_REQ, /* Started authentication, waiting for PIN req (PIN is pre-fetched) */ 7085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PAIR_STATE_WAIT_LOCAL_PIN, /* Waiting for local PIN code */ 7095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PAIR_STATE_WAIT_NUMERIC_CONFIRM, /* Waiting user 'yes' to numeric confirmation */ 7105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PAIR_STATE_KEY_ENTRY, /* Key entry state (we are a keyboard) */ 7115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PAIR_STATE_WAIT_LOCAL_OOB_RSP, /* Waiting for local response to peer OOB data */ 7125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PAIR_STATE_WAIT_LOCAL_IOCAPS, /* Waiting for local IO capabilities and OOB data */ 7135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PAIR_STATE_INCOMING_SSP, /* Incoming SSP (got peer IO caps when idle) */ 7145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PAIR_STATE_WAIT_AUTH_COMPLETE, /* All done, waiting authentication cpmplete */ 7155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PAIR_STATE_WAIT_DISCONNECT /* Waiting to disconnect the ACL */ 7165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 7175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tBTM_PAIRING_STATE; 7185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_PAIR_FLAGS_WE_STARTED_DD 0x01 /* We want to do dedicated bonding */ 7205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_PAIR_FLAGS_PEER_STARTED_DD 0x02 /* Peer initiated dedicated bonding */ 7215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_PAIR_FLAGS_DISC_WHEN_DONE 0x04 7225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_PAIR_FLAGS_PIN_REQD 0x08 /* set this bit when pin_callback is called */ 7235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_PAIR_FLAGS_PRE_FETCH_PIN 0x10 /* set this bit when pre-fetch pin */ 7245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_PAIR_FLAGS_REJECTED_CONNECT 0x20 /* set this bit when rejected incoming connection */ 725ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTM_PAIR_FLAGS_WE_CANCEL_DD 0x40 /* set this bit when cancelling a bonding procedure */ 7265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 7285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 7295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_mux; 7305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr; 7315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 psm; 7325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_orig; 7335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_CALLBACK *p_callback; 7345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project void *p_ref_data; 7355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 mx_proto_id; 7365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 mx_chan_id; 7375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_SEC_QUEUE_ENTRY; 7385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (L2CAP_UCD_INCLUDED == TRUE) 7405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define CONN_ORIENT_TERM 0x00 /* incoming connection oriented */ 7425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define CONN_ORIENT_ORIG 0x01 /* outgoing connection oriented */ 7435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define CONNLESS_TERM 0x02 /* incoming connectionless */ 7445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define CONNLESS_ORIG 0x03 /* outgoing connectionless */ 7455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define CONNECTION_TYPE_ORIG_MASK 0x01 /* mask for direction */ 7465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define CONNECTION_TYPE_CONNLESS_MASK 0x02 /* mask for connectionless or not */ 7475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 CONNECTION_TYPE; 7485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 7505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define CONN_ORIENT_TERM FALSE 7525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define CONN_ORIENT_ORIG TRUE 7535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef BOOLEAN CONNECTION_TYPE; 7545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* (L2CAP_UCD_INCLUDED == TRUE) */ 7565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define a structure to hold all the BTM data 7585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 7595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_STATE_BUFFER_SIZE 5 /* size of state buffer */ 7615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BTM_PCM2_INCLUDED == TRUE) 7635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define pcm2_action */ 7645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 7655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 7665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PCM2_ACT_NONE, 7675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PCM2_ACT_SENT_ARC, 7685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PCM2_READ_PARAM, 7695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTM_PCM2_WRITE_PARAM, 7705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 7715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tBTM_PCM2_ACTION; 7725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 7735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 7755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 7765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CFG cfg; /* Device configuration */ 7775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /**************************************************** 7795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** ACL Management 7805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ****************************************************/ 7815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tACL_CONN acl_db[MAX_L2CAP_LINKS]; 7825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if( RFCOMM_INCLUDED==TRUE) 7835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 btm_scn[BTM_MAX_SCN]; /* current SCNs: TRUE if SCN is in use */ 7845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 7855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 btm_def_link_policy; 7865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 btm_def_link_super_tout; 7875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (defined(BTM_BUSY_LEVEL_CHANGE_INCLUDED) && BTM_BUSY_LEVEL_CHANGE_INCLUDED == TRUE) 7895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BL_EVENT_MASK bl_evt_mask; 7905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BL_CHANGE_CB *p_bl_changed_cb; /* Callback for when Busy Level changed */ 7915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 7925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_ACL_DB_CHANGE_CB *p_acl_changed_cb; /* Callback for when ACL DB changed */ 7935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 7945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_LSTO_CBACK *p_lsto_cback; /* for link supervision timeout change event */ 7965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /**************************************************** 7985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** Power Management 7995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ****************************************************/ 8005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_PWR_MGR_INCLUDED == TRUE 8015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_PM_MCB pm_mode_db[MAX_L2CAP_LINKS]; /* per ACL link */ 8025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_PM_RCB pm_reg_db[BTM_MAX_PM_RECORDS+1]; /* per application/module */ 8035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 pm_pend_link; /* the index of acl_db, which has a pending PM cmd */ 8045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 pm_pend_id; /* the id pf the module, which has a pending PM cmd */ 8055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_PWR_MGR_INCLUDED == TRUE */ 8065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /***************************************************** 8085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** Device control 8095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *****************************************************/ 8105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_DEVCB devcb; 8115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /***************************************************** 8135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** BLE Device controllers 8145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *****************************************************/ 8155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BLE_INCLUDED == TRUE) 8165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_BLE_CB ble_ctr_cb; 8175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 enc_handle; 8195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_OCTET8 enc_rand; /* received rand value from LTK request*/ 8205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 ediv; /* received ediv value from LTK request */ 8215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 key_size; 8225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 8235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* Packet types supported by the local device */ 8255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 btm_acl_pkt_types_supported; 8265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 btm_sco_pkt_types_supported; 8275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /***************************************************** 8305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** Inquiry 8315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *****************************************************/ 8325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_INQUIRY_VAR_ST btm_inq_vars; 8335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_FILTER_CB *p_inq_filter_cb; /* Callback that can be set if host */ 8345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* wants to verify inquiry filters */ 8355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /***************************************************** 8375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** SCO Management 8385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *****************************************************/ 8395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_SCO_INCLUDED == TRUE 8405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSCO_CB sco_cb; 8415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 8425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /***************************************************** 8445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** Security Management 8455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *****************************************************/ 8465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_APPL_INFO api; 8475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTM_SEC_MAX_RMT_NAME_CALLBACKS 2 8495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_RMT_NAME_CALLBACK *p_rmt_name_callback[BTM_SEC_MAX_RMT_NAME_CALLBACKS]; 8505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_FILTER_CB *p_conn_filter_cb; /* Callback that can be set if host */ 8525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* wants to verify connectability filters*/ 8535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_DEV_REC *p_collided_dev_rec; 8555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT sec_collision_tle; 8565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 collision_start_time; 8575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 max_collision_delay; 8585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 dev_rec_count; /* Counter used for device record timestamp */ 8595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 security_mode; 8605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN pairing_disabled; 8615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN connect_only_paired; 8625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN security_mode_changed; /* mode changed during bonding */ 8635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN pin_type_changed; /* pin type changed during bonding */ 8645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN sec_req_pending; /* TRUE if a request is pending */ 8655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// btla-specific ++ 8665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef PORCHE_PAIRING_CONFLICT 8675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 pin_code_len_saved; /* for legacy devices */ 8685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 8695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// btla-specific -- 8705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 pin_code_len; /* for legacy devices */ 8725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project PIN_CODE pin_code; /* for legacy devices */ 8735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_PAIRING_STATE pairing_state; /* The current pairing state */ 8745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 pairing_flags; /* The current pairing flags */ 8755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR pairing_bda; /* The device currently pairing */ 8765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT pairing_tle; /* Timer for pairing process */ 8775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 disc_handle; /* for legacy devices */ 8785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 disc_reason; /* for legacy devices */ 8795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_SERV_REC sec_serv_rec[BTM_SEC_MAX_SERVICE_RECORDS]; 8805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_DEV_REC sec_dev_rec[BTM_SEC_MAX_DEVICE_RECORDS]; 8815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_SERV_REC *p_out_serv; 8825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_MKEY_CALLBACK *mkey_cback; 8835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR connecting_bda; 8855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project DEV_CLASS connecting_dc; 8865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 first_disabled_channel; 8885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 last_disabled_channel; 8895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 acl_disc_reason; 8915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 trace_level; 8925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (defined(BTM_BUSY_LEVEL_CHANGE_INCLUDED) && BTM_BUSY_LEVEL_CHANGE_INCLUDED == TRUE) 8935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 num_acl; /* num of active ACL links */ 8945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 busy_level; /* the current busy level */ 8955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_paging; /* TRUE, if paging is in progess */ 8965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_inquiry; /* TRUE, if inquiry is in progess */ 8975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 8985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BUFFER_Q page_queue; 8995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN paging; 9005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN discing; 9015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BUFFER_Q sec_pending_q; /* pending sequrity requests in tBTM_SEC_QUEUE_ENTRY format */ 9025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (!defined(BT_TRACE_VERBOSE) || (BT_TRACE_VERBOSE == FALSE)) 9045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project char state_temp_buffer[BTM_STATE_BUFFER_SIZE]; 9055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 9065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (defined(BTM_PCM2_INCLUDED) && BTM_PCM2_INCLUDED == TRUE) 9085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 sys_features; 9095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 pcm2_params[BRCM_PCM2_SETUP_WRITE_SIZE]; 9105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_PCM2_ACTION pcm2_action; 9115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 9125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 913a934f018b6c6a7eda4662a60f2f04828afc3ab77Zhihai Xu BD_ADDR previous_connected_remote_addr[BTM_ROLE_DEVICE_NUM]; 914a934f018b6c6a7eda4662a60f2f04828afc3ab77Zhihai Xu UINT8 previous_connected_role[BTM_ROLE_DEVICE_NUM]; 915a934f018b6c6a7eda4662a60f2f04828afc3ab77Zhihai Xu UINT8 front; /* front index of the role table */ 9165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTM_CB; 9175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef __cplusplus 9205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern "C" 9215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 9225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 9235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_DYNAMIC_MEMORY == FALSE 9255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTM_API extern tBTM_CB btm_cb; 9265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 9275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTM_API extern tBTM_CB *btm_cb_ptr; 9285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btm_cb (*btm_cb_ptr) 9295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 9305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Internal functions provided by btm_main.c 9325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project******************************************** 9335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 9345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_init (void); 9355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Internal functions provided by btm_inq.c 9375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project******************************************* 9385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 9395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_STATUS btm_initiate_rem_name (BD_ADDR remote_bda, 9405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_INQ_INFO *p_cur, 9415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 origin, UINT32 timeout, 9425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_cb); 9435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_process_remote_name (BD_ADDR bda, BD_NAME name, UINT16 evt_len, 9455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 hci_status); 9465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_inq_rmt_name_failed(void); 9475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Inquiry related functions */ 9495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_clr_inq_db (BD_ADDR p_bda); 9505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_inq_db_init (void); 9515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_process_inq_results (UINT8 *p, UINT8 inq_res_mode); 9525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_process_inq_complete (UINT8 status, UINT8 mode); 9535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_event_filter_complete (UINT8 *p); 9545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_inq_stop_on_ssp(void); 9555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_inq_clear_ssp(void); 9565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tINQ_DB_ENT *btm_inq_db_find (BD_ADDR p_bda); 9575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_inq_find_bdaddr (BD_ADDR p_bda); 9585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BTM_EIR_CLIENT_INCLUDED == TRUE) 9605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_lookup_eir(BD_ADDR_PTR p_rem_addr); 9615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 9625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Internal functions provided by btm_acl.c 9645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project******************************************** 9655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 9665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_init (void); 9675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_timeout (TIMER_LIST_ENT *p_tle); 9685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_created (BD_ADDR bda, DEV_CLASS dc, BD_NAME bdn, 9695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 hci_handle, UINT8 link_role, UINT8 is_le_link); 9705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_removed (BD_ADDR bda); 9715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_device_down (void); 9725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_update_busy_level (tBTM_BLI_EVENT event); 9735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_link_key_change (UINT16 handle, UINT8 status); 9745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_cont_rswitch_or_chglinkkey (tACL_CONN *p, 9765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_DEV_REC *p_dev_rec, 9775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 hci_status); 9785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT8 btm_handle_to_acl_index (UINT16 hci_handle); 9805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_link_policy_complete (UINT8 *p); 9815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_rssi_complete (UINT8 *p); 9825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_tx_power_complete (UINT8 *p, BOOLEAN is_ble); 9835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_link_quality_complete (UINT8 *p); 9845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_STATUS btm_set_packet_types (tACL_CONN *p, UINT16 pkt_types); 9855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_process_clk_off_comp_evt (UINT16 hci_handle, UINT16 clock_offset); 9865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_role_changed (UINT8 hci_status, BD_ADDR bd_addr, UINT8 new_role); 9875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_encrypt_change (UINT16 handle, UINT8 status, UINT8 encr_enable); 9885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTM_API extern UINT16 btm_get_acl_disc_reason_code (void); 9895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTM_API extern tBTM_STATUS btm_remove_acl (BD_ADDR bd_addr); 9905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_remote_features_complete (UINT8 *p); 9915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_remote_ext_features_complete (UINT8 *p); 9929d140a9dc432e457a0437920d5f84c22e3baea0dGanesh Ganapathi Battaextern void btm_read_remote_ext_features_failed (UINT8 status, UINT16 handle); 9935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_remote_version_complete (UINT8 *p); 9945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// btla-specific ++ 9955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_chk_peer_pkt_type_support (tACL_CONN *p, UINT16 *p_pkt_type); 9965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project// btla-specific -- 9975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Read maximum data packet that can be sent over current connection */ 9985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT16 btm_get_max_packet_size (BD_ADDR addr); 9995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tACL_CONN *btm_bda_to_acl (BD_ADDR bda); 10005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_acl_notif_conn_collision (BD_ADDR bda); 10015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_PWR_MGR_INCLUDED == FALSE 10035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_process_mode_change (UINT8 hci_status, UINT16 hci_handle, UINT8 mode, 10045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 interval); 10055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Internal functions provided by btm_pm.c 10075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project******************************************** 10085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 10095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 10105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_pm_reset(void); 10115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_pm_sm_alloc(UINT8 ind); 10125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_pm_proc_cmd_status(UINT8 status); 10135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_pm_proc_mode_change (UINT8 hci_status, UINT16 hci_handle, UINT8 mode, 10145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 interval); 10155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_pm_proc_ssr_evt (UINT8 *p, UINT16 evt_len); 10165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_SCO_INCLUDED == TRUE 10175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sco_chk_pend_unpark (UINT8 hci_status, UINT16 hci_handle); 10185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 10195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btm_sco_chk_pend_unpark(hci_status, hci_handle) 10205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_SCO_INCLUDED */ 10215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_PWR_MGR_INCLUDED == FALSE */ 10225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_qos_setup_complete (UINT8 status, UINT16 handle, FLOW_SPEC *p_flow); 10235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Internal functions provided by btm_sco.c 10265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project******************************************** 10275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 10285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sco_init (void); 10295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sco_connected (UINT8 hci_status, BD_ADDR bda, UINT16 hci_handle, 10305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_ESCO_DATA *p_esco_data); 10315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_esco_proc_conn_chg (UINT8 status, UINT16 handle, UINT8 tx_interval, 10325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 retrans_window, UINT16 rx_pkt_len, 10335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 tx_pkt_len); 10345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sco_conn_req (BD_ADDR bda, DEV_CLASS dev_class, UINT8 link_type); 10355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sco_removed (UINT16 hci_handle, UINT8 reason); 10365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sco_acl_removed (BD_ADDR bda); 10375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_route_sco_data (BT_HDR *p_msg); 10385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_is_sco_active (UINT16 handle); 10395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_remove_sco_links (BD_ADDR bda); 10405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_is_sco_active_by_bdaddr (BD_ADDR remote_bda); 10415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_SCO_TYPE btm_read_def_esco_mode (tBTM_ESCO_PARAMS *p_parms); 10435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT16 btm_find_scb_by_handle (UINT16 handle); 10445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sco_flush_sco_data(UINT16 sco_inx); 10455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Internal functions provided by btm_devctl.c 10475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project********************************************** 10485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 10495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_dev_init (void); 10505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_dev_absent (void); 10515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_dev_timeout (TIMER_LIST_ENT *p_tle); 10525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_reset_complete (void); 10535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_local_version_complete (UINT8 *p, UINT16 evt_len); 10545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_hci_buf_size_complete (UINT8 *p, UINT16 evt_len); 10559d140a9dc432e457a0437920d5f84c22e3baea0dGanesh Ganapathi Battaextern void btm_read_local_supported_cmds_complete (UINT8 *p); 10565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_local_features_complete (UINT8 *p, UINT16 evt_len); 1057ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void btm_read_local_ext_features_complete (UINT8 *p, UINT16 evt_len); 10585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_local_name_complete (UINT8 *p, UINT16 evt_len); 10595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_local_addr_complete (UINT8 *p, UINT16 evt_len); 10603aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbachextern void btm_reset_ctrlr_complete (void); 10613aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbachextern void btm_write_simple_paring_mode_complete (UINT8 *p); 10623aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbachextern void btm_write_le_host_supported_complete (UINT8 *p); 10635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BLE_INCLUDED == TRUE) 10655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_ble_buf_size_complete (UINT8 *p, UINT16 evt_len); 10663aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbachextern void btm_read_ble_local_supported_features_complete (UINT8 *p, UINT16 evt_len); 10675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_white_list_size_complete(UINT8 *p, UINT16 evt_len); 1068ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void btm_ble_add_2_white_list_complete(UINT8 status); 10695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_remove_from_white_list_complete(UINT8 *p, UINT16 evt_len); 10705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_ble_clear_white_list_complete(UINT8 *p, UINT16 evt_len); 10715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BLE_INCLUDED */ 10725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Vendor Specific Command complete evt handler */ 10745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_vsc_complete (UINT8 *p, UINT16 cc_opcode, UINT16 evt_len, 10755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_CMPL_CB *p_vsc_cplt_cback); 10765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_inq_db_reset (void); 10775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_vendor_specific_evt (UINT8 *p, UINT8 evt_len); 10785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT8 btm_get_hci_version (void); 10795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_stored_link_key_complete (UINT8 *p); 10805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_write_stored_link_key_complete (UINT8 *p); 10815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_delete_stored_link_key_complete (UINT8 *p); 10825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_return_link_keys_evt (tBTM_RETURN_LINK_KEYS_EVT *result); 10835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_report_device_status (tBTM_DEV_STATUS status); 10845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Internal functions provided by btm_dev.c 10875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project********************************************** 10885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 10895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_dev_support_switch (BD_ADDR bd_addr); 10905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT8 btm_get_voice_coding_support (void); 10915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_SEC_DEV_REC *btm_sec_alloc_dev (BD_ADDR bd_addr); 10935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_free_dev (tBTM_SEC_DEV_REC *p_dev_rec); 10945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_SEC_DEV_REC *btm_find_dev (BD_ADDR bd_addr); 10955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_SEC_DEV_REC *btm_find_or_alloc_dev (BD_ADDR bd_addr); 10965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_SEC_DEV_REC *btm_find_dev_by_handle (UINT16 handle); 10975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 10985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Internal functions provided by btm_sec.c 10995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project********************************************** 11005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 11015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_dev_support_switch (BD_ADDR bd_addr); 11025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_STATUS btm_sec_l2cap_access_req (BD_ADDR bd_addr, UINT16 psm, 11035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 handle, CONNECTION_TYPE conn_type, 11045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_CALLBACK *p_callback, void *p_ref_data); 11055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_STATUS btm_sec_mx_access_request (BD_ADDR bd_addr, UINT16 psm, BOOLEAN is_originator, 11065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 mx_proto_id, UINT32 mx_chan_id, 11075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTM_SEC_CALLBACK *p_callback, void *p_ref_data); 11085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_conn_req (UINT8 *bda, UINT8 *dc); 11095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_create_conn_cancel_complete (UINT8 *p); 11105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_proc_lsto_evt(UINT16 handle, UINT16 timeout); 11115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_linq_tx_power_complete (UINT8 *p); 11125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_init (UINT8 sec_mode); 11145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_dev_reset (void); 11155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_abort_access_req (BD_ADDR bd_addr); 11165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_auth_complete (UINT16 handle, UINT8 status); 11175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_mkey_comp_event (UINT16 handle, UINT8 status, UINT8 key_flg); 11185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_encrypt_change (UINT16 handle, UINT8 status, UINT8 encr_enable); 11195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_connected (UINT8 *bda, UINT16 handle, UINT8 status, UINT8 enc_mode); 11205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTM_STATUS btm_sec_disconnect (UINT16 handle, UINT8 reason); 11215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_disconnected (UINT16 handle, UINT8 reason); 11225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_rmt_name_request_complete (UINT8 *bd_addr, UINT8 *bd_name, UINT8 status); 11235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_rmt_host_support_feat_evt (UINT8 *p); 11245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_io_capabilities_req (UINT8 *p); 11255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_io_capabilities_rsp (UINT8 *p); 11265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_proc_sp_req_evt (tBTM_SP_EVT event, UINT8 *p); 11275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_keypress_notif_evt (UINT8 *p); 11285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_simple_pair_complete (UINT8 *p); 11295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_link_key_notification (UINT8 *p_bda, UINT8 *p_link_key, UINT8 key_type); 11305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_link_key_request (UINT8 *p_bda); 11315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_pin_code_request (UINT8 *p_bda); 11325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_update_clock_offset (UINT16 handle, UINT16 clock_offset); 11335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_dev_rec_cback_event (tBTM_SEC_DEV_REC *p_dev_rec, UINT8 res); 11345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BLE_INCLUDED == TRUE 11365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_sec_clear_ble_keys (tBTM_SEC_DEV_REC *p_dev_rec); 11375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_sec_find_bonded_dev (UINT8 start_idx, UINT8 *p_found_idx, tBTM_SEC_DEV_REC *p_rec); 11385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btm_sec_is_a_bonded_dev (BD_ADDR bda); 1139ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern BOOLEAN btm_sec_is_le_capable_dev (BD_ADDR bda); 11405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BLE_INCLUDED */ 11415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tINQ_DB_ENT *btm_inq_db_new (BD_ADDR p_bda); 11435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTM_OOB_INCLUDED == TRUE 11455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_rem_oob_req (UINT8 *p); 11465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_read_local_oob_complete (UINT8 *p); 11475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 11485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btm_rem_oob_req(p) 11495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btm_read_local_oob_complete(p) 11505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 11515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_resubmit_page (void); 11535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_reset_paging (void); 11545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_paging (BT_HDR *p, BD_ADDR dest); 11555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btm_acl_set_discing (BOOLEAN discing); 11565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT8 btm_sec_clr_service_by_psm (UINT16 psm); 1157ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void btm_sec_clr_temp_auth_service (BD_ADDR bda); 11585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef __cplusplus 11605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 11615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 11625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 11635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 11645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1165