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

Commit 3c4afa9d authored by Myles Watson's avatar Myles Watson Committed by Automerger Merge Worker
Browse files

Merge "Use GD for ConnectionParameterUpdate" into main am: ba94f613

parents 1b528bf9 ba94f613
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