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