blob: 166f5ae6611e30beef95316e2628ae3e68b765ab [file] [log] [blame]
/*
* Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#pragma once
#include <vector>
#include "stack/btm/security_device_record.h"
#include "types/ble_address_with_type.h"
#include "types/raw_address.h"
/** Free resources associated with the device associated with |bd_addr| address.
*
* *** WARNING ***
* tBTM_SEC_DEV_REC associated with bd_addr becomes invalid after this function
* is called, also any of it's fields. i.e. if you use p_dev_rec->bd_addr, it is
* no longer valid!
* *** WARNING ***
*
* Returns true if removed OK, false if not found or ACL link is active.
*/
bool BTM_SecDeleteDevice(const RawAddress& bd_addr);
/*******************************************************************************
*
* Function BTM_SecClearSecurityFlags
*
* Description Reset the security flags (mark as not-paired) for a given
* remove device.
*
******************************************************************************/
void BTM_SecClearSecurityFlags(const RawAddress& bd_addr);
/*******************************************************************************
*
* Function BTM_SecReadDevName
*
* Description Looks for the device name in the security database for the
* specified BD address.
*
* Returns Pointer to the name or NULL
*
******************************************************************************/
const char* BTM_SecReadDevName(const RawAddress& bd_addr);
/*******************************************************************************
*
* Function btm_sec_alloc_dev
*
* Description Allocate a record in the device database
* with specified address
*
* Returns Pointer to the record or NULL
*
******************************************************************************/
tBTM_SEC_DEV_REC* btm_sec_alloc_dev(const RawAddress& bd_addr);
/*******************************************************************************
*
* Function btm_dev_support_role_switch
*
* Description This function is called by the L2CAP to check if remote
* device supports role switch
*
* Parameters: bd_addr - Address of the peer device
*
* Returns true if device is known and role switch is supported
*
******************************************************************************/
bool btm_dev_support_role_switch(const RawAddress& bd_addr);
/*******************************************************************************
*
* Function btm_find_dev_by_handle
*
* Description Look for the record in the device database for the record
* with specified handle
*
* Returns Pointer to the record or NULL
*
******************************************************************************/
tBTM_SEC_DEV_REC* btm_find_dev_by_handle(uint16_t handle);
/*******************************************************************************
*
* Function btm_find_dev
*
* Description Look for the record in the device database for the record
* with specified BD address
*
* Returns Pointer to the record or NULL
*
******************************************************************************/
tBTM_SEC_DEV_REC* btm_find_dev(const RawAddress& bd_addr);
/*******************************************************************************
*
* Function btm_find_dev_with_lenc
*
* Description Look for the record in the device database with LTK and
* specified BD address
*
* Returns Pointer to the record or NULL
*
******************************************************************************/
tBTM_SEC_DEV_REC* btm_find_dev_with_lenc(const RawAddress& bd_addr);
/*******************************************************************************
*
* Function btm_consolidate_dev
*
* Description combine security records if identified as same peer
*
* Returns none
*
******************************************************************************/
void btm_consolidate_dev(tBTM_SEC_DEV_REC* p_target_rec);
/*******************************************************************************
*
* Function btm_consolidate_dev
*
* Description When pairing is finished (i.e. on BR/EDR), this function
* checks if there are existing LE connections to same device
* that can now be encrypted and used for profiles requiring
* encryption.
*
* Returns none
*
******************************************************************************/
void btm_dev_consolidate_existing_connections(const RawAddress& bd_addr);
/*******************************************************************************
*
* Function btm_find_or_alloc_dev
*
* Description Look for the record in the device database for the record
* with specified BD address
*
* Returns Pointer to the record or NULL
*
******************************************************************************/
tBTM_SEC_DEV_REC* btm_find_or_alloc_dev(const RawAddress& bd_addr);
/*******************************************************************************
*
* Function btm_sec_allocate_dev_rec
*
* Description Attempts to allocate a new device record. If we have
* exceeded the maximum number of allowable records to
* allocate, the oldest record will be deleted to make room
* for the new record.
*
* Returns Pointer to the newly allocated record
*
******************************************************************************/
tBTM_SEC_DEV_REC* btm_sec_allocate_dev_rec(void);
/*******************************************************************************
*
* Function btm_get_bond_type_dev
*
* Description Get the bond type for a device in the device database
* with specified BD address
*
* Returns The device bond type if known, otherwise BOND_TYPE_UNKNOWN
*
******************************************************************************/
tBTM_BOND_TYPE btm_get_bond_type_dev(const RawAddress& bd_addr);
/*******************************************************************************
*
* Function btm_set_bond_type_dev
*
* Description Set the bond type for a device in the device database
* with specified BD address
*
* Returns true on success, otherwise false
*
******************************************************************************/
bool btm_set_bond_type_dev(const RawAddress& bd_addr, tBTM_BOND_TYPE bond_type);
/*******************************************************************************
*
* Function btm_get_sec_dev_rec
*
* Description Get security device records satisfying given filter
*
* Returns A vector containing pointers of security device records
*
******************************************************************************/
std::vector<tBTM_SEC_DEV_REC*> btm_get_sec_dev_rec();
bool BTM_Sec_AddressKnown(const RawAddress& address);
const tBLE_BD_ADDR BTM_Sec_GetAddressWithType(const RawAddress& bd_addr);
bool BTM_IsRemoteNameKnown(const RawAddress& bd_addr, tBT_TRANSPORT transport);