diff options
author | 2025-03-24 10:41:59 -0700 | |
---|---|---|
committer | 2025-03-24 10:41:59 -0700 | |
commit | f3d3aaea2395ebd521401d7099c03a206292aba0 (patch) | |
tree | 4f5bea13e089c11b4ed0207217502fb773f6efac | |
parent | 46e4fd8dc639f8201d80798063894c9a9faf35f2 (diff) | |
parent | 3304058e4ae2350bc8b6e55c8c254d81096c87b0 (diff) |
Merge "Uses the correct unit of conn interval - 1.25ms" into main
-rw-r--r-- | system/gd/hci/distance_measurement_manager.cc | 9 | ||||
-rw-r--r-- | system/gd/hci/distance_measurement_manager_test.cc | 11 |
2 files changed, 14 insertions, 6 deletions
diff --git a/system/gd/hci/distance_measurement_manager.cc b/system/gd/hci/distance_measurement_manager.cc index 6e57f2c9d5..ae8647ee22 100644 --- a/system/gd/hci/distance_measurement_manager.cc +++ b/system/gd/hci/distance_measurement_manager.cc @@ -87,6 +87,7 @@ static constexpr uint8_t kAttHeaderSize = 5; // Section 3.2.2.1 of RAS 1 static constexpr uint8_t kRasSegmentHeaderSize = 1; static constexpr uint16_t kEnableSecurityTimeoutMs = 10000; // 10s static constexpr uint16_t kProcedureScheduleGuardMs = 1000; // 1s +static constexpr double kConnIntervalUnitMs = 1.25; // 1.25 ms struct DistanceMeasurementManager::impl : bluetooth::hal::RangingHalCallback { struct CsProcedureData { @@ -829,9 +830,9 @@ struct DistanceMeasurementManager::impl : bluetooth::hal::RangingHalCallback { cs_requester_trackers_[connection_handle].interval_ms > 100) { // TODO(b/398253048): keep the burst mode for 'HIGH' for now. allow app to disable it. uint16_t measurement_interval_ms = cs_requester_trackers_[connection_handle].interval_ms; - min_procedure_interval = static_cast<uint16_t>( - std::round((double)measurement_interval_ms / - cs_requester_trackers_[connection_handle].conn_interval_)); + min_procedure_interval = static_cast<uint16_t>(std::round( + (double)measurement_interval_ms / + (cs_requester_trackers_[connection_handle].conn_interval_ * kConnIntervalUnitMs))); } log::debug("procedure params: min_int = {}", min_procedure_interval); hci_layer_->EnqueueCommand( @@ -1299,7 +1300,7 @@ struct DistanceMeasurementManager::impl : bluetooth::hal::RangingHalCallback { uint32_t schedule_interval = live_tracker->interval_ms; if (live_tracker->n_procedure_count > 1) { schedule_interval = live_tracker->n_procedure_count * event_view.GetProcedureInterval() * - live_tracker->conn_interval_ + + live_tracker->conn_interval_ * kConnIntervalUnitMs + kProcedureScheduleGuardMs; log::debug("guard interval is {} ms", schedule_interval); } diff --git a/system/gd/hci/distance_measurement_manager_test.cc b/system/gd/hci/distance_measurement_manager_test.cc index 35a629c53a..d248a6cc45 100644 --- a/system/gd/hci/distance_measurement_manager_test.cc +++ b/system/gd/hci/distance_measurement_manager_test.cc @@ -47,6 +47,7 @@ namespace { static constexpr auto kTimeout = std::chrono::seconds(1); static constexpr uint8_t kMaxRetryCounterForCreateConfig = 0x03; static constexpr uint8_t kMaxRetryCounterForCsEnable = 0x03; +static constexpr uint8_t kConnInterval = 24; } namespace bluetooth { @@ -318,7 +319,7 @@ protected: params.remote_address, params.connection_handle, /*att_handle=*/0, /*vendor_specific_data=*/std::vector<hal::VendorSpecificCharacteristic>(), - /*conn_interval=*/24); + /*conn_interval=*/kConnInterval); } void StartMeasurementTillReadRemoteCaps(const StartMeasurementParameters& params) { @@ -364,7 +365,13 @@ protected: void StartMeasurementTillSetProcedureParameters(const StartMeasurementParameters& params) { StartMeasurementTillSecurityEnable(params); - test_hci_layer_->GetCommand(OpCode::LE_CS_SET_PROCEDURE_PARAMETERS); + auto command_view = + LeCsSetProcedureParametersView::Create(DistanceMeasurementCommandView::Create( + test_hci_layer_->GetCommand(OpCode::LE_CS_SET_PROCEDURE_PARAMETERS))); + EXPECT_EQ(command_view.IsValid(), true); + auto expected_min_procedure_interval = + static_cast<uint16_t>(std::round(params.interval / (kConnInterval * 1.25))); + EXPECT_EQ(command_view.GetMinProcedureInterval(), expected_min_procedure_interval); test_hci_layer_->IncomingEvent(LeCsSetProcedureParametersCompleteBuilder::Create( /*num_hci_command_packets=*/static_cast<uint8_t>(0xEE), ErrorCode::SUCCESS, params.connection_handle)); |