summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--android/app/src/com/android/bluetooth/btservice/Config.java10
-rw-r--r--flags/a2dp.aconfig7
-rw-r--r--system/btif/co/bta_av_co.cc80
-rw-r--r--system/btif/src/bluetooth.cc8
-rw-r--r--system/btif/src/btif_a2dp.cc26
-rw-r--r--system/btif/src/btif_a2dp_sink.cc16
-rw-r--r--system/btif/src/btif_a2dp_source.cc13
-rw-r--r--system/btif/src/btif_av.cc250
-rw-r--r--system/stack/avct/avct_lcb_act.cc5
9 files changed, 70 insertions, 345 deletions
diff --git a/android/app/src/com/android/bluetooth/btservice/Config.java b/android/app/src/com/android/bluetooth/btservice/Config.java
index 4454763ca1..f5e9b8cd1b 100644
--- a/android/app/src/com/android/bluetooth/btservice/Config.java
+++ b/android/app/src/com/android/bluetooth/btservice/Config.java
@@ -235,16 +235,6 @@ public class Config {
}
}
- // TODO: b/321806163 Cleanup post the flag cleanup.
- // Disable A2DP source profile for automotive devices only if sink is enabled and
- // concurrent support is not enabled.
- if (!Flags.a2dpConcurrentSourceSink()
- && Utils.isAutomotive(ctx)
- && A2dpSinkService.isEnabled()) {
- setProfileEnabled(BluetoothProfile.A2DP, false);
- setProfileEnabled(BluetoothProfile.AVRCP, false);
- }
-
// Disable ASHA if BLE is not supported on this platform even if the platform enabled ASHA
// accidentally
if (!Utils.isBleSupported(ctx)) {
diff --git a/flags/a2dp.aconfig b/flags/a2dp.aconfig
index 0c8d5f8e64..b517801a3d 100644
--- a/flags/a2dp.aconfig
+++ b/flags/a2dp.aconfig
@@ -10,13 +10,6 @@ flag {
}
flag {
- name: "a2dp_concurrent_source_sink"
- namespace: "bluetooth"
- description: "Support for concurrent A2DP source and sink"
- bug : "321806163"
-}
-
-flag {
name: "a2dp_service_looper"
namespace: "bluetooth"
description: "Inject looper into A2dpService"
diff --git a/system/btif/co/bta_av_co.cc b/system/btif/co/bta_av_co.cc
index efa125cbed..07ab9dee84 100644
--- a/system/btif/co/bta_av_co.cc
+++ b/system/btif/co/bta_av_co.cc
@@ -131,13 +131,7 @@ bool BtaAvCo::IsSupportedCodec(btav_a2dp_codec_index_t codec_index) {
A2dpCodecConfig* BtaAvCo::GetActivePeerCurrentCodec() {
std::lock_guard<std::recursive_mutex> lock(peer_cache_->codec_lock_);
- BtaAvCoState* reference_state = nullptr;
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- reference_state = &bta_av_source_state_;
- } else {
- reference_state = &bta_av_legacy_state_;
- }
- BtaAvCoPeer* active_peer = reference_state->getActivePeer();
+ BtaAvCoPeer* active_peer = bta_av_source_state_.getActivePeer();
if (active_peer == nullptr || active_peer->GetCodecs() == nullptr) {
return nullptr;
}
@@ -618,13 +612,7 @@ BT_HDR* BtaAvCo::GetNextSourceDataPacket(const uint8_t* p_codec_info, uint32_t*
return nullptr;
}
- BtaAvCoState* reference_state = nullptr;
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- reference_state = &bta_av_source_state_;
- } else {
- reference_state = &bta_av_legacy_state_;
- }
- BtaAvCoPeer* active_peer = reference_state->getActivePeer();
+ BtaAvCoPeer* active_peer = bta_av_source_state_.getActivePeer();
// if offset is 0, the decremental operation may result in
// underflow and OOB access
if (ContentProtectEnabled() && (active_peer != nullptr) && active_peer->ContentProtectActive() &&
@@ -701,17 +689,13 @@ bool BtaAvCo::SetActivePeer(const RawAddress& peer_address, const uint8_t t_loca
}
BtaAvCoState* BtaAvCo::getStateFromLocalProfile(const uint8_t t_local_sep) {
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (t_local_sep == AVDT_TSEP_SRC) {
- return &bta_av_source_state_;
- } else if (t_local_sep == AVDT_TSEP_SNK) {
- return &bta_av_sink_state_;
- } else {
- log::warn("Invalid bta av state for local sep type {}", t_local_sep);
- return nullptr;
- }
+ if (t_local_sep == AVDT_TSEP_SRC) {
+ return &bta_av_source_state_;
+ } else if (t_local_sep == AVDT_TSEP_SNK) {
+ return &bta_av_sink_state_;
} else {
- return &bta_av_legacy_state_;
+ log::warn("Invalid bta av state for local sep type {}", t_local_sep);
+ return nullptr;
}
}
@@ -725,11 +709,7 @@ void BtaAvCo::SaveCodec(const RawAddress& peer_address, const uint8_t* new_codec
}
return;
}
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- bta_av_sink_state_.setCodecConfig(new_codec_config);
- } else {
- bta_av_legacy_state_.setCodecConfig(new_codec_config);
- }
+ bta_av_sink_state_.setCodecConfig(new_codec_config);
}
void BtaAvCo::GetPeerEncoderParameters(const RawAddress& peer_address,
@@ -772,10 +752,7 @@ const tA2DP_ENCODER_INTERFACE* BtaAvCo::GetSourceEncoderInterface(const RawAddre
}
return nullptr;
}
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- return A2DP_GetEncoderInterface(bta_av_source_state_.getCodecConfig());
- }
- return A2DP_GetEncoderInterface(bta_av_legacy_state_.getCodecConfig());
+ return A2DP_GetEncoderInterface(bta_av_source_state_.getCodecConfig());
}
bool BtaAvCo::SetCodecUserConfig(const RawAddress& peer_address,
@@ -862,12 +839,7 @@ done:
// and informing the Media Framework about the change.
// Find the peer that is currently open
- BtaAvCoPeer* active_peer;
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- active_peer = bta_av_source_state_.getActivePeer();
- } else {
- active_peer = bta_av_legacy_state_.getActivePeer();
- }
+ BtaAvCoPeer* active_peer = bta_av_source_state_.getActivePeer();
if (p_peer != nullptr && (!restart_output || !success || p_peer != active_peer)) {
return ReportSourceCodecState(p_peer);
}
@@ -883,12 +855,7 @@ bool BtaAvCo::SetCodecAudioConfig(const btav_a2dp_codec_config_t& codec_audio_co
log::verbose("codec_audio_config: {}", codec_audio_config.ToString());
// Find the peer that is currently open
- BtaAvCoPeer* p_peer;
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- p_peer = bta_av_source_state_.getActivePeer();
- } else {
- p_peer = bta_av_legacy_state_.getActivePeer();
- }
+ BtaAvCoPeer* p_peer = bta_av_source_state_.getActivePeer();
if (p_peer == nullptr) {
log::error("no active peer to configure");
return false;
@@ -952,10 +919,7 @@ int BtaAvCo::GetSourceEncoderEffectiveFrameSize(const RawAddress& peer_address)
}
return 0;
}
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- return A2DP_GetEecoderEffectiveFrameSize(bta_av_source_state_.getCodecConfig());
- }
- return A2DP_GetEecoderEffectiveFrameSize(bta_av_legacy_state_.getCodecConfig());
+ return A2DP_GetEecoderEffectiveFrameSize(bta_av_source_state_.getCodecConfig());
}
int BtaAvCo::GetSourceEncoderPreferredIntervalUs() {
@@ -1347,18 +1311,14 @@ void BtaAvCo::SaveNewCodecConfig(BtaAvCoPeer* p_peer, const uint8_t* new_codec_c
}
BtaAvCoState* BtaAvCo::getStateFromPeer(const BtaAvCoPeer* p_peer) {
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (p_peer->uuid_to_connect == UUID_SERVCLASS_AUDIO_SINK) {
- return &bta_av_source_state_;
- } else if (p_peer->uuid_to_connect == UUID_SERVCLASS_AUDIO_SOURCE) {
- return &bta_av_sink_state_;
- } else {
- log::warn("Invalid bta av state for peer_address : {} with uuid as :{}", p_peer->addr,
- p_peer->uuid_to_connect);
- return nullptr;
- }
+ if (p_peer->uuid_to_connect == UUID_SERVCLASS_AUDIO_SINK) {
+ return &bta_av_source_state_;
+ } else if (p_peer->uuid_to_connect == UUID_SERVCLASS_AUDIO_SOURCE) {
+ return &bta_av_sink_state_;
} else {
- return &bta_av_legacy_state_;
+ log::warn("Invalid bta av state for peer_address : {} with uuid as :{}", p_peer->addr,
+ p_peer->uuid_to_connect);
+ return nullptr;
}
}
diff --git a/system/btif/src/bluetooth.cc b/system/btif/src/bluetooth.cc
index c69a118b7b..ba8f77acfe 100644
--- a/system/btif/src/bluetooth.cc
+++ b/system/btif/src/bluetooth.cc
@@ -352,12 +352,8 @@ struct CoreInterfaceImpl : bluetooth::core::CoreInterface {
return;
}
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- btif_av_acl_disconnected(bd_addr, A2dpType::kSource);
- btif_av_acl_disconnected(bd_addr, A2dpType::kSink);
- } else {
- btif_av_acl_disconnected(bd_addr, A2dpType::kUnknown);
- }
+ btif_av_acl_disconnected(bd_addr, A2dpType::kSource);
+ btif_av_acl_disconnected(bd_addr, A2dpType::kSink);
}
};
diff --git a/system/btif/src/btif_a2dp.cc b/system/btif/src/btif_a2dp.cc
index 62ebb31cf5..d99b6c1e17 100644
--- a/system/btif/src/btif_a2dp.cc
+++ b/system/btif/src/btif_a2dp.cc
@@ -42,18 +42,6 @@ using bluetooth::audio::a2dp::BluetoothAudioStatus;
void btif_a2dp_on_idle(const RawAddress& peer_addr, const A2dpType local_a2dp_type) {
log::verbose("Peer stream endpoint type:{}",
peer_stream_endpoint_text(btif_av_get_peer_sep(local_a2dp_type)));
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink() &&
- btif_av_src_sink_coexist_enabled()) {
- bool is_sink = btif_av_peer_is_sink(peer_addr);
- bool is_source = btif_av_peer_is_source(peer_addr);
- log::info("## ON A2DP IDLE ## is_sink:{} is_source:{}", is_sink, is_source);
- if (is_sink) {
- btif_a2dp_source_on_idle();
- } else if (is_source) {
- btif_a2dp_sink_on_idle();
- }
- return;
- }
if (btif_av_get_peer_sep(local_a2dp_type) == AVDT_TSEP_SNK) {
btif_a2dp_source_on_idle();
} else if (btif_av_get_peer_sep(local_a2dp_type) == AVDT_TSEP_SRC) {
@@ -113,12 +101,7 @@ void btif_a2dp_on_stopped(tBTA_AV_SUSPEND* p_av_suspend, const A2dpType local_a2
btif_a2dp_sink_on_stopped(p_av_suspend);
return;
}
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (bluetooth::audio::a2dp::is_hal_enabled() || !btif_av_is_a2dp_offload_running()) {
- btif_a2dp_source_on_stopped(p_av_suspend);
- return;
- }
- } else if (peer_type_sep == AVDT_TSEP_SNK) {
+ if (peer_type_sep == AVDT_TSEP_SNK) {
if (bluetooth::audio::a2dp::is_hal_enabled() || !btif_av_is_a2dp_offload_running()) {
btif_a2dp_source_on_stopped(p_av_suspend);
return;
@@ -133,12 +116,7 @@ void btif_a2dp_on_suspended(tBTA_AV_SUSPEND* p_av_suspend, const A2dpType local_
btif_a2dp_sink_on_suspended(p_av_suspend);
return;
}
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (bluetooth::audio::a2dp::is_hal_enabled() || !btif_av_is_a2dp_offload_running()) {
- btif_a2dp_source_on_suspended(p_av_suspend);
- return;
- }
- } else if (peer_type_sep == AVDT_TSEP_SNK) {
+ if (peer_type_sep == AVDT_TSEP_SNK) {
if (bluetooth::audio::a2dp::is_hal_enabled() || !btif_av_is_a2dp_offload_running()) {
btif_a2dp_source_on_suspended(p_av_suspend);
return;
diff --git a/system/btif/src/btif_a2dp_sink.cc b/system/btif/src/btif_a2dp_sink.cc
index 33a3b9d7a2..0aba99e201 100644
--- a/system/btif/src/btif_a2dp_sink.cc
+++ b/system/btif/src/btif_a2dp_sink.cc
@@ -328,18 +328,10 @@ bool btif_a2dp_sink_restart_session(const RawAddress& old_peer_address,
if (!old_peer_address.IsEmpty()) {
btif_a2dp_sink_end_session(old_peer_address);
}
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (!bta_av_co_set_active_sink_peer(new_peer_address)) {
- log::error("Cannot stream audio: cannot set active peer to {}", new_peer_address);
- peer_ready_promise.set_value();
- return false;
- }
- } else {
- if (!bta_av_co_set_active_peer(new_peer_address)) {
- log::error("Cannot stream audio: cannot set active peer to {}", new_peer_address);
- peer_ready_promise.set_value();
- return false;
- }
+ if (!bta_av_co_set_active_sink_peer(new_peer_address)) {
+ log::error("Cannot stream audio: cannot set active peer to {}", new_peer_address);
+ peer_ready_promise.set_value();
+ return false;
}
if (old_peer_address.IsEmpty()) {
diff --git a/system/btif/src/btif_a2dp_source.cc b/system/btif/src/btif_a2dp_source.cc
index 9fccfabceb..34184f61f4 100644
--- a/system/btif/src/btif_a2dp_source.cc
+++ b/system/btif/src/btif_a2dp_source.cc
@@ -527,16 +527,9 @@ static void btif_a2dp_source_setup_codec_delayed(const RawAddress& peer_address)
tA2DP_ENCODER_INIT_PEER_PARAMS peer_params;
bta_av_co_get_peer_params(peer_address, &peer_params);
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (!bta_av_co_set_active_source_peer(peer_address)) {
- log::error("Cannot stream audio: cannot set active peer to {}", peer_address);
- return;
- }
- } else {
- if (!bta_av_co_set_active_peer(peer_address)) {
- log::error("Cannot stream audio: cannot set active peer to {}", peer_address);
- return;
- }
+ if (!bta_av_co_set_active_source_peer(peer_address)) {
+ log::error("Cannot stream audio: cannot set active peer to {}", peer_address);
+ return;
}
btif_a2dp_source_cb.encoder_interface = bta_av_co_get_encoder_interface(peer_address);
if (btif_a2dp_source_cb.encoder_interface == nullptr) {
diff --git a/system/btif/src/btif_av.cc b/system/btif/src/btif_av.cc
index 5a0ad8c52e..b44a6d7762 100644
--- a/system/btif/src/btif_av.cc
+++ b/system/btif/src/btif_av.cc
@@ -153,9 +153,6 @@ private:
class BtifAvPeer;
-static void btif_av_sink_delete_active_peer(void);
-static void btif_av_source_delete_active_peer(void);
-
// Should not need dedicated Suspend state as actual actions are no
// different than Open state. Suspend flags are needed however to prevent
// media task from trying to restart stream during remote Suspend or while
@@ -511,17 +508,8 @@ public:
}
if (peer_address.IsEmpty()) {
log::info("peer address is empty, shutdown the Audio source");
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (!bta_av_co_set_active_source_peer(peer_address)) {
- log::warn("unable to set active peer to empty in BtaAvCo");
- }
- } else {
- if (!btif_av_src_sink_coexist_enabled() ||
- (btif_av_src_sink_coexist_enabled() && btif_av_sink_active_peer().IsEmpty())) {
- if (!bta_av_co_set_active_peer(peer_address)) {
- log::warn("unable to set active peer to empty in BtaAvCo");
- }
- }
+ if (!bta_av_co_set_active_source_peer(peer_address)) {
+ log::warn("unable to set active peer to empty in BtaAvCo");
}
btif_a2dp_source_end_session(active_peer_);
@@ -537,10 +525,6 @@ public:
return true;
}
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink() &&
- btif_av_src_sink_coexist_enabled()) {
- btif_av_sink_delete_active_peer();
- }
BtifAvPeer* peer = FindPeer(peer_address);
if (peer == nullptr || !peer->IsConnected()) {
log::error("Error setting {} as active Source peer", peer_address);
@@ -561,18 +545,8 @@ public:
log::info("active_peer={}", active_peer_);
std::promise<void> shutdown_complete_promise;
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (!bta_av_co_set_active_source_peer(RawAddress::kEmpty)) {
- log::warn("unable to set active peer to empty in BtaAvCo");
- }
- } else {
- if (btif_av_sink_active_peer().IsEmpty()) {
- if (!bta_av_co_set_active_peer(RawAddress::kEmpty)) {
- log::warn("unable to set active peer to empty in BtaAvCo");
- }
- } else {
- log::warn("there is an active peer as source role");
- }
+ if (!bta_av_co_set_active_source_peer(RawAddress::kEmpty)) {
+ log::warn("unable to set active peer to empty in BtaAvCo");
}
btif_a2dp_source_end_session(active_peer_);
btif_a2dp_source_shutdown(std::move(shutdown_complete_promise));
@@ -727,17 +701,8 @@ public:
}
if (peer_address.IsEmpty()) {
log::verbose("peer address is empty, shutdown the Audio sink");
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (!bta_av_co_set_active_sink_peer(peer_address)) {
- log::warn("unable to set active peer to empty in BtaAvCo");
- }
- } else {
- if (!btif_av_src_sink_coexist_enabled() ||
- (btif_av_src_sink_coexist_enabled() && btif_av_source_active_peer().IsEmpty())) {
- if (!bta_av_co_set_active_peer(peer_address)) {
- log::warn("unable to set active peer to empty in BtaAvCo");
- }
- }
+ if (!bta_av_co_set_active_sink_peer(peer_address)) {
+ log::warn("unable to set active peer to empty in BtaAvCo");
}
btif_a2dp_sink_end_session(active_peer_);
@@ -747,10 +712,6 @@ public:
return true;
}
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink() &&
- btif_av_src_sink_coexist_enabled()) {
- btif_av_source_delete_active_peer();
- }
BtifAvPeer* peer = FindPeer(peer_address);
if (peer == nullptr || !peer->IsConnected()) {
log::error("Error setting {} as active Sink peer", peer_address);
@@ -771,19 +732,10 @@ public:
void DeleteActivePeer(void) {
log::info("active_peer={}", active_peer_);
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (!bta_av_co_set_active_sink_peer(RawAddress::kEmpty)) {
- log::warn("unable to set active peer to empty in BtaAvCo");
- }
- } else {
- if (btif_av_source_active_peer().IsEmpty()) {
- if (!bta_av_co_set_active_peer(RawAddress::kEmpty)) {
- log::warn("unable to set active peer to empty in BtaAvCo");
- }
- } else {
- log::warn("there is an active peer as sink role");
- }
+ if (!bta_av_co_set_active_sink_peer(RawAddress::kEmpty)) {
+ log::warn("unable to set active peer to empty in BtaAvCo");
}
+
btif_a2dp_sink_end_session(active_peer_);
btif_a2dp_sink_shutdown();
active_peer_ = RawAddress::kEmpty;
@@ -869,74 +821,39 @@ static BtifAvPeer* btif_av_sink_find_peer(const RawAddress& peer_address) {
static BtifAvPeer* btif_av_find_peer(const RawAddress& peer_address,
const A2dpType local_a2dp_type) {
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (btif_av_source.Enabled() && local_a2dp_type == A2dpType::kSource) {
- BtifAvPeer* sourcePeer = btif_av_source_find_peer(peer_address);
- if (sourcePeer != nullptr) {
- return sourcePeer;
- }
- }
- if (btif_av_sink.Enabled() && local_a2dp_type == A2dpType::kSink) {
- BtifAvPeer* sinkPeer = btif_av_sink_find_peer(peer_address);
- if (sinkPeer != nullptr) {
- return sinkPeer;
- }
- }
- if (btif_av_source.Enabled()) {
- BtifAvPeer* sourcePeer = btif_av_source_find_peer(peer_address);
- if (sourcePeer != nullptr) {
- return sourcePeer;
- }
- }
- if (btif_av_sink.Enabled()) {
- BtifAvPeer* sinkPeer = btif_av_sink_find_peer(peer_address);
- if (sinkPeer != nullptr) {
- return sinkPeer;
- }
+ if (btif_av_source.Enabled() && local_a2dp_type == A2dpType::kSource) {
+ BtifAvPeer* sourcePeer = btif_av_source_find_peer(peer_address);
+ if (sourcePeer != nullptr) {
+ return sourcePeer;
}
- log::info("Unable to find the peer {}", peer_address);
- return nullptr;
}
- if (btif_av_src_sink_coexist_enabled() && btif_av_both_enable()) {
- BtifAvPeer* peer = nullptr;
- peer = btif_av_source_find_peer(peer_address);
- if (nullptr == peer) {
- return btif_av_sink_find_peer(peer_address);
+ if (btif_av_sink.Enabled() && local_a2dp_type == A2dpType::kSink) {
+ BtifAvPeer* sinkPeer = btif_av_sink_find_peer(peer_address);
+ if (sinkPeer != nullptr) {
+ return sinkPeer;
}
- return peer;
}
if (btif_av_source.Enabled()) {
- return btif_av_source_find_peer(peer_address);
+ BtifAvPeer* sourcePeer = btif_av_source_find_peer(peer_address);
+ if (sourcePeer != nullptr) {
+ return sourcePeer;
+ }
}
if (btif_av_sink.Enabled()) {
- return btif_av_sink_find_peer(peer_address);
+ BtifAvPeer* sinkPeer = btif_av_sink_find_peer(peer_address);
+ if (sinkPeer != nullptr) {
+ return sinkPeer;
+ }
}
+ log::info("Unable to find the peer {}", peer_address);
return nullptr;
}
static BtifAvPeer* btif_av_find_active_peer(const A2dpType local_a2dp_type) {
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (btif_av_source.Enabled() && local_a2dp_type == A2dpType::kSource) {
- return btif_av_source_find_peer(btif_av_source.ActivePeer());
- }
- if (btif_av_sink.Enabled() && local_a2dp_type == A2dpType::kSink) {
- return btif_av_sink_find_peer(btif_av_sink.ActivePeer());
- }
- return nullptr;
- }
-
- if (btif_av_src_sink_coexist_enabled() && btif_av_both_enable()) {
- BtifAvPeer* peer = nullptr;
- peer = btif_av_source_find_peer(btif_av_source.ActivePeer());
- if (nullptr == peer) {
- return btif_av_sink_find_peer(btif_av_sink.ActivePeer());
- }
- return peer;
- }
- if (btif_av_source.Enabled()) {
+ if (btif_av_source.Enabled() && local_a2dp_type == A2dpType::kSource) {
return btif_av_source_find_peer(btif_av_source.ActivePeer());
}
- if (btif_av_sink.Enabled()) {
+ if (btif_av_sink.Enabled() && local_a2dp_type == A2dpType::kSink) {
return btif_av_sink_find_peer(btif_av_sink.ActivePeer());
}
return nullptr;
@@ -1201,17 +1118,6 @@ bool BtifAvPeer::CanBeDeleted() const {
}
const RawAddress& BtifAvPeer::ActivePeerAddress() const {
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (btif_av_src_sink_coexist_enabled() && btif_av_both_enable()) {
- RawAddress addr = btif_av_sink.ActivePeer();
- if (RawAddress::kEmpty == addr) {
- log::warn("A2DP peer {} is Sink", btif_av_source.ActivePeer());
- return btif_av_source.ActivePeer();
- }
- log::warn("A2DP peer {} is Source", btif_av_sink.ActivePeer());
- return btif_av_sink.ActivePeer();
- }
- }
if (IsSource()) {
return btif_av_sink.ActivePeer();
}
@@ -1376,14 +1282,6 @@ bool BtifAvSource::AllowedToConnect(const RawAddress& peer_address) const {
std::lock_guard<std::recursive_mutex> lock(btifavsource_peers_lock_);
int connected = 0;
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink() &&
- btif_av_src_sink_coexist_enabled() && invalid_peer_check_) {
- log::info(
- "invalid_peer_check_ so allow to connect here, when BTA_AV_OPEN_EVT "
- "coming, would check again!");
- return true;
- }
-
// Count peers that are in the process of connecting or already connected
for (auto it : peers_) {
const BtifAvPeer* peer = it.second;
@@ -1392,12 +1290,6 @@ bool BtifAvSource::AllowedToConnect(const RawAddress& peer_address) const {
case BtifAvStateMachine::kStateOpened:
case BtifAvStateMachine::kStateStarted:
if (peer->PeerAddress() == peer_address) {
- /* we should check if another role is used */
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink() &&
- btif_av_src_sink_coexist_enabled() && btif_av_both_enable()) {
- break;
- }
-
return true; // Already connected or accounted for
}
connected++;
@@ -1406,25 +1298,10 @@ bool BtifAvSource::AllowedToConnect(const RawAddress& peer_address) const {
break;
}
}
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink() &&
- btif_av_src_sink_coexist_enabled() && btif_av_both_enable()) {
- log::info("connected={}, max_connected_peers_={}, sink_peers={}", connected,
- max_connected_peers_, btif_av_sink.GetPeersCount());
- /* if source device connected, don't connect sink device */
-
- if (connected >= max_connected_peers_ || btif_av_sink.GetPeersCount() != 0) {
- return false;
- } else {
- return true;
- }
- }
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- const int sink_connected_peers_size = btif_av_sink.GetPeersCount();
- log::info("connected={}, max_connected_peers_={}, sink_connected_peers_size={}", connected,
- max_connected_peers_, btif_av_sink.GetPeersCount());
- return (connected + sink_connected_peers_size) < max_connected_peers_;
- }
- return connected < max_connected_peers_;
+ const int sink_connected_peers_size = btif_av_sink.GetPeersCount();
+ log::info("connected={}, max_connected_peers_={}, sink_connected_peers_size={}", connected,
+ max_connected_peers_, btif_av_sink.GetPeersCount());
+ return (connected + sink_connected_peers_size) < max_connected_peers_;
}
void BtifAvSource::DumpPeersInfo(int fd) {
@@ -1677,13 +1554,6 @@ bool BtifAvSink::AllowedToConnect(const RawAddress& peer_address) const {
std::lock_guard<std::recursive_mutex> lock(btifavsink_peers_lock_);
int connected = 0;
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink() &&
- btif_av_src_sink_coexist_enabled() && invalid_peer_check_) {
- log::info(
- "invalid_peer_check_ so allow to connect here, when BTA_AV_OPEN_EVT "
- "coming, would check again!");
- return true;
- }
// Count peers that are in the process of connecting or already connected
for (auto it : peers_) {
const BtifAvPeer* peer = it.second;
@@ -1692,12 +1562,6 @@ bool BtifAvSink::AllowedToConnect(const RawAddress& peer_address) const {
case BtifAvStateMachine::kStateOpened:
case BtifAvStateMachine::kStateStarted:
if (peer->PeerAddress() == peer_address) {
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- /* we should check if another role is used */
- if (btif_av_both_enable()) {
- break;
- }
- }
return true; // Already connected or accounted for
}
connected++;
@@ -1715,20 +1579,10 @@ bool BtifAvSink::AllowedToConnect(const RawAddress& peer_address) const {
break;
}
}
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink() && btif_av_both_enable()) {
- log::info("connected={}, max_connected_peers_={}, source_peers={}", connected,
- max_connected_peers_, btif_av_source.GetPeersCount());
- /* if source device connected, don't connect sink device */
- return (connected < max_connected_peers_) && (btif_av_source.GetPeersCount() == 0);
- }
-
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- const int source_connected_peers_size = btif_av_source.GetPeersCount();
- log::info("connected={}, max_connected_peers_={}, source_connected_peers_size={}", connected,
- max_connected_peers_, source_connected_peers_size);
- return (connected + source_connected_peers_size) < max_connected_peers_;
- }
- return connected < max_connected_peers_;
+ const int source_connected_peers_size = btif_av_source.GetPeersCount();
+ log::info("connected={}, max_connected_peers_={}, source_connected_peers_size={}", connected,
+ max_connected_peers_, source_connected_peers_size);
+ return (connected + source_connected_peers_size) < max_connected_peers_;
}
void BtifAvSink::DeleteIdlePeers() {
@@ -2005,15 +1859,6 @@ bool BtifAvStateMachine::StateIdle::ProcessEvent(uint32_t event, void* p_data) {
log::verbose("Peer {} sep={}, open_sep={}", peer_.PeerAddress(), peer_.PeerSep(),
p_bta_data->open.sep);
/* if peer is wrong sep type, move it to BtifAvSxxx */
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (peer_.PeerSep() == AVDT_TSEP_SNK) {
- log::verbose("set source invalid_peer_check as false");
- btif_av_source.SetInvalidPeerCheck(false);
- } else {
- log::verbose("set sink invalid_peer_check as false");
- btif_av_sink.SetInvalidPeerCheck(false);
- }
- }
if (peer_.PeerSep() != p_bta_data->open.sep) {
BtifAvPeer* tmp_peer = nullptr;
if (peer_.PeerSep() == AVDT_TSEP_SNK) {
@@ -2201,15 +2046,6 @@ bool BtifAvStateMachine::StateOpening::ProcessEvent(uint32_t event, void* p_data
log::verbose("Peer {} sep={}, open_sep={}", peer_.PeerAddress(), peer_.PeerSep(),
p_bta_data->open.sep);
/* if peer is wrong sep type, move it to BtifAvSxxx */
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- if (peer_.PeerSep() == AVDT_TSEP_SNK) {
- log::verbose("set source invalid_peer_check as false");
- btif_av_source.SetInvalidPeerCheck(false);
- } else {
- log::verbose("set sink invalid_peer_check as false");
- btif_av_sink.SetInvalidPeerCheck(false);
- }
- }
if (peer_.PeerSep() != p_bta_data->open.sep) {
BtifAvPeer* tmp_peer = nullptr;
if (peer_.PeerSep() == AVDT_TSEP_SNK) {
@@ -3195,9 +3031,6 @@ static BtifAvPeer* btif_av_handle_both_peer(uint8_t peer_sep, const RawAddress&
log::verbose("peer_sep({}), create a new sink peer", peer_sep);
peer = btif_av_source.FindOrCreatePeer(peer_address, bta_handle);
} else {
- if (!com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- btif_av_source.SetInvalidPeerCheck(true);
- }
if (btif_av_source.GetPeersCount() != 0) {
log::verbose(
"peer_sep invalid, and already has sink peer, so try create a "
@@ -3486,10 +3319,7 @@ bool is_a2dp_sink_property_enabled(void) {
#endif
}
bool btif_av_src_sink_coexist_enabled(void) {
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- return is_a2dp_sink_property_enabled() && is_a2dp_source_property_enabled();
- }
- return android::sysprop::bluetooth::A2dp::src_sink_coexist().value_or(false);
+ return is_a2dp_sink_property_enabled() && is_a2dp_source_property_enabled();
}
static void bta_av_source_callback(tBTA_AV_EVT event, tBTA_AV* p_data) {
@@ -4129,7 +3959,7 @@ void btif_av_acl_disconnected(const RawAddress& peer_address, const A2dpType loc
log::info("peer={}", peer_address);
// Inform the application that ACL is disconnected and move to idle state
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink() || btif_av_both_enable()) {
+ if (btif_av_both_enable()) {
BtifAvPeer* peer = btif_av_find_peer(peer_address, local_a2dp_type);
if (peer != nullptr) {
if (peer->IsSource()) {
@@ -4273,10 +4103,6 @@ void btif_av_set_low_latency(bool is_low_latency) {
btif_av_source_active_peer(), kBtaHandleUnknown, btif_av_event));
}
-static void btif_av_sink_delete_active_peer(void) { btif_av_sink.DeleteActivePeer(); }
-
-static void btif_av_source_delete_active_peer(void) { btif_av_source.DeleteActivePeer(); }
-
bool btif_av_is_connected_addr(const RawAddress& peer_address, const A2dpType local_a2dp_type) {
BtifAvPeer* peer = btif_av_find_peer(peer_address, local_a2dp_type);
if (peer == nullptr) {
diff --git a/system/stack/avct/avct_lcb_act.cc b/system/stack/avct/avct_lcb_act.cc
index a8dee83ffe..44e247d171 100644
--- a/system/stack/avct/avct_lcb_act.cc
+++ b/system/stack/avct/avct_lcb_act.cc
@@ -742,10 +742,7 @@ bool avct_msg_ind_for_src_sink_coexist(tAVCT_LCB* p_lcb, tAVCT_LCB_EVT* p_data,
uint16_t pid, type;
p = (uint8_t*)(p_data->p_buf + 1) + p_data->p_buf->offset;
- if (com::android::bluetooth::flags::a2dp_concurrent_source_sink()) {
- AVCT_PARSE_HDR(p, label, type, cr_ipid);
- }
-
+ AVCT_PARSE_HDR(p, label, type, cr_ipid);
BE_STREAM_TO_UINT16(pid, p);
p_ccb = &avct_cb.ccb[0];