From dddf1151c53f5c32c614601ec2bbf47a3c262691 Mon Sep 17 00:00:00 2001 From: Chienyuan Date: Thu, 30 Jun 2022 19:52:07 +0800 Subject: Do resolving list operations via handler Bug: 226711441 Test: gd/cert/run Tag: #refactor Change-Id: I74a97424e93461372762cdf4a4b2bc8b9f83684e Merged-In: I74a97424e93461372762cdf4a4b2bc8b9f83684e (cherry picked from commit 7332df884aff7b20d36892db5f0bd3438436b6f8) (cherry picked from commit 1642ede3e6df42ff8e1322e98145bfbeb76912ed) Merged-In: I74a97424e93461372762cdf4a4b2bc8b9f83684e --- system/gd/hci/le_address_manager.cc | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/system/gd/hci/le_address_manager.cc b/system/gd/hci/le_address_manager.cc index 6d1806d809..28f51004a7 100644 --- a/system/gd/hci/le_address_manager.cc +++ b/system/gd/hci/le_address_manager.cc @@ -230,6 +230,11 @@ void LeAddressManager::ack_pause(LeAddressManagerCallback* callback) { for (auto client : registered_clients_) { if (client.second != ClientState::PAUSED) { // make sure all client paused + if (client.second != ClientState::WAITING_FOR_PAUSE) { + LOG_DEBUG("Trigger OnPause for client that not paused and not waiting for pause"); + client.second = ClientState::WAITING_FOR_PAUSE; + client.first->OnPause(); + } return; } } @@ -421,9 +426,9 @@ void LeAddressManager::AddDeviceToResolvingList( cached_commands_.push(std::move(enable)); if (registered_clients_.empty()) { - handle_next_command(); + handler_->BindOnceOn(this, &LeAddressManager::handle_next_command).Invoke(); } else { - pause_registered_clients(); + handler_->BindOnceOn(this, &LeAddressManager::pause_registered_clients).Invoke(); } } @@ -452,9 +457,9 @@ void LeAddressManager::RemoveDeviceFromResolvingList( cached_commands_.push(std::move(enable)); if (registered_clients_.empty()) { - handle_next_command(); + handler_->BindOnceOn(this, &LeAddressManager::handle_next_command).Invoke(); } else { - pause_registered_clients(); + handler_->BindOnceOn(this, &LeAddressManager::pause_registered_clients).Invoke(); } } @@ -479,7 +484,7 @@ void LeAddressManager::ClearResolvingList() { Command enable = {CommandType::SET_ADDRESS_RESOLUTION_ENABLE, std::move(enable_builder)}; cached_commands_.push(std::move(enable)); - pause_registered_clients(); + handler_->BindOnceOn(this, &LeAddressManager::pause_registered_clients).Invoke(); } template -- cgit v1.2.3