16ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/****************************************************************************** 26ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 36ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * Copyright (C) 2004-2012 Broadcom Corporation 46ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 56ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * Licensed under the Apache License, Version 2.0 (the "License"); 66ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * you may not use this file except in compliance with the License. 76ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * You may obtain a copy of the License at: 86ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 96ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * http://www.apache.org/licenses/LICENSE-2.0 106ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 116ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * Unless required by applicable law or agreed to in writing, software 126ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * distributed under the License is distributed on an "AS IS" BASIS, 136ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 146ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * See the License for the specific language governing permissions and 156ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * limitations under the License. 166ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 176ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach ******************************************************************************/ 186ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach 196ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach/****************************************************************************** 206ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 216ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * This is the public interface file for the advanced audio/video streaming 226ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * (AV) subsystem of BTA, Broadcom's Bluetooth application layer for mobile 236ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * phones. 246ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach * 256ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach ******************************************************************************/ 26e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef BTA_AV_API_H 27e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_API_H 28e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 29e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#include "avrc_api.h" 30e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#include "avdt_api.h" 31e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#include "a2d_api.h" 32e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#include "bta_api.h" 33e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 34e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************************************************************** 35e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Constants and data types 36e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/ 37e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Set to TRUE if seperate authorization prompt desired for AVCTP besides A2DP authorization */ 38e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Typically FALSE when AVRCP is used in conjunction with A2DP */ 39e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef BTA_AV_WITH_AVCTP_AUTHORIZATION 40e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_WITH_AVCTP_AUTHORIZATION FALSE 41e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 42e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 43e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* AV status values */ 44e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_SUCCESS 0 /* successful operation */ 45e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FAIL 1 /* generic failure */ 46e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FAIL_SDP 2 /* service not found */ 47e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FAIL_STREAM 3 /* stream connection failed */ 48e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FAIL_RESOURCES 4 /* no resources */ 49e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FAIL_ROLE 5 /* failed due to role management related issues */ 50e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 51e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTA_AV_STATUS; 52e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 53e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* AV features masks */ 54e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_RCTG 0x0001 /* remote control target */ 55e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_RCCT 0x0002 /* remote control controller */ 56e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_PROTECT 0x0004 /* streaming media contect protection */ 57e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_VENDOR 0x0008 /* remote control vendor dependent commands */ 58e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_REPORT 0x0020 /* use reporting service for VDP */ 59e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_METADATA 0x0040 /* remote control Metadata Transfer command/response */ 60e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_MULTI_AV 0x0080 /* use multi-av, if controller supports it */ 61e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_BROWSE 0x0010 /* use browsing channel */ 62e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_MASTER 0x0100 /* stream only as master role */ 63e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_ADV_CTRL 0x0200 /* remote control Advanced Control command/response */ 64e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_DELAY_RPT 0x0400 /* allow delay reporting */ 65e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_ACP_START 0x0800 /* start stream when 2nd SNK was accepted */ 66e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 67e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Internal features */ 68e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_FEAT_NO_SCO_SSPD 0x8000 /* Do not suspend av streaming as to AG events(SCO or Call) */ 69e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 70e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT16 tBTA_AV_FEAT; 71e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 72e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* AV channel values */ 73e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CHNL_MSK 0xC0 74e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CHNL_AUDIO 0x40 /* audio channel */ 75e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CHNL_VIDEO 0x80 /* video channel */ 76e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTA_AV_CHNL; 77e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 78e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 79e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_HNDL_MSK 0x3F 80e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTA_AV_HNDL; 81e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* handle index to mask */ 82e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_HNDL_TO_MSK(h) ((UINT8)(1 << (h))) 83e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 84e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* tBTA_AV_HNDL to mask */ 85e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_HNDL_TYPE_TO_MSK(h) ((UINT8)(1 << (h&BTA_AV_HNDL_MSK))) 86e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 87e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* offset of codec type in codec info byte array */ 88e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_TYPE_IDX AVDT_CODEC_TYPE_INDEX /* 2 */ 89e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 90e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 91e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 92e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* maximum number of streams created: 1 for audio, 1 for video */ 93e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef BTA_AV_NUM_STRS 94e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_NUM_STRS 2 95e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 96e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 97e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef BTA_AV_MAX_SEPS 98e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_MAX_SEPS 2 99e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 100e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 101e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef BTA_AV_MAX_A2DP_MTU 102e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach /*#define BTA_AV_MAX_A2DP_MTU 668 //224 (DM5) * 3 - 4(L2CAP header) */ 103e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_MAX_A2DP_MTU 1008 104e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 105e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 106e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifndef BTA_AV_MAX_VDP_MTU 107e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_MAX_VDP_MTU 1008 108e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 109e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 110e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 111e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* codec type */ 112e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_SBC A2D_MEDIA_CT_SBC /* SBC media codec type */ 113e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_M12 A2D_MEDIA_CT_M12 /* MPEG-1, 2 Audio media codec type */ 114e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_M24 A2D_MEDIA_CT_M24 /* MPEG-2, 4 AAC media codec type */ 115e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_ATRAC A2D_MEDIA_CT_ATRAC /* ATRAC family media codec type */ 116e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_H263_P0 VDP_MEDIA_CT_H263_P0 /* H.263 baseline (profile 0) */ 117e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_MPEG4 VDP_MEDIA_CT_MPEG4 /* MPEG-4 Visual Simple Profile */ 118e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_H263_P3 VDP_MEDIA_CT_H263_P3 /* H.263 profile 3 */ 119e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_H263_P8 VDP_MEDIA_CT_H263_P8 /* H.263 profile 8 */ 120e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_VEND VDP_MEDIA_CT_VEND /* Non-VDP */ 121e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 122e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTA_AV_CODEC; 123e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 124e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Company ID in BT assigned numbers */ 125e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_BT_VENDOR_ID VDP_BT_VENDOR_ID /* Broadcom Corporation */ 126e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 127e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* vendor specific codec ID */ 128e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_ID_H264 VDP_CODEC_ID_H264 /* Non-VDP codec ID - H.264 */ 129e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CODEC_ID_IMG VDP_CODEC_ID_IMG /* Non-VDP codec ID - images/slideshow */ 130e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 131e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* operation id list for BTA_AvRemoteCmd */ 132e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_SELECT AVRC_ID_SELECT /* select */ 133e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_UP AVRC_ID_UP /* up */ 134e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_DOWN AVRC_ID_DOWN /* down */ 135e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_LEFT AVRC_ID_LEFT /* left */ 136e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_RIGHT AVRC_ID_RIGHT /* right */ 137e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_RIGHT_UP AVRC_ID_RIGHT_UP /* right-up */ 138e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_RIGHT_DOWN AVRC_ID_RIGHT_DOWN /* right-down */ 139e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_LEFT_UP AVRC_ID_LEFT_UP /* left-up */ 140e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_LEFT_DOWN AVRC_ID_LEFT_DOWN /* left-down */ 141e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_ROOT_MENU AVRC_ID_ROOT_MENU /* root menu */ 142e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_SETUP_MENU AVRC_ID_SETUP_MENU /* setup menu */ 143e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_CONT_MENU AVRC_ID_CONT_MENU /* contents menu */ 144e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_FAV_MENU AVRC_ID_FAV_MENU /* favorite menu */ 145e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_EXIT AVRC_ID_EXIT /* exit */ 146e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_0 AVRC_ID_0 /* 0 */ 147e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_1 AVRC_ID_1 /* 1 */ 148e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_2 AVRC_ID_2 /* 2 */ 149e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_3 AVRC_ID_3 /* 3 */ 150e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_4 AVRC_ID_4 /* 4 */ 151e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_5 AVRC_ID_5 /* 5 */ 152e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_6 AVRC_ID_6 /* 6 */ 153e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_7 AVRC_ID_7 /* 7 */ 154e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_8 AVRC_ID_8 /* 8 */ 155e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_9 AVRC_ID_9 /* 9 */ 156e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_DOT AVRC_ID_DOT /* dot */ 157e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_ENTER AVRC_ID_ENTER /* enter */ 158e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_CLEAR AVRC_ID_CLEAR /* clear */ 159e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_CHAN_UP AVRC_ID_CHAN_UP /* channel up */ 160e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_CHAN_DOWN AVRC_ID_CHAN_DOWN /* channel down */ 161e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_PREV_CHAN AVRC_ID_PREV_CHAN /* previous channel */ 162e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_SOUND_SEL AVRC_ID_SOUND_SEL /* sound select */ 163e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_INPUT_SEL AVRC_ID_INPUT_SEL /* input select */ 164e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_DISP_INFO AVRC_ID_DISP_INFO /* display information */ 165e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_HELP AVRC_ID_HELP /* help */ 166e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_PAGE_UP AVRC_ID_PAGE_UP /* page up */ 167e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_PAGE_DOWN AVRC_ID_PAGE_DOWN /* page down */ 168e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_POWER AVRC_ID_POWER /* power */ 169e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_VOL_UP AVRC_ID_VOL_UP /* volume up */ 170e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_VOL_DOWN AVRC_ID_VOL_DOWN /* volume down */ 171e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_MUTE AVRC_ID_MUTE /* mute */ 172e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_PLAY AVRC_ID_PLAY /* play */ 173e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_STOP AVRC_ID_STOP /* stop */ 174e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_PAUSE AVRC_ID_PAUSE /* pause */ 175e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_RECORD AVRC_ID_RECORD /* record */ 176e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_REWIND AVRC_ID_REWIND /* rewind */ 177e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_FAST_FOR AVRC_ID_FAST_FOR /* fast forward */ 178e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_EJECT AVRC_ID_EJECT /* eject */ 179e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_FORWARD AVRC_ID_FORWARD /* forward */ 180e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_BACKWARD AVRC_ID_BACKWARD /* backward */ 181e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_ANGLE AVRC_ID_ANGLE /* angle */ 182e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_SUBPICT AVRC_ID_SUBPICT /* subpicture */ 183e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_F1 AVRC_ID_F1 /* F1 */ 184e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_F2 AVRC_ID_F2 /* F2 */ 185e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_F3 AVRC_ID_F3 /* F3 */ 186e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_F4 AVRC_ID_F4 /* F4 */ 187e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_F5 AVRC_ID_F5 /* F5 */ 188e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_VENDOR AVRC_ID_VENDOR /* vendor unique */ 189e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 190e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTA_AV_RC; 191e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 192e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* state flag for pass through command */ 193e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_STATE_PRESS AVRC_STATE_PRESS /* key pressed */ 194e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_STATE_RELEASE AVRC_STATE_RELEASE /* key released */ 195e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 196e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTA_AV_STATE; 197e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 198e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* command codes for BTA_AvVendorCmd */ 1996ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_AV_CMD_CTRL AVRC_CMD_CTRL 2006ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_AV_CMD_STATUS AVRC_CMD_STATUS 2016ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_AV_CMD_SPEC_INQ AVRC_CMD_SPEC_INQ 2026ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_AV_CMD_NOTIF AVRC_CMD_NOTIF 203e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CMD_GEN_INQ AVRC_CMD_GEN_INQ 204e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 205e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTA_AV_CMD; 206e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 207e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* response codes for BTA_AvVendorRsp */ 2086ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_AV_RSP_NOT_IMPL AVRC_RSP_NOT_IMPL 2096ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_AV_RSP_ACCEPT AVRC_RSP_ACCEPT 2106ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_AV_RSP_REJ AVRC_RSP_REJ 2116ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_AV_RSP_IN_TRANS AVRC_RSP_IN_TRANS 212e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RSP_IMPL_STBL AVRC_RSP_IMPL_STBL 2136ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_AV_RSP_CHANGED AVRC_RSP_CHANGED 2146ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_AV_RSP_INTERIM AVRC_RSP_INTERIM 215e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 216e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTA_AV_CODE; 217e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 218e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* error codes for BTA_AvProtectRsp */ 219e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_ERR_NONE A2D_SUCCESS /* Success, no error */ 220e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_ERR_BAD_STATE AVDT_ERR_BAD_STATE /* Message cannot be processed in this state */ 221e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_ERR_RESOURCE AVDT_ERR_RESOURCE /* Insufficient resources */ 222e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_ERR_BAD_CP_TYPE A2D_BAD_CP_TYPE /* The requested Content Protection Type is not supported */ 223e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_ERR_BAD_CP_FORMAT A2D_BAD_CP_FORMAT /* The format of Content Protection Data is not correct */ 2246ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach 225e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTA_AV_ERR; 226e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 227e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 228e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* AV callback events */ 229e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_ENABLE_EVT 0 /* AV enabled */ 230e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_REGISTER_EVT 1 /* registered to AVDT */ 231e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_OPEN_EVT 2 /* connection opened */ 232e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CLOSE_EVT 3 /* connection closed */ 233e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_START_EVT 4 /* stream data transfer started */ 234e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_STOP_EVT 5 /* stream data transfer stopped */ 235e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_PROTECT_REQ_EVT 6 /* content protection request */ 236e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_PROTECT_RSP_EVT 7 /* content protection response */ 237e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_OPEN_EVT 8 /* remote control channel open */ 238e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_CLOSE_EVT 9 /* remote control channel closed */ 239e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_REMOTE_CMD_EVT 10 /* remote control command */ 240e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_REMOTE_RSP_EVT 11 /* remote control response */ 241e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_VENDOR_CMD_EVT 12 /* vendor dependent remote control command */ 242e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_VENDOR_RSP_EVT 13 /* vendor dependent remote control response */ 243e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RECONFIG_EVT 14 /* reconfigure response */ 244e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_SUSPEND_EVT 15 /* suspend response */ 245e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_PENDING_EVT 16 /* incoming connection pending: 246e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach * signal channel is open and stream is not open 247e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach * after BTA_AV_SIG_TIME_VAL ms */ 248e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_META_MSG_EVT 17 /* metadata messages */ 249e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_REJECT_EVT 18 /* incoming connection rejected */ 250e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_RC_FEAT_EVT 19 /* remote control channel peer supported features update */ 25195fa11b3b2f19a382c7e3a744a6afb452fad86dfKausik Sinnaswamy/* Max BTA event */ 25295fa11b3b2f19a382c7e3a744a6afb452fad86dfKausik Sinnaswamy#define BTA_AV_MAX_EVT 20 253e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 254e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTA_AV_EVT; 255e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 256e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Event associated with BTA_AV_ENABLE_EVT */ 257e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 258e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 259e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_FEAT features; 260e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_ENABLE; 261e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 262e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* Event associated with BTA_AV_REGISTER_EVT */ 263e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 264e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 265e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CHNL chnl; /* audio/video */ 266e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_HNDL hndl; /* Handle associated with the stream. */ 267e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 app_id; /* ID associated with call to BTA_AvRegister() */ 268e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_STATUS status; 269e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_REGISTER; 270e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 271e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_OPEN_EVT */ 272e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_EDR_2MBPS 0x01 273e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_EDR_3MBPS 0x02 274e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef UINT8 tBTA_AV_EDR; 275e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 276e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 277e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 278e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CHNL chnl; 279e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_HNDL hndl; 280e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BD_ADDR bd_addr; 281e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_STATUS status; 282e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BOOLEAN starting; 283e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_EDR edr; /* 0, if peer device does not support EDR */ 284e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_OPEN; 285e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 286e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_CLOSE_EVT */ 287e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 288e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 289e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CHNL chnl; 290e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_HNDL hndl; 291e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_CLOSE; 292e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 293e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_START_EVT */ 294e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 295e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 296e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CHNL chnl; 297e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_HNDL hndl; 298e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_STATUS status; 299e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BOOLEAN initiator; /* TRUE, if local device initiates the START */ 300e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BOOLEAN suspending; 301e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_START; 302e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 303e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_SUSPEND_EVT */ 304e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 305e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 306e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CHNL chnl; 307e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_HNDL hndl; 308e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BOOLEAN initiator; /* TRUE, if local device initiates the SUSPEND */ 309e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_STATUS status; 310e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_SUSPEND; 311e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 312e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_RECONFIG_EVT */ 313e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 314e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 315e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CHNL chnl; 316e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_HNDL hndl; 317e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_STATUS status; 318e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_RECONFIG; 319e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 320e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_PROTECT_REQ_EVT */ 321e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 322e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 323e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CHNL chnl; 324e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_HNDL hndl; 325e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 *p_data; 326e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 len; 327e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_PROTECT_REQ; 328e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 329e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_PROTECT_RSP_EVT */ 330e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 331e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 332e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CHNL chnl; 333e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_HNDL hndl; 334e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 *p_data; 335e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 len; 336e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_ERR err_code; 337e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_PROTECT_RSP; 338e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 339e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_RC_OPEN_EVT */ 340e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 341e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 342e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 rc_handle; 343e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_FEAT peer_features; 344e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BD_ADDR peer_addr; 345e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_STATUS status; 346e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_RC_OPEN; 347e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 348e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_RC_CLOSE_EVT */ 349e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 350e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 351e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 rc_handle; 352e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BD_ADDR peer_addr; 353e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_RC_CLOSE; 354e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 355e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_RC_FEAT_EVT */ 356e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 357e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 358e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 rc_handle; 359e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_FEAT peer_features; 360e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_RC_FEAT; 361e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 362e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_REMOTE_CMD_EVT */ 363e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 364e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 365e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 rc_handle; 366e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_RC rc_id; 367e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_STATE key_state; 368e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 len; 369e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 *p_data; 370e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tAVRC_HDR hdr; /* Message header. */ 371e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 label; 372e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_REMOTE_CMD; 373e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 374e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_REMOTE_RSP_EVT */ 375e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 376e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 377e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 rc_handle; 378e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_RC rc_id; 379e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_STATE key_state; 380e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 len; 381e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 *p_data; 382e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CODE rsp_code; 383e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 label; 384e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_REMOTE_RSP; 385e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 386e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_VENDOR_CMD_EVT, BTA_AV_VENDOR_RSP_EVT */ 387e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 388e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 389e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 rc_handle; 390e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 len; /* Max vendor dependent message is 512 */ 391e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 label; 392e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CODE code; 393e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT32 company_id; 394e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 *p_data; 395e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_VENDOR; 396e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 397e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_META_MSG_EVT */ 398e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 399e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 400e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 rc_handle; 401e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 len; 402e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 label; 403e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CODE code; 404e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT32 company_id; 405e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 *p_data; 406e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tAVRC_MSG *p_msg; 407e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_META_MSG; 408e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 409e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_PENDING_EVT */ 410e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 411e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 412e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BD_ADDR bd_addr; 413e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_PEND; 414e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 415e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* data associated with BTA_AV_REJECT_EVT */ 416e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 417e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 418e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BD_ADDR bd_addr; 419e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_HNDL hndl; /* Handle associated with the stream that rejected the connection. */ 420e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_REJECT; 421e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 422e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 423e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* union of data associated with AV callback */ 424e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef union 425e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 426e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CHNL chnl; 427e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_ENABLE enable; 428e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_REGISTER registr; 429e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_OPEN open; 430e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CLOSE close; 431e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_START start; 432e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_PROTECT_REQ protect_req; 433e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_PROTECT_RSP protect_rsp; 434e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_RC_OPEN rc_open; 435e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_RC_CLOSE rc_close; 436e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_REMOTE_CMD remote_cmd; 437e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_REMOTE_RSP remote_rsp; 438e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_VENDOR vendor_cmd; 439e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_VENDOR vendor_rsp; 440e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_RECONFIG reconfig; 441e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_SUSPEND suspend; 442e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_PEND pend; 443e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_META_MSG meta_msg; 444e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_REJECT reject; 445e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_RC_FEAT rc_feat; 446e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV; 447e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 448e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 449e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AVC_PACKET_LEN AVRC_PACKET_LEN 450e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_VENDOR_DATA_OFFSET 6 451e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_VENDOR_HEADER_LEN 4 452e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_MAX_VENDOR_DEPENDENT_DATA_LEN (BTA_AVC_PACKET_LEN-BTA_VENDOR_DATA_OFFSET-BTA_VENDOR_HEADER_LEN) 453e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_GROUP_NAVI_MSG_OP_DATA_LEN 5 454e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 4556ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_ERROR_INVALID_CMD AVRC_STS_BAD_CMD 4566ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_ERROR_INVALID_PARAM AVRC_STS_BAD_PARAM 4576ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_ERROR_BAD_CONTENTS AVRC_STS_NOT_FOUND 4586ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach#define BTA_ERROR_INTERNAL AVRC_STS_INTERNAL_ERR 459e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 460e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_META_SINGLE_PACKET AVRC_PKT_SINGLE 461e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 462e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#define BTA_AV_CO_METADATA AVRC_CO_METADATA 463e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 464e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* AV callback */ 465e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTA_AV_CBACK)(tBTA_AV_EVT event, tBTA_AV *p_data); 466e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 467e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* type for stream state machine action functions */ 468e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (*tBTA_AV_ACT)(void *p_cb, void *p_data); 469e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 470e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* type for registering VDP */ 471e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef void (tBTA_AV_REG) (tAVDT_CS *p_cs, char *p_service_name, void *p_data); 472e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 473e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/* AV configuration structure */ 474e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachtypedef struct 475e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 476e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT32 company_id; /* AVRCP Company ID */ 477e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 avrc_mtu; /* AVRCP MTU at L2CAP for control channel */ 478e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 avrc_br_mtu; /* AVRCP MTU at L2CAP for browsing channel */ 479e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 avrc_ct_cat; /* AVRCP controller categories */ 480e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 avrc_tg_cat; /* AVRCP target categories */ 481e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 sig_mtu; /* AVDTP signaling channel MTU at L2CAP */ 482e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 audio_mtu; /* AVDTP audio transport channel MTU at L2CAP */ 483e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach const UINT16 *p_audio_flush_to;/* AVDTP audio transport channel flush timeout */ 484e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 audio_mqs; /* AVDTP audio channel max data queue size */ 485e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 video_mtu; /* AVDTP video transport channel MTU at L2CAP */ 486e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 video_flush_to; /* AVDTP video transport channel flush timeout */ 487e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BOOLEAN avrc_group; /* TRUE, to accept AVRC 1.3 group nevigation command */ 488e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 num_co_ids; /* company id count in p_meta_co_ids */ 489e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 num_evt_ids; /* event id count in p_meta_evt_ids */ 490e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CODE rc_pass_rsp; /* the default response code for pass through commands */ 491e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach const UINT32 *p_meta_co_ids;/* the metadata Get Capabilities response for company id */ 492e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach const UINT8 *p_meta_evt_ids;/* the the metadata Get Capabilities response for event id */ 493e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach const tBTA_AV_ACT *p_act_tbl;/* the action function table for VDP stream */ 494e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_REG *p_reg; /* action function to register VDP */ 495e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} tBTA_AV_CFG; 496e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 497e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifdef __cplusplus 498e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbachextern "C" 499e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach{ 500e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 501e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 502e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/***************************************************************************** 503e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** External Function Declarations 504e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*****************************************************************************/ 505e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 506e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 507e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 508e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvEnable 509e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 5106ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description Enable the advanced audio/video service. When the enable 511e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** operation is complete the callback function will be 512e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** called with a BTA_AV_ENABLE_EVT. This function must 513e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** be called before other function in the AV API are 514e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** called. 515e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 516e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 517e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 518e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 519e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvEnable(tBTA_SEC sec_mask, tBTA_AV_FEAT features, 520e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_CBACK *p_cback); 521e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 522e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 523e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 524e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvDisable 525e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 526e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Disable the advanced audio/video service. 5276ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** 528e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 529e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 530e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 531e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 532e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvDisable(void); 533e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 534e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 535e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 536e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvRegister 537e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 5386ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** Description Register the audio or video service to stack. When the 539e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** operation is complete the callback function will be 540e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** called with a BTA_AV_REGISTER_EVT. This function must 541e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** be called before AVDT stream is open. 542e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 543e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 544e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 545e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 546e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 547e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvRegister(tBTA_AV_CHNL chnl, const char *p_service_name, 548e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 app_id); 549e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 550e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 551e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 552e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvDeregister 553e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 554e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Deregister the audio or video service 555e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 556e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 557e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 558e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 559e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvDeregister(tBTA_AV_HNDL hndl); 560e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 561e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 562e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 563e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvOpen 564e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 565e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Opens an advanced audio/video connection to a peer device. 566e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** When connection is open callback function is called 567e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** with a BTA_AV_OPEN_EVT. 568e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 569e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 570e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 571e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 572e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvOpen(BD_ADDR bd_addr, tBTA_AV_HNDL handle, 573e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BOOLEAN use_rc, tBTA_SEC sec_mask); 574e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 575e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 576e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 577e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvClose 578e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 579e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Close the current streams. 580e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 581e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 582e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 583e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 584e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvClose(tBTA_AV_HNDL handle); 585e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 586e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 587e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 588e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvDisconnect 589e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 590e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Close the connection to the address. 591e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 592e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 593e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 594e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 595e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvDisconnect(BD_ADDR bd_addr); 596e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 597e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 598e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 599e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvStart 600e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 601e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Start audio/video stream data transfer. 602e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 603e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 604e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 605e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 606e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvStart(void); 607e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 608e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 609e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 610e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvStop 611e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 612e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Stop audio/video stream data transfer. 613e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** If suspend is TRUE, this function sends AVDT suspend signal 614e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** to the connected peer(s). 615e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 616e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 617e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 618e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 619e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvStop(BOOLEAN suspend); 620e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 621e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 622e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 623e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvReconfig 624e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 625e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Reconfigure the audio/video stream. 626e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** If suspend is TRUE, this function tries the suspend/reconfigure 627e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** procedure first. 628e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** If suspend is FALSE or when suspend/reconfigure fails, 629e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** this function closes and re-opens the AVDT connection. 630e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 631e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 632e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 633e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 634e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvReconfig(tBTA_AV_HNDL hndl, BOOLEAN suspend, UINT8 sep_info_idx, 635e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 *p_codec_info, UINT8 num_protect, UINT8 *p_protect_info); 636e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 637e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 638e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 639e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvProtectReq 640e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 641e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Send a content protection request. This function can only 642e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** be used if AV is enabled with feature BTA_AV_FEAT_PROTECT. 643e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 644e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 645e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 646e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 647e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvProtectReq(tBTA_AV_HNDL hndl, UINT8 *p_data, UINT16 len); 648e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 649e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 650e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 651e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvProtectRsp 652e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 653e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Send a content protection response. This function must 6546ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** be called if a BTA_AV_PROTECT_REQ_EVT is received. 655e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** This function can only be used if AV is enabled with 656e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** feature BTA_AV_FEAT_PROTECT. 657e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 658e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 659e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 660e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 661e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvProtectRsp(tBTA_AV_HNDL hndl, UINT8 error_code, UINT8 *p_data, 662e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT16 len); 663e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 664e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 665e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 666e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvRemoteCmd 667e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 668e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Send a remote control command. This function can only 669e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** be used if AV is enabled with feature BTA_AV_FEAT_RCCT. 670e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 671e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 672e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 673e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 674e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvRemoteCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_RC rc_id, 675e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach tBTA_AV_STATE key_state); 676e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 677e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 678e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 679e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvVendorCmd 680e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 681e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Send a vendor dependent remote control command. This 682e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** function can only be used if AV is enabled with feature 683e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** BTA_AV_FEAT_VENDOR. 684e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 685e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 686e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 687e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 688e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvVendorCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE cmd_code, 689e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 *p_data, UINT16 len); 690e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 691e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 692e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 693e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvVendorRsp 694e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 695e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Send a vendor dependent remote control response. 6966ef101187774e30ddba6b46bbedef549a42196adAndre Eisenbach** This function must be called if a BTA_AV_VENDOR_CMD_EVT 697e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** is received. This function can only be used if AV is 698e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** enabled with feature BTA_AV_FEAT_VENDOR. 699e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 700e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 701e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 702e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 703e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvVendorRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code, 704e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach UINT8 *p_data, UINT16 len, UINT32 company_id); 705e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 706e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 707e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 708e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 709e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvOpenRc 710e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 711e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Open an AVRCP connection toward the device with the 712e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** specified handle 713e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 714e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 715e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 716e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 717e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvOpenRc(tBTA_AV_HNDL handle); 718e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 719e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 720e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 721e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvCloseRc 722e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 723e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Close an AVRCP connection 724e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 725e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 726e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 727e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 728e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvCloseRc(UINT8 rc_handle); 729e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 730e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 731e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 732e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvMetaRsp 733e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 734e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Send a Metadata command/response. The message contained 735e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** in p_pkt can be composed with AVRC utility functions. 736e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** This function can only be used if AV is enabled with feature 737e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** BTA_AV_FEAT_METADATA. 738e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 739e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 740e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 741e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 742e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvMetaRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code, 743e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach BT_HDR *p_pkt); 744e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 745e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach/******************************************************************************* 746e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 747e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Function BTA_AvMetaCmd 748e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 749e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Description Send a Metadata/Advanced Control command. The message contained 750e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** in p_pkt can be composed with AVRC utility functions. 751e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** This function can only be used if AV is enabled with feature 752e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** BTA_AV_FEAT_METADATA. 753e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** This message is sent only when the peer supports the TG role. 754e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*8 The only command makes sense right now is the absolute volume command. 755e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 756e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** Returns void 757e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach** 758e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach*******************************************************************************/ 759e448862a47c08eb23185aaed574b39264f5005fcAndre EisenbachBTA_API void BTA_AvMetaCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CMD cmd_code, BT_HDR *p_pkt); 760e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 761e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#ifdef __cplusplus 762e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach} 763e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif 764e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach 765e448862a47c08eb23185aaed574b39264f5005fcAndre Eisenbach#endif /* BTA_AV_API_H */ 766