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

Commit 74f36dfb authored by Chienyuan Huang's avatar Chienyuan Huang Committed by Automerger Merge Worker
Browse files

Merge "CS: Skip parsing the subevent if the tracker is not found" into main...

Merge "CS: Skip parsing the subevent if the tracker is not found" into main am: 71702d65 am: 61abfcc2

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Bluetooth/+/3015033



Change-Id: I042d0a62b1e2263549523275841fce2560652d43
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents e4b24be4 61abfcc2
Loading
Loading
Loading
Loading
+16 −13
Original line number Diff line number Diff line
@@ -624,14 +624,16 @@ struct DistanceMeasurementManager::impl {
      procedure_done_status = cs_event_result.GetProcedureDoneStatus();
      subevent_done_status = cs_event_result.GetSubeventDoneStatus();
      result_data_structures = cs_event_result.GetResultDataStructures();
      init_cs_procedure_data(
      if (cs_trackers_.find(connection_handle) == cs_trackers_.end()) {
        log::warn("Can't find any tracker for {}", connection_handle);
        return;
      }
      CsProcedureData* procedure_data = init_cs_procedure_data(
          connection_handle,
          cs_event_result.GetProcedureCounter(),
          cs_event_result.GetNumAntennaPaths(),
          true);
      CsProcedureData* procedure_data =
          get_procedure_data(connection_handle, cs_event_result.GetProcedureCounter());
      if (procedure_data != nullptr && cs_trackers_[connection_handle].role == CsRole::INITIATOR) {
      if (cs_trackers_[connection_handle].role == CsRole::INITIATOR) {
        procedure_data->frequency_compensation.push_back(
            cs_event_result.GetFrequencyCompensation());
      }
@@ -662,6 +664,10 @@ struct DistanceMeasurementManager::impl {
      procedure_done_status = cs_event_result.GetProcedureDoneStatus();
      subevent_done_status = cs_event_result.GetSubeventDoneStatus();
      result_data_structures = cs_event_result.GetResultDataStructures();
      if (cs_trackers_.find(connection_handle) == cs_trackers_.end()) {
        log::warn("Can't find any tracker for {}", connection_handle);
        return;
      }
    }

    uint16_t counter = cs_trackers_[connection_handle].local_counter;
@@ -729,15 +735,11 @@ struct DistanceMeasurementManager::impl {
    procedure_data->segmentation_header_.rolling_segment_counter_ %= 64;
  }

  void init_cs_procedure_data(
  CsProcedureData* init_cs_procedure_data(
      uint16_t connection_handle,
      uint16_t procedure_counter,
      uint8_t num_antenna_paths,
      bool local) {
    if (cs_trackers_.find(connection_handle) == cs_trackers_.end()) {
      log::warn("Can't find any tracker for {}", connection_handle);
      return;
    }
    // Update procedure count
    if (local) {
      cs_trackers_[connection_handle].local_counter = procedure_counter;
@@ -746,10 +748,10 @@ struct DistanceMeasurementManager::impl {
    }

    std::vector<CsProcedureData>& data_list = cs_trackers_[connection_handle].procedure_data_list;
    for (CsProcedureData procedure_data : data_list) {
      if (procedure_data.counter == procedure_counter) {
        // Data already exist, return
        return;
    for (auto& data : data_list) {
      if (data.counter == procedure_counter) {
        // Data already exists, return
        return &data;
      }
    }
    log::info("Create data for procedure_counter: {}", procedure_counter);
@@ -763,6 +765,7 @@ struct DistanceMeasurementManager::impl {
      log::warn("buffer full, drop procedure data with counter: {}", data_list.front().counter);
      data_list.erase(data_list.begin());
    }
    return &data_list.back();
  }

  CsProcedureData* get_procedure_data(uint16_t connection_handle, uint16_t counter) {