summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Android Build Coastguard Worker <android-build-coastguard-worker@google.com> 2025-03-24 18:43:19 -0700
committer Android Build Coastguard Worker <android-build-coastguard-worker@google.com> 2025-03-24 18:43:19 -0700
commit87d064a3ce66027b81944a69cc6e8febbe3f94e1 (patch)
tree4f5bea13e089c11b4ed0207217502fb773f6efac
parentf8d2a2452d40337f67874b432d0f68799ba20840 (diff)
parentf3d3aaea2395ebd521401d7099c03a206292aba0 (diff)
Snap for 13264465 from f3d3aaea2395ebd521401d7099c03a206292aba0 to 25Q2-release
Change-Id: Ia082bf0911d23e7eedaa6cce9432406dda653d00
-rw-r--r--system/gd/hci/distance_measurement_manager.cc9
-rw-r--r--system/gd/hci/distance_measurement_manager_test.cc11
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));