1 /******************************************************************************
3 * Copyright (C) 2004-2012 Broadcom Corporation
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 ******************************************************************************/
19 /******************************************************************************
21 * This is the public interface file for the advanced audio/video streaming
22 * (AV) subsystem of BTA, Broadcom's Bluetooth application layer for mobile
25 ******************************************************************************/
34 /*****************************************************************************
35 ** Constants and data types
36 *****************************************************************************/
37 /* Set to TRUE if seperate authorization prompt desired for AVCTP besides A2DP authorization */
38 /* Typically FALSE when AVRCP is used in conjunction with A2DP */
39 #ifndef BTA_AV_WITH_AVCTP_AUTHORIZATION
40 #define BTA_AV_WITH_AVCTP_AUTHORIZATION FALSE
43 /* AV status values */
44 #define BTA_AV_SUCCESS 0 /* successful operation */
45 #define BTA_AV_FAIL 1 /* generic failure */
46 #define BTA_AV_FAIL_SDP 2 /* service not found */
47 #define BTA_AV_FAIL_STREAM 3 /* stream connection failed */
48 #define BTA_AV_FAIL_RESOURCES 4 /* no resources */
49 #define BTA_AV_FAIL_ROLE 5 /* failed due to role management related issues */
50 #define BTA_AV_FAIL_GET_CAP 6 /* get capability failed due to no SEP availale on the peer */
52 typedef UINT8 tBTA_AV_STATUS;
54 /* AV features masks */
55 #define BTA_AV_FEAT_RCTG 0x0001 /* remote control target */
56 #define BTA_AV_FEAT_RCCT 0x0002 /* remote control controller */
57 #define BTA_AV_FEAT_PROTECT 0x0004 /* streaming media contect protection */
58 #define BTA_AV_FEAT_VENDOR 0x0008 /* remote control vendor dependent commands */
59 #define BTA_AV_FEAT_REPORT 0x0020 /* use reporting service for VDP */
60 #define BTA_AV_FEAT_METADATA 0x0040 /* remote control Metadata Transfer command/response */
61 #define BTA_AV_FEAT_MULTI_AV 0x0080 /* use multi-av, if controller supports it */
62 #define BTA_AV_FEAT_BROWSE 0x0010 /* use browsing channel */
63 #define BTA_AV_FEAT_MASTER 0x0100 /* stream only as master role */
64 #define BTA_AV_FEAT_ADV_CTRL 0x0200 /* remote control Advanced Control command/response */
65 #define BTA_AV_FEAT_DELAY_RPT 0x0400 /* allow delay reporting */
66 #define BTA_AV_FEAT_ACP_START 0x0800 /* start stream when 2nd SNK was accepted */
67 #define BTA_AV_FEAT_APP_SETTING 0x2000 /* Player app setting support */
69 /* Internal features */
70 #define BTA_AV_FEAT_NO_SCO_SSPD 0x8000 /* Do not suspend av streaming as to AG events(SCO or Call) */
72 typedef UINT16 tBTA_AV_FEAT;
74 /* AV channel values */
75 #define BTA_AV_CHNL_MSK 0xC0
76 #define BTA_AV_CHNL_AUDIO 0x40 /* audio channel */
77 #define BTA_AV_CHNL_VIDEO 0x80 /* video channel */
78 typedef UINT8 tBTA_AV_CHNL;
81 #define BTA_AV_HNDL_MSK 0x3F
82 typedef UINT8 tBTA_AV_HNDL;
83 /* handle index to mask */
84 #define BTA_AV_HNDL_TO_MSK(h) ((UINT8)(1 << (h)))
86 /* tBTA_AV_HNDL to mask */
87 #define BTA_AV_HNDL_TYPE_TO_MSK(h) ((UINT8)(1 << (h&BTA_AV_HNDL_MSK)))
89 /* offset of codec type in codec info byte array */
90 #define BTA_AV_CODEC_TYPE_IDX AVDT_CODEC_TYPE_INDEX /* 2 */
94 /* maximum number of streams created: 1 for audio, 1 for video */
95 #ifndef BTA_AV_NUM_STRS
96 #define BTA_AV_NUM_STRS 2
99 #ifndef BTA_AV_MAX_SEPS
100 #define BTA_AV_MAX_SEPS 2
103 #ifndef BTA_AV_MAX_A2DP_MTU
104 /*#define BTA_AV_MAX_A2DP_MTU 668 //224 (DM5) * 3 - 4(L2CAP header) */
105 #define BTA_AV_MAX_A2DP_MTU 1008
108 #ifndef BTA_AV_MAX_VDP_MTU
109 #define BTA_AV_MAX_VDP_MTU 1008
114 #define BTA_AV_CODEC_SBC A2D_MEDIA_CT_SBC /* SBC media codec type */
115 #define BTA_AV_CODEC_M12 A2D_MEDIA_CT_M12 /* MPEG-1, 2 Audio media codec type */
116 #define BTA_AV_CODEC_M24 A2D_MEDIA_CT_M24 /* MPEG-2, 4 AAC media codec type */
117 #define BTA_AV_CODEC_ATRAC A2D_MEDIA_CT_ATRAC /* ATRAC family media codec type */
118 #define BTA_AV_CODEC_H263_P0 VDP_MEDIA_CT_H263_P0 /* H.263 baseline (profile 0) */
119 #define BTA_AV_CODEC_MPEG4 VDP_MEDIA_CT_MPEG4 /* MPEG-4 Visual Simple Profile */
120 #define BTA_AV_CODEC_H263_P3 VDP_MEDIA_CT_H263_P3 /* H.263 profile 3 */
121 #define BTA_AV_CODEC_H263_P8 VDP_MEDIA_CT_H263_P8 /* H.263 profile 8 */
122 #define BTA_AV_CODEC_VEND VDP_MEDIA_CT_VEND /* Non-VDP */
124 typedef UINT8 tBTA_AV_CODEC;
126 /* Company ID in BT assigned numbers */
127 #define BTA_AV_BT_VENDOR_ID VDP_BT_VENDOR_ID /* Broadcom Corporation */
129 /* vendor specific codec ID */
130 #define BTA_AV_CODEC_ID_H264 VDP_CODEC_ID_H264 /* Non-VDP codec ID - H.264 */
131 #define BTA_AV_CODEC_ID_IMG VDP_CODEC_ID_IMG /* Non-VDP codec ID - images/slideshow */
133 /* operation id list for BTA_AvRemoteCmd */
134 #define BTA_AV_RC_SELECT AVRC_ID_SELECT /* select */
135 #define BTA_AV_RC_UP AVRC_ID_UP /* up */
136 #define BTA_AV_RC_DOWN AVRC_ID_DOWN /* down */
137 #define BTA_AV_RC_LEFT AVRC_ID_LEFT /* left */
138 #define BTA_AV_RC_RIGHT AVRC_ID_RIGHT /* right */
139 #define BTA_AV_RC_RIGHT_UP AVRC_ID_RIGHT_UP /* right-up */
140 #define BTA_AV_RC_RIGHT_DOWN AVRC_ID_RIGHT_DOWN /* right-down */
141 #define BTA_AV_RC_LEFT_UP AVRC_ID_LEFT_UP /* left-up */
142 #define BTA_AV_RC_LEFT_DOWN AVRC_ID_LEFT_DOWN /* left-down */
143 #define BTA_AV_RC_ROOT_MENU AVRC_ID_ROOT_MENU /* root menu */
144 #define BTA_AV_RC_SETUP_MENU AVRC_ID_SETUP_MENU /* setup menu */
145 #define BTA_AV_RC_CONT_MENU AVRC_ID_CONT_MENU /* contents menu */
146 #define BTA_AV_RC_FAV_MENU AVRC_ID_FAV_MENU /* favorite menu */
147 #define BTA_AV_RC_EXIT AVRC_ID_EXIT /* exit */
148 #define BTA_AV_RC_0 AVRC_ID_0 /* 0 */
149 #define BTA_AV_RC_1 AVRC_ID_1 /* 1 */
150 #define BTA_AV_RC_2 AVRC_ID_2 /* 2 */
151 #define BTA_AV_RC_3 AVRC_ID_3 /* 3 */
152 #define BTA_AV_RC_4 AVRC_ID_4 /* 4 */
153 #define BTA_AV_RC_5 AVRC_ID_5 /* 5 */
154 #define BTA_AV_RC_6 AVRC_ID_6 /* 6 */
155 #define BTA_AV_RC_7 AVRC_ID_7 /* 7 */
156 #define BTA_AV_RC_8 AVRC_ID_8 /* 8 */
157 #define BTA_AV_RC_9 AVRC_ID_9 /* 9 */
158 #define BTA_AV_RC_DOT AVRC_ID_DOT /* dot */
159 #define BTA_AV_RC_ENTER AVRC_ID_ENTER /* enter */
160 #define BTA_AV_RC_CLEAR AVRC_ID_CLEAR /* clear */
161 #define BTA_AV_RC_CHAN_UP AVRC_ID_CHAN_UP /* channel up */
162 #define BTA_AV_RC_CHAN_DOWN AVRC_ID_CHAN_DOWN /* channel down */
163 #define BTA_AV_RC_PREV_CHAN AVRC_ID_PREV_CHAN /* previous channel */
164 #define BTA_AV_RC_SOUND_SEL AVRC_ID_SOUND_SEL /* sound select */
165 #define BTA_AV_RC_INPUT_SEL AVRC_ID_INPUT_SEL /* input select */
166 #define BTA_AV_RC_DISP_INFO AVRC_ID_DISP_INFO /* display information */
167 #define BTA_AV_RC_HELP AVRC_ID_HELP /* help */
168 #define BTA_AV_RC_PAGE_UP AVRC_ID_PAGE_UP /* page up */
169 #define BTA_AV_RC_PAGE_DOWN AVRC_ID_PAGE_DOWN /* page down */
170 #define BTA_AV_RC_POWER AVRC_ID_POWER /* power */
171 #define BTA_AV_RC_VOL_UP AVRC_ID_VOL_UP /* volume up */
172 #define BTA_AV_RC_VOL_DOWN AVRC_ID_VOL_DOWN /* volume down */
173 #define BTA_AV_RC_MUTE AVRC_ID_MUTE /* mute */
174 #define BTA_AV_RC_PLAY AVRC_ID_PLAY /* play */
175 #define BTA_AV_RC_STOP AVRC_ID_STOP /* stop */
176 #define BTA_AV_RC_PAUSE AVRC_ID_PAUSE /* pause */
177 #define BTA_AV_RC_RECORD AVRC_ID_RECORD /* record */
178 #define BTA_AV_RC_REWIND AVRC_ID_REWIND /* rewind */
179 #define BTA_AV_RC_FAST_FOR AVRC_ID_FAST_FOR /* fast forward */
180 #define BTA_AV_RC_EJECT AVRC_ID_EJECT /* eject */
181 #define BTA_AV_RC_FORWARD AVRC_ID_FORWARD /* forward */
182 #define BTA_AV_RC_BACKWARD AVRC_ID_BACKWARD /* backward */
183 #define BTA_AV_RC_ANGLE AVRC_ID_ANGLE /* angle */
184 #define BTA_AV_RC_SUBPICT AVRC_ID_SUBPICT /* subpicture */
185 #define BTA_AV_RC_F1 AVRC_ID_F1 /* F1 */
186 #define BTA_AV_RC_F2 AVRC_ID_F2 /* F2 */
187 #define BTA_AV_RC_F3 AVRC_ID_F3 /* F3 */
188 #define BTA_AV_RC_F4 AVRC_ID_F4 /* F4 */
189 #define BTA_AV_RC_F5 AVRC_ID_F5 /* F5 */
190 #define BTA_AV_VENDOR AVRC_ID_VENDOR /* vendor unique */
192 typedef UINT8 tBTA_AV_RC;
194 /* state flag for pass through command */
195 #define BTA_AV_STATE_PRESS AVRC_STATE_PRESS /* key pressed */
196 #define BTA_AV_STATE_RELEASE AVRC_STATE_RELEASE /* key released */
198 typedef UINT8 tBTA_AV_STATE;
200 /* command codes for BTA_AvVendorCmd */
201 #define BTA_AV_CMD_CTRL AVRC_CMD_CTRL
202 #define BTA_AV_CMD_STATUS AVRC_CMD_STATUS
203 #define BTA_AV_CMD_SPEC_INQ AVRC_CMD_SPEC_INQ
204 #define BTA_AV_CMD_NOTIF AVRC_CMD_NOTIF
205 #define BTA_AV_CMD_GEN_INQ AVRC_CMD_GEN_INQ
207 typedef UINT8 tBTA_AV_CMD;
209 /* response codes for BTA_AvVendorRsp */
210 #define BTA_AV_RSP_NOT_IMPL AVRC_RSP_NOT_IMPL
211 #define BTA_AV_RSP_ACCEPT AVRC_RSP_ACCEPT
212 #define BTA_AV_RSP_REJ AVRC_RSP_REJ
213 #define BTA_AV_RSP_IN_TRANS AVRC_RSP_IN_TRANS
214 #define BTA_AV_RSP_IMPL_STBL AVRC_RSP_IMPL_STBL
215 #define BTA_AV_RSP_CHANGED AVRC_RSP_CHANGED
216 #define BTA_AV_RSP_INTERIM AVRC_RSP_INTERIM
218 typedef UINT8 tBTA_AV_CODE;
220 /* error codes for BTA_AvProtectRsp */
221 #define BTA_AV_ERR_NONE A2D_SUCCESS /* Success, no error */
222 #define BTA_AV_ERR_BAD_STATE AVDT_ERR_BAD_STATE /* Message cannot be processed in this state */
223 #define BTA_AV_ERR_RESOURCE AVDT_ERR_RESOURCE /* Insufficient resources */
224 #define BTA_AV_ERR_BAD_CP_TYPE A2D_BAD_CP_TYPE /* The requested Content Protection Type is not supported */
225 #define BTA_AV_ERR_BAD_CP_FORMAT A2D_BAD_CP_FORMAT /* The format of Content Protection Data is not correct */
227 typedef UINT8 tBTA_AV_ERR;
230 /* AV callback events */
231 #define BTA_AV_ENABLE_EVT 0 /* AV enabled */
232 #define BTA_AV_REGISTER_EVT 1 /* registered to AVDT */
233 #define BTA_AV_OPEN_EVT 2 /* connection opened */
234 #define BTA_AV_CLOSE_EVT 3 /* connection closed */
235 #define BTA_AV_START_EVT 4 /* stream data transfer started */
236 #define BTA_AV_STOP_EVT 5 /* stream data transfer stopped */
237 #define BTA_AV_PROTECT_REQ_EVT 6 /* content protection request */
238 #define BTA_AV_PROTECT_RSP_EVT 7 /* content protection response */
239 #define BTA_AV_RC_OPEN_EVT 8 /* remote control channel open */
240 #define BTA_AV_RC_CLOSE_EVT 9 /* remote control channel closed */
241 #define BTA_AV_REMOTE_CMD_EVT 10 /* remote control command */
242 #define BTA_AV_REMOTE_RSP_EVT 11 /* remote control response */
243 #define BTA_AV_VENDOR_CMD_EVT 12 /* vendor dependent remote control command */
244 #define BTA_AV_VENDOR_RSP_EVT 13 /* vendor dependent remote control response */
245 #define BTA_AV_RECONFIG_EVT 14 /* reconfigure response */
246 #define BTA_AV_SUSPEND_EVT 15 /* suspend response */
247 #define BTA_AV_PENDING_EVT 16 /* incoming connection pending:
248 * signal channel is open and stream is
250 * BTA_AV_SIGNALLING_TIMEOUT_MS */
251 #define BTA_AV_META_MSG_EVT 17 /* metadata messages */
252 #define BTA_AV_REJECT_EVT 18 /* incoming connection rejected */
253 #define BTA_AV_RC_FEAT_EVT 19 /* remote control channel peer supported features update */
254 #define BTA_AV_MEDIA_SINK_CFG_EVT 20 /* command to configure codec */
255 #define BTA_AV_MEDIA_DATA_EVT 21 /* sending data to Media Task */
256 #define BTA_AV_OFFLOAD_START_RSP_EVT 22 /* a2dp offload start response */
258 #define BTA_AV_MAX_EVT 23
261 typedef UINT8 tBTA_AV_EVT;
263 /* Event associated with BTA_AV_ENABLE_EVT */
266 tBTA_AV_FEAT features;
269 /* Event associated with BTA_AV_REGISTER_EVT */
272 tBTA_AV_CHNL chnl; /* audio/video */
273 tBTA_AV_HNDL hndl; /* Handle associated with the stream. */
274 UINT8 app_id; /* ID associated with call to BTA_AvRegister() */
275 tBTA_AV_STATUS status;
278 /* data associated with BTA_AV_OPEN_EVT */
279 #define BTA_AV_EDR_2MBPS 0x01
280 #define BTA_AV_EDR_3MBPS 0x02
281 typedef UINT8 tBTA_AV_EDR;
288 tBTA_AV_STATUS status;
290 tBTA_AV_EDR edr; /* 0, if peer device does not support EDR */
291 UINT8 sep; /* sep type of peer device */
294 /* data associated with BTA_AV_CLOSE_EVT */
301 /* data associated with BTA_AV_START_EVT */
306 tBTA_AV_STATUS status;
307 BOOLEAN initiator; /* TRUE, if local device initiates the START */
311 /* data associated with BTA_AV_SUSPEND_EVT */
316 BOOLEAN initiator; /* TRUE, if local device initiates the SUSPEND */
317 tBTA_AV_STATUS status;
320 /* data associated with BTA_AV_RECONFIG_EVT */
325 tBTA_AV_STATUS status;
328 /* data associated with BTA_AV_PROTECT_REQ_EVT */
335 } tBTA_AV_PROTECT_REQ;
337 /* data associated with BTA_AV_PROTECT_RSP_EVT */
344 tBTA_AV_ERR err_code;
345 } tBTA_AV_PROTECT_RSP;
347 /* data associated with BTA_AV_RC_OPEN_EVT */
351 tBTA_AV_FEAT peer_features;
353 tBTA_AV_STATUS status;
356 /* data associated with BTA_AV_RC_CLOSE_EVT */
363 /* data associated with BTA_AV_RC_FEAT_EVT */
367 tBTA_AV_FEAT peer_features;
371 /* data associated with BTA_AV_REMOTE_CMD_EVT */
376 tBTA_AV_STATE key_state;
379 tAVRC_HDR hdr; /* Message header. */
381 } tBTA_AV_REMOTE_CMD;
383 /* data associated with BTA_AV_REMOTE_RSP_EVT */
388 tBTA_AV_STATE key_state;
391 tBTA_AV_CODE rsp_code;
393 } tBTA_AV_REMOTE_RSP;
395 /* data associated with BTA_AV_VENDOR_CMD_EVT, BTA_AV_VENDOR_RSP_EVT */
399 UINT16 len; /* Max vendor dependent message is 512 */
406 /* data associated with BTA_AV_META_MSG_EVT */
418 /* data associated with BTA_AV_PENDING_EVT */
424 /* data associated with BTA_AV_REJECT_EVT */
428 tBTA_AV_HNDL hndl; /* Handle associated with the stream that rejected the connection. */
432 /* union of data associated with AV callback */
436 tBTA_AV_ENABLE enable;
437 tBTA_AV_REGISTER registr;
441 tBTA_AV_PROTECT_REQ protect_req;
442 tBTA_AV_PROTECT_RSP protect_rsp;
443 tBTA_AV_RC_OPEN rc_open;
444 tBTA_AV_RC_CLOSE rc_close;
445 tBTA_AV_REMOTE_CMD remote_cmd;
446 tBTA_AV_REMOTE_RSP remote_rsp;
447 tBTA_AV_VENDOR vendor_cmd;
448 tBTA_AV_VENDOR vendor_rsp;
449 tBTA_AV_RECONFIG reconfig;
450 tBTA_AV_SUSPEND suspend;
452 tBTA_AV_META_MSG meta_msg;
453 tBTA_AV_REJECT reject;
454 tBTA_AV_RC_FEAT rc_feat;
455 tBTA_AV_STATUS status;
464 /* union of data associated with AV Media callback */
468 tBTA_AVK_CONFIG avk_config;
472 #define BTA_AVC_PACKET_LEN AVRC_PACKET_LEN
473 #define BTA_VENDOR_DATA_OFFSET 6
474 #define BTA_VENDOR_HEADER_LEN 4
475 #define BTA_MAX_VENDOR_DEPENDENT_DATA_LEN (BTA_AVC_PACKET_LEN-BTA_VENDOR_DATA_OFFSET-BTA_VENDOR_HEADER_LEN)
476 #define BTA_GROUP_NAVI_MSG_OP_DATA_LEN 5
478 #define BTA_ERROR_INVALID_CMD AVRC_STS_BAD_CMD
479 #define BTA_ERROR_INVALID_PARAM AVRC_STS_BAD_PARAM
480 #define BTA_ERROR_BAD_CONTENTS AVRC_STS_NOT_FOUND
481 #define BTA_ERROR_INTERNAL AVRC_STS_INTERNAL_ERR
483 #define BTA_AV_META_SINGLE_PACKET AVRC_PKT_SINGLE
485 #define BTA_AV_CO_METADATA AVRC_CO_METADATA
488 typedef void (tBTA_AV_CBACK)(tBTA_AV_EVT event, tBTA_AV *p_data);
489 typedef void (tBTA_AV_DATA_CBACK)(tBTA_AV_EVT event, tBTA_AV_MEDIA *p_data);
491 /* type for stream state machine action functions */
492 typedef void (*tBTA_AV_ACT)(void *p_cb, void *p_data);
494 /* type for registering VDP */
495 typedef void (tBTA_AV_REG) (tAVDT_CS *p_cs, char *p_service_name, void *p_data);
497 /* AV configuration structure */
500 UINT32 company_id; /* AVRCP Company ID */
501 UINT16 avrc_mtu; /* AVRCP MTU at L2CAP for control channel */
502 UINT16 avrc_br_mtu; /* AVRCP MTU at L2CAP for browsing channel */
503 UINT16 avrc_ct_cat; /* AVRCP controller categories */
504 UINT16 avrc_tg_cat; /* AVRCP target categories */
505 UINT16 sig_mtu; /* AVDTP signaling channel MTU at L2CAP */
506 UINT16 audio_mtu; /* AVDTP audio transport channel MTU at L2CAP */
507 const UINT16 *p_audio_flush_to;/* AVDTP audio transport channel flush timeout */
508 UINT16 audio_mqs; /* AVDTP audio channel max data queue size */
509 UINT16 video_mtu; /* AVDTP video transport channel MTU at L2CAP */
510 UINT16 video_flush_to; /* AVDTP video transport channel flush timeout */
511 BOOLEAN avrc_group; /* TRUE, to accept AVRC 1.3 group nevigation command */
512 UINT8 num_co_ids; /* company id count in p_meta_co_ids */
513 UINT8 num_evt_ids; /* event id count in p_meta_evt_ids */
514 tBTA_AV_CODE rc_pass_rsp; /* the default response code for pass through commands */
515 const UINT32 *p_meta_co_ids;/* the metadata Get Capabilities response for company id */
516 const UINT8 *p_meta_evt_ids;/* the the metadata Get Capabilities response for event id */
517 const tBTA_AV_ACT *p_act_tbl;/* the action function table for VDP stream */
518 tBTA_AV_REG *p_reg; /* action function to register VDP */
519 char avrc_controller_name[BTA_SERVICE_NAME_LEN]; /* Default AVRCP controller name */
520 char avrc_target_name[BTA_SERVICE_NAME_LEN]; /* Default AVRCP target name*/
528 /*****************************************************************************
529 ** External Function Declarations
530 *****************************************************************************/
532 /*******************************************************************************
534 ** Function BTA_AvEnable
536 ** Description Enable the advanced audio/video service. When the enable
537 ** operation is complete the callback function will be
538 ** called with a BTA_AV_ENABLE_EVT. This function must
539 ** be called before other function in the AV API are
544 *******************************************************************************/
545 void BTA_AvEnable(tBTA_SEC sec_mask, tBTA_AV_FEAT features,
546 tBTA_AV_CBACK *p_cback);
548 /*******************************************************************************
550 ** Function BTA_AvDisable
552 ** Description Disable the advanced audio/video service.
557 *******************************************************************************/
558 void BTA_AvDisable(void);
560 /*******************************************************************************
562 ** Function BTA_AvRegister
564 ** Description Register the audio or video service to stack. When the
565 ** operation is complete the callback function will be
566 ** called with a BTA_AV_REGISTER_EVT. This function must
567 ** be called before AVDT stream is open.
572 *******************************************************************************/
573 void BTA_AvRegister(tBTA_AV_CHNL chnl, const char *p_service_name,
574 UINT8 app_id, tBTA_AV_DATA_CBACK *p_data_cback, UINT16 service_uuid);
576 /*******************************************************************************
578 ** Function BTA_AvDeregister
580 ** Description Deregister the audio or video service
584 *******************************************************************************/
585 void BTA_AvDeregister(tBTA_AV_HNDL hndl);
587 /*******************************************************************************
589 ** Function BTA_AvOpen
591 ** Description Opens an advanced audio/video connection to a peer device.
592 ** When connection is open callback function is called
593 ** with a BTA_AV_OPEN_EVT.
597 *******************************************************************************/
598 void BTA_AvOpen(BD_ADDR bd_addr, tBTA_AV_HNDL handle,
599 BOOLEAN use_rc, tBTA_SEC sec_mask, UINT16 uuid);
601 /*******************************************************************************
603 ** Function BTA_AvClose
605 ** Description Close the current streams.
609 *******************************************************************************/
610 void BTA_AvClose(tBTA_AV_HNDL handle);
612 /*******************************************************************************
614 ** Function BTA_AvDisconnect
616 ** Description Close the connection to the address.
620 *******************************************************************************/
621 void BTA_AvDisconnect(BD_ADDR bd_addr);
623 /*******************************************************************************
625 ** Function BTA_AvEnable_Sink
627 ** Description Enable/Disable A2DP Sink.
631 *******************************************************************************/
632 void BTA_AvEnable_Sink(int enable);
634 /*******************************************************************************
636 ** Function BTA_AvStart
638 ** Description Start audio/video stream data transfer.
642 *******************************************************************************/
643 void BTA_AvStart(void);
645 /*******************************************************************************
647 ** Function BTA_AvStop
649 ** Description Stop audio/video stream data transfer.
650 ** If suspend is TRUE, this function sends AVDT suspend signal
651 ** to the connected peer(s).
655 *******************************************************************************/
656 void BTA_AvStop(BOOLEAN suspend);
658 /*******************************************************************************
660 ** Function BTA_AvReconfig
662 ** Description Reconfigure the audio/video stream.
663 ** If suspend is TRUE, this function tries the suspend/reconfigure
665 ** If suspend is FALSE or when suspend/reconfigure fails,
666 ** this function closes and re-opens the AVDT connection.
670 *******************************************************************************/
671 void BTA_AvReconfig(tBTA_AV_HNDL hndl, BOOLEAN suspend, UINT8 sep_info_idx,
672 UINT8 *p_codec_info, UINT8 num_protect, UINT8 *p_protect_info);
674 /*******************************************************************************
676 ** Function BTA_AvProtectReq
678 ** Description Send a content protection request. This function can only
679 ** be used if AV is enabled with feature BTA_AV_FEAT_PROTECT.
683 *******************************************************************************/
684 void BTA_AvProtectReq(tBTA_AV_HNDL hndl, UINT8 *p_data, UINT16 len);
686 /*******************************************************************************
688 ** Function BTA_AvProtectRsp
690 ** Description Send a content protection response. This function must
691 ** be called if a BTA_AV_PROTECT_REQ_EVT is received.
692 ** This function can only be used if AV is enabled with
693 ** feature BTA_AV_FEAT_PROTECT.
697 *******************************************************************************/
698 void BTA_AvProtectRsp(tBTA_AV_HNDL hndl, UINT8 error_code, UINT8 *p_data,
701 /*******************************************************************************
703 ** Function BTA_AvRemoteCmd
705 ** Description Send a remote control command. This function can only
706 ** be used if AV is enabled with feature BTA_AV_FEAT_RCCT.
710 *******************************************************************************/
711 void BTA_AvRemoteCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_RC rc_id,
712 tBTA_AV_STATE key_state);
714 /*******************************************************************************
716 ** Function BTA_AvRemoteVendorUniqueCmd
718 ** Description Send a remote control command with Vendor Unique rc_id.
719 ** This function can only be used if AV is enabled with
720 ** feature BTA_AV_FEAT_RCCT.
724 *******************************************************************************/
725 void BTA_AvRemoteVendorUniqueCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_STATE key_state,
726 UINT8* p_msg, UINT8 buf_len);
728 /*******************************************************************************
730 ** Function BTA_AvVendorCmd
732 ** Description Send a vendor dependent remote control command. This
733 ** function can only be used if AV is enabled with feature
734 ** BTA_AV_FEAT_VENDOR.
738 *******************************************************************************/
739 void BTA_AvVendorCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE cmd_code,
740 UINT8 *p_data, UINT16 len);
742 /*******************************************************************************
744 ** Function BTA_AvVendorRsp
746 ** Description Send a vendor dependent remote control response.
747 ** This function must be called if a BTA_AV_VENDOR_CMD_EVT
748 ** is received. This function can only be used if AV is
749 ** enabled with feature BTA_AV_FEAT_VENDOR.
753 *******************************************************************************/
754 void BTA_AvVendorRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code,
755 UINT8 *p_data, UINT16 len, UINT32 company_id);
758 /*******************************************************************************
760 ** Function BTA_AvOpenRc
762 ** Description Open an AVRCP connection toward the device with the
767 *******************************************************************************/
768 void BTA_AvOpenRc(tBTA_AV_HNDL handle);
770 /*******************************************************************************
772 ** Function BTA_AvCloseRc
774 ** Description Close an AVRCP connection
778 *******************************************************************************/
779 void BTA_AvCloseRc(UINT8 rc_handle);
781 /*******************************************************************************
783 ** Function BTA_AvMetaRsp
785 ** Description Send a Metadata command/response. The message contained
786 ** in p_pkt can be composed with AVRC utility functions.
787 ** This function can only be used if AV is enabled with feature
788 ** BTA_AV_FEAT_METADATA.
792 *******************************************************************************/
793 void BTA_AvMetaRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code,
796 /*******************************************************************************
798 ** Function BTA_AvMetaCmd
800 ** Description Send a Metadata/Advanced Control command. The message contained
801 ** in p_pkt can be composed with AVRC utility functions.
802 ** This function can only be used if AV is enabled with feature
803 ** BTA_AV_FEAT_METADATA.
804 ** This message is sent only when the peer supports the TG role.
805 *8 The only command makes sense right now is the absolute volume command.
809 *******************************************************************************/
810 void BTA_AvMetaCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CMD cmd_code, BT_HDR *p_pkt);
812 /*******************************************************************************
814 ** Function BTA_AvOffloadStart
816 ** Description Request Starting of A2DP Offload.
817 ** This function is used to start A2DP offload if vendor lib has
818 ** the feature enabled.
822 *******************************************************************************/
823 void BTA_AvOffloadStart(tBTA_AV_HNDL hndl);
825 /*******************************************************************************
827 ** Function BTA_AvOffloadStartRsp
829 ** Description Response from vendor library indicating response for
834 *******************************************************************************/
835 void BTA_AvOffloadStartRsp(tBTA_AV_HNDL hndl, tBTA_AV_STATUS status);
842 #endif /* BTA_AV_API_H */