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