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

Commit af4d4c97 authored by William Escande's avatar William Escande
Browse files

BT5.3 Subrating -- handle SetDefaultSubrate in GD

BYPASS_LONG_LINES_REASON: Bluetooth likes 120 lines

Bug: 248126637
Test: bluetooth_test_gd_unit64 --gtest_filter="*LeSetDefaultSubrate"
Change-Id: I9e95239db89c51fc169b5e4de838bad9f4ac901c
parent 4c4c0049
Loading
Loading
Loading
Loading
+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,
+12 −0
Original line number Diff line number Diff line
@@ -984,6 +984,18 @@ struct le_impl : public bluetooth::hci::LeAddressManagerCallback {
        std::move(packet), handler_->BindOnce([](CommandCompleteView complete) {}));
  }

  void LeSetDefaultSubrate(
      uint16_t subrate_min, uint16_t subrate_max, uint16_t max_latency, uint16_t cont_num, uint16_t sup_tout) {
    le_acl_connection_interface_->EnqueueCommand(
        LeSetDefaultSubrateBuilder::Create(subrate_min, subrate_max, max_latency, cont_num, sup_tout),
        handler_->BindOnce([](CommandCompleteView complete) {
          auto complete_view = LeSetDefaultSubrateCompleteView::Create(complete);
          ASSERT(complete_view.IsValid());
          ErrorCode status = complete_view.GetStatus();
          ASSERT_LOG(status == ErrorCode::SUCCESS, "Status 0x%02hhx, %s", status, ErrorCodeText(status).c_str());
        }));
  }

  void clear_resolving_list() {
    le_address_manager_->ClearResolvingList();
  }
+13 −0
Original line number Diff line number Diff line
@@ -71,6 +71,7 @@ constexpr uint16_t kLatency = 0x60;
constexpr uint16_t kLength = 0x5678;
constexpr uint16_t kTime = 0x1234;
constexpr uint16_t kTimeout = 0x80;
constexpr uint16_t kContinuationNumber = 0x32;
constexpr std::array<uint8_t, 16> kPeerIdentityResolvingKey({
    0x00,
    0x01,
@@ -1469,6 +1470,18 @@ TEST_F(LeImplTest, set_le_suggested_default_data_parameters) {
  ASSERT_EQ(kTime, view.GetTxTime());
}

TEST_F(LeImplTest, LeSetDefaultSubrate) {
  le_impl_->LeSetDefaultSubrate(kIntervalMin, kIntervalMax, kLatency, kContinuationNumber, kTimeout);
  sync_handler();
  auto view = CreateAclCommandView<LeSetDefaultSubrateView>(hci_layer_->DequeueCommandBytes());
  ASSERT_TRUE(view.IsValid());
  ASSERT_EQ(kIntervalMin, view.GetSubrateMin());
  ASSERT_EQ(kIntervalMax, view.GetSubrateMax());
  ASSERT_EQ(kLatency, view.GetMaxLatency());
  ASSERT_EQ(kContinuationNumber, view.GetContinuationNumber());
  ASSERT_EQ(kTimeout, view.GetSupervisionTimeout());
}

}  // namespace acl_manager
}  // namespace hci
}  // namespace bluetooth
+1 −1
Original line number Diff line number Diff line
@@ -4642,7 +4642,7 @@ packet LeSetDataRelatedAddressChangesComplete : CommandComplete (command_op_code
  status : ErrorCode,
}

packet LeSetDefaultSubrate : Command (op_code = LE_SET_DEFAULT_SUBRATE) {
packet LeSetDefaultSubrate : AclCommand (op_code = LE_SET_DEFAULT_SUBRATE) {
  subrate_min : 9,
  _reserved_ : 7,
  subrate_max : 9,
Loading