/****************************************************************************** * * Copyright 2009-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. * ******************************************************************************/ /** * BTIF AV API functions accessed internally. */ #ifndef BTIF_AV_H #define BTIF_AV_H #include "bta_av_api.h" #include "btif_common.h" /** * When the local device is A2DP source, get the address of the active peer. */ RawAddress btif_av_source_active_peer(void); /** * When the local device is A2DP sink, get the address of the active peer. */ RawAddress btif_av_sink_active_peer(void); /** * Check whether A2DP Sink is enabled. */ bool btif_av_is_sink_enabled(void); /** * Start streaming. */ void btif_av_stream_start(void); /** * Stop streaming. * * @param peer_address the peer address or RawAddress::kEmpty to stop all peers */ void btif_av_stream_stop(const RawAddress& peer_address); /** * Suspend streaming. */ void btif_av_stream_suspend(void); /** * Start offload streaming. */ void btif_av_stream_start_offload(void); /** * Check whether ready to start the A2DP stream. */ bool btif_av_stream_ready(void); /** * Check whether the A2DP stream is in started state and ready * for media start. */ bool btif_av_stream_started_ready(void); /** * Check whether there is a connected peer (either Source or Sink) */ bool btif_av_is_connected(void); /** * Get the Stream Endpoint Type of the Active peer. * * @return the stream endpoint type: either AVDT_TSEP_SRC or AVDT_TSEP_SNK */ uint8_t btif_av_get_peer_sep(void); /** * Clear the remote suspended flag for the active peer. */ void btif_av_clear_remote_suspend_flag(void); /** * Check whether the connected A2DP peer supports EDR. * * The value can be provided only if the remote peer is connected. * Otherwise, the answer will be always false. * * @param peer_address the peer address * @return true if the remote peer is capable of EDR */ bool btif_av_is_peer_edr(const RawAddress& peer_address); /** * Check whether the connected A2DP peer supports 3 Mbps EDR. * * The value can be provided only if the remote peer is connected. * Otherwise, the answer will be always false. * * @param peer_address the peer address * @return true if the remote peer is capable of EDR and supports 3 Mbps */ bool btif_av_peer_supports_3mbps(const RawAddress& peer_address); /** * Check whether the mandatory codec is more preferred for this peer. * * @param peer_address the target peer address * @return true if optional codecs are not preferred to be used */ bool btif_av_peer_prefers_mandatory_codec(const RawAddress& peer_address); /** * Report A2DP Source Codec State for a peer. * * @param peer_address the address of the peer to report * @param codec_config the codec config to report * @param codecs_local_capabilities the codecs local capabilities to report * @param codecs_selectable_capabilities the codecs selectable capabilities * to report */ void btif_av_report_source_codec_state( const RawAddress& peer_address, const btav_a2dp_codec_config_t& codec_config, const std::vector& codecs_local_capabilities, const std::vector& codecs_selectable_capabilities); /** * Initialize / shut down the A2DP Source service. * * @param enable true to enable the A2DP Source service, false to disable it * @return BT_STATUS_SUCCESS on success, BT_STATUS_FAIL otherwise */ bt_status_t btif_av_source_execute_service(bool enable); /** * Initialize / shut down the A2DP Sink service. * * @param enable true to enable the A2DP Sink service, false to disable it * @return BT_STATUS_SUCCESS on success, BT_STATUS_FAIL otherwise */ bt_status_t btif_av_sink_execute_service(bool enable); /** * Peer ACL disconnected. * * @param peer_address the disconnected peer address */ void btif_av_acl_disconnected(const RawAddress& peer_address); /** * Dump debug-related information for the BTIF AV module. * * @param fd the file descriptor to use for writing the ASCII formatted * information */ void btif_debug_av_dump(int fd); /** * Set the audio delay for the stream. * * @param peer_address the address of the peer to report * @param delay the delay to set in units of 1/10ms */ void btif_av_set_audio_delay(const RawAddress& peer_address, uint16_t delay); /** * Get the audio delay for the stream. * @param none */ uint16_t btif_av_get_audio_delay(void); /** * Reset the audio delay and count of audio bytes sent to zero. */ void btif_av_reset_audio_delay(void); /** * Called to disconnect peer device when * remote initiatied offload start failed * * @param peer_address to disconnect * */ void btif_av_src_disconnect_sink(const RawAddress& peer_address); /** * check A2DP offload support enabled * @param none */ bool btif_av_is_a2dp_offload_enabled(void); /** * check A2DP offload enabled and running * @param none */ bool btif_av_is_a2dp_offload_running(void); /** * Check whether peer device is silenced * * @param peer_address to check * */ bool btif_av_is_peer_silenced(const RawAddress& peer_address); #endif /* BTIF_AV_H */