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

Commit 19950429 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge changes If2f4e0c3,I0c0d8a9b into main

* changes:
  CS: Parsing the CS procedure data of mode 3
  CS: Parsing the CS procedure data of mode 1
parents 15ea8e72 47707819
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -35,6 +35,10 @@ struct ChannelSoundingRawData {
  std::vector<std::vector<std::complex<double>>> tone_pct_reflector_;
  std::vector<std::vector<uint8_t>> tone_quality_indicator_initiator_;
  std::vector<std::vector<uint8_t>> tone_quality_indicator_reflector_;
  std::vector<int8_t> packet_quality_initiator;
  std::vector<int8_t> packet_quality_reflector;
  std::vector<int16_t> toa_tod_initiators_;
  std::vector<int16_t> tod_toa_reflectors_;
};

struct RangingResult {
+14 −0
Original line number Diff line number Diff line
@@ -195,6 +195,7 @@ public:
    hal_raw_data.stepChannels = raw_data.step_channel_;
    hal_raw_data.initiatorData.stepTonePcts.emplace(std::vector<std::optional<StepTonePct>>{});
    hal_raw_data.reflectorData.stepTonePcts.emplace(std::vector<std::optional<StepTonePct>>{});
    // Add tone data for mode 2, mode 3
    for (uint8_t i = 0; i < raw_data.tone_pct_initiator_.size(); i++) {
      StepTonePct step_tone_pct;
      for (uint8_t j = 0; j < raw_data.tone_pct_initiator_[i].size(); j++) {
@@ -217,6 +218,19 @@ public:
      step_tone_pct.toneQualityIndicator = raw_data.tone_quality_indicator_reflector_[i];
      hal_raw_data.reflectorData.stepTonePcts.value().emplace_back(step_tone_pct);
    }
    // Add RTT data for mode 1, mode 3
    if (!raw_data.toa_tod_initiators_.empty()) {
      hal_raw_data.toaTodInitiator = std::vector<int32_t>(raw_data.toa_tod_initiators_.begin(),
                                                          raw_data.toa_tod_initiators_.end());
      hal_raw_data.initiatorData.packetQuality = std::vector<uint8_t>(
              raw_data.packet_quality_initiator.begin(), raw_data.packet_quality_initiator.end());
    }
    if (!raw_data.tod_toa_reflectors_.empty()) {
      hal_raw_data.todToaReflector = std::vector<int32_t>(raw_data.tod_toa_reflectors_.begin(),
                                                          raw_data.tod_toa_reflectors_.end());
      hal_raw_data.reflectorData.packetQuality = std::vector<uint8_t>(
              raw_data.packet_quality_reflector.begin(), raw_data.packet_quality_reflector.end());
    }
    session_trackers_[connection_handle]->GetSession()->writeRawData(hal_raw_data);
  }

+354 −4

File changed.

Preview size limit exceeded, changes collapsed.

+100 −0
Original line number Diff line number Diff line
@@ -6895,6 +6895,58 @@ struct LeCsMode0ReflectorData {
  packet_antenna : 8,
}

enum CsPacketNadm : 8 {
  ATTACK_IS_EXTREMELY_UNLIKELY = 0x00,
  ATTACK_IS_VERY_UNLIKELY = 0x01,
  ATTACK_IS_UNLIKELY = 0x02,
  ATTACK_IS_POSSIBLE = 0x03,
  ATTACK_IS_LIKELY = 0x04,
  ATTACK_IS_VERY_LIKELY = 0x05,
  ATTACK_IS_EXTREMELY_LIKELY = 0x06,
  UNKNOWN_NADM = 0xFF,
}

struct LeCsToneData {
  i_sample : 12,
  q_sample : 12,
}

struct LeCsMode1InitatorData {
  packet_quality : 8,
  packet_nadm : CsPacketNadm,
  packet_rssi : 8,
  toa_tod_initiator : 16,
  packet_antenna : 8,
}

struct LeCsMode1InitatorDataWithPacketPct {
  packet_quality : 8,
  packet_nadm : CsPacketNadm,
  packet_rssi : 8,
  toa_tod_initiator : 16,
  packet_antenna : 8,
  packet_pct1 : LeCsToneData,
  packet_pct2 : LeCsToneData,
}

struct LeCsMode1ReflectorData {
  packet_quality : 8,
  packet_nadm : CsPacketNadm,
  packet_rssi : 8,
  tod_toa_reflector : 16,
  packet_antenna : 8,
}

struct LeCsMode1ReflectorDataWithPacketPct {
  packet_quality : 8,
  packet_nadm : CsPacketNadm,
  packet_rssi : 8,
  tod_toa_reflector : 16,
  packet_antenna : 8,
  packet_pct1 : LeCsToneData,
  packet_pct2 : LeCsToneData,
}

struct LeCsToneDataWithQuality {
  i_sample : 12,
  q_sample : 12,
@@ -6907,6 +6959,54 @@ struct LeCsMode2Data {
  tone_data : LeCsToneDataWithQuality[],
}

struct LeCsMode3InitatorData {
  _count_(tone_data) : 8,
  packet_quality : 8,
  packet_nadm : CsPacketNadm,
  packet_rssi : 8,
  packet_antenna : 8,
  toa_tod_initiator : 16,
  antenna_permutation_index : 8,
  tone_data : LeCsToneDataWithQuality[],
}

struct LeCsMode3InitatorDataWithPacketPct {
  _count_(tone_data) : 8,
  packet_quality : 8,
  packet_nadm : CsPacketNadm,
  packet_rssi : 8,
  packet_antenna : 8,
  packet_pct1 : LeCsToneData,
  packet_pct2 : LeCsToneData,
  toa_tod_initiator : 16,
  antenna_permutation_index : 8,
  tone_data : LeCsToneDataWithQuality[],
}

struct LeCsMode3ReflectorData {
  _count_(tone_data) : 8,
  packet_quality : 8,
  packet_nadm : CsPacketNadm,
  packet_rssi : 8,
  packet_antenna : 8,
  tod_toa_reflector : 16,
  antenna_permutation_index : 8,
  tone_data : LeCsToneDataWithQuality[],
}

struct LeCsMode3ReflectorDataWithPacketPct {
  _count_(tone_data) : 8,
  packet_quality : 8,
  packet_nadm : CsPacketNadm,
  packet_rssi : 8,
  packet_antenna : 8,
  packet_pct1 : LeCsToneData,
  packet_pct2 : LeCsToneData,
  tod_toa_reflector : 16,
  antenna_permutation_index : 8,
  tone_data : LeCsToneDataWithQuality[],
}

enum CsProcedureDoneStatus : 4 {
  ALL_RESULTS_COMPLETE = 0x0,
  PARTIAL_RESULTS = 0x1,