15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 3c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji * Copyright (C) 2003-2014 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/****************************************************************************** 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * This is the API implementation file for the BTA device manager. 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 24709843216679a3c7852d7d254fde47a9d503abd8Jakub Pawlowski#include <base/bind_helpers.h> 25f355ef5a4d7fb667fc57a0dfb60f738d870e252eMyles Watson#include <string.h> 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 27258c2538e3b62a8cdb403f2730c45d721e5292b4Pavlin Radoslavov#include "bt_common.h" 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_api.h" 295b12a83ba9775c6bce88b23a7c13ef70aa9b6bceJakub Pawlowski#include "bta_closure_api.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_dm_int.h" 31cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#include "bta_sys.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys_int.h" 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btm_api.h" 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btm_int.h" 35d7ffd64accbd50a27289a388856e56244ccbb5daMyles Watson#include "osi/include/osi.h" 365cd8bff2dd0337cb52bf48f312e3d2d55a8882fbMike J. Chen#include "utl.h" 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 398af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Constants 408af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 42cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonstatic const tBTA_SYS_REG bta_dm_reg = {bta_dm_sm_execute, bta_dm_sm_disable}; 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 44cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonstatic const tBTA_SYS_REG bta_dm_search_reg = {bta_dm_search_sm_execute, 45cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_dm_search_sm_disable}; 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 488af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 498af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_EnableBluetooth 508af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 518af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Enables bluetooth service. This function must be 528af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * called before any other functions in the BTA API are called. 538af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 548af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 558af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns tBTA_STATUS 568af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 578af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 58cd1fd07f1306e08fe048682dd5918987e579f937Myles WatsontBTA_STATUS BTA_EnableBluetooth(tBTA_DM_SEC_CBACK* p_cback) { 59cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson /* Bluetooth disabling is in progress */ 60cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (bta_dm_cb.disabling) return BTA_FAILURE; 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 62cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_register(BTA_ID_DM, &bta_dm_reg); 63cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_register(BTA_ID_DM_SEARCH, &bta_dm_search_reg); 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 65cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson /* if UUID list is not provided as static data */ 66cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_eir_register(bta_dm_eir_update_uuid); 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 68cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_ENABLE* p_msg = 69cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_ENABLE*)osi_malloc(sizeof(tBTA_DM_API_ENABLE)); 70cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_ENABLE_EVT; 71cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_sec_cback = p_cback; 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 73cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 74717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 75cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson return BTA_SUCCESS; 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 798af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 808af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DisableBluetooth 818af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 828af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Disables bluetooth service. This function is called when 838af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * the application no longer needs bluetooth service 848af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 858af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 868af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 878af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 88cd1fd07f1306e08fe048682dd5918987e579f937Myles WatsontBTA_STATUS BTA_DisableBluetooth(void) { 89cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR* p_msg = (BT_HDR*)osi_malloc(sizeof(BT_HDR)); 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 91cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->event = BTA_DM_API_DISABLE_EVT; 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 93cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 95cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson return BTA_SUCCESS; 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 998af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1008af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_EnableTestMode 1018af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1028af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Enables bluetooth device under test mode 1038af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1048af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1058af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns tBTA_STATUS 1068af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1078af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 108cd1fd07f1306e08fe048682dd5918987e579f937Myles WatsontBTA_STATUS BTA_EnableTestMode(void) { 109cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR* p_msg = (BT_HDR*)osi_malloc(sizeof(BT_HDR)); 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 111cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson APPL_TRACE_API("%s", __func__); 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 113cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->event = BTA_DM_API_ENABLE_TEST_MODE_EVT; 114cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 115717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 116cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson return BTA_SUCCESS; 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1208af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1218af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DisableTestMode 1228af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1238af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Disable bluetooth device under test mode 1248af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1258af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1268af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns None 1278af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1288af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 129cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DisableTestMode(void) { 130cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR* p_msg = (BT_HDR*)osi_malloc(sizeof(BT_HDR)); 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 132cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson APPL_TRACE_API("%s", __func__); 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 134cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->event = BTA_DM_API_DISABLE_TEST_MODE_EVT; 135cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1398af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1408af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmSetDeviceName 1418af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1428af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function sets the Bluetooth name of local device 1438af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1448af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1458af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 1468af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1478af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 148cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmSetDeviceName(char* p_name) { 149cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_SET_NAME* p_msg = 150cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_SET_NAME*)osi_malloc(sizeof(tBTA_DM_API_SET_NAME)); 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 152cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_SET_NAME_EVT; 153cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson strlcpy((char*)p_msg->name, p_name, BD_NAME_LEN); 154717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 155cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1598af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1608af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmSetVisibility 1618af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1628af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function sets the Bluetooth connectable, 163cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * discoverable, pairable and conn paired only modes of local 1641baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * device 1658af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1668af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1678af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 1688af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1698af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 170cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmSetVisibility(tBTA_DM_DISC disc_mode, tBTA_DM_CONN conn_mode, 171cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t pairable_mode, uint8_t conn_filter) { 172cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_SET_VISIBILITY* p_msg = 173cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_SET_VISIBILITY*)osi_malloc(sizeof(tBTA_DM_MSG)); 174cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 175cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_SET_VISIBILITY_EVT; 176cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->disc_mode = disc_mode; 177cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->conn_mode = conn_mode; 178cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->pair_mode = pairable_mode; 179cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->conn_paired_only = conn_filter; 180cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 181cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1858af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1868af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmSearch 1878af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 188cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * Description This function searches for peer Bluetooth devices. It 1891baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * performs an inquiry and gets the remote name for devices. 1901baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * Service discovery is done if services is non zero 1918af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1928af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1938af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 1948af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1958af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 196cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmSearch(tBTA_DM_INQ* p_dm_inq, tBTA_SERVICE_MASK services, 197cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_SEARCH_CBACK* p_cback) { 198cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_SEARCH* p_msg = 199cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_SEARCH*)osi_calloc(sizeof(tBTA_DM_API_SEARCH)); 200cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 201cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_SEARCH_EVT; 202cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(&p_msg->inq_params, p_dm_inq, sizeof(tBTA_DM_INQ)); 203cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->services = services; 204cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_cback = p_cback; 205cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->rs_res = BTA_DM_RS_NONE; 206cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 207cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2118af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2128af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmSearchCancel 2138af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2148af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function cancels a search initiated by BTA_DmSearch 2158af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2168af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2178af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 2188af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2198af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 220cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmSearchCancel(void) { 221cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR* p_msg = (BT_HDR*)osi_malloc(sizeof(BT_HDR)); 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 223cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->event = BTA_DM_API_SEARCH_CANCEL_EVT; 224cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2288af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2298af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmDiscover 2308af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2318af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function does service discovery for services of a 2328af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * peer device 2338af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2348af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2358af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 2368af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2378af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_DmDiscover(BD_ADDR bd_addr, tBTA_SERVICE_MASK services, 239cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_SEARCH_CBACK* p_cback, bool sdp_search) { 240cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_DISCOVER* p_msg = 241cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_DISCOVER*)osi_calloc(sizeof(tBTA_DM_API_DISCOVER)); 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 243cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT; 244cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 245cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->services = services; 246cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_cback = p_cback; 247cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->sdp_search = sdp_search; 2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 249cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2538af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2548af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmDiscoverUUID 2558af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2568af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function does service discovery for services of a 2578af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * peer device 2588af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2598af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2608af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 2618af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2628af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 263cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmDiscoverUUID(BD_ADDR bd_addr, tSDP_UUID* uuid, 264cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_SEARCH_CBACK* p_cback, bool sdp_search) { 265cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_DISCOVER* p_msg = 266cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_DISCOVER*)osi_malloc(sizeof(tBTA_DM_API_DISCOVER)); 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 268cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT; 269cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 270cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->services = BTA_USER_SERVICE_MASK; // Not exposed at API level 271cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_cback = p_cback; 272cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->sdp_search = sdp_search; 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 274cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->num_uuid = 0; 275cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_uuid = NULL; 2769979121f0865e07432215529f9b157792ae3ef21Myles Watson 277cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(&p_msg->uuid, uuid, sizeof(tSDP_UUID)); 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 279cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2838af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2848af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBond 2858af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2868af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function initiates a bonding procedure with a peer 2878af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * device 2888af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2898af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2908af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 2918af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 2928af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 293cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmBond(BD_ADDR bd_addr) { 294cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_BOND* p_msg = 295cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_BOND*)osi_malloc(sizeof(tBTA_DM_API_BOND)); 29676356aee883af67898ddc1aa3b628195f396d42aVenkatRaghavan VijayaRaghavan 297cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_BOND_EVT; 298cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 299cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->transport = BTA_TRANSPORT_UNKNOWN; 300717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 301cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 3027fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta} 3037fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 3047fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/******************************************************************************* 3058af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3068af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBondByTransports 3078af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3088af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function initiates a bonding procedure with a peer 3098af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * device 3108af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3118af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3128af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 3138af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3148af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 315cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmBondByTransport(BD_ADDR bd_addr, tBTA_TRANSPORT transport) { 316cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_BOND* p_msg = 317cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_BOND*)osi_malloc(sizeof(tBTA_DM_API_BOND)); 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 319cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_BOND_EVT; 320cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 321cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->transport = transport; 3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 323cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3278af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3288af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBondCancel 3298af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3308af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function cancels the bonding procedure with a peer 3318af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * device 3328af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3338af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3348af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 3358af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3368af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 337cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmBondCancel(BD_ADDR bd_addr) { 338cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_BOND_CANCEL* p_msg = 339cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_BOND_CANCEL*)osi_malloc(sizeof(tBTA_DM_API_BOND_CANCEL)); 3405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 341cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_BOND_CANCEL_EVT; 342cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 3435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 344cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 3455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3488af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3498af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmPinReply 3508af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3518af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function provides a pincode for a remote device when 3528af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * one is requested by DM through BTA_DM_PIN_REQ_EVT 3538af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3548af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3558af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 3568af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3578af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 358cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmPinReply(BD_ADDR bd_addr, bool accept, uint8_t pin_len, 359cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_pin) 3605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 362cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_PIN_REPLY* p_msg = 363cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_PIN_REPLY*)osi_malloc(sizeof(tBTA_DM_API_PIN_REPLY)); 364cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 365cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_PIN_REPLY_EVT; 366cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 367cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->accept = accept; 368cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (accept) { 369cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->pin_len = pin_len; 370cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(p_msg->p_pin, p_pin, pin_len); 371cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } 372cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 373cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 3745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3778af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3788af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmLocalOob 3798af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3808af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function retrieves the OOB data from local controller. 3818af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * The result is reported by: 3828af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * - bta_dm_co_loc_oob_ext() if device supports secure 3838af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * connections (SC) 3848af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * - bta_dm_co_loc_oob() if device doesn't support SC 3858af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3868af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 3878af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3888af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 389cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmLocalOob(void) { 390cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_LOC_OOB* p_msg = 391cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_LOC_OOB*)osi_malloc(sizeof(tBTA_DM_API_LOC_OOB)); 3925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 393cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_LOC_OOB_EVT; 394cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 3955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 396175da70b6d60349dffdee3a9cd13182b293edf4cJakub Pawlowski 3975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3988af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 3998af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmConfirm 4008af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4018af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function accepts or rejects the numerical value of the 4028af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Simple Pairing process on BTA_DM_SP_CFM_REQ_EVT 4038af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4048af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 4058af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4068af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 407cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmConfirm(BD_ADDR bd_addr, bool accept) { 408cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_CONFIRM* p_msg = 409cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_CONFIRM*)osi_malloc(sizeof(tBTA_DM_API_CONFIRM)); 4105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 411cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_CONFIRM_EVT; 412cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 413cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->accept = accept; 414717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 415cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 4165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 4198af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4208af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmAddDevice 4218af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4228af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function adds a device to the security database list of 4238af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * peer device 4248af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4258af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4268af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 4278af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4288af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 4295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_DmAddDevice(BD_ADDR bd_addr, DEV_CLASS dev_class, LINK_KEY link_key, 430e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen tBTA_SERVICE_MASK trusted_mask, bool is_trusted, 431cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t key_type, tBTA_IO_CAP io_cap, uint8_t pin_length) { 432cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_ADD_DEVICE* p_msg = 433cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_ADD_DEVICE*)osi_calloc(sizeof(tBTA_DM_API_ADD_DEVICE)); 434cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 435cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_ADD_DEVICE_EVT; 436cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 437cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->tm = trusted_mask; 438cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->is_trusted = is_trusted; 439cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->io_cap = io_cap; 440cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 441cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (link_key) { 442cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->link_key_known = true; 443cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->key_type = key_type; 444cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(p_msg->link_key, link_key, LINK_KEY_LEN); 445cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } 4465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 447cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson /* Load device class if specified */ 448cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (dev_class) { 449cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->dc_known = true; 450cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(p_msg->dc, dev_class, DEV_CLASS_LEN); 451cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } 4525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 453cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memset(p_msg->bd_name, 0, BD_NAME_LEN + 1); 454cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memset(p_msg->features, 0, sizeof(p_msg->features)); 455cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->pin_length = pin_length; 4565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 457cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 4585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 4618af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4628af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmRemoveDevice 4638af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 464cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * Description This function removes a device fromthe security database 4651baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * list of peer device. It manages unpairing even while 4661baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * connected. 4678af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4688af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4698af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 4708af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4718af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 472cd1fd07f1306e08fe048682dd5918987e579f937Myles WatsontBTA_STATUS BTA_DmRemoveDevice(BD_ADDR bd_addr) { 473cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_REMOVE_DEVICE* p_msg = 474cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_REMOVE_DEVICE*)osi_calloc(sizeof(tBTA_DM_API_REMOVE_DEVICE)); 4755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 476cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_REMOVE_DEVICE_EVT; 477cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 4785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 479cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 4805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 481cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson return BTA_SUCCESS; 4825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 4835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 4858af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4868af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_GetEirService 4878af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4888af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function is called to get BTA service mask from EIR. 4898af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4908af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters p_eir - pointer of EIR significant part 4918af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * p_services - return the BTA service mask 4928af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4938af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns None 4948af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 4958af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 496cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern const uint16_t bta_service_id_to_uuid_lkup_tbl[]; 4970595ca0018ac9980d1dd7e192301f8494a01f9cbJakub Pawlowskivoid BTA_GetEirService(uint8_t* p_eir, size_t eir_len, 4980595ca0018ac9980d1dd7e192301f8494a01f9cbJakub Pawlowski tBTA_SERVICE_MASK* p_services) { 499cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t xx, yy; 500cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t num_uuid, max_num_uuid = 32; 501cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t uuid_list[32 * LEN_UUID_16]; 502cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t* p_uuid16 = (uint16_t*)uuid_list; 503cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_SERVICE_MASK mask; 504cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 5050595ca0018ac9980d1dd7e192301f8494a01f9cbJakub Pawlowski BTM_GetEirUuidList(p_eir, eir_len, LEN_UUID_16, &num_uuid, uuid_list, 5060595ca0018ac9980d1dd7e192301f8494a01f9cbJakub Pawlowski max_num_uuid); 507cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson for (xx = 0; xx < num_uuid; xx++) { 508cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson mask = 1; 509cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson for (yy = 0; yy < BTA_MAX_SERVICE_ID; yy++) { 510cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (*(p_uuid16 + xx) == bta_service_id_to_uuid_lkup_tbl[yy]) { 511cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson *p_services |= mask; 512cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson break; 513cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } 514cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson mask <<= 1; 515cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } 5165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 517cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson /* for HSP v1.2 only device */ 518cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (*(p_uuid16 + xx) == UUID_SERVCLASS_HEADSET_HS) 519cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson *p_services |= BTA_HSP_SERVICE_MASK; 5205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 521cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (*(p_uuid16 + xx) == UUID_SERVCLASS_HDP_SOURCE) 522cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson *p_services |= BTA_HL_SERVICE_MASK; 5235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 524cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (*(p_uuid16 + xx) == UUID_SERVCLASS_HDP_SINK) 525cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson *p_services |= BTA_HL_SERVICE_MASK; 526cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } 5275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 5308af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 5318af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmGetConnectionState 5328af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 5338af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Returns whether the remote device is currently connected. 5348af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 5358af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns 0 if the device is NOT connected. 5368af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 5378af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 538cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonuint16_t BTA_DmGetConnectionState(const BD_ADDR bd_addr) { 539cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_PEER_DEVICE* p_dev = bta_dm_find_peer_device(bd_addr); 540cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson return (p_dev && p_dev->conn_state == BTA_DM_CONNECTED); 5415c0b052090a57b3926669c23349b0f0db68853f8Andre Eisenbach} 5425c0b052090a57b3926669c23349b0f0db68853f8Andre Eisenbach 5435c0b052090a57b3926669c23349b0f0db68853f8Andre Eisenbach/******************************************************************************* 5448af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Device Identification (DI) Server Functions 5458af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 5465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 5478af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 5488af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmSetLocalDiRecord 5498af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 5508af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function adds a DI record to the local SDP database. 5518af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 5528af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns BTA_SUCCESS if record set sucessfully, otherwise error code. 5538af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 5548af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 555cd1fd07f1306e08fe048682dd5918987e579f937Myles WatsontBTA_STATUS BTA_DmSetLocalDiRecord(tBTA_DI_RECORD* p_device_info, 556cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint32_t* p_handle) { 557cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_STATUS status = BTA_FAILURE; 558cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 559cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (bta_dm_di_cb.di_num < BTA_DI_NUM_MAX) { 560cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (SDP_SetLocalDiRecord((tSDP_DI_RECORD*)p_device_info, p_handle) == 561cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson SDP_SUCCESS) { 562cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (!p_device_info->primary_record) { 563cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_dm_di_cb.di_handle[bta_dm_di_cb.di_num] = *p_handle; 564cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_dm_di_cb.di_num++; 565cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } 566cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 567cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_add_uuid(UUID_SERVCLASS_PNP_INFORMATION); 568cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson status = BTA_SUCCESS; 5695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 570cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } 5715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 572cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson return status; 5735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 5768af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 5778af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function bta_dmexecutecallback 5788af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 579cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * Description This function will request BTA to execute a call back in the 5801baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * context of BTU task. 5818af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * This API was named in lower case because it is only intended 5828af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * for the internal customers(like BTIF). 5838af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 5848af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 5858af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 5868af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 587cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid bta_dmexecutecallback(tBTA_DM_EXEC_CBACK* p_callback, void* p_param) { 588cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_EXECUTE_CBACK* p_msg = 589cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_EXECUTE_CBACK*)osi_malloc(sizeof(tBTA_DM_MSG)); 5905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 591cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_EXECUTE_CBACK_EVT; 592cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_param = p_param; 593cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_exec_cback = p_callback; 594717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 595cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 5965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 5975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 5998af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6008af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmAddBleKey 6018af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6028af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Add/modify LE device information. This function will be 6038af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * normally called during host startup to restore all required 6048af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * information stored in the NVRAM. 6058af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6068af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: bd_addr - BD address of the peer 6078af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * p_le_key - LE key values. 6088af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * key_type - LE SMP key type. 6098af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6108af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns BTA_SUCCESS if successful 6118af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * BTA_FAIL if operation failed. 6128af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6138af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 614cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmAddBleKey(BD_ADDR bd_addr, tBTA_LE_KEY_VALUE* p_le_key, 615cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_LE_KEY_TYPE key_type) { 616cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_ADD_BLEKEY* p_msg = 617cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_ADD_BLEKEY*)osi_calloc(sizeof(tBTA_DM_API_ADD_BLEKEY)); 6185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 619cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_ADD_BLEKEY_EVT; 620cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->key_type = key_type; 621cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 622cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(&p_msg->blekey, p_le_key, sizeof(tBTA_LE_KEY_VALUE)); 6235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 624cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 6255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 6265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 6275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 6288af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6298af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmAddBleDevice 6308af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6318af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Add a BLE device. This function will be normally called 6328af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * during host startup to restore all required information 6338af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * for a LE device stored in the NVRAM. 6348af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6358af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: bd_addr - BD address of the peer 6368af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * dev_type - Remote device's device type. 6378af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * addr_type - LE device address type. 6388af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6398af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 6408af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6418af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 642cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmAddBleDevice(BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, 643cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBT_DEVICE_TYPE dev_type) { 644cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_ADD_BLE_DEVICE* p_msg = (tBTA_DM_API_ADD_BLE_DEVICE*)osi_calloc( 645cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBTA_DM_API_ADD_BLE_DEVICE)); 6465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 647cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_ADD_BLEDEVICE_EVT; 648cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 649cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->addr_type = addr_type; 650cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->dev_type = dev_type; 6515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 652cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 6535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 654717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 6555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 6568af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6578af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBlePasskeyReply 6588af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6598af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Send BLE SMP passkey reply. 6608af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6618af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: bd_addr - BD address of the peer 6628af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * accept - passkey entry sucessful or declined. 6638af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * passkey - passkey value, must be a 6 digit number, 6648af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * can be lead by 0. 6658af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6668af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 6678af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6688af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 669cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmBlePasskeyReply(BD_ADDR bd_addr, bool accept, uint32_t passkey) { 670cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_PASSKEY_REPLY* p_msg = 671cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_PASSKEY_REPLY*)osi_calloc(sizeof(tBTA_DM_API_PASSKEY_REPLY)); 6725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 673cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_BLE_PASSKEY_REPLY_EVT; 674cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 675cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->accept = accept; 6765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 677cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (accept) p_msg->passkey = passkey; 6785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 679cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 6805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 681717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 6825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 6838af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6848af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBleConfirmReply 6858af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6868af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Send BLE SMP SC user confirmation reply. 6878af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6888af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: bd_addr - BD address of the peer 689cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * accept - numbers to compare are the same or 6901baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * different. 6918af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6928af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 6938af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 6948af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 695cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmBleConfirmReply(BD_ADDR bd_addr, bool accept) { 696cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_CONFIRM* p_msg = 697cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_CONFIRM*)osi_calloc(sizeof(tBTA_DM_API_CONFIRM)); 698717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 699cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_BLE_CONFIRM_REPLY_EVT; 700cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 701cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->accept = accept; 702717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 703cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 704444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji} 705444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji 706444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji/******************************************************************************* 7078af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7088af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBleSecurityGrant 7098af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7108af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Grant security request access. 7118af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7128af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: bd_addr - BD address of the peer 7138af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * res - security grant status. 7148af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7158af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 7168af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7178af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 718cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmBleSecurityGrant(BD_ADDR bd_addr, tBTA_DM_BLE_SEC_GRANT res) { 719cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_BLE_SEC_GRANT* p_msg = 720cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_BLE_SEC_GRANT*)osi_calloc(sizeof(tBTA_DM_API_BLE_SEC_GRANT)); 7215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 722cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_BLE_SEC_GRANT_EVT; 723cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 724cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->res = res; 7255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 726cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 7275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 728717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 7295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 7308af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7318af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmSetBlePrefConnParams 7328af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7338af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function is called to set the preferred connection 7348af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * parameters when default connection parameter is not desired. 7358af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7368af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: bd_addr - BD address of the peripheral 7378af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * scan_interval - scan interval 7388af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * scan_window - scan window 7398af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * min_conn_int - minimum preferred connection interval 7408af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * max_conn_int - maximum preferred connection interval 7418af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * slave_latency - preferred slave latency 7428af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * supervision_tout - preferred supervision timeout 7438af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7448af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7458af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 7468af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7478af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 748cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmSetBlePrefConnParams(const BD_ADDR bd_addr, uint16_t min_conn_int, 749cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t max_conn_int, uint16_t slave_latency, 750cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t supervision_tout) { 751cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_BLE_CONN_PARAMS* p_msg = (tBTA_DM_API_BLE_CONN_PARAMS*)osi_calloc( 752cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBTA_DM_API_BLE_CONN_PARAMS)); 7535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 754cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_BLE_CONN_PARAM_EVT; 755cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(p_msg->peer_bda, bd_addr, BD_ADDR_LEN); 756cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->conn_int_max = max_conn_int; 757cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->conn_int_min = min_conn_int; 758cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->slave_latency = slave_latency; 759cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->supervision_tout = supervision_tout; 7605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 761cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 7625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 7635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 7645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 7658af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7668af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmSetBleConnScanParams 7678af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7688af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function is called to set scan parameters used in 7698af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * BLE connection request 7708af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7718af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: scan_interval - scan interval 7728af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * scan_window - scan window 7738af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7748af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 7758af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 7768af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 777cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmSetBleConnScanParams(uint32_t scan_interval, uint32_t scan_window) { 778cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_BLE_SCAN_PARAMS* p_msg = (tBTA_DM_API_BLE_SCAN_PARAMS*)osi_calloc( 779cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBTA_DM_API_BLE_SCAN_PARAMS)); 780717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 781cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT; 782cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->scan_int = scan_interval; 783cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->scan_window = scan_window; 784717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 785cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 7865725fc6d2c639a8c22a08b9b6629309eeda3715eSatya Calloji} 7875725fc6d2c639a8c22a08b9b6629309eeda3715eSatya Calloji 78883211b0ccceb53586ac651a4d67ded7443b2f222Jakub Pawlowski/** 78983211b0ccceb53586ac651a4d67ded7443b2f222Jakub Pawlowski * Set BLE connectable mode to auto connect 79083211b0ccceb53586ac651a4d67ded7443b2f222Jakub Pawlowski */ 79183211b0ccceb53586ac651a4d67ded7443b2f222Jakub Pawlowskivoid BTA_DmBleStartAutoConn() { 79283211b0ccceb53586ac651a4d67ded7443b2f222Jakub Pawlowski tBTA_DM_API_SET_NAME* p_msg = 79383211b0ccceb53586ac651a4d67ded7443b2f222Jakub Pawlowski (tBTA_DM_API_SET_NAME*)osi_calloc(sizeof(tBTA_DM_API_SET_NAME)); 7945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 795cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_BLE_SET_BG_CONN_TYPE; 796cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 7975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 7987fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 7995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 8008af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8018af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function bta_dm_discover_send_msg 8028af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8038af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function send discover message to BTA task. 8048af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8058af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 8068af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8078af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 808cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonstatic void bta_dm_discover_send_msg(BD_ADDR bd_addr, 809cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_SERVICE_MASK_EXT* p_services, 810cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_SEARCH_CBACK* p_cback, 811cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool sdp_search, 812cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_TRANSPORT transport) { 813cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson const size_t len = p_services ? (sizeof(tBTA_DM_API_DISCOVER) + 814cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBT_UUID) * p_services->num_uuid) 815cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson : sizeof(tBTA_DM_API_DISCOVER); 816cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_DISCOVER* p_msg = (tBTA_DM_API_DISCOVER*)osi_calloc(len); 817cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 818cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT; 819cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 820cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_cback = p_cback; 821cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->sdp_search = sdp_search; 822cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->transport = transport; 823cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 824cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (p_services != NULL) { 825cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->services = p_services->srvc_mask; 826cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->num_uuid = p_services->num_uuid; 827cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (p_services->num_uuid != 0) { 828cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_uuid = (tBT_UUID*)(p_msg + 1); 829cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(p_msg->p_uuid, p_services->p_uuid, 830cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBT_UUID) * p_services->num_uuid); 8315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 832cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } 833717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 834cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 8357fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta} 836717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 8377fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/******************************************************************************* 8388af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8398af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmDiscoverByTransport 8408af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8418af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function does service discovery on particular transport 8428af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * for services of a 8438af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * peer device. When services.num_uuid is 0, it indicates all 8448af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * GATT based services are to be searched; otherwise a list of 8458af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * UUID of interested services should be provided through 8468af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * p_services->p_uuid. 8478af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8488af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8498af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8508af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 8518af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8528af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 853cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmDiscoverByTransport(BD_ADDR bd_addr, 854cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_SERVICE_MASK_EXT* p_services, 855cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_SEARCH_CBACK* p_cback, bool sdp_search, 856cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_TRANSPORT transport) { 857cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_dm_discover_send_msg(bd_addr, p_services, p_cback, sdp_search, transport); 8587fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta} 8597fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta 8607fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/******************************************************************************* 8618af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8628af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmDiscoverExt 8638af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8648af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function does service discovery for services of a 8658af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * peer device. When services.num_uuid is 0, it indicates all 8668af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * GATT based services are to be searched; other wise a list of 8678af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * UUID of interested services should be provided through 8688af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * p_services->p_uuid. 8698af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8708af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8718af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8728af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 8738af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8748af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 875cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmDiscoverExt(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT* p_services, 876cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_SEARCH_CBACK* p_cback, bool sdp_search) { 877cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_dm_discover_send_msg(bd_addr, p_services, p_cback, sdp_search, 878cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_TRANSPORT_UNKNOWN); 8795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 8805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 8828af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8838af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmSearchExt 8848af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 885cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * Description This function searches for peer Bluetooth devices. It 8861baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * performs an inquiry and gets the remote name for devices. 8871baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * Service discovery is done if services is non zero 8888af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8898af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters p_dm_inq: inquiry conditions 890cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * p_services: if service is not empty, service discovery will 8911baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * be done. For all GATT based service conditions, 8921baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * put num_uuid, and p_uuid is the pointer to the 8931baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * list of UUID values. 8941baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * p_cback: callback function when search is completed. 8958af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8968af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8978af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 8988af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 8998af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9008af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 901cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmSearchExt(tBTA_DM_INQ* p_dm_inq, tBTA_SERVICE_MASK_EXT* p_services, 902cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_SEARCH_CBACK* p_cback) { 903cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson const size_t len = p_services ? (sizeof(tBTA_DM_API_SEARCH) + 904cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBT_UUID) * p_services->num_uuid) 905cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson : sizeof(tBTA_DM_API_SEARCH); 906cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_SEARCH* p_msg = (tBTA_DM_API_SEARCH*)osi_calloc(len); 907cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 908cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_SEARCH_EVT; 909cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(&p_msg->inq_params, p_dm_inq, sizeof(tBTA_DM_INQ)); 910cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_cback = p_cback; 911cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->rs_res = BTA_DM_RS_NONE; 912cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 913cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (p_services != NULL) { 914cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->services = p_services->srvc_mask; 915cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->num_uuid = p_services->num_uuid; 916cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 917cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (p_services->num_uuid != 0) { 918cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_uuid = (tBT_UUID*)(p_msg + 1); 919cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(p_msg->p_uuid, p_services->p_uuid, 920cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBT_UUID) * p_services->num_uuid); 921cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } else { 922cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_uuid = NULL; 9235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 924cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } 925717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 926cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 927d628a0695e73973e0bd54dd026bfed900b69f804Myles Watson} 9289979121f0865e07432215529f9b157792ae3ef21Myles Watson 929ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 9308af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9318af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBleUpdateConnectionParam 9328af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 933cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * Description Update connection parameters, can only be used when 9341baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * connection is up. 9358af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9368af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: bd_addr - BD address of the peer 9371baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * min_int - minimum connection interval, 9381baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * [0x0004 ~ 0x4000] 9391baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * max_int - maximum connection interval, 9401baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * [0x0004 ~ 0x4000] 9418af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * latency - slave latency [0 ~ 500] 9428af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * timeout - supervision timeout [0x000a ~ 0xc80] 9438af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9448af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 9458af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9468af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 947e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssenvoid BTA_DmBleUpdateConnectionParam(BD_ADDR bd_addr, uint16_t min_int, 948e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen uint16_t max_int, uint16_t latency, 949cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t timeout) { 950cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_UPDATE_CONN_PARAM* p_msg = 951cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_UPDATE_CONN_PARAM*)osi_calloc( 952cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBTA_DM_API_UPDATE_CONN_PARAM)); 953cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 954cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_UPDATE_CONN_PARAM_EVT; 955cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 956cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->min_int = min_int; 957cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->max_int = max_int; 958cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->latency = latency; 959cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->timeout = timeout; 960cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 961cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 96276356aee883af67898ddc1aa3b628195f396d42aVenkatRaghavan VijayaRaghavan} 963717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 964ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 9658af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9668af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBleConfigLocalPrivacy 9678af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9688af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description Enable/disable privacy on the local device 9698af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9708af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: privacy_enable - enable/disabe privacy on remote device. 9718af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9728af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 9738af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9748af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 975cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmBleConfigLocalPrivacy(bool privacy_enable) { 97684baa7f16e830394408278dbb8c508dd9fa02887Myles Watson#if (BLE_PRIVACY_SPT == TRUE) 977cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_LOCAL_PRIVACY* p_msg = (tBTA_DM_API_LOCAL_PRIVACY*)osi_calloc( 978cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBTA_DM_API_ENABLE_PRIVACY)); 979ed534e330bf63c72e778fc8daae09ddd63c395b2Wei Wang 980cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_LOCAL_PRIVACY_EVT; 981cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->privacy_enable = privacy_enable; 982ed534e330bf63c72e778fc8daae09ddd63c395b2Wei Wang 983cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 984ed534e330bf63c72e778fc8daae09ddd63c395b2Wei Wang#else 985cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson UNUSED(privacy_enable); 986ed534e330bf63c72e778fc8daae09ddd63c395b2Wei Wang#endif 987ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 9885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 9895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 9908af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9918af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBleGetEnergyInfo 9928af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9938af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function is called to obtain the energy info 9948af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9958af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters p_cmpl_cback - Command complete callback 9968af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9978af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 9988af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 9998af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 1000cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmBleGetEnergyInfo(tBTA_BLE_ENERGY_INFO_CBACK* p_cmpl_cback) { 1001cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson const size_t len = sizeof(tBTA_DM_API_ENERGY_INFO) + sizeof(tBLE_BD_ADDR); 1002cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_ENERGY_INFO* p_msg = (tBTA_DM_API_ENERGY_INFO*)osi_calloc(len); 1003e5ba8841cd39e17c05aeb4ab65b5b761d41577daSatya Calloji 1004cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson APPL_TRACE_API("%s", __func__); 1005e5ba8841cd39e17c05aeb4ab65b5b761d41577daSatya Calloji 1006cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_BLE_ENERGY_INFO_EVT; 1007cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_energy_info_cback = p_cmpl_cback; 1008717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov 1009cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 1010e5ba8841cd39e17c05aeb4ab65b5b761d41577daSatya Calloji} 1011e5ba8841cd39e17c05aeb4ab65b5b761d41577daSatya Calloji 1012e5ba8841cd39e17c05aeb4ab65b5b761d41577daSatya Calloji/******************************************************************************* 10138af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10148af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBleUpdateConnectionParams 10158af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1016cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * Description Update connection parameters, can only be used when 10171baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * connection is up. 10188af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10198af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: bd_addr - BD address of the peer 10201baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * min_int - minimum connection interval, 10211baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * [0x0004 ~ 0x4000] 10221baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * max_int - maximum connection interval, 10231baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * [0x0004 ~ 0x4000] 10248af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * latency - slave latency [0 ~ 500] 10258af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * timeout - supervision timeout [0x000a ~ 0xc80] 10268af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10278af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 10288af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10298af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 1030cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmBleUpdateConnectionParams(const BD_ADDR bd_addr, uint16_t min_int, 1031cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t max_int, uint16_t latency, 1032cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t timeout) { 1033cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_UPDATE_CONN_PARAM* p_msg = 1034cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_UPDATE_CONN_PARAM*)osi_calloc( 1035cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBTA_DM_API_UPDATE_CONN_PARAM)); 1036cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 1037cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_UPDATE_CONN_PARAM_EVT; 1038cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->bd_addr, bd_addr); 1039cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->min_int = min_int; 1040cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->max_int = max_int; 1041cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->latency = latency; 1042cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->timeout = timeout; 1043cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 1044cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 1045ea85048a8e86b1e1b6b725649f6bb0834ba17301Wei Wang} 1046636d6714a4c08dd99d2147dcce05dc3892e804b4Priti Aghera 1047636d6714a4c08dd99d2147dcce05dc3892e804b4Priti Aghera/******************************************************************************* 10488af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10498af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBleSetDataLength 10508af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10518af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function is to set maximum LE data packet size 10528af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10538af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 10548af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10558af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10568af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 1057cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmBleSetDataLength(BD_ADDR remote_device, uint16_t tx_data_length) { 1058cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_BLE_SET_DATA_LENGTH* p_msg = 1059cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_BLE_SET_DATA_LENGTH*)osi_malloc( 1060cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBTA_DM_API_BLE_SET_DATA_LENGTH)); 1061636d6714a4c08dd99d2147dcce05dc3892e804b4Priti Aghera 1062cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bdcpy(p_msg->remote_bda, remote_device); 1063cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_SET_DATA_LENGTH_EVT; 1064cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->tx_data_length = tx_data_length; 1065636d6714a4c08dd99d2147dcce05dc3892e804b4Priti Aghera 1066cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 1067636d6714a4c08dd99d2147dcce05dc3892e804b4Priti Aghera} 1068636d6714a4c08dd99d2147dcce05dc3892e804b4Priti Aghera 10697fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/******************************************************************************* 10708af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10718af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmSetEncryption 10728af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10738af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function is called to ensure that connection is 10748af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * encrypted. Should be called only on an open connection. 10758af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Typically only needed for connections that first want to 10768af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * bring up unencrypted links, then later encrypt them. 10778af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10788af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: bd_addr - Address of the peer device 10798af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * transport - transport of the link to be encruypted 10808af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * p_callback - Pointer to callback function to indicat the 10818af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * link encryption status 10828af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * sec_act - This is the security action to indicate 10831baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * what kind of BLE security level is required 10841baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * for the BLE link if BLE is supported. 1085cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * Note: This parameter is ignored for the 10861baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * BR/EDR or if BLE is not supported. 10878af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10888af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 10898af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 10908af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 1091cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmSetEncryption(BD_ADDR bd_addr, tBTA_TRANSPORT transport, 1092cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_ENCRYPT_CBACK* p_callback, 1093cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_BLE_SEC_ACT sec_act) { 1094cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_SET_ENCRYPTION* p_msg = (tBTA_DM_API_SET_ENCRYPTION*)osi_calloc( 1095cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson sizeof(tBTA_DM_API_SET_ENCRYPTION)); 10965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1097cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson APPL_TRACE_API("%s", __func__); 10985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1099cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_SET_ENCRYPTION_EVT; 1100cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(p_msg->bd_addr, bd_addr, BD_ADDR_LEN); 1101cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->transport = transport; 1102cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_callback = p_callback; 1103cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->sec_act = sec_act; 11045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1105cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 11065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 11075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1108ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 11098af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11108af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmCloseACL 11118af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1112cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * Description This function force to close an ACL connection and remove 11131baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * the device from the security database list of known devices. 11148af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11158af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters: bd_addr - Address of the peer device 11168af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * remove_dev - remove device or not after link down 11178af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11188af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 11198af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11208af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 1121cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_DmCloseACL(BD_ADDR bd_addr, bool remove_dev, 1122cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_TRANSPORT transport) { 1123cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_REMOVE_ACL* p_msg = 1124cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_REMOVE_ACL*)osi_calloc(sizeof(tBTA_DM_API_REMOVE_ACL)); 1125ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1126cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson APPL_TRACE_API("%s", __func__); 1127ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1128cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_REMOVE_ACL_EVT; 1129cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson memcpy(p_msg->bd_addr, bd_addr, BD_ADDR_LEN); 1130cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->remove_dev = remove_dev; 1131cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->transport = transport; 1132ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1133cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 1134ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 1135ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1136ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/******************************************************************************* 11378af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11388af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_DmBleObserve 11398af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11408af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This procedure keep the device listening for advertising 11418af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * events from a broadcast device. 11428af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11438af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Parameters start: start or stop observe. 11448af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11458af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 11468af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson 11478af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11488af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void. 11498af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11508af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 1151e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssenextern void BTA_DmBleObserve(bool start, uint8_t duration, 1152cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_SEARCH_CBACK* p_results_cb) { 1153cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_DM_API_BLE_OBSERVE* p_msg = 1154cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson (tBTA_DM_API_BLE_OBSERVE*)osi_calloc(sizeof(tBTA_DM_API_BLE_OBSERVE)); 1155ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1156cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson APPL_TRACE_API("%s:start = %d ", __func__, start); 1157ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1158cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->hdr.event = BTA_DM_API_BLE_OBSERVE_EVT; 1159cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->start = start; 1160cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->duration = duration; 1161cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson p_msg->p_cback = p_results_cb; 1162ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1163cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bta_sys_sendmsg(p_msg); 1164ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta} 116516fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadham 116616fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadham/******************************************************************************* 11678af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11688af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_VendorInit 11698af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11708af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Description This function initializes vendor specific 11718af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11728af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 11738af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11748af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 1175cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_VendorInit(void) { APPL_TRACE_API("BTA_VendorInit"); } 117616fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadham 117716fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadham/******************************************************************************* 11788af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11798af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function BTA_VendorCleanup 11808af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 1181cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson * Description This function frees up Broadcom specific VS specific dynamic 11821baaae3f34a667058e7f0c5f778357d98320cf38Myles Watson * memory 11838af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11848af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Returns void 11858af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * 11868af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 1187cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonvoid BTA_VendorCleanup(void) { 1188cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTM_BLE_VSC_CB cmn_ble_vsc_cb; 1189cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb); 119016fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadham 1191cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (cmn_ble_vsc_cb.max_filter > 0) { 1192cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson btm_ble_adv_filter_cleanup(); 1193e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssen#if (BLE_PRIVACY_SPT == TRUE) 1194cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson btm_ble_resolving_list_cleanup(); 1195444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji#endif 1196cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson } 119716fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadham 1198cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (cmn_ble_vsc_cb.tot_scan_results_strg > 0) btm_ble_batchscan_cleanup(); 119916fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadham 1200cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson if (cmn_ble_vsc_cb.adv_inst_max > 0) btm_ble_multi_adv_cleanup(); 120116fe0822ccd3eb6f66d3afd9965d25a0a0cb4c30Prerepa Viswanadham} 1202