bta_av_api.cc revision 717a4a9f3a044f264ec2482c2d1806ec3093707a
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
276b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta#include <assert.h>
286b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta
295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h"
305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if defined(BTA_AV_INCLUDED) && (BTA_AV_INCLUDED == TRUE)
315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_api.h"
335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys.h"
345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_av_api.h"
355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_av_int.h"
36258c2538e3b62a8cdb403f2730c45d721e5292b4Pavlin Radoslavov#include "bt_common.h"
375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h>
385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
393f4fd5be6c5bcbbaefda62ffc66cafec9074220bChris Elliott#include "osi/include/allocator.h"
403f4fd5be6c5bcbbaefda62ffc66cafec9074220bChris Elliott
415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*****************************************************************************
425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**  Constants
435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*****************************************************************************/
445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectstatic const tBTA_SYS_REG bta_av_reg =
465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_av_hdl_event,
485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    BTA_AvDisable
495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project};
505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvEnable
545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Enable the advanced audio/video service. When the enable
565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  operation is complete the callback function will be
575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  called with a BTA_AV_ENABLE_EVT. This function must
585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  be called before other function in the AV API are
595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  called.
605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvEnable(tBTA_SEC sec_mask, tBTA_AV_FEAT features, tBTA_AV_CBACK *p_cback)
655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
66717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_ENABLE *p_buf =
67717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_ENABLE *)osi_malloc(sizeof(tBTA_AV_API_ENABLE));
685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    /* register with BTA system manager */
705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_sys_register(BTA_ID_AV, &bta_av_reg);
715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
72717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_ENABLE_EVT;
73717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->p_cback  = p_cback;
74717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->features = features;
75717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->sec_mask = sec_mask;
76717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
77717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvDisable
835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Disable the advanced audio/video service.
855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvDisable(void)
905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
91717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    bta_sys_deregister(BTA_ID_AV);
94717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->event = BTA_AV_API_DISABLE_EVT;
95717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
96717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
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*******************************************************************************/
1126b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Guptavoid BTA_AvRegister(tBTA_AV_CHNL chnl, const char *p_service_name, UINT8 app_id,
1136b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta                    tBTA_AV_DATA_CBACK  *p_data_cback, UINT16 service_uuid)
1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
115717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_REG *p_buf =
116717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_REG *)osi_malloc(sizeof(tBTA_AV_API_REG));
117717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
118717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific = chnl;
119717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_REGISTER_EVT;
120717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    if (p_service_name)
121717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        strlcpy(p_buf->p_service_name, p_service_name, BTA_SERVICE_NAME_LEN);
122717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    else
123717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->p_service_name[0] = 0;
124717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->app_id = app_id;
125717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->p_app_data_cback = p_data_cback;
126717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->service_uuid = service_uuid;
127717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
128717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvDeregister
1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Deregister the audio or video service
1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvDeregister(tBTA_AV_HNDL hndl)
1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
142717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
144717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->layer_specific = hndl;
145717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->event = BTA_AV_API_DEREGISTER_EVT;
146717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
147717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvOpen
1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Opens an advanced audio/video connection to a peer device.
1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  When connection is open callback function is called
1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  with a BTA_AV_OPEN_EVT.
1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
161f7dd9f5779680da37dc89e5df2b26d436487818cHemant Guptavoid BTA_AvOpen(BD_ADDR bd_addr, tBTA_AV_HNDL handle, BOOLEAN use_rc, tBTA_SEC sec_mask,
162f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta                                                                             UINT16 uuid)
1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
164717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_OPEN *p_buf =
165717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_OPEN *)osi_malloc(sizeof(tBTA_AV_API_OPEN));
166717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
167717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_OPEN_EVT;
168717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific   = handle;
169717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bdcpy(p_buf->bd_addr, bd_addr);
170717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->use_rc = use_rc;
171717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->sec_mask = sec_mask;
172717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->switch_res = BTA_AV_RS_NONE;
173717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->uuid = uuid;
174717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
175717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvClose
1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Close the current streams.
1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvClose(tBTA_AV_HNDL handle)
1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
189717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
191717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->event = BTA_AV_API_CLOSE_EVT;
192717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->layer_specific = handle;
193717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
194717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
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_AvDisconnect
2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Close the connection to the address.
2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvDisconnect(BD_ADDR bd_addr)
2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
208717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_DISCNT *p_buf =
209717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_DISCNT *)osi_malloc(sizeof(tBTA_AV_API_DISCNT));
2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
211717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_DISCONNECT_EVT;
212717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bdcpy(p_buf->bd_addr, bd_addr);
213717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
214717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvStart
2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Start audio/video stream data transfer.
2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvStart(void)
2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
228717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    BT_HDR *p_buf = (BT_HDR *) osi_malloc(sizeof(BT_HDR));
2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
230717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->event = BTA_AV_API_START_EVT;
231717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
232717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
23747b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule** Function         BTA_AvOffloadStart
23847b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule**
23947b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule** Description      Start a2dp audio offloading.
24047b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule**
24147b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule** Returns          void
24247b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule**
24347b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule*******************************************************************************/
24447b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsulevoid BTA_AvOffloadStart(tBTA_AV_HNDL hndl)
24547b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule{
246717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
247717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
248717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->event = BTA_AV_API_OFFLOAD_START_EVT;
249717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->layer_specific = hndl;
250717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
251717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
25247b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule}
25347b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule
25447b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule/*******************************************************************************
25547b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule**
25647b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule** Function         BTA_AvOffloadStartRsp
25747b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule**
25847b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule** Description      Response from vendor lib for A2DP Offload Start request.
25947b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule**
26047b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule** Returns          void
26147b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule**
26247b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule*******************************************************************************/
26347b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsulevoid BTA_AvOffloadStartRsp(tBTA_AV_HNDL hndl, tBTA_AV_STATUS status)
26447b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule{
265717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_STATUS_RSP *p_buf =
266717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_STATUS_RSP *)osi_malloc(sizeof(tBTA_AV_API_STATUS_RSP));
267717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
268717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_OFFLOAD_START_RSP_EVT;
269717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific = hndl;
270717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->status = status;
271717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
272717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
27347b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule}
27447b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule
27547b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule/*******************************************************************************
27647b4310e6aa9a508b47e6cd4631327c53b464440Abhijit Adsule**
277f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta** Function         BTA_AvEnable_Sink
278f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta**
279f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta** Description      Enable/Disable A2DP Sink..
280f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta**
281f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta** Returns          void
282f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta**
283f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta*******************************************************************************/
284f7dd9f5779680da37dc89e5df2b26d436487818cHemant Guptavoid BTA_AvEnable_Sink(int enable)
285f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta{
2866718c6d9fcfe373a679a529aca003d32062f81dclungtsai_lin#if (BTA_AV_SINK_INCLUDED == TRUE)
287717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    BT_HDR *p_buf =
288717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (BT_HDR *)osi_malloc(sizeof(BT_HDR));
289717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
290717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->event = BTA_AV_API_SINK_ENABLE_EVT;
291717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->layer_specific = enable;
292717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
293717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
294f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta#endif
295f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta}
296f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta
297f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta/*******************************************************************************
298f7dd9f5779680da37dc89e5df2b26d436487818cHemant Gupta**
2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvStop
3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Stop audio/video stream data transfer.
3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  If suspend is TRUE, this function sends AVDT suspend signal
3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  to the connected peer(s).
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_AvStop(BOOLEAN suspend)
3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
310717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_STOP *p_buf =
311717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_STOP *)osi_malloc(sizeof(tBTA_AV_API_STOP));
312717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
313717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_STOP_EVT;
314717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->flush = TRUE;
315717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->suspend = suspend;
316717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
317717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvReconfig
3235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Reconfigure the audio/video stream.
3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  If suspend is TRUE, this function tries the suspend/reconfigure
3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  procedure first.
3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  If suspend is FALSE or when suspend/reconfigure fails,
3285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  this function closes and re-opens the AVDT connection.
3295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
3315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
3335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvReconfig(tBTA_AV_HNDL hndl, BOOLEAN suspend, UINT8 sep_info_idx,
3345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                    UINT8 *p_codec_info, UINT8 num_protect, UINT8 *p_protect_info)
3355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
336717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_RCFG *p_buf =
337717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_RCFG *)osi_malloc(sizeof(tBTA_AV_API_RCFG) + num_protect);
338717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
339717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific = hndl;
340717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_RECONFIG_EVT;
341717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->num_protect = num_protect;
342717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->suspend = suspend;
343717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->sep_info_idx = sep_info_idx;
344717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->p_protect_info = (UINT8 *)(p_buf + 1);
345717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    memcpy(p_buf->codec_info, p_codec_info, AVDT_CODEC_SIZE);
346717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    memcpy(p_buf->p_protect_info, p_protect_info, num_protect);
347717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
348717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
3495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
3505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
3525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvProtectReq
3545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a content protection request.  This function can only
3565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  be used if AV is enabled with feature BTA_AV_FEAT_PROTECT.
3575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
3595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
3615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvProtectReq(tBTA_AV_HNDL hndl, UINT8 *p_data, UINT16 len)
3625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
363717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_PROTECT_REQ *p_buf =
364717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_PROTECT_REQ *)osi_malloc(sizeof(tBTA_AV_API_PROTECT_REQ) + len);
365717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
366717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific = hndl;
367717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_PROTECT_REQ_EVT;
368717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->len = len;
369717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    if (p_data == NULL) {
370717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->p_data = NULL;
371717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    } else {
372717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->p_data = (UINT8 *) (p_buf + 1);
373717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        memcpy(p_buf->p_data, p_data, len);
3745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
375717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
376717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
3775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
3785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
3805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvProtectRsp
3825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a content protection response.  This function must
3845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  be called if a BTA_AV_PROTECT_REQ_EVT is received.
3855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  This function can only be used if AV is enabled with
3865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  feature BTA_AV_FEAT_PROTECT.
3875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
3895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
3905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
3915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvProtectRsp(tBTA_AV_HNDL hndl, UINT8 error_code, UINT8 *p_data, UINT16 len)
3925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
393717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_PROTECT_RSP *p_buf =
394717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_PROTECT_RSP *)osi_malloc(sizeof(tBTA_AV_API_PROTECT_RSP) + len);
395717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
396717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific = hndl;
397717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_PROTECT_RSP_EVT;
398717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->len = len;
399717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->error_code= error_code;
400717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    if (p_data == NULL) {
401717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->p_data = NULL;
402717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    } else {
403717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->p_data = (UINT8 *) (p_buf + 1);
404717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        memcpy(p_buf->p_data, p_data, len);
4055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
406717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
407717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
4085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
4095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
4115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvRemoteCmd
4135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a remote control command.  This function can only
4155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  be used if AV is enabled with feature BTA_AV_FEAT_RCCT.
4165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
4185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
4205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvRemoteCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_RC rc_id, tBTA_AV_STATE key_state)
4215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
422717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_REMOTE_CMD *p_buf =
423717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_REMOTE_CMD *)osi_malloc(sizeof(tBTA_AV_API_REMOTE_CMD));
424717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
425717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_REMOTE_CMD_EVT;
426717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific = rc_handle;
427717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.op_id = rc_id;
428717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.state = key_state;
429717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.p_pass_data = NULL;
430717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.pass_len = 0;
431717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->label = label;
432717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
433717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
4345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
4355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
4375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4386b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta** Function         BTA_AvRemoteVendorUniqueCmd
4396b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta**
440f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov** Description      Send a remote control command with Vendor Unique rc_id.
441f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov**                  This function can only be used if AV is enabled with
442f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov**                  feature BTA_AV_FEAT_RCCT.
4436b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta**
4446b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta** Returns          void
4456b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta**
4466b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta*******************************************************************************/
447f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavovvoid BTA_AvRemoteVendorUniqueCmd(UINT8 rc_handle, UINT8 label,
448f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov                                 tBTA_AV_STATE key_state, UINT8* p_msg,
449f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov                                 UINT8 buf_len)
4506b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta{
451f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov    tBTA_AV_API_REMOTE_CMD *p_buf =
452cceb430489a70add1b996d54289867c17f4ac0fdPavlin Radoslavov      (tBTA_AV_API_REMOTE_CMD *)osi_malloc(sizeof(tBTA_AV_API_REMOTE_CMD) +
453f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov                                           buf_len);
454717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
455f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov    p_buf->label = label;
4566b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta    p_buf->hdr.event = BTA_AV_API_REMOTE_CMD_EVT;
457f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov    p_buf->hdr.layer_specific = rc_handle;
4586b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta    p_buf->msg.op_id = AVRC_ID_VENDOR;
4596b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta    p_buf->msg.state = key_state;
4606b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta    p_buf->msg.pass_len = buf_len;
461f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov    if (p_msg == NULL) {
462f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov        p_buf->msg.p_pass_data = NULL;
463f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov    } else {
464f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov        p_buf->msg.p_pass_data = (UINT8 *)(p_buf + 1);
465f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov        memcpy(p_buf->msg.p_pass_data, p_msg, buf_len);
466f94e67c2d96d25f221e0503f334f4a0a277bc68cPavlin Radoslavov    }
4676b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta    bta_sys_sendmsg(p_buf);
4686b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta}
4696b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta
4706b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta/*******************************************************************************
4716b84f291c4edce7e4102efd8d4052a63bcb4b9dcAnubhav Gupta**
4725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvVendorCmd
4735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a vendor dependent remote control command.  This
4755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  function can only be used if AV is enabled with feature
4765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  BTA_AV_FEAT_VENDOR.
4775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
4795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
4805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
4815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvVendorCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE cmd_code, UINT8 *p_data, UINT16 len)
4825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
483717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_VENDOR *p_buf =
484717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_VENDOR *)osi_malloc(sizeof(tBTA_AV_API_VENDOR) + len);
485717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
486717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_VENDOR_CMD_EVT;
487717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific   = rc_handle;
488717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.hdr.ctype = cmd_code;
489717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.hdr.subunit_type = AVRC_SUB_PANEL;
490717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.hdr.subunit_id = 0;
491717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.company_id = p_bta_av_cfg->company_id;
492717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->label = label;
493717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.vendor_len = len;
494717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    if (p_data == NULL) {
495717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->msg.p_vendor_data = NULL;
496717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    } else {
497717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->msg.p_vendor_data = (UINT8 *) (p_buf + 1);
498717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        memcpy(p_buf->msg.p_vendor_data, p_data, len);
4995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
500717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
501717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
5025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvVendorRsp
5075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a vendor dependent remote control response.
5095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  This function must be called if a BTA_AV_VENDOR_CMD_EVT
5105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  is received. This function can only be used if AV is
5115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  enabled with feature BTA_AV_FEAT_VENDOR.
5125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
5145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvVendorRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code, UINT8 *p_data, UINT16 len, UINT32 company_id)
5175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
518717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_VENDOR *p_buf =
519717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_VENDOR *)osi_malloc(sizeof(tBTA_AV_API_VENDOR) + len);
520717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
521717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_VENDOR_RSP_EVT;
522717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific   = rc_handle;
523717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.hdr.ctype = rsp_code;
524717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.hdr.subunit_type = AVRC_SUB_PANEL;
525717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.hdr.subunit_id = 0;
526717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    if (company_id)
527717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->msg.company_id = company_id;
528717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    else
529717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->msg.company_id = p_bta_av_cfg->company_id;
530717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->label = label;
531717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->msg.vendor_len = len;
532717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    if (p_data == NULL) {
533717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->msg.p_vendor_data = NULL;
534717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    } else {
535717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        p_buf->msg.p_vendor_data = (UINT8 *) (p_buf + 1);
536717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        memcpy(p_buf->msg.p_vendor_data, p_data, len);
5375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    }
538717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
539717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
5405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvOpenRc
5455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Open an AVRCP connection toward the device with the
5475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  specified handle
5485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
5505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvOpenRc(tBTA_AV_HNDL handle)
5535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
554717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_OPEN_RC *p_buf =
555717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_OPEN_RC *)osi_malloc(sizeof(tBTA_AV_API_OPEN_RC));
5565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
557717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_RC_OPEN_EVT;
558717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific = handle;
559717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
560717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
5615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvCloseRc
5665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Close an AVRCP connection
5685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
5705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvCloseRc(UINT8 rc_handle)
5735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
574717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_CLOSE_RC *p_buf =
575717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_CLOSE_RC *)osi_malloc(sizeof(tBTA_AV_API_CLOSE_RC));
5765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
577717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_RC_CLOSE_EVT;
578717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific = rc_handle;
579717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
580717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
5815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
5825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
5835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
5845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvMetaRsp
5865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a Metadata/Advanced Control response. The message contained
5885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  in p_pkt can be composed with AVRC utility functions.
5895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  This function can only be used if AV is enabled with feature
5905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  BTA_AV_FEAT_METADATA.
5915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
5935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
5945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
5955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvMetaRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code,
5965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project                               BT_HDR *p_pkt)
5975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
59820524d393e8b3bea4c573f7980cd843500b0e6a4Pavlin Radoslavov    tBTA_AV_API_META_RSP  *p_buf =
599717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_META_RSP *)osi_malloc(sizeof(tBTA_AV_API_META_RSP));
6005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
60120524d393e8b3bea4c573f7980cd843500b0e6a4Pavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_META_RSP_EVT;
60220524d393e8b3bea4c573f7980cd843500b0e6a4Pavlin Radoslavov    p_buf->hdr.layer_specific = rc_handle;
60320524d393e8b3bea4c573f7980cd843500b0e6a4Pavlin Radoslavov    p_buf->rsp_code = rsp_code;
60420524d393e8b3bea4c573f7980cd843500b0e6a4Pavlin Radoslavov    p_buf->p_pkt = p_pkt;
60520524d393e8b3bea4c573f7980cd843500b0e6a4Pavlin Radoslavov    p_buf->is_rsp = TRUE;
60620524d393e8b3bea4c573f7980cd843500b0e6a4Pavlin Radoslavov    p_buf->label = label;
6075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
60820524d393e8b3bea4c573f7980cd843500b0e6a4Pavlin Radoslavov    bta_sys_sendmsg(p_buf);
6095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
6105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
6115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*******************************************************************************
6125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
6135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function         BTA_AvMetaCmd
6145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
6155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Description      Send a Metadata/Advanced Control command. The message contained
6165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  in p_pkt can be composed with AVRC utility functions.
6175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  This function can only be used if AV is enabled with feature
6185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  BTA_AV_FEAT_METADATA.
6195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**                  This message is sent only when the peer supports the TG role.
6205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*8                  The only command makes sense right now is the absolute volume command.
6215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
6225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Returns          void
6235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project**
6245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/
6255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectvoid BTA_AvMetaCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CMD cmd_code, BT_HDR *p_pkt)
6265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{
627717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    tBTA_AV_API_META_RSP *p_buf =
628717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov        (tBTA_AV_API_META_RSP *)osi_malloc(sizeof(tBTA_AV_API_META_RSP));
629717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
630717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.event = BTA_AV_API_META_RSP_EVT;
631717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->hdr.layer_specific   = rc_handle;
632717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->p_pkt = p_pkt;
633717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->rsp_code = cmd_code;
634717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->is_rsp = FALSE;
635717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    p_buf->label = label;
636717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov
637717a4a9f3a044f264ec2482c2d1806ec3093707aPavlin Radoslavov    bta_sys_sendmsg(p_buf);
6385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}
6395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
6405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTA_AV_INCLUDED */
641