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

Commit 3da475a4 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 am: b963305f

parents b6cd7220 b963305f
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -119,7 +119,7 @@ struct le_impl : public bluetooth::hci::LeAddressManagerCallback {


  ~le_impl() {
  ~le_impl() {
    if (address_manager_registered) {
    if (address_manager_registered) {
      le_address_manager_->Unregister(this);
      le_address_manager_->UnregisterSync(this);
    }
    }
    delete le_address_manager_;
    delete le_address_manager_;
    hci_layer_->PutLeAclConnectionInterface();
    hci_layer_->PutLeAclConnectionInterface();
+8 −0
Original line number Original line 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) {
void LeAddressManager::AckPause(LeAddressManagerCallback* callback) {
  handler_->BindOnceOn(this, &LeAddressManager::ack_pause, callback).Invoke();
  handler_->BindOnceOn(this, &LeAddressManager::ack_pause, callback).Invoke();
}
}
+4 −0
Original line number Original line Diff line number Diff line
@@ -27,6 +27,8 @@
namespace bluetooth {
namespace bluetooth {
namespace hci {
namespace hci {


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

class LeAddressManagerCallback {
class LeAddressManagerCallback {
 public:
 public:
  virtual ~LeAddressManagerCallback() = default;
  virtual ~LeAddressManagerCallback() = default;
@@ -72,6 +74,8 @@ class LeAddressManager {
  void AckResume(LeAddressManagerCallback* callback);
  void AckResume(LeAddressManagerCallback* callback);
  virtual AddressPolicy Register(LeAddressManagerCallback* callback);
  virtual AddressPolicy Register(LeAddressManagerCallback* callback);
  virtual void Unregister(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 GetCurrentAddress();  // What was set in SetRandomAddress()
  virtual AddressWithType GetAnotherAddress();  // A new random address without rotating.
  virtual AddressWithType GetAnotherAddress();  // A new random address without rotating.