Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54e08bfc authored by Chris Manton's avatar Chris Manton Committed by Automerger Merge Worker
Browse files

Merge "Add le_address_manager::UnregisterSync" am: 77c7617e am: 82194fa4...

Merge "Add le_address_manager::UnregisterSync" am: 77c7617e am: 82194fa4 am: b963305f am: 3da475a4 am: 041cdfa7

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/2058467



Change-Id: I72951d919503f911eea137f51197e73067643253
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents e70baf96 041cdfa7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ struct le_impl : public bluetooth::hci::LeAddressManagerCallback {

  ~le_impl() {
    if (address_manager_registered) {
      le_address_manager_->Unregister(this);
      le_address_manager_->UnregisterSync(this);
    }
    delete le_address_manager_;
    hci_layer_->PutLeAclConnectionInterface();
+8 −0
Original line number Diff line number Diff line
@@ -177,6 +177,14 @@ void LeAddressManager::unregister_client(LeAddressManagerCallback* callback) {
  }
}

bool LeAddressManager::UnregisterSync(LeAddressManagerCallback* callback, std::chrono::milliseconds timeout) {
  handler_->BindOnceOn(this, &LeAddressManager::unregister_client, callback).Invoke();
  std::promise<void> promise;
  auto future = promise.get_future();
  handler_->Post(common::BindOnce(&std::promise<void>::set_value, common::Unretained(&promise)));
  return future.wait_for(timeout) == std::future_status::ready;
}

void LeAddressManager::AckPause(LeAddressManagerCallback* callback) {
  handler_->BindOnceOn(this, &LeAddressManager::ack_pause, callback).Invoke();
}
+4 −0
Original line number Diff line number Diff line
@@ -27,6 +27,8 @@
namespace bluetooth {
namespace hci {

constexpr std::chrono::milliseconds kUnregisterSyncTimeoutInMs = std::chrono::milliseconds(10);

class LeAddressManagerCallback {
 public:
  virtual ~LeAddressManagerCallback() = default;
@@ -72,6 +74,8 @@ class LeAddressManager {
  void AckResume(LeAddressManagerCallback* callback);
  virtual AddressPolicy Register(LeAddressManagerCallback* callback);
  virtual void Unregister(LeAddressManagerCallback* callback);
  virtual bool UnregisterSync(
      LeAddressManagerCallback* callback, std::chrono::milliseconds timeout = kUnregisterSyncTimeoutInMs);
  virtual AddressWithType GetCurrentAddress();  // What was set in SetRandomAddress()
  virtual AddressWithType GetAnotherAddress();  // A new random address without rotating.