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

Commit ec8f5c80 authored by William Escande's avatar William Escande Committed by Gerrit Code Review
Browse files

Merge changes Ib3bc3588,I8afe38f2,I9e95239d,I7e4ddf1a

* changes:
  BT5.3 Subrating -- handle Le Subrate Request in GD
  BT5.3 Subrating -- handle event in Gd
  BT5.3 Subrating -- handle SetDefaultSubrate in GD
  Prevent some clang-format into test
parents 09c249c5 e5b470cd
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ filegroup {
        "acl_manager_unittest.cc",
        "acl_manager/acl_scheduler_test.cc",
        "acl_manager/classic_acl_connection_test.cc",
        "acl_manager/le_acl_connection_test.cc",
        "acl_manager/le_impl_test.cc",
        "acl_manager/round_robin_scheduler_test.cc",
        "address_unittest.cc",
+5 −0
Original line number Diff line number Diff line
@@ -187,6 +187,11 @@ void AclManager::SetLeSuggestedDefaultDataParameters(uint16_t octets, uint16_t t
  CallOn(pimpl_->le_impl_, &le_impl::set_le_suggested_default_data_parameters, octets, time);
}

void AclManager::LeSetDefaultSubrate(
    uint16_t subrate_min, uint16_t subrate_max, uint16_t max_latency, uint16_t cont_num, uint16_t sup_tout) {
  CallOn(pimpl_->le_impl_, &le_impl::LeSetDefaultSubrate, subrate_min, subrate_max, max_latency, cont_num, sup_tout);
}

void AclManager::SetPrivacyPolicyForInitiatorAddress(
    LeAddressManager::AddressPolicy address_policy,
    AddressWithType fixed_address,
+3 −0
Original line number Diff line number Diff line
@@ -86,6 +86,9 @@ public:
 // Ask the controller for specific data parameters
 virtual void SetLeSuggestedDefaultDataParameters(uint16_t octets, uint16_t time);

 virtual void LeSetDefaultSubrate(
     uint16_t subrate_min, uint16_t subrate_max, uint16_t max_latency, uint16_t cont_num, uint16_t sup_tout);

 virtual void SetPrivacyPolicyForInitiatorAddress(
     LeAddressManager::AddressPolicy address_policy,
     AddressWithType fixed_address,
+28 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@
#include "hci/acl_manager/le_connection_management_callbacks.h"
#include "os/metrics.h"

using bluetooth::hci::Address;

namespace bluetooth {
namespace hci {
namespace acl_manager {
@@ -74,6 +76,15 @@ class LeAclConnectionTracker : public LeConnectionManagementCallbacks {
  void OnLocalAddressUpdate(AddressWithType address_with_type) override {
    SAVE_OR_CALL(OnLocalAddressUpdate, address_with_type);
  }
  void OnLeSubrateChange(
      hci::ErrorCode hci_status,
      uint16_t subrate_factor,
      uint16_t peripheral_latency,
      uint16_t continuation_number,
      uint16_t supervision_timeout) override {
    SAVE_OR_CALL(
        OnLeSubrateChange, hci_status, subrate_factor, peripheral_latency, continuation_number, supervision_timeout);
  }

  void OnDisconnection(ErrorCode reason) override {
    SAVE_OR_CALL(OnDisconnection, reason);
@@ -145,6 +156,23 @@ void LeAclConnection::Disconnect(DisconnectReason reason) {
      }));
}

void LeAclConnection::OnLeSubrateRequestStatus(CommandStatusView status) {
  auto subrate_request_status = LeSubrateRequestStatusView::Create(status);
  ASSERT(subrate_request_status.IsValid());
  auto hci_status = subrate_request_status.GetStatus();
  if (hci_status != ErrorCode::SUCCESS) {
    LOG_INFO("LeSubrateRequest status %s", ErrorCodeText(hci_status).c_str());
    pimpl_->tracker.OnLeSubrateChange(hci_status, 0, 0, 0, 0);
  }
}

void LeAclConnection::LeSubrateRequest(
    uint16_t subrate_min, uint16_t subrate_max, uint16_t max_latency, uint16_t cont_num, uint16_t sup_tout) {
  pimpl_->tracker.le_acl_connection_interface_->EnqueueCommand(
      LeSubrateRequestBuilder::Create(handle_, subrate_min, subrate_max, max_latency, cont_num, sup_tout),
      pimpl_->tracker.client_handler_->BindOnceOn(this, &LeAclConnection::OnLeSubrateRequestStatus));
}

LeConnectionManagementCallbacks* LeAclConnection::GetEventCallbacks(
    std::function<void(uint16_t)> invalidate_callbacks) {
  return pimpl_->GetEventCallbacks(std::move(invalidate_callbacks));
+4 −0
Original line number Diff line number Diff line
@@ -96,6 +96,9 @@ class LeAclConnection : public AclConnection {
  virtual bool ReadRemoteVersionInformation() override;
  virtual bool LeReadRemoteFeatures();

  virtual void LeSubrateRequest(
      uint16_t subrate_min, uint16_t subrate_max, uint16_t max_latency, uint16_t cont_num, uint16_t sup_tout);

  // TODO implement LeRemoteConnectionParameterRequestReply, LeRemoteConnectionParameterRequestNegativeReply

  // Called once before passing the connection to the client
@@ -107,6 +110,7 @@ class LeAclConnection : public AclConnection {
  Role role_;

 private:
  void OnLeSubrateRequestStatus(CommandStatusView status);
  virtual bool check_connection_parameters(
      uint16_t conn_interval_min,
      uint16_t conn_interval_max,
Loading