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