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

Commit 0323bb56 authored by Chris Manton's avatar Chris Manton
Browse files

gd: Add monitor ability to receive packet credits

Primarily used for acl shim

Bug: 166280067
Tag: #refactor
Test: gd/cert/run --host
Change-Id: Iebd60d4e41b45895aed0f7daf60941a1dff2ff59
parent 752d9b16
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -149,6 +149,9 @@ struct Controller::impl {
      uint16_t handle = completed_packets.connection_handle_;
      uint16_t credits = completed_packets.host_num_of_completed_packets_;
      acl_credits_callback_.Invoke(handle, credits);
      if (!acl_monitor_credits_callback_.IsEmpty()) {
        acl_monitor_credits_callback_.Invoke(handle, credits);
      }
    }
  }

@@ -162,6 +165,26 @@ struct Controller::impl {
    acl_credits_callback_ = {};
  }

  void register_completed_monitor_acl_packets_callback(CompletedAclPacketsCallback callback) {
    ASSERT(acl_monitor_credits_callback_.IsEmpty());
    acl_monitor_credits_callback_ = callback;
  }

  void unregister_completed_monitor_acl_packets_callback() {
    ASSERT(!acl_monitor_credits_callback_.IsEmpty());
    acl_monitor_credits_callback_ = {};
  }

  void register_monitor_completed_acl_packets_callback(CompletedAclPacketsCallback callback) {
    ASSERT(acl_monitor_credits_callback_.IsEmpty());
    acl_monitor_credits_callback_ = callback;
  }

  void unregister_monitor_completed_acl_packets_callback() {
    ASSERT(!acl_monitor_credits_callback_.IsEmpty());
    acl_monitor_credits_callback_ = {};
  }

  void read_local_name_complete_handler(CommandCompleteView view) {
    auto complete_view = ReadLocalNameCompleteView::Create(view);
    ASSERT(complete_view.IsValid());
@@ -777,6 +800,7 @@ struct Controller::impl {
  HciLayer* hci_;

  CompletedAclPacketsCallback acl_credits_callback_{};
  CompletedAclPacketsCallback acl_monitor_credits_callback_{};
  LocalVersionInformation local_version_information_;
  std::array<uint8_t, 64> local_supported_commands_;
  uint8_t maximum_page_number_;
@@ -813,6 +837,14 @@ void Controller::UnregisterCompletedAclPacketsCallback() {
  CallOn(impl_.get(), &impl::unregister_completed_acl_packets_callback);
}

void Controller::RegisterCompletedMonitorAclPacketsCallback(CompletedAclPacketsCallback cb) {
  CallOn(impl_.get(), &impl::register_completed_monitor_acl_packets_callback, cb);
}

void Controller::UnregisterCompletedMonitorAclPacketsCallback() {
  CallOn(impl_.get(), &impl::unregister_completed_monitor_acl_packets_callback);
}

std::string Controller::GetLocalName() const {
  return impl_->local_name_;
}
+3 −0
Original line number Diff line number Diff line
@@ -37,6 +37,9 @@ class Controller : public Module {

  virtual void UnregisterCompletedAclPacketsCallback();

  virtual void RegisterCompletedMonitorAclPacketsCallback(CompletedAclPacketsCallback cb);
  virtual void UnregisterCompletedMonitorAclPacketsCallback();

  virtual std::string GetLocalName() const;

  virtual LocalVersionInformation GetLocalVersionInformation() const;