mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-10-31 14:11:42 +01:00 
			
		
		
		
	
		
			
	
	
		
			813 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			813 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /******************************************************************************
 | ||
|  |  * | ||
|  |  *  Copyright (C) 2004-2012 Broadcom Corporation | ||
|  |  * | ||
|  |  *  Licensed under the Apache License, Version 2.0 (the "License"); | ||
|  |  *  you may not use this file except in compliance with the License. | ||
|  |  *  You may obtain a copy of the License at: | ||
|  |  * | ||
|  |  *  http://www.apache.org/licenses/LICENSE-2.0
 | ||
|  |  * | ||
|  |  *  Unless required by applicable law or agreed to in writing, software | ||
|  |  *  distributed under the License is distributed on an "AS IS" BASIS, | ||
|  |  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
|  |  *  See the License for the specific language governing permissions and | ||
|  |  *  limitations under the License. | ||
|  |  * | ||
|  |  ******************************************************************************/ | ||
|  | 
 | ||
|  | /******************************************************************************
 | ||
|  |  * | ||
|  |  *  This is the public interface file for the advanced audio/video streaming | ||
|  |  *  (AV) subsystem of BTA, Broadcom's Bluetooth application layer for mobile | ||
|  |  *  phones. | ||
|  |  * | ||
|  |  ******************************************************************************/ | ||
|  | #ifndef BTA_AV_API_H
 | ||
|  | #define BTA_AV_API_H
 | ||
|  | 
 | ||
|  | #include "avrc_api.h"
 | ||
|  | #include "avdt_api.h"
 | ||
|  | #include "a2d_api.h"
 | ||
|  | #include "bta_api.h"
 | ||
|  | 
 | ||
|  | #if (BTA_AV_INCLUDED == TRUE)
 | ||
|  | 
 | ||
|  | /*****************************************************************************
 | ||
|  | **  Constants and data types | ||
|  | *****************************************************************************/ | ||
|  | /* Set to TRUE if seperate authorization prompt desired for AVCTP besides A2DP authorization */ | ||
|  | /* Typically FALSE when AVRCP is used in conjunction with A2DP */ | ||
|  | #ifndef BTA_AV_WITH_AVCTP_AUTHORIZATION
 | ||
|  | #define BTA_AV_WITH_AVCTP_AUTHORIZATION     FALSE
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | /* AV status values */ | ||
|  | #define BTA_AV_SUCCESS          0       /* successful operation */
 | ||
|  | #define BTA_AV_FAIL             1       /* generic failure */
 | ||
|  | #define BTA_AV_FAIL_SDP         2       /* service not found */
 | ||
|  | #define BTA_AV_FAIL_STREAM      3       /* stream connection failed */
 | ||
|  | #define BTA_AV_FAIL_RESOURCES   4       /* no resources */
 | ||
|  | #define BTA_AV_FAIL_ROLE        5       /* failed due to role management related issues */
 | ||
|  | #define BTA_AV_FAIL_GET_CAP     6       /* get capability failed due to no SEP availale on the peer  */
 | ||
|  | 
 | ||
|  | typedef UINT8 tBTA_AV_STATUS; | ||
|  | 
 | ||
|  | /* AV features masks */ | ||
|  | #define BTA_AV_FEAT_RCTG        0x0001  /* remote control target */
 | ||
|  | #define BTA_AV_FEAT_RCCT        0x0002  /* remote control controller */
 | ||
|  | #define BTA_AV_FEAT_PROTECT     0x0004  /* streaming media contect protection */
 | ||
|  | #define BTA_AV_FEAT_VENDOR      0x0008  /* remote control vendor dependent commands */
 | ||
|  | #define BTA_AV_FEAT_REPORT      0x0020  /* use reporting service for VDP */
 | ||
|  | #define BTA_AV_FEAT_METADATA    0x0040  /* remote control Metadata Transfer command/response */
 | ||
|  | #define BTA_AV_FEAT_MULTI_AV    0x0080  /* use multi-av, if controller supports it */
 | ||
|  | #define BTA_AV_FEAT_BROWSE      0x0010  /* use browsing channel */
 | ||
|  | #define BTA_AV_FEAT_MASTER      0x0100  /* stream only as master role */
 | ||
|  | #define BTA_AV_FEAT_ADV_CTRL    0x0200  /* remote control Advanced Control command/response */
 | ||
|  | #define BTA_AV_FEAT_DELAY_RPT   0x0400  /* allow delay reporting */
 | ||
|  | #define BTA_AV_FEAT_ACP_START   0x0800  /* start stream when 2nd SNK was accepted   */
 | ||
|  | 
 | ||
|  | /* Internal features */ | ||
|  | #define BTA_AV_FEAT_NO_SCO_SSPD 0x8000  /* Do not suspend av streaming as to AG events(SCO or Call) */
 | ||
|  | 
 | ||
|  | typedef UINT16 tBTA_AV_FEAT; | ||
|  | 
 | ||
|  | /* AV channel values */ | ||
|  | #define BTA_AV_CHNL_MSK             0xC0
 | ||
|  | #define BTA_AV_CHNL_AUDIO           0x40  /* audio channel */
 | ||
|  | #define BTA_AV_CHNL_VIDEO           0x80  /* video channel */
 | ||
|  | typedef UINT8 tBTA_AV_CHNL; | ||
|  | 
 | ||
|  | 
 | ||
|  | #define BTA_AV_HNDL_MSK             0x3F
 | ||
|  | typedef UINT8 tBTA_AV_HNDL; | ||
|  | /* handle index to mask */ | ||
|  | #define BTA_AV_HNDL_TO_MSK(h)       ((UINT8)(1 << (h)))
 | ||
|  | 
 | ||
|  | /* tBTA_AV_HNDL to mask */ | ||
|  | #define BTA_AV_HNDL_TYPE_TO_MSK(h)  ((UINT8)(1 << (h&BTA_AV_HNDL_MSK)))
 | ||
|  | 
 | ||
|  | /* offset of codec type in codec info byte array */ | ||
|  | #define BTA_AV_CODEC_TYPE_IDX       AVDT_CODEC_TYPE_INDEX   /* 2 */
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /* maximum number of streams created: 1 for audio, 1 for video */ | ||
|  | #ifndef BTA_AV_NUM_STRS
 | ||
|  | #define BTA_AV_NUM_STRS         2
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef BTA_AV_MAX_SEPS
 | ||
|  | #define BTA_AV_MAX_SEPS         2
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef BTA_AV_MAX_A2DP_MTU
 | ||
|  | /*#define BTA_AV_MAX_A2DP_MTU     668 //224 (DM5) * 3 - 4(L2CAP header) */ | ||
|  | #define BTA_AV_MAX_A2DP_MTU     1008
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #ifndef BTA_AV_MAX_VDP_MTU
 | ||
|  | #define BTA_AV_MAX_VDP_MTU      1008
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /* codec type */ | ||
|  | #define BTA_AV_CODEC_SBC        A2D_MEDIA_CT_SBC        /* SBC media codec type */
 | ||
|  | #define BTA_AV_CODEC_M12        A2D_MEDIA_CT_M12        /* MPEG-1, 2 Audio media codec type */
 | ||
|  | #define BTA_AV_CODEC_M24        A2D_MEDIA_CT_M24        /* MPEG-2, 4 AAC media codec type */
 | ||
|  | #define BTA_AV_CODEC_ATRAC      A2D_MEDIA_CT_ATRAC      /* ATRAC family media codec type */
 | ||
|  | #define BTA_AV_CODEC_H263_P0    VDP_MEDIA_CT_H263_P0    /* H.263 baseline (profile 0) */
 | ||
|  | #define BTA_AV_CODEC_MPEG4      VDP_MEDIA_CT_MPEG4      /* MPEG-4 Visual Simple Profile */
 | ||
|  | #define BTA_AV_CODEC_H263_P3    VDP_MEDIA_CT_H263_P3    /* H.263 profile 3 */
 | ||
|  | #define BTA_AV_CODEC_H263_P8    VDP_MEDIA_CT_H263_P8    /* H.263 profile 8 */
 | ||
|  | #define BTA_AV_CODEC_VEND       VDP_MEDIA_CT_VEND       /* Non-VDP */
 | ||
|  | 
 | ||
|  | typedef UINT8 tBTA_AV_CODEC; | ||
|  | 
 | ||
|  | /* Company ID in BT assigned numbers */ | ||
|  | #define BTA_AV_BT_VENDOR_ID     VDP_BT_VENDOR_ID        /* Broadcom Corporation */
 | ||
|  | 
 | ||
|  | /* vendor specific codec ID */ | ||
|  | #define BTA_AV_CODEC_ID_H264    VDP_CODEC_ID_H264       /* Non-VDP codec ID - H.264 */
 | ||
|  | #define BTA_AV_CODEC_ID_IMG     VDP_CODEC_ID_IMG        /* Non-VDP codec ID - images/slideshow */
 | ||
|  | 
 | ||
|  | /* operation id list for BTA_AvRemoteCmd */ | ||
|  | #define BTA_AV_RC_SELECT        AVRC_ID_SELECT      /* select */
 | ||
|  | #define BTA_AV_RC_UP            AVRC_ID_UP          /* up */
 | ||
|  | #define BTA_AV_RC_DOWN          AVRC_ID_DOWN        /* down */
 | ||
|  | #define BTA_AV_RC_LEFT          AVRC_ID_LEFT        /* left */
 | ||
|  | #define BTA_AV_RC_RIGHT         AVRC_ID_RIGHT       /* right */
 | ||
|  | #define BTA_AV_RC_RIGHT_UP      AVRC_ID_RIGHT_UP    /* right-up */
 | ||
|  | #define BTA_AV_RC_RIGHT_DOWN    AVRC_ID_RIGHT_DOWN  /* right-down */
 | ||
|  | #define BTA_AV_RC_LEFT_UP       AVRC_ID_LEFT_UP     /* left-up */
 | ||
|  | #define BTA_AV_RC_LEFT_DOWN     AVRC_ID_LEFT_DOWN   /* left-down */
 | ||
|  | #define BTA_AV_RC_ROOT_MENU     AVRC_ID_ROOT_MENU   /* root menu */
 | ||
|  | #define BTA_AV_RC_SETUP_MENU    AVRC_ID_SETUP_MENU  /* setup menu */
 | ||
|  | #define BTA_AV_RC_CONT_MENU     AVRC_ID_CONT_MENU   /* contents menu */
 | ||
|  | #define BTA_AV_RC_FAV_MENU      AVRC_ID_FAV_MENU    /* favorite menu */
 | ||
|  | #define BTA_AV_RC_EXIT          AVRC_ID_EXIT        /* exit */
 | ||
|  | #define BTA_AV_RC_0             AVRC_ID_0           /* 0 */
 | ||
|  | #define BTA_AV_RC_1             AVRC_ID_1           /* 1 */
 | ||
|  | #define BTA_AV_RC_2             AVRC_ID_2           /* 2 */
 | ||
|  | #define BTA_AV_RC_3             AVRC_ID_3           /* 3 */
 | ||
|  | #define BTA_AV_RC_4             AVRC_ID_4           /* 4 */
 | ||
|  | #define BTA_AV_RC_5             AVRC_ID_5           /* 5 */
 | ||
|  | #define BTA_AV_RC_6             AVRC_ID_6           /* 6 */
 | ||
|  | #define BTA_AV_RC_7             AVRC_ID_7           /* 7 */
 | ||
|  | #define BTA_AV_RC_8             AVRC_ID_8           /* 8 */
 | ||
|  | #define BTA_AV_RC_9             AVRC_ID_9           /* 9 */
 | ||
|  | #define BTA_AV_RC_DOT           AVRC_ID_DOT         /* dot */
 | ||
|  | #define BTA_AV_RC_ENTER         AVRC_ID_ENTER       /* enter */
 | ||
|  | #define BTA_AV_RC_CLEAR         AVRC_ID_CLEAR       /* clear */
 | ||
|  | #define BTA_AV_RC_CHAN_UP       AVRC_ID_CHAN_UP     /* channel up */
 | ||
|  | #define BTA_AV_RC_CHAN_DOWN     AVRC_ID_CHAN_DOWN   /* channel down */
 | ||
|  | #define BTA_AV_RC_PREV_CHAN     AVRC_ID_PREV_CHAN   /* previous channel */
 | ||
|  | #define BTA_AV_RC_SOUND_SEL     AVRC_ID_SOUND_SEL   /* sound select */
 | ||
|  | #define BTA_AV_RC_INPUT_SEL     AVRC_ID_INPUT_SEL   /* input select */
 | ||
|  | #define BTA_AV_RC_DISP_INFO     AVRC_ID_DISP_INFO   /* display information */
 | ||
|  | #define BTA_AV_RC_HELP          AVRC_ID_HELP        /* help */
 | ||
|  | #define BTA_AV_RC_PAGE_UP       AVRC_ID_PAGE_UP     /* page up */
 | ||
|  | #define BTA_AV_RC_PAGE_DOWN     AVRC_ID_PAGE_DOWN   /* page down */
 | ||
|  | #define BTA_AV_RC_POWER         AVRC_ID_POWER       /* power */
 | ||
|  | #define BTA_AV_RC_VOL_UP        AVRC_ID_VOL_UP      /* volume up */
 | ||
|  | #define BTA_AV_RC_VOL_DOWN      AVRC_ID_VOL_DOWN    /* volume down */
 | ||
|  | #define BTA_AV_RC_MUTE          AVRC_ID_MUTE        /* mute */
 | ||
|  | #define BTA_AV_RC_PLAY          AVRC_ID_PLAY        /* play */
 | ||
|  | #define BTA_AV_RC_STOP          AVRC_ID_STOP        /* stop */
 | ||
|  | #define BTA_AV_RC_PAUSE         AVRC_ID_PAUSE       /* pause */
 | ||
|  | #define BTA_AV_RC_RECORD        AVRC_ID_RECORD      /* record */
 | ||
|  | #define BTA_AV_RC_REWIND        AVRC_ID_REWIND      /* rewind */
 | ||
|  | #define BTA_AV_RC_FAST_FOR      AVRC_ID_FAST_FOR    /* fast forward */
 | ||
|  | #define BTA_AV_RC_EJECT         AVRC_ID_EJECT       /* eject */
 | ||
|  | #define BTA_AV_RC_FORWARD       AVRC_ID_FORWARD     /* forward */
 | ||
|  | #define BTA_AV_RC_BACKWARD      AVRC_ID_BACKWARD    /* backward */
 | ||
|  | #define BTA_AV_RC_ANGLE         AVRC_ID_ANGLE       /* angle */
 | ||
|  | #define BTA_AV_RC_SUBPICT       AVRC_ID_SUBPICT     /* subpicture */
 | ||
|  | #define BTA_AV_RC_F1            AVRC_ID_F1          /* F1 */
 | ||
|  | #define BTA_AV_RC_F2            AVRC_ID_F2          /* F2 */
 | ||
|  | #define BTA_AV_RC_F3            AVRC_ID_F3          /* F3 */
 | ||
|  | #define BTA_AV_RC_F4            AVRC_ID_F4          /* F4 */
 | ||
|  | #define BTA_AV_RC_F5            AVRC_ID_F5          /* F5 */
 | ||
|  | #define BTA_AV_VENDOR           AVRC_ID_VENDOR      /* vendor unique */
 | ||
|  | 
 | ||
|  | typedef UINT8 tBTA_AV_RC; | ||
|  | 
 | ||
|  | /* state flag for pass through command */ | ||
|  | #define BTA_AV_STATE_PRESS      AVRC_STATE_PRESS    /* key pressed */
 | ||
|  | #define BTA_AV_STATE_RELEASE    AVRC_STATE_RELEASE  /* key released */
 | ||
|  | 
 | ||
|  | typedef UINT8 tBTA_AV_STATE; | ||
|  | 
 | ||
|  | /* command codes for BTA_AvVendorCmd */ | ||
|  | #define BTA_AV_CMD_CTRL         AVRC_CMD_CTRL
 | ||
|  | #define BTA_AV_CMD_STATUS       AVRC_CMD_STATUS
 | ||
|  | #define BTA_AV_CMD_SPEC_INQ     AVRC_CMD_SPEC_INQ
 | ||
|  | #define BTA_AV_CMD_NOTIF        AVRC_CMD_NOTIF
 | ||
|  | #define BTA_AV_CMD_GEN_INQ      AVRC_CMD_GEN_INQ
 | ||
|  | 
 | ||
|  | typedef UINT8 tBTA_AV_CMD; | ||
|  | 
 | ||
|  | /* response codes for BTA_AvVendorRsp */ | ||
|  | #define BTA_AV_RSP_NOT_IMPL     AVRC_RSP_NOT_IMPL
 | ||
|  | #define BTA_AV_RSP_ACCEPT       AVRC_RSP_ACCEPT
 | ||
|  | #define BTA_AV_RSP_REJ          AVRC_RSP_REJ
 | ||
|  | #define BTA_AV_RSP_IN_TRANS     AVRC_RSP_IN_TRANS
 | ||
|  | #define BTA_AV_RSP_IMPL_STBL    AVRC_RSP_IMPL_STBL
 | ||
|  | #define BTA_AV_RSP_CHANGED      AVRC_RSP_CHANGED
 | ||
|  | #define BTA_AV_RSP_INTERIM      AVRC_RSP_INTERIM
 | ||
|  | 
 | ||
|  | typedef UINT8 tBTA_AV_CODE; | ||
|  | 
 | ||
|  | /* error codes for BTA_AvProtectRsp */ | ||
|  | #define BTA_AV_ERR_NONE             A2D_SUCCESS         /* Success, no error */
 | ||
|  | #define BTA_AV_ERR_BAD_STATE        AVDT_ERR_BAD_STATE  /* Message cannot be processed in this state */
 | ||
|  | #define BTA_AV_ERR_RESOURCE         AVDT_ERR_RESOURCE   /* Insufficient resources */
 | ||
|  | #define BTA_AV_ERR_BAD_CP_TYPE      A2D_BAD_CP_TYPE     /* The requested Content Protection Type is not supported */
 | ||
|  | #define BTA_AV_ERR_BAD_CP_FORMAT    A2D_BAD_CP_FORMAT   /* The format of Content Protection Data is not correct */
 | ||
|  | 
 | ||
|  | typedef UINT8 tBTA_AV_ERR; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* AV callback events */ | ||
|  | #define BTA_AV_ENABLE_EVT       0       /* AV enabled */
 | ||
|  | #define BTA_AV_REGISTER_EVT     1       /* registered to AVDT */
 | ||
|  | #define BTA_AV_OPEN_EVT         2       /* connection opened */
 | ||
|  | #define BTA_AV_CLOSE_EVT        3       /* connection closed */
 | ||
|  | #define BTA_AV_START_EVT        4       /* stream data transfer started */
 | ||
|  | #define BTA_AV_STOP_EVT         5       /* stream data transfer stopped */
 | ||
|  | #define BTA_AV_PROTECT_REQ_EVT  6       /* content protection request */
 | ||
|  | #define BTA_AV_PROTECT_RSP_EVT  7       /* content protection response */
 | ||
|  | #define BTA_AV_RC_OPEN_EVT      8       /* remote control channel open */
 | ||
|  | #define BTA_AV_RC_CLOSE_EVT     9       /* remote control channel closed */
 | ||
|  | #define BTA_AV_REMOTE_CMD_EVT   10      /* remote control command */
 | ||
|  | #define BTA_AV_REMOTE_RSP_EVT   11      /* remote control response */
 | ||
|  | #define BTA_AV_VENDOR_CMD_EVT   12      /* vendor dependent remote control command */
 | ||
|  | #define BTA_AV_VENDOR_RSP_EVT   13      /* vendor dependent remote control response */
 | ||
|  | #define BTA_AV_RECONFIG_EVT     14      /* reconfigure response */
 | ||
|  | #define BTA_AV_SUSPEND_EVT      15      /* suspend response */
 | ||
|  | #define BTA_AV_PENDING_EVT      16      /* incoming connection pending:
 | ||
|  |                                          * signal channel is open and stream is not open | ||
|  |                                          * after BTA_AV_SIG_TIME_VAL ms */ | ||
|  | #define BTA_AV_META_MSG_EVT     17      /* metadata messages */
 | ||
|  | #define BTA_AV_REJECT_EVT       18      /* incoming connection rejected */
 | ||
|  | #define BTA_AV_RC_FEAT_EVT      19      /* remote control channel peer supported features update */
 | ||
|  | #define BTA_AV_MEDIA_SINK_CFG_EVT    20      /* command to configure codec */
 | ||
|  | #define BTA_AV_MEDIA_DATA_EVT   21      /* sending data to Media Task */
 | ||
|  | /* Max BTA event */ | ||
|  | #define BTA_AV_MAX_EVT          22
 | ||
|  | 
 | ||
|  | 
 | ||
|  | /* function types for call-out functions */ | ||
|  | typedef BOOLEAN (*tBTA_AV_CO_INIT) (UINT8 *p_codec_type, UINT8 *p_codec_info, | ||
|  |                                     UINT8 *p_num_protect, UINT8 *p_protect_info, UINT8 index); | ||
|  | typedef void (*tBTA_AV_CO_DISC_RES) (tBTA_AV_HNDL hndl, UINT8 num_seps, | ||
|  |                                      UINT8 num_snk, UINT8 num_src, BD_ADDR addr, UINT16 uuid_local); | ||
|  | typedef UINT8 (*tBTA_AV_CO_GETCFG) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type, | ||
|  |                                     UINT8 *p_codec_info, UINT8 *p_sep_info_idx, UINT8 seid, | ||
|  |                                     UINT8 *p_num_protect, UINT8 *p_protect_info); | ||
|  | typedef void (*tBTA_AV_CO_SETCFG) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type, | ||
|  |                                    UINT8 *p_codec_info, UINT8 seid, BD_ADDR addr, | ||
|  |                                    UINT8 num_protect, UINT8 *p_protect_info, | ||
|  |                                    UINT8 t_local_sep, UINT8 avdt_handle); | ||
|  | typedef void (*tBTA_AV_CO_OPEN) (tBTA_AV_HNDL hndl, | ||
|  |                                  tBTA_AV_CODEC codec_type, UINT8 *p_codec_info, | ||
|  |                                  UINT16 mtu); | ||
|  | typedef void (*tBTA_AV_CO_CLOSE) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type, UINT16 mtu); | ||
|  | typedef void (*tBTA_AV_CO_START) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type, UINT8 *p_codec_info, BOOLEAN *p_no_rtp_hdr); | ||
|  | typedef void (*tBTA_AV_CO_STOP) (tBTA_AV_HNDL hndl, tBTA_AV_CODEC codec_type); | ||
|  | typedef void *(*tBTA_AV_CO_DATAPATH) (tBTA_AV_CODEC codec_type, | ||
|  |                                       UINT32 *p_len, UINT32 *p_timestamp); | ||
|  | typedef void (*tBTA_AV_CO_DELAY) (tBTA_AV_HNDL hndl, UINT16 delay); | ||
|  | 
 | ||
|  | /* the call-out functions for one stream */ | ||
|  | typedef struct { | ||
|  |     tBTA_AV_CO_INIT     init; | ||
|  |     tBTA_AV_CO_DISC_RES disc_res; | ||
|  |     tBTA_AV_CO_GETCFG   getcfg; | ||
|  |     tBTA_AV_CO_SETCFG   setcfg; | ||
|  |     tBTA_AV_CO_OPEN     open; | ||
|  |     tBTA_AV_CO_CLOSE    close; | ||
|  |     tBTA_AV_CO_START    start; | ||
|  |     tBTA_AV_CO_STOP     stop; | ||
|  |     tBTA_AV_CO_DATAPATH data; | ||
|  |     tBTA_AV_CO_DELAY    delay; | ||
|  | } tBTA_AV_CO_FUNCTS; | ||
|  | 
 | ||
|  | typedef UINT8 tBTA_AV_EVT; | ||
|  | 
 | ||
|  | /* Event associated with BTA_AV_ENABLE_EVT */ | ||
|  | typedef struct { | ||
|  |     tBTA_AV_FEAT    features; | ||
|  | } tBTA_AV_ENABLE; | ||
|  | 
 | ||
|  | /* Event associated with BTA_AV_REGISTER_EVT */ | ||
|  | typedef struct { | ||
|  |     tBTA_AV_CHNL    chnl;       /* audio/video */ | ||
|  |     tBTA_AV_HNDL    hndl;       /* Handle associated with the stream. */ | ||
|  |     UINT8           app_id;     /* ID associated with call to BTA_AvRegister() */ | ||
|  |     tBTA_AV_STATUS  status; | ||
|  |     tBTA_AV_CO_FUNCTS *p_bta_av_cos; | ||
|  | } tBTA_AV_REGISTER; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_OPEN_EVT */ | ||
|  | #define BTA_AV_EDR_2MBPS        0x01
 | ||
|  | #define BTA_AV_EDR_3MBPS        0x02
 | ||
|  | typedef UINT8 tBTA_AV_EDR; | ||
|  | 
 | ||
|  | typedef struct { | ||
|  |     tBTA_AV_CHNL    chnl; | ||
|  |     tBTA_AV_HNDL    hndl; | ||
|  |     BD_ADDR         bd_addr; | ||
|  |     tBTA_AV_STATUS  status; | ||
|  |     BOOLEAN         starting; | ||
|  |     tBTA_AV_EDR     edr;        /* 0, if peer device does not support EDR */ | ||
|  |     UINT8           sep;        /*  sep type of peer device */ | ||
|  | } tBTA_AV_OPEN; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_CLOSE_EVT */ | ||
|  | typedef struct { | ||
|  |     tBTA_AV_CHNL    chnl; | ||
|  |     tBTA_AV_HNDL    hndl; | ||
|  |     UINT8           disc_rsn;    /* disconnection reason */ | ||
|  | } tBTA_AV_CLOSE; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_START_EVT */ | ||
|  | typedef struct { | ||
|  |     tBTA_AV_CHNL    chnl; | ||
|  |     tBTA_AV_HNDL    hndl; | ||
|  |     tBTA_AV_STATUS  status; | ||
|  |     BOOLEAN         initiator; /* TRUE, if local device initiates the START */ | ||
|  |     BOOLEAN         suspending; | ||
|  | } tBTA_AV_START; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_SUSPEND_EVT */ | ||
|  | typedef struct { | ||
|  |     tBTA_AV_CHNL    chnl; | ||
|  |     tBTA_AV_HNDL    hndl; | ||
|  |     BOOLEAN         initiator; /* TRUE, if local device initiates the SUSPEND */ | ||
|  |     tBTA_AV_STATUS  status; | ||
|  | } tBTA_AV_SUSPEND; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_RECONFIG_EVT */ | ||
|  | typedef struct { | ||
|  |     tBTA_AV_CHNL    chnl; | ||
|  |     tBTA_AV_HNDL    hndl; | ||
|  |     tBTA_AV_STATUS  status; | ||
|  | } tBTA_AV_RECONFIG; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_PROTECT_REQ_EVT */ | ||
|  | typedef struct { | ||
|  |     tBTA_AV_CHNL    chnl; | ||
|  |     tBTA_AV_HNDL    hndl; | ||
|  |     UINT8           *p_data; | ||
|  |     UINT16          len; | ||
|  | } tBTA_AV_PROTECT_REQ; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_PROTECT_RSP_EVT */ | ||
|  | typedef struct { | ||
|  |     tBTA_AV_CHNL    chnl; | ||
|  |     tBTA_AV_HNDL    hndl; | ||
|  |     UINT8           *p_data; | ||
|  |     UINT16          len; | ||
|  |     tBTA_AV_ERR     err_code; | ||
|  | } tBTA_AV_PROTECT_RSP; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_RC_OPEN_EVT */ | ||
|  | typedef struct { | ||
|  |     UINT8           rc_handle; | ||
|  |     tBTA_AV_FEAT    peer_features; | ||
|  |     BD_ADDR         peer_addr; | ||
|  |     tBTA_AV_STATUS  status; | ||
|  | } tBTA_AV_RC_OPEN; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_RC_CLOSE_EVT */ | ||
|  | typedef struct { | ||
|  |     UINT8           rc_handle; | ||
|  |     BD_ADDR         peer_addr; | ||
|  | } tBTA_AV_RC_CLOSE; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_RC_FEAT_EVT */ | ||
|  | typedef struct { | ||
|  |     UINT8           rc_handle; | ||
|  |     tBTA_AV_FEAT    peer_features; | ||
|  | } tBTA_AV_RC_FEAT; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_REMOTE_CMD_EVT */ | ||
|  | typedef struct { | ||
|  |     UINT8           rc_handle; | ||
|  |     tBTA_AV_RC      rc_id; | ||
|  |     tBTA_AV_STATE   key_state; | ||
|  |     UINT8           len; | ||
|  |     UINT8           *p_data; | ||
|  |     tAVRC_HDR       hdr;    /* Message header. */ | ||
|  |     UINT8           label; | ||
|  | } tBTA_AV_REMOTE_CMD; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_REMOTE_RSP_EVT */ | ||
|  | typedef struct { | ||
|  |     UINT8           rc_handle; | ||
|  |     tBTA_AV_RC      rc_id; | ||
|  |     tBTA_AV_STATE   key_state; | ||
|  |     UINT8           len; | ||
|  |     UINT8           *p_data; | ||
|  |     tBTA_AV_CODE    rsp_code; | ||
|  |     UINT8           label; | ||
|  | } tBTA_AV_REMOTE_RSP; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_VENDOR_CMD_EVT, BTA_AV_VENDOR_RSP_EVT */ | ||
|  | typedef struct { | ||
|  |     UINT8           rc_handle; | ||
|  |     UINT16          len;            /* Max vendor dependent message is 512 */ | ||
|  |     UINT8           label; | ||
|  |     tBTA_AV_CODE    code; | ||
|  |     UINT32          company_id; | ||
|  |     UINT8           *p_data; | ||
|  | } tBTA_AV_VENDOR; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_META_MSG_EVT */ | ||
|  | typedef struct { | ||
|  |     UINT8           rc_handle; | ||
|  |     UINT16          len; | ||
|  |     UINT8           label; | ||
|  |     tBTA_AV_CODE    code; | ||
|  |     UINT32          company_id; | ||
|  |     UINT8           *p_data; | ||
|  |     tAVRC_MSG       *p_msg; | ||
|  | } tBTA_AV_META_MSG; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_PENDING_EVT */ | ||
|  | typedef struct { | ||
|  |     BD_ADDR         bd_addr; | ||
|  | } tBTA_AV_PEND; | ||
|  | 
 | ||
|  | /* data associated with BTA_AV_REJECT_EVT */ | ||
|  | typedef struct { | ||
|  |     BD_ADDR         bd_addr; | ||
|  |     tBTA_AV_HNDL    hndl;       /* Handle associated with the stream that rejected the connection. */ | ||
|  | } tBTA_AV_REJECT; | ||
|  | 
 | ||
|  | 
 | ||
|  | /* union of data associated with AV callback */ | ||
|  | typedef union { | ||
|  |     tBTA_AV_CHNL        chnl; | ||
|  |     tBTA_AV_ENABLE      enable; | ||
|  |     tBTA_AV_REGISTER    registr; | ||
|  |     tBTA_AV_OPEN        open; | ||
|  |     tBTA_AV_CLOSE       close; | ||
|  |     tBTA_AV_START       start; | ||
|  |     tBTA_AV_PROTECT_REQ protect_req; | ||
|  |     tBTA_AV_PROTECT_RSP protect_rsp; | ||
|  |     tBTA_AV_RC_OPEN     rc_open; | ||
|  |     tBTA_AV_RC_CLOSE    rc_close; | ||
|  |     tBTA_AV_REMOTE_CMD  remote_cmd; | ||
|  |     tBTA_AV_REMOTE_RSP  remote_rsp; | ||
|  |     tBTA_AV_VENDOR      vendor_cmd; | ||
|  |     tBTA_AV_VENDOR      vendor_rsp; | ||
|  |     tBTA_AV_RECONFIG    reconfig; | ||
|  |     tBTA_AV_SUSPEND     suspend; | ||
|  |     tBTA_AV_PEND        pend; | ||
|  |     tBTA_AV_META_MSG    meta_msg; | ||
|  |     tBTA_AV_REJECT      reject; | ||
|  |     tBTA_AV_RC_FEAT     rc_feat; | ||
|  | } tBTA_AV; | ||
|  | 
 | ||
|  | /* union of data associated with AV Media callback */ | ||
|  | typedef union { | ||
|  |     BT_HDR     *p_data; | ||
|  |     UINT8      *codec_info; | ||
|  | } tBTA_AV_MEDIA; | ||
|  | 
 | ||
|  | 
 | ||
|  | #define BTA_AVC_PACKET_LEN                  AVRC_PACKET_LEN
 | ||
|  | #define BTA_VENDOR_DATA_OFFSET              6
 | ||
|  | #define BTA_VENDOR_HEADER_LEN               4
 | ||
|  | #define BTA_MAX_VENDOR_DEPENDENT_DATA_LEN   (BTA_AVC_PACKET_LEN-BTA_VENDOR_DATA_OFFSET-BTA_VENDOR_HEADER_LEN)
 | ||
|  | #define BTA_GROUP_NAVI_MSG_OP_DATA_LEN      5
 | ||
|  | 
 | ||
|  | #define BTA_ERROR_INVALID_CMD           AVRC_STS_BAD_CMD
 | ||
|  | #define BTA_ERROR_INVALID_PARAM         AVRC_STS_BAD_PARAM
 | ||
|  | #define BTA_ERROR_BAD_CONTENTS          AVRC_STS_NOT_FOUND
 | ||
|  | #define BTA_ERROR_INTERNAL              AVRC_STS_INTERNAL_ERR
 | ||
|  | 
 | ||
|  | #define BTA_AV_META_SINGLE_PACKET       AVRC_PKT_SINGLE
 | ||
|  | 
 | ||
|  | #define BTA_AV_CO_METADATA              AVRC_CO_METADATA
 | ||
|  | 
 | ||
|  | /* AV callback */ | ||
|  | typedef void (tBTA_AV_CBACK)(tBTA_AV_EVT event, tBTA_AV *p_data); | ||
|  | typedef void (tBTA_AV_DATA_CBACK)(tBTA_AV_EVT event, tBTA_AV_MEDIA *p_data); | ||
|  | 
 | ||
|  | /* type for stream state machine action functions */ | ||
|  | typedef void (*tBTA_AV_ACT)(void *p_cb, void *p_data); | ||
|  | 
 | ||
|  | /* type for registering VDP */ | ||
|  | typedef void (tBTA_AV_REG) (tAVDT_CS *p_cs, char *p_service_name, void *p_data); | ||
|  | 
 | ||
|  | /* AV configuration structure */ | ||
|  | typedef struct { | ||
|  |     UINT32  company_id;         /* AVRCP Company ID */ | ||
|  |     UINT16  avrc_mtu;           /* AVRCP MTU at L2CAP for control channel */ | ||
|  |     UINT16  avrc_br_mtu;        /* AVRCP MTU at L2CAP for browsing channel */ | ||
|  |     UINT16  avrc_ct_cat;        /* AVRCP controller categories */ | ||
|  |     UINT16  avrc_tg_cat;        /* AVRCP target categories */ | ||
|  |     UINT16  sig_mtu;            /* AVDTP signaling channel MTU at L2CAP */ | ||
|  |     UINT16  audio_mtu;          /* AVDTP audio transport channel MTU at L2CAP */ | ||
|  |     const UINT16 *p_audio_flush_to;/* AVDTP audio transport channel flush timeout */ | ||
|  |     UINT16  audio_mqs;          /* AVDTP audio channel max data queue size */ | ||
|  |     UINT16  video_mtu;          /* AVDTP video transport channel MTU at L2CAP */ | ||
|  |     UINT16  video_flush_to;     /* AVDTP video transport channel flush timeout */ | ||
|  |     BOOLEAN avrc_group;         /* TRUE, to accept AVRC 1.3 group nevigation command */ | ||
|  |     UINT8   num_co_ids;         /* company id count in p_meta_co_ids */ | ||
|  |     UINT8   num_evt_ids;        /* event id count in p_meta_evt_ids */ | ||
|  |     tBTA_AV_CODE  rc_pass_rsp;  /* the default response code for pass through commands */ | ||
|  |     const UINT32 *p_meta_co_ids;/* the metadata Get Capabilities response for company id */ | ||
|  |     const UINT8 *p_meta_evt_ids;/* the the metadata Get Capabilities response for event id */ | ||
|  |     const tBTA_AV_ACT *p_act_tbl;/* the action function table for VDP stream */ | ||
|  |     tBTA_AV_REG       *p_reg;   /* action function to register VDP */ | ||
|  |     char              avrc_controller_name[BTA_SERVICE_NAME_LEN]; /* Default AVRCP controller name */ | ||
|  |     char              avrc_target_name[BTA_SERVICE_NAME_LEN];     /* Default AVRCP target name*/ | ||
|  | } tBTA_AV_CFG; | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" | ||
|  | { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | /*****************************************************************************
 | ||
|  | **  External Function Declarations | ||
|  | *****************************************************************************/ | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvEnable | ||
|  | ** | ||
|  | ** Description      Enable the advanced audio/video service. When the enable | ||
|  | **                  operation is complete the callback function will be | ||
|  | **                  called with a BTA_AV_ENABLE_EVT. This function must | ||
|  | **                  be called before other function in the AV API are | ||
|  | **                  called. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvEnable(tBTA_SEC sec_mask, tBTA_AV_FEAT features, | ||
|  |                   tBTA_AV_CBACK *p_cback); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvDisable | ||
|  | ** | ||
|  | ** Description      Disable the advanced audio/video service. | ||
|  | ** | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvDisable(void); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvRegister | ||
|  | ** | ||
|  | ** Description      Register the audio or video service to stack. When the | ||
|  | **                  operation is complete the callback function will be | ||
|  | **                  called with a BTA_AV_REGISTER_EVT. This function must | ||
|  | **                  be called before AVDT stream is open. | ||
|  | ** | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvRegister(tBTA_AV_CHNL chnl, const char *p_service_name, | ||
|  |                     UINT8 app_id, tBTA_AV_DATA_CBACK  *p_data_cback, tBTA_AV_CO_FUNCTS *bta_av_cos); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvDeregister | ||
|  | ** | ||
|  | ** Description      Deregister the audio or video service | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvDeregister(tBTA_AV_HNDL hndl); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvOpen | ||
|  | ** | ||
|  | ** Description      Opens an advanced audio/video connection to a peer device. | ||
|  | **                  When connection is open callback function is called | ||
|  | **                  with a BTA_AV_OPEN_EVT. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvOpen(BD_ADDR bd_addr, tBTA_AV_HNDL handle, | ||
|  |                 BOOLEAN use_rc, tBTA_SEC sec_mask, UINT16 uuid); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvClose | ||
|  | ** | ||
|  | ** Description      Close the current streams. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvClose(tBTA_AV_HNDL handle); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvDisconnect | ||
|  | ** | ||
|  | ** Description      Close the connection to the address. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvDisconnect(BD_ADDR bd_addr); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvEnable_Sink | ||
|  | ** | ||
|  | ** Description      Enable/Disable A2DP Sink. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvEnable_Sink(int enable); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvStart | ||
|  | ** | ||
|  | ** Description      Start audio/video stream data transfer. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvStart(void); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvStop | ||
|  | ** | ||
|  | ** Description      Stop audio/video stream data transfer. | ||
|  | **                  If suspend is TRUE, this function sends AVDT suspend signal | ||
|  | **                  to the connected peer(s). | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvStop(BOOLEAN suspend); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvReconfig | ||
|  | ** | ||
|  | ** Description      Reconfigure the audio/video stream. | ||
|  | **                  If suspend is TRUE, this function tries the suspend/reconfigure | ||
|  | **                  procedure first. | ||
|  | **                  If suspend is FALSE or when suspend/reconfigure fails, | ||
|  | **                  this function closes and re-opens the AVDT connection. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvReconfig(tBTA_AV_HNDL hndl, BOOLEAN suspend, UINT8 sep_info_idx, | ||
|  |                     UINT8 *p_codec_info, UINT8 num_protect, UINT8 *p_protect_info); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvProtectReq | ||
|  | ** | ||
|  | ** Description      Send a content protection request.  This function can only | ||
|  | **                  be used if AV is enabled with feature BTA_AV_FEAT_PROTECT. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvProtectReq(tBTA_AV_HNDL hndl, UINT8 *p_data, UINT16 len); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvProtectRsp | ||
|  | ** | ||
|  | ** Description      Send a content protection response.  This function must | ||
|  | **                  be called if a BTA_AV_PROTECT_REQ_EVT is received. | ||
|  | **                  This function can only be used if AV is enabled with | ||
|  | **                  feature BTA_AV_FEAT_PROTECT. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvProtectRsp(tBTA_AV_HNDL hndl, UINT8 error_code, UINT8 *p_data, | ||
|  |                       UINT16 len); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvRemoteCmd | ||
|  | ** | ||
|  | ** Description      Send a remote control command.  This function can only | ||
|  | **                  be used if AV is enabled with feature BTA_AV_FEAT_RCCT. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvRemoteCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_RC rc_id, | ||
|  |                      tBTA_AV_STATE key_state); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvVendorCmd | ||
|  | ** | ||
|  | ** Description      Send a vendor dependent remote control command.  This | ||
|  | **                  function can only be used if AV is enabled with feature | ||
|  | **                  BTA_AV_FEAT_VENDOR. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvVendorCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE cmd_code, | ||
|  |                      UINT8 *p_data, UINT16 len); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvVendorRsp | ||
|  | ** | ||
|  | ** Description      Send a vendor dependent remote control response. | ||
|  | **                  This function must be called if a BTA_AV_VENDOR_CMD_EVT | ||
|  | **                  is received. This function can only be used if AV is | ||
|  | **                  enabled with feature BTA_AV_FEAT_VENDOR. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvVendorRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code, | ||
|  |                      UINT8 *p_data, UINT16 len, UINT32 company_id); | ||
|  | 
 | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvOpenRc | ||
|  | ** | ||
|  | ** Description      Open an AVRCP connection toward the device with the | ||
|  | **                  specified handle | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvOpenRc(tBTA_AV_HNDL handle); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvCloseRc | ||
|  | ** | ||
|  | ** Description      Close an AVRCP connection | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvCloseRc(UINT8 rc_handle); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvMetaRsp | ||
|  | ** | ||
|  | ** Description      Send a Metadata command/response. The message contained | ||
|  | **                  in p_pkt can be composed with AVRC utility functions. | ||
|  | **                  This function can only be used if AV is enabled with feature | ||
|  | **                  BTA_AV_FEAT_METADATA. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvMetaRsp(UINT8 rc_handle, UINT8 label, tBTA_AV_CODE rsp_code, | ||
|  |                    BT_HDR *p_pkt); | ||
|  | 
 | ||
|  | /*******************************************************************************
 | ||
|  | ** | ||
|  | ** Function         BTA_AvMetaCmd | ||
|  | ** | ||
|  | ** Description      Send a Metadata/Advanced Control command. The message contained | ||
|  | **                  in p_pkt can be composed with AVRC utility functions. | ||
|  | **                  This function can only be used if AV is enabled with feature | ||
|  | **                  BTA_AV_FEAT_METADATA. | ||
|  | **                  This message is sent only when the peer supports the TG role. | ||
|  | *8                  The only command makes sense right now is the absolute volume command. | ||
|  | ** | ||
|  | ** Returns          void | ||
|  | ** | ||
|  | *******************************************************************************/ | ||
|  | void BTA_AvMetaCmd(UINT8 rc_handle, UINT8 label, tBTA_AV_CMD cmd_code, BT_HDR *p_pkt); | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif  ///BTA_AV_INCLUDED == TRUE
 | ||
|  | 
 | ||
|  | #endif /* BTA_AV_API_H */
 |