--- /dev/null
+/*
+ * 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.
+ */
+
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "bt_common.h"
+#include "bt_types.h"
+#include "btm_api.h"
+#include "btm_int.h"
+#include "btu.h"
+#include "device/include/controller.h"
+#include "hcidefs.h"
+#include "hcimsgs.h"
+#include "l2c_api.h"
+#include "main/shim/btm_api.h"
+#include "main/shim/shim.h"
+#include "stack/include/acl_api.h"
+
+/*******************************************************************************
+ *
+ * Function BTM_SecAddDevice
+ *
+ * Description Add/modify device. This function will be normally called
+ * during host startup to restore all required information
+ * stored in the NVRAM.
+ *
+ * Parameters: bd_addr - BD address of the peer
+ * dev_class - Device Class
+ * bd_name - Name of the peer device. NULL if unknown.
+ * features - Remote device's features (up to 3 pages).
+ * NULL if not known
+ * trusted_mask - Bitwise OR of services that do not
+ * require authorization.
+ * (array of uint32_t)
+ * link_key - Connection link key. NULL if unknown.
+ *
+ * Returns true if added OK, else false
+ *
+ ******************************************************************************/
+bool BTM_SecAddDevice(const RawAddress& bd_addr, DEV_CLASS dev_class,
+ BD_NAME bd_name, uint8_t* features,
+ uint32_t trusted_mask[], LinkKey* p_link_key,
+ uint8_t key_type, tBTM_IO_CAP io_cap, uint8_t pin_length);
+void wipe_secrets_and_remove(tBTM_SEC_DEV_REC* p_dev_rec);
+
+/** 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
+ *
+ ******************************************************************************/
+char* BTM_SecReadDevName(const RawAddress& bd_addr);
+
+/*******************************************************************************
+ *
+ * Function btm_sec_alloc_dev
+ *
+ * Description Look for the record in the device database for the record
+ * 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_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_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);
+
+bool is_address_equal(void* data, void* context);
+
+/*******************************************************************************
+ *
+ * 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_consolidate_dev
+5**
+ * Description combine security records if identified as same peer
+ *
+ * Returns none
+ *
+ ******************************************************************************/
+void btm_consolidate_dev(tBTM_SEC_DEV_REC* p_target_rec);
+
+/*******************************************************************************
+ *
+ * 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);
/* Internal functions provided by btm_dev.cc
*********************************************
*/
-extern bool btm_dev_support_switch(const RawAddress& bd_addr);
-
-extern tBTM_SEC_DEV_REC* btm_sec_allocate_dev_rec(void);
-extern tBTM_SEC_DEV_REC* btm_sec_alloc_dev(const RawAddress& bd_addr);
extern void wipe_secrets_and_remove(tBTM_SEC_DEV_REC* p_dev_rec);
-extern tBTM_SEC_DEV_REC* btm_find_dev(const RawAddress& bd_addr);
-extern tBTM_SEC_DEV_REC* btm_find_or_alloc_dev(const RawAddress& bd_addr);
-extern tBTM_SEC_DEV_REC* btm_find_dev_by_handle(uint16_t handle);
-extern tBTM_BOND_TYPE btm_get_bond_type_dev(const RawAddress& bd_addr);
-extern bool btm_set_bond_type_dev(const RawAddress& bd_addr,
- tBTM_BOND_TYPE bond_type);
/* Internal functions provided by btm_sec.cc
*********************************************
*/
-extern bool btm_dev_support_switch(const RawAddress& bd_addr);
extern void btm_sec_conn_req(const RawAddress& bda, uint8_t* dc);
extern void btm_create_conn_cancel_complete(uint8_t* p);
uint8_t res, bool is_le_trasnport);
extern void btm_sec_clear_ble_keys(tBTM_SEC_DEV_REC* p_dev_rec);
-extern void btm_consolidate_dev(tBTM_SEC_DEV_REC* p_target_rec);
extern bool btm_ble_init_pseudo_addr(tBTM_SEC_DEV_REC* p_dev_rec,
const RawAddress& new_pseudo_addr);
extern tBTM_SEC_SERV_REC* btm_sec_find_first_serv(bool is_originator,