15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2009-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#ifndef BTIF_DM_H 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_DM_H 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 22ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#include "bta_api.h" 230229bd4f183266b103daa18cf95c175aabe87217Adam Lesinski#include "btif_uid.h" 24807268aca9eb541fbca9b11b4220ec706025c040Nitin Arora#include "bte_appl.h" 250229bd4f183266b103daa18cf95c175aabe87217Adam Lesinski 26ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/************************************************************************************ 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Functions 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project********************************************************************************/ 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 300229bd4f183266b103daa18cf95c175aabe87217Adam Lesinskivoid btif_dm_init(uid_set_t* set); 310229bd4f183266b103daa18cf95c175aabe87217Adam Lesinskivoid btif_dm_cleanup(void); 320229bd4f183266b103daa18cf95c175aabe87217Adam Lesinski 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/** 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * BTIF callback to switch context from bte to btif 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project */ 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bte_dm_evt(tBTA_DM_SEC_EVT event, tBTA_DM_SEC *p_data); 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/** 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Notify BT disable being initiated. DM may chose to abort 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * pending commands, like pairing 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project */ 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid btif_dm_on_disable(void); 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/** 45550b319b217739808fe95c57aa0f422dbf5db9d1Ganesh Ganapathi Batta * Callout for handling io_capabilities request 46550b319b217739808fe95c57aa0f422dbf5db9d1Ganesh Ganapathi Batta */ 47550b319b217739808fe95c57aa0f422dbf5db9d1Ganesh Ganapathi Battavoid btif_dm_proc_io_req(BD_ADDR bd_addr, tBTA_IO_CAP *p_io_cap, tBTA_OOB_DATA *p_oob_data, 48550b319b217739808fe95c57aa0f422dbf5db9d1Ganesh Ganapathi Batta tBTA_AUTH_REQ *p_auth_req, BOOLEAN is_orig); 49550b319b217739808fe95c57aa0f422dbf5db9d1Ganesh Ganapathi Batta/** 50550b319b217739808fe95c57aa0f422dbf5db9d1Ganesh Ganapathi Batta * Callout for handling io_capabilities response 51550b319b217739808fe95c57aa0f422dbf5db9d1Ganesh Ganapathi Batta */ 52550b319b217739808fe95c57aa0f422dbf5db9d1Ganesh Ganapathi Battavoid btif_dm_proc_io_rsp(BD_ADDR bd_addr, tBTA_IO_CAP io_cap, 53550b319b217739808fe95c57aa0f422dbf5db9d1Ganesh Ganapathi Batta tBTA_OOB_DATA oob_data, tBTA_AUTH_REQ auth_req); 54550b319b217739808fe95c57aa0f422dbf5db9d1Ganesh Ganapathi Batta 55550b319b217739808fe95c57aa0f422dbf5db9d1Ganesh Ganapathi Batta/** 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Out-of-band functions 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project */ 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid btif_dm_set_oob_for_io_req(tBTA_OOB_DATA *p_oob_data); 591a5bb5f30385af44d11ffba10e0f5af79f0ae422Jakub Pawlowskivoid btif_dm_set_oob_for_le_io_req(BD_ADDR bd_addr, tBTA_OOB_DATA *p_oob_data, 601a5bb5f30385af44d11ffba10e0f5af79f0ae422Jakub Pawlowski tBTA_LE_AUTH_REQ *p_auth_req); 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef BTIF_DM_OOB_TEST 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid btif_dm_load_local_oob(void); 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid btif_dm_proc_loc_oob(BOOLEAN valid, BT_OCTET16 c, BT_OCTET16 r); 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBOOLEAN btif_dm_proc_rmt_oob(BD_ADDR bd_addr, BT_OCTET16 p_c, BT_OCTET16 p_r); 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTIF_DM_OOB_TEST */ 66ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#if (BLE_INCLUDED == TRUE) 67ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 68807268aca9eb541fbca9b11b4220ec706025c040Nitin Arora/*callout for reading SMP properties from Text file*/ 69807268aca9eb541fbca9b11b4220ec706025c040Nitin AroraBOOLEAN btif_dm_get_smp_config(tBTE_APPL_CFG* p_cfg); 70807268aca9eb541fbca9b11b4220ec706025c040Nitin Arora 71ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battatypedef struct 72ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta{ 73ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BOOLEAN is_penc_key_rcvd; 74e87ef6dba42ebaa94c7f0200d9e5223d1259b9d9Andre Eisenbach tBTM_LE_PENC_KEYS penc_key; /* received peer encryption key */ 75ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BOOLEAN is_pcsrk_key_rcvd; 76e87ef6dba42ebaa94c7f0200d9e5223d1259b9d9Andre Eisenbach tBTM_LE_PCSRK_KEYS pcsrk_key; /* received peer device SRK */ 77ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BOOLEAN is_pid_key_rcvd; 78e87ef6dba42ebaa94c7f0200d9e5223d1259b9d9Andre Eisenbach tBTM_LE_PID_KEYS pid_key; /* peer device ID key */ 79ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BOOLEAN is_lenc_key_rcvd; 80e87ef6dba42ebaa94c7f0200d9e5223d1259b9d9Andre Eisenbach tBTM_LE_LENC_KEYS lenc_key; /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/ 81ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta BOOLEAN is_lcsrk_key_rcvd; 82e87ef6dba42ebaa94c7f0200d9e5223d1259b9d9Andre Eisenbach tBTM_LE_LCSRK_KEYS lcsrk_key; /* local device CSRK = d1(ER,DIV,1)*/ 83444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji BOOLEAN is_lidk_key_rcvd; /* local identity key received */ 84ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} btif_dm_ble_cb_t; 85ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 86ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTIF_DM_LE_KEY_PENC BTA_LE_KEY_PENC 87ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTIF_DM_LE_KEY_PID BTA_LE_KEY_PID 88ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTIF_DM_LE_KEY_PCSRK BTA_LE_KEY_PCSRK 89ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTIF_DM_LE_KEY_LENC BTA_LE_KEY_LENC 90ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTIF_DM_LE_KEY_LID BTA_LE_KEY_LID 91ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTIF_DM_LE_KEY_LCSRK BTA_LE_KEY_LCSRK 92ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 93ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTIF_DM_LE_LOCAL_KEY_IR (1<<0) 94ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTIF_DM_LE_LOCAL_KEY_IRK (1<<1) 95ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTIF_DM_LE_LOCAL_KEY_DHK (1<<2) 96ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define BTIF_DM_LE_LOCAL_KEY_ER (1<<3) 97ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 98ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battavoid btif_dm_load_ble_local_keys(void); 99ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battavoid btif_dm_get_ble_local_keys(tBTA_DM_BLE_LOCAL_KEY_MASK *p_key_mask, BT_OCTET16 er, 100ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTA_BLE_LOCAL_ID_KEYS *p_id_keys); 101ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battavoid btif_dm_save_ble_bonding_keys(void); 102ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battavoid btif_dm_remove_ble_bonding_keys(void); 103ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battavoid btif_dm_ble_sec_req_evt(tBTA_DM_BLE_SEC_REQ *p_ble_req); 104ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 105ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battavoid btif_dm_update_ble_remote_properties( BD_ADDR bd_addr, BD_NAME bd_name, 106ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBT_DEVICE_TYPE dev_type); 107ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 108ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif /* BLE_INCLUDED */ 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 111