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

Commit d87b4611 authored by Myles Watson's avatar Myles Watson
Browse files

Use GD for ConnectionParameterUpdate

Bug: 296434089
Test: mma -j32
Flag: EXEMPT, no logical change
Change-Id: Ib9df638b1f51456c32cfecb402f9ccea5a0c1c17
parent 675ad9c3
Loading
Loading
Loading
Loading
+2 −4
Original line number Original line Diff line number Diff line
@@ -19,6 +19,7 @@
#include <bluetooth/log.h>
#include <bluetooth/log.h>


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


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


+31 −0
Original line number Original line Diff line number Diff line
@@ -849,6 +849,13 @@ class LeShimAclConnection
    return connection_->IsInFilterAcceptList();
    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:
 private:
  OnDisconnect on_disconnect_;
  OnDisconnect on_disconnect_;
  const shim::legacy::acl_le_link_interface_t interface_;
  const shim::legacy::acl_le_link_interface_t interface_;
@@ -1092,6 +1099,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,
  void accept_le_connection_from(const hci::AddressWithType& address_with_type,
                                 bool is_direct, std::promise<bool> promise) {
                                 bool is_direct, std::promise<bool> promise) {
    if (shadow_acceptlist_.IsFull()) {
    if (shadow_acceptlist_.IsFull()) {
@@ -1768,6 +1790,15 @@ void shim::legacy::Acl::DisconnectLe(uint16_t handle, tHCI_STATUS reason,
                   comment);
                   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,
bool shim::legacy::Acl::HoldMode(uint16_t hci_handle, uint16_t max_interval,
                                 uint16_t min_interval) {
                                 uint16_t min_interval) {
  handler_->CallOn(pimpl_.get(), &Acl::impl::HoldMode, hci_handle, max_interval,
  handler_->CallOn(pimpl_.get(), &Acl::impl::HoldMode, hci_handle, max_interval,
+4 −0
Original line number Original line Diff line number Diff line
@@ -84,6 +84,10 @@ class Acl : public hci::acl_manager::ConnectionCallbacks,
                         std::string comment) override;
                         std::string comment) override;
  void DisconnectLe(uint16_t handle, tHCI_REASON reason,
  void DisconnectLe(uint16_t handle, tHCI_REASON reason,
                    std::string comment) override;
                    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
  // Address Resolution List
  void AddToAddressResolution(const hci::AddressWithType& address_with_type,
  void AddToAddressResolution(const hci::AddressWithType& address_with_type,
+9 −0
Original line number Original line Diff line number Diff line
@@ -76,6 +76,15 @@ void bluetooth::shim::ACL_Flush(uint16_t handle) {
  Stack::GetInstance()->GetAcl()->Flush(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) {
void bluetooth::shim::ACL_ConfigureLePrivacy(bool is_le_privacy_enabled) {
  hci::LeAddressManager::AddressPolicy address_policy =
  hci::LeAddressManager::AddressPolicy address_policy =
      is_le_privacy_enabled
      is_le_privacy_enabled
+4 −0
Original line number Original line Diff line number Diff line
@@ -60,6 +60,10 @@ void ACL_ClearFilterAcceptList();
void ACL_LeSetDefaultSubrate(uint16_t subrate_min, uint16_t subrate_max,
void ACL_LeSetDefaultSubrate(uint16_t subrate_min, uint16_t subrate_max,
                             uint16_t max_latency, uint16_t cont_num,
                             uint16_t max_latency, uint16_t cont_num,
                             uint16_t sup_tout);
                             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,
void ACL_LeSubrateRequest(uint16_t hci_handle, uint16_t subrate_min,
                          uint16_t subrate_max, uint16_t max_latency,
                          uint16_t subrate_max, uint16_t max_latency,
                          uint16_t cont_num, uint16_t sup_tout);
                          uint16_t cont_num, uint16_t sup_tout);
Loading