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