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