15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Copyright (C) 2011-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 advanced audio/video (AV)
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 "bt_target.h"
285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if defined(BTA_AV_INCLUDED) && (BTA_AV_INCLUDED == TRUE)
295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_api.h"
315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bd.h"
325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys.h"
335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_av_api.h"
345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_av_int.h"
355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gki.h"
365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h>
375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*****************************************************************************
395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**  Constants
405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*****************************************************************************/
415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const tBTA_SYS_REG bta_av_reg =
435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_av_hdl_event,
455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AvDisable
465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvEnable
515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Enable the advanced audio/video service. When the enable
535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  operation is complete the callback function will be
545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  called with a BTA_AV_ENABLE_EVT. This function must
555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  be called before other function in the AV API are
565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  called.
575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvEnable(tBTA_SEC sec_mask, tBTA_AV_FEAT features, tBTA_AV_CBACK *p_cback)
625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_ENABLE  *p_buf;
645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* register with BTA system manager */
665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_sys_register(BTA_ID_AV, &bta_av_reg);
675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_ENABLE *) GKI_getbuf(sizeof(tBTA_AV_API_ENABLE))) != NULL)
695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_ENABLE_EVT;
715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->p_cback  = p_cback;
725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->features = features;
735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->sec_mask = sec_mask;
745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvDisable
815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Disable the advanced audio/video service.
835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvDisable(void)
885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BT_HDR  *p_buf;
905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_sys_deregister(BTA_ID_AV);
925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL)
935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->event = BTA_AV_API_DISABLE_EVT;
955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvRegister
1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Register the audio or video service to stack. When the
1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  operation is complete the callback function will be
1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  called with a BTA_AV_REGISTER_EVT. This function must
1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  be called before AVDT stream is open.
1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
112f7dd9f5779680da37dc89e5df2b26d436487818cHemant Guptavoid BTA_AvRegister(tBTA_AV_CHNL chnl, const char *p_service_name, UINT8 app_id, tBTA_AV_DATA_CBACK  *p_data_cback)
1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_REG  *p_buf;
1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_REG *) GKI_getbuf(sizeof(tBTA_AV_API_REG))) != NULL)
1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = chnl;
1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_REGISTER_EVT;
1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if(p_service_name)
1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            BCM_STRNCPY_S(p_buf->p_service_name, sizeof(p_buf->p_service_name), p_service_name, BTA_SERVICE_NAME_LEN);
1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->p_service_name[BTA_SERVICE_NAME_LEN-1] = 0;
1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        else
1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->p_service_name[0] = 0;
1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->app_id = app_id;
131f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta        p_buf->p_app_data_cback = p_data_cback;
1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvDeregister
1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Deregister the audio or video service
1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvDeregister(tBTA_AV_HNDL hndl)
1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BT_HDR  *p_buf;
1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL)
1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->layer_specific   = hndl;
1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->event = BTA_AV_API_DEREGISTER_EVT;
1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvOpen
1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Opens an advanced audio/video connection to a peer device.
1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  When connection is open callback function is called
1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  with a BTA_AV_OPEN_EVT.
1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
168f7dd9f5779680da37dc89e5df2b26d436487818cHemant Guptavoid BTA_AvOpen(BD_ADDR bd_addr, tBTA_AV_HNDL handle, BOOLEAN use_rc, tBTA_SEC sec_mask,
169f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta                                                                             UINT16 uuid)
1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_OPEN  *p_buf;
1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_OPEN *) GKI_getbuf(sizeof(tBTA_AV_API_OPEN))) != NULL)
1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_OPEN_EVT;
1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = handle;
1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bdcpy(p_buf->bd_addr, bd_addr);
1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->use_rc = use_rc;
1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->sec_mask = sec_mask;
1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->switch_res = BTA_AV_RS_NONE;
181f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta        p_buf->uuid = uuid;
1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvClose
1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Close the current streams.
1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvClose(tBTA_AV_HNDL handle)
1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BT_HDR  *p_buf;
1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL)
2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->event = BTA_AV_API_CLOSE_EVT;
2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->layer_specific   = handle;
2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvDisconnect
2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Close the connection to the address.
2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvDisconnect(BD_ADDR bd_addr)
2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_DISCNT  *p_buf;
2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_DISCNT *) GKI_getbuf(sizeof(tBTA_AV_API_DISCNT))) != NULL)
2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_DISCONNECT_EVT;
2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bdcpy(p_buf->bd_addr, bd_addr);
2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvStart
2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Start audio/video stream data transfer.
2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvStart(void)
2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BT_HDR  *p_buf;
2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL)
2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->event = BTA_AV_API_START_EVT;
2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
250f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta** Function         BTA_AvEnable_Sink
251f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta**
252f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta** Description      Enable/Disable A2DP Sink..
253f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta**
254f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta** Returns          void
255f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta**
256f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta*******************************************************************************/
257f7dd9f5779680da37dc89e5df2b26d436487818cHemant Guptavoid BTA_AvEnable_Sink(int enable)
258f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta{
259f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta    BT_HDR  *p_buf;
260f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta
2616718c6d9fcfe373a679a529aca003d32062f81dclungtsai_lin#if (BTA_AV_SINK_INCLUDED == TRUE)
262f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta    if ((p_buf = (BT_HDR *) GKI_getbuf(sizeof(BT_HDR))) != NULL)
263f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta    {
264f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta        p_buf->event = BTA_AV_API_SINK_ENABLE_EVT;
265f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta        p_buf->layer_specific = enable;
266f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta        bta_sys_sendmsg(p_buf);
267f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta    }
268f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta#else
269f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta    return;
270f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta#endif
271f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta}
272f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta
273f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta/*******************************************************************************
274f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta**
2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvStop
2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Stop audio/video stream data transfer.
2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  If suspend is TRUE, this function sends AVDT suspend signal
2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  to the connected peer(s).
2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvStop(BOOLEAN suspend)
2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_STOP  *p_buf;
2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_STOP *) GKI_getbuf(sizeof(tBTA_AV_API_STOP))) != NULL)
2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_STOP_EVT;
2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->flush   = TRUE;
2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->suspend = suspend;
2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
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**
2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvReconfig
3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Reconfigure the audio/video stream.
3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  If suspend is TRUE, this function tries the suspend/reconfigure
3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  procedure first.
3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  If suspend is FALSE or when suspend/reconfigure fails,
3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  this function closes and re-opens the AVDT connection.
3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
3105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvReconfig(tBTA_AV_HNDL hndl, BOOLEAN suspend, UINT8 sep_info_idx,
3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                    UINT8 *p_codec_info, UINT8 num_protect, UINT8 *p_protect_info)
3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_RCFG  *p_buf;
3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_RCFG *) GKI_getbuf((UINT16) (sizeof(tBTA_AV_API_RCFG) + num_protect))) != NULL)
3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = hndl;
3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event    = BTA_AV_API_RECONFIG_EVT;
3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->num_protect  = num_protect;
3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->suspend      = suspend;
3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->sep_info_idx = sep_info_idx;
3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->p_protect_info = (UINT8 *)(p_buf + 1);
3235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        memcpy(p_buf->codec_info, p_codec_info, AVDT_CODEC_SIZE);
3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        memcpy(p_buf->p_protect_info, p_protect_info, num_protect);
3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
3285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
3305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvProtectReq
3325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a content protection request.  This function can only
3345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  be used if AV is enabled with feature BTA_AV_FEAT_PROTECT.
3355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
3375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
3395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvProtectReq(tBTA_AV_HNDL hndl, UINT8 *p_data, UINT16 len)
3405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
3415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_PROTECT_REQ  *p_buf;
3425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_PROTECT_REQ *) GKI_getbuf((UINT16) (sizeof(tBTA_AV_API_PROTECT_REQ) + len))) != NULL)
3445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
3455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = hndl;
3465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_PROTECT_REQ_EVT;
3475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->len       = len;
3485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (p_data == NULL)
3495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
3505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->p_data = NULL;
3515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
3525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        else
3535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
3545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->p_data = (UINT8 *) (p_buf + 1);
3555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            memcpy(p_buf->p_data, p_data, len);
3565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
3575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
3585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
3595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
3605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
3625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvProtectRsp
3645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a content protection response.  This function must
3665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  be called if a BTA_AV_PROTECT_REQ_EVT is received.
3675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  This function can only be used if AV is enabled with
3685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  feature BTA_AV_FEAT_PROTECT.
3695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
3715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
3735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvProtectRsp(tBTA_AV_HNDL hndl, UINT8 error_code, UINT8 *p_data, UINT16 len)
3745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
3755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_PROTECT_RSP  *p_buf;
3765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_PROTECT_RSP *) GKI_getbuf((UINT16) (sizeof(tBTA_AV_API_PROTECT_RSP) + len))) != NULL)
3785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
3795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = hndl;
3805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event    = BTA_AV_API_PROTECT_RSP_EVT;
3815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->len          = len;
3825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->error_code   = error_code;
3835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (p_data == NULL)
3845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
3855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->p_data = NULL;
3865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
3875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        else
3885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
3895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->p_data = (UINT8 *) (p_buf + 1);
3905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            memcpy(p_buf->p_data, p_data, len);
3915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
3925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
3935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
3945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
3955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
3975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvRemoteCmd
3995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a remote control command.  This function can only
4015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  be used if AV is enabled with feature BTA_AV_FEAT_RCCT.
4025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
4045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
4065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvRemoteCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_RC rc_id, tBTA_AV_STATE key_state)
4075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
4085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_REMOTE_CMD  *p_buf;
4095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_REMOTE_CMD *) GKI_getbuf(sizeof(tBTA_AV_API_REMOTE_CMD))) != NULL)
4115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
4125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_REMOTE_CMD_EVT;
4135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = rc_handle;
4145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.op_id = rc_id;
4155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.state = key_state;
4165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.p_pass_data = NULL;
4175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.pass_len = 0;
4185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->label = label;
4195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
4205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
4215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
4225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
4245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvVendorCmd
4265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a vendor dependent remote control command.  This
4285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  function can only be used if AV is enabled with feature
4295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  BTA_AV_FEAT_VENDOR.
4305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
4325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
4345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvVendorCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE cmd_code, UINT8 *p_data, UINT16 len)
4355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
4365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_VENDOR  *p_buf;
4375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_VENDOR *) GKI_getbuf((UINT16) (sizeof(tBTA_AV_API_VENDOR) + len))) != NULL)
4395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
4405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_VENDOR_CMD_EVT;
4415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = rc_handle;
4425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.hdr.ctype = cmd_code;
4435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.hdr.subunit_type = AVRC_SUB_PANEL;
4445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.hdr.subunit_id = 0;
4455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.company_id = p_bta_av_cfg->company_id;
4465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->label = label;
4475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.vendor_len = len;
4485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (p_data == NULL)
4495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
4505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->msg.p_vendor_data = NULL;
4515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
4525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        else
4535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
4545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->msg.p_vendor_data = (UINT8 *) (p_buf + 1);
4555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            memcpy(p_buf->msg.p_vendor_data, p_data, len);
4565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
4575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
4585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
4595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
4605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
4625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvVendorRsp
4645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a vendor dependent remote control response.
4665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  This function must be called if a BTA_AV_VENDOR_CMD_EVT
4675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  is received. This function can only be used if AV is
4685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  enabled with feature BTA_AV_FEAT_VENDOR.
4695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
4715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
4735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvVendorRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code, UINT8 *p_data, UINT16 len, UINT32 company_id)
4745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
4755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_VENDOR  *p_buf;
4765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_VENDOR *) GKI_getbuf((UINT16) (sizeof(tBTA_AV_API_VENDOR) + len))) != NULL)
4785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
4795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_VENDOR_RSP_EVT;
4805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = rc_handle;
4815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.hdr.ctype = rsp_code;
4825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.hdr.subunit_type = AVRC_SUB_PANEL;
4835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.hdr.subunit_id = 0;
4845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if(company_id)
4855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->msg.company_id = company_id;
4865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        else
4875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->msg.company_id = p_bta_av_cfg->company_id;
4885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->label = label;
4895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->msg.vendor_len = len;
4905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        if (p_data == NULL)
4915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
4925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->msg.p_vendor_data = NULL;
4935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
4945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        else
4955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        {
4965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            p_buf->msg.p_vendor_data = (UINT8 *) (p_buf + 1);
4975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project            memcpy(p_buf->msg.p_vendor_data, p_data, len);
4985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        }
4995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
5005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
5015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvOpenRc
5065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Open an AVRCP connection toward the device with the
5085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  specified handle
5095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
5115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvOpenRc(tBTA_AV_HNDL handle)
5145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
5155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_OPEN_RC  *p_buf;
5165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_OPEN_RC *) GKI_getbuf(sizeof(tBTA_AV_API_OPEN_RC))) != NULL)
5185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
5195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_RC_OPEN_EVT;
5205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = handle;
5215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
5225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
5235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvCloseRc
5285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Close an AVRCP connection
5305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
5325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvCloseRc(UINT8 rc_handle)
5355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
5365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_CLOSE_RC  *p_buf;
5375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_CLOSE_RC *) GKI_getbuf(sizeof(tBTA_AV_API_CLOSE_RC))) != NULL)
5395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
5405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_RC_CLOSE_EVT;
5415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = rc_handle;
5425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
5435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
5445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvMetaRsp
5495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a Metadata/Advanced Control response. The message contained
5515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  in p_pkt can be composed with AVRC utility functions.
5525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  This function can only be used if AV is enabled with feature
5535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  BTA_AV_FEAT_METADATA.
5545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
5565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvMetaRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code,
5595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                               BT_HDR *p_pkt)
5605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
5615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_META_RSP  *p_buf;
5625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_META_RSP *) GKI_getbuf((UINT16) (sizeof(tBTA_AV_API_META_RSP)))) != NULL)
5645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
5655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_META_RSP_EVT;
5665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = rc_handle;
5675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->rsp_code = rsp_code;
5685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->p_pkt = p_pkt;
5695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->is_rsp = TRUE;
5705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->label = label;
5715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
5733bfd7b73886c44505ba56894ee6f3c914eb54409Zhihai Xu    } else if (p_pkt) {
5743bfd7b73886c44505ba56894ee6f3c914eb54409Zhihai Xu        GKI_freebuf(p_pkt);
5755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
5765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvMetaCmd
5815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a Metadata/Advanced Control command. The message contained
5835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  in p_pkt can be composed with AVRC utility functions.
5845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  This function can only be used if AV is enabled with feature
5855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  BTA_AV_FEAT_METADATA.
5865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  This message is sent only when the peer supports the TG role.
5875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*8                  The only command makes sense right now is the absolute volume command.
5885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
5905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvMetaCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CMD cmd_code, BT_HDR *p_pkt)
5935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
5945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    tBTA_AV_API_META_RSP  *p_buf;
5955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    if ((p_buf = (tBTA_AV_API_META_RSP *) GKI_getbuf((UINT16) (sizeof(tBTA_AV_API_META_RSP)))) != NULL)
5975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    {
5985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.event = BTA_AV_API_META_RSP_EVT;
5995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->hdr.layer_specific   = rc_handle;
6005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->p_pkt = p_pkt;
6015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->rsp_code = cmd_code;
6025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->is_rsp = FALSE;
6035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        p_buf->label = label;
6045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
6055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project        bta_sys_sendmsg(p_buf);
6065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
6075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
6085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
6095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTA_AV_INCLUDED */
610