/* * 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 #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_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 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);