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

Commit ba94f613 authored by Myles Watson's avatar Myles Watson Committed by Gerrit Code Review
Browse files

Merge "Use GD for ConnectionParameterUpdate" into main

parents 0de9c096 d87b4611
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <bluetooth/log.h>

#include "hci/acl_manager/le_connection_management_callbacks.h"
#include "hci/event_checkers.h"
#include "os/metrics.h"

using bluetooth::hci::Address;
@@ -234,10 +235,7 @@ bool LeAclConnection::LeConnectionUpdate(
          supervision_timeout,
          min_ce_length,
          max_ce_length),
      pimpl_->tracker.client_handler_->BindOnce([](CommandStatusView status) {
        ASSERT(status.IsValid());
        ASSERT(status.GetCommandOpCode() == OpCode::LE_CONNECTION_UPDATE);
      }));
      pimpl_->tracker.client_handler_->BindOnce(check_status<LeConnectionUpdateStatusView>));
  return true;
}

+31 −0
Original line number Diff line number Diff line
@@ -851,6 +851,13 @@ class LeShimAclConnection
    return connection_->IsInFilterAcceptList();
  }

  void UpdateConnectionParameters(uint16_t conn_int_min, uint16_t conn_int_max,
                                  uint16_t conn_latency, uint16_t conn_timeout,
                                  uint16_t min_ce_len, uint16_t max_ce_len) {
    connection_->LeConnectionUpdate(conn_int_min, conn_int_max, conn_latency,
                                    conn_timeout, min_ce_len, max_ce_len);
  }

 private:
  OnDisconnect on_disconnect_;
  const shim::legacy::acl_le_link_interface_t interface_;
@@ -1095,6 +1102,21 @@ struct shim::legacy::Acl::impl {
    }
  }

  void update_connection_parameters(uint16_t handle, uint16_t conn_int_min,
                                    uint16_t conn_int_max,
                                    uint16_t conn_latency,
                                    uint16_t conn_timeout, uint16_t min_ce_len,
                                    uint16_t max_ce_len) {
    auto connection = handle_to_le_connection_map_.find(handle);
    if (connection == handle_to_le_connection_map_.end()) {
      LOG_WARN("Unknown le connection handle:0x%04x", handle);
      return;
    }
    connection->second->UpdateConnectionParameters(conn_int_min, conn_int_max,
                                                   conn_latency, conn_timeout,
                                                   min_ce_len, max_ce_len);
  }

  void accept_le_connection_from(const hci::AddressWithType& address_with_type,
                                 bool is_direct, std::promise<bool> promise) {
    if (shadow_acceptlist_.IsFull()) {
@@ -1767,6 +1789,15 @@ void shim::legacy::Acl::DisconnectLe(uint16_t handle, tHCI_STATUS reason,
                   comment);
}

void shim::legacy::Acl::UpdateConnectionParameters(
    uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max,
    uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len,
    uint16_t max_ce_len) {
  handler_->CallOn(pimpl_.get(), &Acl::impl::update_connection_parameters,
                   handle, conn_int_min, conn_int_max, conn_latency,
                   conn_timeout, min_ce_len, max_ce_len);
}

bool shim::legacy::Acl::HoldMode(uint16_t hci_handle, uint16_t max_interval,
                                 uint16_t min_interval) {
  handler_->CallOn(pimpl_.get(), &Acl::impl::HoldMode, hci_handle, max_interval,
+4 −0
Original line number Diff line number Diff line
@@ -82,6 +82,10 @@ class Acl : public hci::acl_manager::ConnectionCallbacks,
                         std::string comment) override;
  void DisconnectLe(uint16_t handle, tHCI_REASON reason,
                    std::string comment) override;
  void UpdateConnectionParameters(uint16_t handle, uint16_t conn_int_min,
                                  uint16_t conn_int_max, uint16_t conn_latency,
                                  uint16_t conn_timeout, uint16_t min_ce_len,
                                  uint16_t max_ce_len) override;

  // Address Resolution List
  void AddToAddressResolution(const hci::AddressWithType& address_with_type,
+9 −0
Original line number Diff line number Diff line
@@ -76,6 +76,15 @@ void bluetooth::shim::ACL_Flush(uint16_t handle) {
  Stack::GetInstance()->GetAcl()->Flush(handle);
}

void bluetooth::shim::ACL_SendConnectionParameterUpdateRequest(
    uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max,
    uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len,
    uint16_t max_ce_len) {
  Stack::GetInstance()->GetAcl()->UpdateConnectionParameters(
      handle, conn_int_min, conn_int_max, conn_latency, conn_timeout,
      min_ce_len, max_ce_len);
}

void bluetooth::shim::ACL_ConfigureLePrivacy(bool is_le_privacy_enabled) {
  hci::LeAddressManager::AddressPolicy address_policy =
      is_le_privacy_enabled
+4 −0
Original line number Diff line number Diff line
@@ -60,6 +60,10 @@ void ACL_ClearFilterAcceptList();
void ACL_LeSetDefaultSubrate(uint16_t subrate_min, uint16_t subrate_max,
                             uint16_t max_latency, uint16_t cont_num,
                             uint16_t sup_tout);
void ACL_SendConnectionParameterUpdateRequest(
    uint16_t handle, uint16_t conn_int_min, uint16_t conn_int_max,
    uint16_t conn_latency, uint16_t conn_timeout, uint16_t min_ce_len,
    uint16_t max_ce_len);
void ACL_LeSubrateRequest(uint16_t hci_handle, uint16_t subrate_min,
                          uint16_t subrate_max, uint16_t max_latency,
                          uint16_t cont_num, uint16_t sup_tout);
Loading