228 lines
8.8 KiB
C
228 lines
8.8 KiB
C
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
|
//
|
|
// 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.
|
|
|
|
#ifndef __BTC_AV_CO_H__
|
|
#define __BTC_AV_CO_H__
|
|
|
|
#include "btc_a2dp.h"
|
|
#include "bta/bta_av_co.h"
|
|
|
|
#if (BTA_AV_INCLUDED == TRUE)
|
|
/*******************************************************************************
|
|
** Constants & Macros
|
|
********************************************************************************/
|
|
|
|
enum {
|
|
BTC_SV_AV_AA_SBC_INDEX = 0,
|
|
BTC_SV_AV_AA_SBC_SINK_INDEX,
|
|
BTC_SV_AV_AA_SEP_INDEX /* Last index */
|
|
};
|
|
|
|
/*****************************************************************************
|
|
** Local data
|
|
*****************************************************************************/
|
|
typedef struct {
|
|
UINT8 sep_info_idx; /* local SEP index (in BTA tables) */
|
|
UINT8 seid; /* peer SEP index (in peer tables) */
|
|
UINT8 codec_type; /* peer SEP codec type */
|
|
UINT8 codec_caps[AVDT_CODEC_SIZE]; /* peer SEP codec capabilities */
|
|
UINT8 num_protect; /* peer SEP number of CP elements */
|
|
UINT8 protect_info[BTA_AV_CP_INFO_LEN]; /* peer SEP content protection info */
|
|
} tBTA_AV_CO_SINK;
|
|
|
|
typedef struct {
|
|
BD_ADDR addr; /* address of audio/video peer */
|
|
tBTA_AV_CO_SINK snks[BTC_SV_AV_AA_SEP_INDEX]; /* array of supported sinks */
|
|
tBTA_AV_CO_SINK srcs[BTC_SV_AV_AA_SEP_INDEX]; /* array of supported srcs */
|
|
UINT8 num_snks; /* total number of sinks at peer */
|
|
UINT8 num_srcs; /* total number of srcs at peer */
|
|
UINT8 num_seps; /* total number of seids at peer */
|
|
UINT8 num_rx_snks; /* number of received sinks */
|
|
UINT8 num_rx_srcs; /* number of received srcs */
|
|
UINT8 num_sup_snks; /* number of supported sinks in the snks array */
|
|
UINT8 num_sup_srcs; /* number of supported srcs in the srcs array */
|
|
tBTA_AV_CO_SINK *p_snk; /* currently selected sink */
|
|
tBTA_AV_CO_SINK *p_src; /* currently selected src */
|
|
UINT8 codec_cfg[AVDT_CODEC_SIZE]; /* current codec configuration */
|
|
BOOLEAN cp_active; /* current CP configuration */
|
|
BOOLEAN acp; /* acceptor */
|
|
BOOLEAN recfg_needed; /* reconfiguration is needed */
|
|
BOOLEAN opened; /* opened */
|
|
UINT16 mtu; /* maximum transmit unit size */
|
|
UINT16 uuid_to_connect; /* uuid of peer device */
|
|
} tBTA_AV_CO_PEER;
|
|
|
|
typedef struct {
|
|
BOOLEAN active;
|
|
UINT8 flag;
|
|
} tBTA_AV_CO_CP;
|
|
|
|
typedef struct {
|
|
/* Connected peer information */
|
|
tBTA_AV_CO_PEER peers[BTA_AV_NUM_STRS];
|
|
/* Current codec configuration - access to this variable must be protected */
|
|
tBTC_AV_CODEC_INFO codec_cfg;
|
|
tBTC_AV_CODEC_INFO codec_cfg_setconfig; /* remote peer setconfig preference */
|
|
|
|
tBTA_AV_CO_CP cp;
|
|
} tBTA_AV_CO_CB;
|
|
|
|
/* Control block instance */
|
|
#if AVRC_DYNAMIC_MEMORY == FALSE
|
|
extern tBTA_AV_CO_CB bta_av_co_cb;
|
|
#else
|
|
extern tBTA_AV_CO_CB *bta_av_co_cb_ptr;
|
|
#define bta_av_co_cb (*bta_av_co_cb_ptr)
|
|
#endif
|
|
/*******************************************************************************
|
|
** Functions
|
|
********************************************************************************/
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function bta_av_co_cp_is_active
|
|
**
|
|
** Description Get the current configuration of content protection
|
|
**
|
|
** Returns TRUE if the current streaming has CP, FALSE otherwise
|
|
**
|
|
*******************************************************************************/
|
|
BOOLEAN bta_av_co_cp_is_active(void);
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function bta_av_co_cp_get_flag
|
|
**
|
|
** Description Get content protection flag
|
|
** BTA_AV_CP_SCMS_COPY_NEVER
|
|
** BTA_AV_CP_SCMS_COPY_ONCE
|
|
** BTA_AV_CP_SCMS_COPY_FREE
|
|
**
|
|
** Returns The current flag value
|
|
**
|
|
*******************************************************************************/
|
|
UINT8 bta_av_co_cp_get_flag(void);
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function bta_av_co_cp_set_flag
|
|
**
|
|
** Description Set content protection flag
|
|
** BTA_AV_CP_SCMS_COPY_NEVER
|
|
** BTA_AV_CP_SCMS_COPY_ONCE
|
|
** BTA_AV_CP_SCMS_COPY_FREE
|
|
**
|
|
** Returns TRUE if setting the SCMS flag is supported else FALSE
|
|
**
|
|
*******************************************************************************/
|
|
BOOLEAN bta_av_co_cp_set_flag(UINT8 cp_flag);
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function bta_av_co_audio_codec_reset
|
|
**
|
|
** Description Reset the current codec configuration
|
|
**
|
|
** Returns void
|
|
**
|
|
*******************************************************************************/
|
|
void bta_av_co_audio_codec_reset(void);
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function bta_av_co_audio_codec_supported
|
|
**
|
|
** Description Check if all opened connections are compatible with a codec
|
|
** configuration
|
|
**
|
|
** Returns TRUE if all opened devices support this codec, FALSE otherwise
|
|
**
|
|
*******************************************************************************/
|
|
BOOLEAN bta_av_co_audio_codec_supported(tBTC_AV_STATUS *p_status);
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function bta_av_co_audio_set_codec
|
|
**
|
|
** Description Set the current codec configuration from the feeding type.
|
|
** This function is starting to modify the configuration, it
|
|
** should be protected.
|
|
**
|
|
** Returns TRUE if successful, FALSE otherwise
|
|
**
|
|
*******************************************************************************/
|
|
BOOLEAN bta_av_co_audio_set_codec(const tBTC_AV_MEDIA_FEEDINGS *p_feeding, tBTC_AV_STATUS *p_status);
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function bta_av_co_audio_get_sbc_config
|
|
**
|
|
** Description Retrieves the SBC codec configuration. If the codec in use
|
|
** is not SBC, return the default SBC codec configuration.
|
|
**
|
|
** Returns TRUE if codec is SBC, FALSE otherwise
|
|
**
|
|
*******************************************************************************/
|
|
BOOLEAN bta_av_co_audio_get_sbc_config(tA2D_SBC_CIE *p_sbc_config, UINT16 *p_minmtu);
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function bta_av_co_audio_discard_config
|
|
**
|
|
** Description Discard the codec configuration of a connection
|
|
**
|
|
** Returns Nothing
|
|
**
|
|
*******************************************************************************/
|
|
void bta_av_co_audio_discard_config(tBTA_AV_HNDL hndl);
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function bta_av_co_init
|
|
**
|
|
** Description Initialization
|
|
**
|
|
** Returns Nothing
|
|
**
|
|
*******************************************************************************/
|
|
void bta_av_co_init(void);
|
|
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function bta_av_co_peer_cp_supported
|
|
**
|
|
** Description Checks if the peer supports CP
|
|
**
|
|
** Returns TRUE if the peer supports CP
|
|
**
|
|
*******************************************************************************/
|
|
BOOLEAN bta_av_co_peer_cp_supported(tBTA_AV_HNDL hndl);
|
|
|
|
/*******************************************************************************
|
|
**
|
|
** Function bta_av_co_get_remote_bitpool_pref
|
|
**
|
|
** Description Check if remote side did a setconfig within the limits
|
|
** of our exported bitpool range. If set we will set the
|
|
** remote preference.
|
|
**
|
|
** Returns TRUE if config set, FALSE otherwize
|
|
**
|
|
*******************************************************************************/
|
|
BOOLEAN bta_av_co_get_remote_bitpool_pref(UINT8 *min, UINT8 *max);
|
|
|
|
#endif ///BTA_AV_INCLUDED == TRUE
|
|
|
|
#endif
|