15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2003-2012 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 ******************************************************************************/ 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gki.h" 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bd.h" 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys.h" 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_api.h" 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_dm_int.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h> 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_dm_ci.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BTM_OOB_INCLUDED == TRUE) 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_dm_ci_io_req 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function must be called in response to function 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** bta_dm_co_io_req(), if *p_oob_data to BTA_OOB_UNKNOWN 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** by bta_dm_co_io_req(). 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_dm_ci_io_req(BD_ADDR bd_addr, tBTA_IO_CAP io_cap, tBTA_OOB_DATA oob_data, 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_AUTH_REQ auth_req) 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_DM_CI_IO_REQ *p_msg; 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_msg = (tBTA_DM_CI_IO_REQ *) GKI_getbuf(sizeof(tBTA_DM_CI_IO_REQ))) != NULL) 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_msg->hdr.event = BTA_DM_CI_IO_REQ_EVT; 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bdcpy(p_msg->bd_addr, bd_addr); 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_msg->io_cap = io_cap; 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_msg->oob_data = oob_data; 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_msg->auth_req = auth_req; 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_msg); 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_dm_ci_rmt_oob 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function must be called in response to function 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** bta_dm_co_rmt_oob() to provide the OOB data associated 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** with the remote device. 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_dm_ci_rmt_oob(BOOLEAN accept, BD_ADDR bd_addr, BT_OCTET16 c, BT_OCTET16 r) 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_DM_CI_RMT_OOB *p_msg; 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_msg = (tBTA_DM_CI_RMT_OOB *) GKI_getbuf(sizeof(tBTA_DM_CI_RMT_OOB))) != NULL) 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_msg->hdr.event = BTA_DM_CI_RMT_OOB_EVT; 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bdcpy(p_msg->bd_addr, bd_addr); 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_msg->accept = accept; 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_msg->c, c, BT_OCTET16_LEN); 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(p_msg->r, r, BT_OCTET16_LEN); 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_msg); 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTM_OOB_INCLUDED */ 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BTM_SCO_HCI_INCLUDED == TRUE) 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function bta_dm_sco_ci_data_ready 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description This function sends an event to indicating that the phone 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** has SCO data ready. 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Parameters event: is obtained from bta_dm_sco_co_open() function, which 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** is the BTA event we want to send back to BTA module 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** when there is encoded data ready. 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** sco_handle: is the BTA sco handle which indicate a specific 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** SCO connection. 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid bta_dm_sco_ci_data_ready(UINT16 event, UINT16 sco_handle) 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf; 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->event = event; 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->layer_specific = sco_handle; 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 119