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