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 implementation of the API for the audio gateway (AG) 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * subsystem of BTA, Broadcom's Bluetooth application layer for mobile 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * phones. 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_api.h" 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys.h" 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_ag_api.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_ag_int.h" 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gki.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h> 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Constants 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*****************************************************************************/ 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const tBTA_SYS_REG bta_ag_reg = 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_ag_hdl_event, 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_AgDisable 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_AgEnable 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Enable the audio gateway service. When the enable 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** operation is complete the callback function will be 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** called with a BTA_AG_ENABLE_EVT. This function must 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** be called before other function in the AG API are 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** called. 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns BTA_SUCCESS if OK, BTA_FAILURE otherwise. 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_STATUS BTA_AgEnable(tBTA_AG_PARSE_MODE parse_mode, tBTA_AG_CBACK *p_cback) 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_AG_API_ENABLE *p_buf; 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 idx; 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* Error if AG is already enabled, or AG is in the middle of disabling. */ 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (idx = 0; idx < BTA_AG_NUM_SCB; idx++) 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if (bta_ag_cb.scb[idx].in_use) 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 67e8c3d75b75493911ebf0f99c83676359657178f7Sharvil Nanavati APPL_TRACE_ERROR ("BTA_AgEnable: FAILED, AG already enabled."); 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return BTA_FAILURE; 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* register with BTA system manager */ 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_register(BTA_ID_AG, &bta_ag_reg); 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_AG_API_ENABLE *) GKI_getbuf(sizeof(tBTA_AG_API_ENABLE))) != NULL) 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_AG_API_ENABLE_EVT; 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->parse_mode = parse_mode; 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->p_cback = p_cback; 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project return BTA_SUCCESS; 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_AgDisable 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Disable the audio gateway service 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AgDisable(void) 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf; 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->event = BTA_AG_API_DISABLE_EVT; 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_AgRegister 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Register an Audio Gateway service. 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AgRegister(tBTA_SERVICE_MASK services, tBTA_SEC sec_mask,tBTA_AG_FEAT features, 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project char * p_service_names[], UINT8 app_id) 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_AG_API_REGISTER *p_buf; 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int i; 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_AG_API_REGISTER *) GKI_getbuf(sizeof(tBTA_AG_API_REGISTER))) != NULL) 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_AG_API_REGISTER_EVT; 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->features = features; 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->sec_mask = sec_mask; 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->services = services; 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->app_id = app_id; 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project for (i = 0; i < BTA_AG_NUM_IDX; i++) 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if(p_service_names[i]) 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BCM_STRNCPY_S(p_buf->p_name[i], BTA_SERVICE_NAME_LEN+1, p_service_names[i], BTA_SERVICE_NAME_LEN); 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->p_name[i][BTA_SERVICE_NAME_LEN] = 0; 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project else 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->p_name[i][0] = 0; 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_AgDeregister 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Deregister an audio gateway service. 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AgDeregister(UINT16 handle) 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf; 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->event = BTA_AG_API_DEREGISTER_EVT; 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->layer_specific = handle; 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_AgOpen 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Opens a connection to a headset or hands-free device. 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** When connection is open callback function is called 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** with a BTA_AG_OPEN_EVT. Only the data connection is 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** opened. The audio connection is not opened. 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AgOpen(UINT16 handle, BD_ADDR bd_addr, tBTA_SEC sec_mask, tBTA_SERVICE_MASK services) 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_AG_API_OPEN *p_buf; 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_AG_API_OPEN *) GKI_getbuf(sizeof(tBTA_AG_API_OPEN))) != NULL) 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_AG_API_OPEN_EVT; 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = handle; 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bdcpy(p_buf->bd_addr, bd_addr); 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->services = services; 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->sec_mask = sec_mask; 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_AgClose 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Close the current connection to a headset or a handsfree 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Any current audio connection will also be closed. 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AgClose(UINT16 handle) 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf; 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->event = BTA_AG_API_CLOSE_EVT; 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->layer_specific = handle; 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_AgAudioOpen 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Opens an audio connection to the currently connected 2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** headset or hnadsfree. 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AgAudioOpen(UINT16 handle) 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf; 2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->event = BTA_AG_API_AUDIO_OPEN_EVT; 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->layer_specific = handle; 2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_AgAudioClose 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Close the currently active audio connection to a headset 2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** or hnadsfree. The data connection remains open 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AgAudioClose(UINT16 handle) 2555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_buf; 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL) 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->event = BTA_AG_API_AUDIO_CLOSE_EVT; 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->layer_specific = handle; 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_AgResult 2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Send an AT result code to a headset or hands-free device. 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** This function is only used when the AG parse mode is set 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** to BTA_AG_PARSE. 2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AgResult(UINT16 handle, tBTA_AG_RES result, tBTA_AG_RES_DATA *p_data) 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_AG_API_RESULT *p_buf; 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_AG_API_RESULT *) GKI_getbuf(sizeof(tBTA_AG_API_RESULT))) != NULL) 2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_AG_API_RESULT_EVT; 2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = handle; 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->result = result; 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if(p_data) 2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project memcpy(&p_buf->data, p_data, sizeof(p_buf->data)); 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function BTA_AgSetCodec 2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description Specify the codec type to be used for the subsequent 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** audio connection. 3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns void 3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** 3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AgSetCodec(UINT16 handle, tBTA_AG_PEER_CODEC codec) 3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_AG_API_SETCODEC *p_buf; 3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project if ((p_buf = (tBTA_AG_API_SETCODEC *) GKI_getbuf(sizeof(tBTA_AG_API_SETCODEC))) != NULL) 3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project { 3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.event = BTA_AG_API_SETCODEC_EVT; 3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->hdr.layer_specific = handle; 3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project p_buf->codec = codec; 3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project bta_sys_sendmsg(p_buf); 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project } 3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 321