You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
985 lines
40 KiB
985 lines
40 KiB
/*
|
|
* Copyright 1999-2012 Broadcom Corporation
|
|
*
|
|
* 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.
|
|
*
|
|
******************************************************************************/
|
|
|
|
/******************************************************************************
|
|
*
|
|
* This file contains the Bluetooth Manager (BTM) API function external
|
|
* definitions.
|
|
*
|
|
******************************************************************************/
|
|
#ifndef BTM_API_H
|
|
#define BTM_API_H
|
|
|
|
#include <cstdint>
|
|
|
|
#include "stack/btm/neighbor_inquiry.h"
|
|
#include "stack/include/btm_api_types.h"
|
|
#include "stack/include/btm_status.h"
|
|
#include "stack/include/sco_client_callbacks.h"
|
|
#include "stack/include/sdp_api.h"
|
|
#include "types/bt_transport.h"
|
|
#include "types/raw_address.h"
|
|
|
|
void btm_init();
|
|
void btm_free();
|
|
|
|
/*****************************************************************************
|
|
* DEVICE CONTROL and COMMON
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* EXTERNAL FUNCTION DECLARATIONS
|
|
****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* DEVICE CONTROL and COMMON FUNCTIONS
|
|
****************************************************************************/
|
|
|
|
void BTM_reset_complete();
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_IsDeviceUp
|
|
*
|
|
* Description This function is called to check if the device is up.
|
|
*
|
|
* Returns true if device is up, else false
|
|
*
|
|
******************************************************************************/
|
|
bool BTM_IsDeviceUp(void);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_SetLocalDeviceName
|
|
*
|
|
* Description This function is called to set the local device name.
|
|
*
|
|
* Returns BTM_CMD_STARTED if successful, otherwise an error
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_SetLocalDeviceName(char* p_name);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_SetDeviceClass
|
|
*
|
|
* Description This function is called to set the local device class
|
|
*
|
|
* Returns BTM_SUCCESS if successful, otherwise an error
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_SetDeviceClass(DEV_CLASS dev_class);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_ReadLocalDeviceName
|
|
*
|
|
* Description This function is called to read the local device name.
|
|
*
|
|
* Returns status of the operation
|
|
* If success, BTM_SUCCESS is returned and p_name points stored
|
|
* local device name
|
|
* If BTM doesn't store local device name, BTM_NO_RESOURCES is
|
|
* is returned and p_name is set to NULL
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_ReadLocalDeviceName(char** p_name);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_ReadLocalDeviceNameFromController
|
|
*
|
|
* Description Get local device name from controller. Do not use cached
|
|
* name (used to get chip-id prior to btm reset complete).
|
|
*
|
|
* Returns BTM_CMD_STARTED if successful, otherwise an error
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_ReadLocalDeviceNameFromController(
|
|
tBTM_CMPL_CB* p_rln_cmpl_cback);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_ReadDeviceClass
|
|
*
|
|
* Description This function is called to read the local device class
|
|
*
|
|
* Returns pointer to the device class
|
|
*
|
|
******************************************************************************/
|
|
uint8_t* BTM_ReadDeviceClass(void);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_RegisterForVSEvents
|
|
*
|
|
* Description This function is called to register/deregister for vendor
|
|
* specific HCI events.
|
|
*
|
|
* If is_register=true, then the function will be registered;
|
|
* otherwise the function will be deregistered.
|
|
*
|
|
* Returns BTM_SUCCESS if successful,
|
|
* BTM_BUSY if maximum number of callbacks have already been
|
|
* registered.
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_RegisterForVSEvents(tBTM_VS_EVT_CB* p_cb, bool is_register);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_VendorSpecificCommand
|
|
*
|
|
* Description Send a vendor specific HCI command to the controller.
|
|
*
|
|
******************************************************************************/
|
|
void BTM_VendorSpecificCommand(uint16_t opcode, uint8_t param_len,
|
|
uint8_t* p_param_buf, tBTM_VSC_CMPL_CB* p_cb);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_AllocateSCN
|
|
*
|
|
* Description Look through the Server Channel Numbers for a free one to be
|
|
* used with an RFCOMM connection.
|
|
*
|
|
* Returns Allocated SCN number or 0 if none.
|
|
*
|
|
******************************************************************************/
|
|
uint8_t BTM_AllocateSCN(void);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_TryAllocateSCN
|
|
*
|
|
* Description Try to allocate a fixed server channel
|
|
*
|
|
* Returns Returns true if server channel was available
|
|
*
|
|
******************************************************************************/
|
|
bool BTM_TryAllocateSCN(uint8_t scn);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_FreeSCN
|
|
*
|
|
* Description Free the specified SCN.
|
|
*
|
|
* Returns true if successful, false if SCN is not in use or invalid
|
|
*
|
|
******************************************************************************/
|
|
bool BTM_FreeSCN(uint8_t scn);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_SetTraceLevel
|
|
*
|
|
* Description This function sets the trace level for BTM. If called with
|
|
* a value of 0xFF, it simply returns the current trace level.
|
|
*
|
|
* Returns The new or current trace level
|
|
*
|
|
******************************************************************************/
|
|
uint8_t BTM_SetTraceLevel(uint8_t new_level);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_WritePageTimeout
|
|
*
|
|
* Description Send HCI Wite Page Timeout.
|
|
*
|
|
******************************************************************************/
|
|
void BTM_WritePageTimeout(uint16_t timeout);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_WriteVoiceSettings
|
|
*
|
|
* Description Send HCI Write Voice Settings command.
|
|
* See hcidefs.h for settings bitmask values.
|
|
*
|
|
******************************************************************************/
|
|
void BTM_WriteVoiceSettings(uint16_t settings);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_EnableTestMode
|
|
*
|
|
* Description Send HCI the enable device under test command.
|
|
*
|
|
* Note: Controller can only be taken out of this mode by
|
|
* resetting the controller.
|
|
*
|
|
* Returns
|
|
* BTM_SUCCESS Command sent.
|
|
* BTM_NO_RESOURCES If out of resources to send the command.
|
|
*
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_EnableTestMode(void);
|
|
|
|
/*******************************************************************************
|
|
* DEVICE DISCOVERY FUNCTIONS - Inquiry, Remote Name, Discovery, Class of Device
|
|
******************************************************************************/
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_SetDiscoverability
|
|
*
|
|
* Description This function is called to set the device into or out of
|
|
* discoverable mode. Discoverable mode means inquiry
|
|
* scans are enabled. If a value of '0' is entered for window
|
|
* or interval, the default values are used.
|
|
*
|
|
* Returns BTM_SUCCESS if successful
|
|
* BTM_BUSY if a setting of the filter is already in progress
|
|
* BTM_NO_RESOURCES if couldn't get a memory pool buffer
|
|
* BTM_ILLEGAL_VALUE if a bad parameter was detected
|
|
* BTM_WRONG_MODE if the device is not up.
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_SetDiscoverability(uint16_t inq_mode);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_StartInquiry
|
|
*
|
|
* Description This function is called to start an inquiry.
|
|
*
|
|
* Parameters: p_inqparms - pointer to the inquiry information
|
|
* mode - GENERAL or LIMITED inquiry
|
|
* duration - length in 1.28 sec intervals (If '0', the
|
|
* inquiry is CANCELLED)
|
|
* filter_cond_type - BTM_CLR_INQUIRY_FILTER,
|
|
* BTM_FILTER_COND_DEVICE_CLASS, or
|
|
* BTM_FILTER_COND_BD_ADDR
|
|
* filter_cond - value for the filter (based on
|
|
* filter_cond_type)
|
|
*
|
|
* p_results_cb - Pointer to the callback routine which gets
|
|
* called upon receipt of an inquiry result. If
|
|
* this field is NULL, the application is not
|
|
* notified.
|
|
*
|
|
* p_cmpl_cb - Pointer to the callback routine which gets
|
|
* called upon completion. If this field is
|
|
* NULL, the application is not notified when
|
|
* completed.
|
|
* Returns tBTM_STATUS
|
|
* BTM_CMD_STARTED if successfully initiated
|
|
* BTM_BUSY if already in progress
|
|
* BTM_ILLEGAL_VALUE if parameter(s) are out of range
|
|
* BTM_NO_RESOURCES if could not allocate resources to start
|
|
* the command
|
|
* BTM_WRONG_MODE if the device is not up.
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_StartInquiry(tBTM_INQ_RESULTS_CB* p_results_cb,
|
|
tBTM_CMPL_CB* p_cmpl_cb);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_IsInquiryActive
|
|
*
|
|
* Description Return a bit mask of the current inquiry state
|
|
*
|
|
* Returns BTM_INQUIRY_INACTIVE if inactive (0)
|
|
* BTM_GENERAL_INQUIRY_ACTIVE if a general inquiry is active
|
|
*
|
|
******************************************************************************/
|
|
uint16_t BTM_IsInquiryActive(void);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_CancelInquiry
|
|
*
|
|
* Description This function cancels an inquiry if active
|
|
*
|
|
******************************************************************************/
|
|
void BTM_CancelInquiry(void);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_SetConnectability
|
|
*
|
|
* Description This function is called to set the device into or out of
|
|
* connectable mode. Discoverable mode means page scans are
|
|
* enabled.
|
|
*
|
|
* Returns BTM_SUCCESS if successful
|
|
* BTM_ILLEGAL_VALUE if a bad parameter is detected
|
|
* BTM_NO_RESOURCES if could not allocate a message buffer
|
|
* BTM_WRONG_MODE if the device is not up.
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_SetConnectability(uint16_t page_mode);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_SetInquiryMode
|
|
*
|
|
* Description This function is called to set standard, with RSSI
|
|
* mode or extended of the inquiry for local device.
|
|
*
|
|
* Input Params: BTM_INQ_RESULT_STANDARD, BTM_INQ_RESULT_WITH_RSSI or
|
|
* BTM_INQ_RESULT_EXTENDED
|
|
*
|
|
* Returns BTM_SUCCESS if successful
|
|
* BTM_NO_RESOURCES if couldn't get a memory pool buffer
|
|
* BTM_ILLEGAL_VALUE if a bad parameter was detected
|
|
* BTM_WRONG_MODE if the device is not up.
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_SetInquiryMode(uint8_t mode);
|
|
|
|
void BTM_EnableInterlacedInquiryScan();
|
|
|
|
void BTM_EnableInterlacedPageScan();
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_ReadRemoteDeviceName
|
|
*
|
|
* Description This function initiates a remote device HCI command to the
|
|
* controller and calls the callback when the process has
|
|
* completed.
|
|
*
|
|
* Input Params: remote_bda - device address of name to retrieve
|
|
* p_cb - callback function called when
|
|
* BTM_CMD_STARTED is returned.
|
|
* A pointer to tBTM_REMOTE_DEV_NAME is
|
|
* passed to the callback.
|
|
*
|
|
* Returns
|
|
* BTM_CMD_STARTED is returned if the request was successfully
|
|
* sent to HCI.
|
|
* BTM_BUSY if already in progress
|
|
* BTM_UNKNOWN_ADDR if device address is bad
|
|
* BTM_NO_RESOURCES if resources could not be allocated to
|
|
* start the command
|
|
* BTM_WRONG_MODE if the device is not up.
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_ReadRemoteDeviceName(const RawAddress& remote_bda,
|
|
tBTM_CMPL_CB* p_cb,
|
|
tBT_TRANSPORT transport);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_CancelRemoteDeviceName
|
|
*
|
|
* Description This function initiates the cancel request for the specified
|
|
* remote device.
|
|
*
|
|
* Input Params: None
|
|
*
|
|
* Returns
|
|
* BTM_CMD_STARTED is returned if the request was successfully
|
|
* sent to HCI.
|
|
* BTM_NO_RESOURCES if resources could not be allocated to
|
|
* start the command
|
|
* BTM_WRONG_MODE if there is no active remote name request.
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_CancelRemoteDeviceName(void);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_ReadRemoteVersion
|
|
*
|
|
* Description This function is called to read a remote device's version
|
|
*
|
|
* Returns true if data valid, false otherwise
|
|
*
|
|
******************************************************************************/
|
|
bool BTM_ReadRemoteVersion(const RawAddress& addr, uint8_t* lmp_version,
|
|
uint16_t* manufacturer, uint16_t* lmp_sub_version);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_ReadRemoteFeatures
|
|
*
|
|
* Description This function is called to read a remote device's
|
|
* supported features mask (features mask located at page 0)
|
|
*
|
|
* Returns pointer to the remote supported features mask
|
|
* The size of device features mask page is
|
|
* HCI_FEATURE_BYTES_PER_PAGE bytes.
|
|
*
|
|
******************************************************************************/
|
|
uint8_t* BTM_ReadRemoteFeatures(const RawAddress& addr);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_InqDbRead
|
|
*
|
|
* Description This function looks through the inquiry database for a match
|
|
* based on Bluetooth Device Address. This is the application's
|
|
* interface to get the inquiry details of a specific BD
|
|
* address.
|
|
*
|
|
* Returns pointer to entry, or NULL if not found
|
|
*
|
|
******************************************************************************/
|
|
tBTM_INQ_INFO* BTM_InqDbRead(const RawAddress& p_bda);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_InqDbFirst
|
|
*
|
|
* Description This function looks through the inquiry database for the
|
|
* first used entry, and returns that. This is used in
|
|
* conjunction with BTM_InqDbNext by applications as a way to
|
|
* walk through the inquiry database.
|
|
*
|
|
* Returns pointer to first in-use entry, or NULL if DB is empty
|
|
*
|
|
******************************************************************************/
|
|
tBTM_INQ_INFO* BTM_InqDbFirst(void);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_InqDbNext
|
|
*
|
|
* Description This function looks through the inquiry database for the
|
|
* next used entry, and returns that. If the input parameter
|
|
* is NULL, the first entry is returned.
|
|
*
|
|
* Returns pointer to next in-use entry, or NULL if no more found.
|
|
*
|
|
******************************************************************************/
|
|
tBTM_INQ_INFO* BTM_InqDbNext(tBTM_INQ_INFO* p_cur);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_ClearInqDb
|
|
*
|
|
* Description This function is called to clear out a device or all devices
|
|
* from the inquiry database.
|
|
*
|
|
* Parameter p_bda - (input) BD_ADDR -> Address of device to clear
|
|
* (NULL clears all entries)
|
|
*
|
|
* Returns BTM_BUSY if an inquiry, get remote name, or event filter
|
|
* is active, otherwise BTM_SUCCESS
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_ClearInqDb(const RawAddress* p_bda);
|
|
|
|
/*****************************************************************************
|
|
* (e)SCO CHANNEL MANAGEMENT FUNCTIONS
|
|
****************************************************************************/
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_CreateSco
|
|
*
|
|
* Description This function is called to create an SCO connection. If the
|
|
* "is_orig" flag is true, the connection will be originated,
|
|
* otherwise BTM will wait for the other side to connect.
|
|
*
|
|
* Returns BTM_UNKNOWN_ADDR if the ACL connection is not up
|
|
* BTM_BUSY if another SCO being set up to
|
|
* the same BD address
|
|
* BTM_NO_RESOURCES if the max SCO limit has been reached
|
|
* BTM_CMD_STARTED if the connection establishment is started.
|
|
* In this case, "*p_sco_inx" is filled in
|
|
* with the sco index used for the connection.
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_CreateSco(const RawAddress* remote_bda, bool is_orig,
|
|
uint16_t pkt_types, uint16_t* p_sco_inx,
|
|
tBTM_SCO_CB* p_conn_cb, tBTM_SCO_CB* p_disc_cb);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_RemoveSco
|
|
*
|
|
* Description This function is called to remove a specific SCO connection.
|
|
*
|
|
* Returns BTM_CMD_STARTED if successfully initiated, otherwise error
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_RemoveSco(uint16_t sco_inx);
|
|
void BTM_RemoveSco(const RawAddress& bda);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_ReadScoBdAddr
|
|
*
|
|
* Description This function is read the remote BD Address for a specific
|
|
* SCO connection,
|
|
*
|
|
* Returns pointer to BD address or NULL if not known
|
|
*
|
|
******************************************************************************/
|
|
const RawAddress* BTM_ReadScoBdAddr(uint16_t sco_inx);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_SetEScoMode
|
|
*
|
|
* Description This function sets up the negotiated parameters for SCO or
|
|
* eSCO, and sets as the default mode used for calls to
|
|
* BTM_CreateSco. It can be called only when there are no
|
|
* active (e)SCO links.
|
|
*
|
|
* Returns BTM_SUCCESS if the successful.
|
|
* BTM_BUSY if there are one or more active (e)SCO links.
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_SetEScoMode(enh_esco_params_t* p_parms);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_RegForEScoEvts
|
|
*
|
|
* Description This function registers a SCO event callback with the
|
|
* specified instance. It should be used to received
|
|
* connection indication events and change of link parameter
|
|
* events.
|
|
*
|
|
* Returns BTM_SUCCESS if the successful.
|
|
* BTM_ILLEGAL_VALUE if there is an illegal sco_inx
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_RegForEScoEvts(uint16_t sco_inx, tBTM_ESCO_CBACK* p_esco_cback);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_ChangeEScoLinkParms
|
|
*
|
|
* Description This function requests renegotiation of the parameters on
|
|
* the current eSCO Link. If any of the changes are accepted
|
|
* by the controllers, the BTM_ESCO_CHG_EVT event is sent in
|
|
* the tBTM_ESCO_CBACK function with the current settings of
|
|
* the link. The callback is registered through the call to
|
|
* BTM_SetEScoMode.
|
|
*
|
|
*
|
|
* Returns BTM_CMD_STARTED if command is successfully initiated.
|
|
* BTM_ILLEGAL_VALUE if no connection for specified sco_inx.
|
|
* BTM_NO_RESOURCES - not enough resources to initiate command.
|
|
* BTM_MODE_UNSUPPORTED if local controller does not support
|
|
* 1.2 specification.
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_ChangeEScoLinkParms(uint16_t sco_inx,
|
|
tBTM_CHG_ESCO_PARAMS* p_parms);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_EScoConnRsp
|
|
*
|
|
* Description This function is called upon receipt of an (e)SCO connection
|
|
* request event (BTM_ESCO_CONN_REQ_EVT) to accept or reject
|
|
* the request. Parameters used to negotiate eSCO links.
|
|
* If p_parms is NULL, then values set through BTM_SetEScoMode
|
|
* are used.
|
|
* If the link type of the incoming request is SCO, then only
|
|
* the tx_bw, max_latency, content format, and packet_types are
|
|
* valid. The hci_status parameter should be
|
|
* ([0x0] to accept, [0x0d..0x0f] to reject)
|
|
*
|
|
*
|
|
* Returns void
|
|
*
|
|
******************************************************************************/
|
|
void BTM_EScoConnRsp(uint16_t sco_inx, uint8_t hci_status,
|
|
enh_esco_params_t* p_parms);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_GetNumScoLinks
|
|
*
|
|
* Description This function returns the number of active SCO links.
|
|
*
|
|
* Returns uint8_t
|
|
*
|
|
******************************************************************************/
|
|
uint8_t BTM_GetNumScoLinks(void);
|
|
|
|
/*****************************************************************************
|
|
* SECURITY MANAGEMENT FUNCTIONS
|
|
****************************************************************************/
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* 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.
|
|
* dev_class, bd_name, link_key, and features are 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, LinkKey* link_key,
|
|
uint8_t key_type, uint8_t pin_length);
|
|
|
|
/** 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_sec_is_a_bonded_dev
|
|
*
|
|
* Description Is the specified device is a bonded device
|
|
*
|
|
* Returns true - dev is bonded
|
|
*
|
|
******************************************************************************/
|
|
extern bool btm_sec_is_a_bonded_dev(const RawAddress& bda);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_GetPeerDeviceTypeFromFeatures
|
|
*
|
|
* Description This function is called to retrieve the peer device type
|
|
* by referencing the remote features.
|
|
*
|
|
* Parameters: bd_addr - address of the peer
|
|
*
|
|
* Returns BT_DEVICE_TYPE_DUMO if both BR/EDR and BLE transports are
|
|
* supported by the peer,
|
|
* BT_DEVICE_TYPE_BREDR if only BR/EDR transport is supported,
|
|
* BT_DEVICE_TYPE_BLE if only BLE transport is supported.
|
|
*
|
|
******************************************************************************/
|
|
extern tBT_DEVICE_TYPE BTM_GetPeerDeviceTypeFromFeatures(
|
|
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);
|
|
|
|
/*****************************************************************************
|
|
* POWER MANAGEMENT FUNCTIONS
|
|
****************************************************************************/
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_PmRegister
|
|
*
|
|
* Description register or deregister with power manager
|
|
*
|
|
* Returns BTM_SUCCESS if successful,
|
|
* BTM_NO_RESOURCES if no room to hold registration
|
|
* BTM_ILLEGAL_VALUE
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_PmRegister(uint8_t mask, uint8_t* p_pm_id,
|
|
tBTM_PM_STATUS_CBACK* p_cb);
|
|
|
|
// Notified by ACL that a new link is connected
|
|
void BTM_PM_OnConnected(uint16_t handle, const RawAddress& remote_bda);
|
|
|
|
// Notified by ACL that a link is disconnected
|
|
void BTM_PM_OnDisconnected(uint16_t handle);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_SetPowerMode
|
|
*
|
|
* Description store the mode in control block or
|
|
* alter ACL connection behavior.
|
|
*
|
|
* Returns BTM_SUCCESS if successful,
|
|
* BTM_UNKNOWN_ADDR if bd addr is not active or bad
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_SetPowerMode(uint8_t pm_id, const RawAddress& remote_bda,
|
|
const tBTM_PM_PWR_MD* p_mode);
|
|
bool BTM_SetLinkPolicyActiveMode(const RawAddress& remote_bda);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_SetSsrParams
|
|
*
|
|
* Description This sends the given SSR parameters for the given ACL
|
|
* connection if it is in ACTIVE mode.
|
|
*
|
|
* Input Param remote_bda - device address of desired ACL connection
|
|
* max_lat - maximum latency (in 0.625ms)(0-0xFFFE)
|
|
* min_rmt_to - minimum remote timeout
|
|
* min_loc_to - minimum local timeout
|
|
*
|
|
*
|
|
* Returns BTM_SUCCESS if the HCI command is issued successful,
|
|
* BTM_UNKNOWN_ADDR if bd addr is not active or bad
|
|
* BTM_CMD_STORED if the command is stored
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_SetSsrParams(const RawAddress& remote_bda, uint16_t max_lat,
|
|
uint16_t min_rmt_to, uint16_t min_loc_to);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_GetHCIConnHandle
|
|
*
|
|
* Description This function is called to get the handle for an ACL
|
|
* connection to a specific remote BD Address.
|
|
*
|
|
* Returns the handle of the connection, or 0xFFFF if none.
|
|
*
|
|
******************************************************************************/
|
|
uint16_t BTM_GetHCIConnHandle(const RawAddress& remote_bda,
|
|
tBT_TRANSPORT transport);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_IsPhy2mSupported
|
|
*
|
|
* Description This function is called to check PHY 2M support
|
|
* from peer device
|
|
* Returns True when PHY 2M supported false otherwise
|
|
*
|
|
******************************************************************************/
|
|
bool BTM_IsPhy2mSupported(const RawAddress& remote_bda, tBT_TRANSPORT transport);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_RequestPeerSCA
|
|
*
|
|
* Description This function is called to request sleep clock accuracy
|
|
* from peer device
|
|
*
|
|
******************************************************************************/
|
|
extern void BTM_RequestPeerSCA(const RawAddress& remote_bda,
|
|
tBT_TRANSPORT transport);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_GetPeerSCA
|
|
*
|
|
* Description This function is called to get peer sleep clock accuracy
|
|
*
|
|
* Returns SCA or 0xFF if SCA was never previously requested, request
|
|
* is not supported by peer device or ACL does not exist
|
|
*
|
|
******************************************************************************/
|
|
extern uint8_t BTM_GetPeerSCA(const RawAddress& remote_bda,
|
|
tBT_TRANSPORT transport);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_DeleteStoredLinkKey
|
|
*
|
|
* Description This function is called to delete link key for the specified
|
|
* device addresses from the NVRAM storage attached to the
|
|
* Bluetooth controller.
|
|
*
|
|
* Parameters: bd_addr - Addresses of the devices
|
|
* p_cb - Call back function to be called to return
|
|
* the results
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_DeleteStoredLinkKey(const RawAddress* bd_addr,
|
|
tBTM_CMPL_CB* p_cb);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_WriteEIR
|
|
*
|
|
* Description This function is called to write EIR data to controller.
|
|
*
|
|
* Parameters p_buff - allocated HCI command buffer including extended
|
|
* inquriry response
|
|
*
|
|
* Returns BTM_SUCCESS - if successful
|
|
* BTM_MODE_UNSUPPORTED - if local device cannot support it
|
|
*
|
|
******************************************************************************/
|
|
tBTM_STATUS BTM_WriteEIR(BT_HDR* p_buff);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_HasEirService
|
|
*
|
|
* Description This function is called to know if UUID in bit map of UUID.
|
|
*
|
|
* Parameters p_eir_uuid - bit map of UUID list
|
|
* uuid16 - UUID 16-bit
|
|
*
|
|
* Returns true - if found
|
|
* false - if not found
|
|
*
|
|
******************************************************************************/
|
|
bool BTM_HasEirService(const uint32_t* p_eir_uuid, uint16_t uuid16);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_HasInquiryEirService
|
|
*
|
|
* Description Return if a UUID is in the bit map of a UUID list.
|
|
*
|
|
* Parameters p_results - inquiry results
|
|
* uuid16 - UUID 16-bit
|
|
*
|
|
* Returns BTM_EIR_FOUND - if found
|
|
* BTM_EIR_NOT_FOUND - if not found and it is a complete list
|
|
* BTM_EIR_UNKNOWN - if not found and it is not complete list
|
|
*
|
|
******************************************************************************/
|
|
tBTM_EIR_SEARCH_RESULT BTM_HasInquiryEirService(tBTM_INQ_RESULTS* p_results,
|
|
uint16_t uuid16);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_AddEirService
|
|
*
|
|
* Description This function is called to add a service in the bit map UUID
|
|
* list.
|
|
*
|
|
* Parameters p_eir_uuid - bit mask of UUID list for EIR
|
|
* uuid16 - UUID 16-bit
|
|
*
|
|
* Returns None
|
|
*
|
|
******************************************************************************/
|
|
void BTM_AddEirService(uint32_t* p_eir_uuid, uint16_t uuid16);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_RemoveEirService
|
|
*
|
|
* Description This function is called to remove a service from the bit map
|
|
* UUID list.
|
|
*
|
|
* Parameters p_eir_uuid - bit mask of UUID list for EIR
|
|
* uuid16 - UUID 16-bit
|
|
*
|
|
* Returns None
|
|
*
|
|
******************************************************************************/
|
|
void BTM_RemoveEirService(uint32_t* p_eir_uuid, uint16_t uuid16);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_GetEirSupportedServices
|
|
*
|
|
* Description This function is called to get UUID list from bit map UUID
|
|
* list.
|
|
*
|
|
* Parameters p_eir_uuid - bit mask of UUID list for EIR
|
|
* p - reference of current pointer of EIR
|
|
* max_num_uuid16 - max number of UUID can be written in EIR
|
|
* num_uuid16 - number of UUID have been written in EIR
|
|
*
|
|
* Returns BTM_EIR_MORE_16BITS_UUID_TYPE, if it has more than max
|
|
* BTM_EIR_COMPLETE_16BITS_UUID_TYPE, otherwise
|
|
*
|
|
******************************************************************************/
|
|
uint8_t BTM_GetEirSupportedServices(uint32_t* p_eir_uuid, uint8_t** p,
|
|
uint8_t max_num_uuid16,
|
|
uint8_t* p_num_uuid16);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_GetEirUuidList
|
|
*
|
|
* Description This function parses EIR and returns UUID list.
|
|
*
|
|
* Parameters p_eir - EIR
|
|
* eirl_len - EIR len
|
|
* uuid_size - Uuid::kNumBytes16, Uuid::kNumBytes32,
|
|
* Uuid::kNumBytes128
|
|
* p_num_uuid - return number of UUID in found list
|
|
* p_uuid_list - return UUID 16-bit list
|
|
* max_num_uuid - maximum number of UUID to be returned
|
|
*
|
|
* Returns 0 - if not found
|
|
* BTM_EIR_COMPLETE_16BITS_UUID_TYPE
|
|
* BTM_EIR_MORE_16BITS_UUID_TYPE
|
|
* BTM_EIR_COMPLETE_32BITS_UUID_TYPE
|
|
* BTM_EIR_MORE_32BITS_UUID_TYPE
|
|
* BTM_EIR_COMPLETE_128BITS_UUID_TYPE
|
|
* BTM_EIR_MORE_128BITS_UUID_TYPE
|
|
*
|
|
******************************************************************************/
|
|
uint8_t BTM_GetEirUuidList(uint8_t* p_eir, size_t eir_len, uint8_t uuid_size,
|
|
uint8_t* p_num_uuid, uint8_t* p_uuid_list,
|
|
uint8_t max_num_uuid);
|
|
|
|
/*******************************************************************************
|
|
*
|
|
* Function BTM_PM_ReadControllerState
|
|
*
|
|
* Description This function is called to obtain the controller state
|
|
*
|
|
* Returns Controller state (BTM_CONTRL_ACTIVE, BTM_CONTRL_SCAN, and
|
|
* BTM_CONTRL_IDLE)
|
|
*
|
|
******************************************************************************/
|
|
tBTM_CONTRL_STATE BTM_PM_ReadControllerState(void);
|
|
|
|
/**
|
|
* Send remote name request, either to legacy HCI, or to GD shim Name module
|
|
*/
|
|
void SendRemoteNameRequest(const RawAddress& raw_address);
|
|
|
|
bool BTM_IsScoActiveByBdaddr(const RawAddress& remote_bda);
|
|
|
|
uint16_t BTM_GetClockOffset(const RawAddress& remote_bda);
|
|
|
|
/* Read maximum data packet that can be sent over current connection */
|
|
uint16_t BTM_GetMaxPacketSize(const RawAddress& addr);
|
|
|
|
extern tBTM_STATUS BTM_BT_Quality_Report_VSE_Register(
|
|
bool is_register, tBTM_BT_QUALITY_REPORT_RECEIVER* p_bqr_report_receiver);
|
|
|
|
void BTM_LogHistory(const std::string& tag, const RawAddress& addr,
|
|
const std::string& msg);
|
|
void BTM_LogHistory(const std::string& tag, const RawAddress& addr,
|
|
const std::string& msg, const std::string& extra);
|
|
void BTM_LogHistory(const std::string& tag, const tBLE_BD_ADDR& addr,
|
|
const std::string& msg);
|
|
void BTM_LogHistory(const std::string& tag, const tBLE_BD_ADDR& addr,
|
|
const std::string& msg, const std::string& extra);
|
|
|
|
uint8_t btm_ble_read_sec_key_size(const RawAddress& bd_addr);
|
|
|
|
#endif /* BTM_API_H */
|