diff options
-rw-r--r-- | android/app/src/com/android/bluetooth/btservice/Config.java | 10 | ||||
-rw-r--r-- | flags/a2dp.aconfig | 7 | ||||
-rw-r--r-- | system/btif/co/bta_av_co.cc | 80 | ||||
-rw-r--r-- | system/btif/src/bluetooth.cc | 8 | ||||
-rw-r--r-- | system/btif/src/btif_a2dp.cc | 26 | ||||
-rw-r--r-- | system/btif/src/btif_a2dp_sink.cc | 16 | ||||
-rw-r--r-- | system/btif/src/btif_a2dp_source.cc | 13 | ||||
-rw-r--r-- | system/btif/src/btif_av.cc | 250 | ||||
-rw-r--r-- | system/stack/avct/avct_lcb_act.cc | 5 |
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]; |