From b32910bdb85c6e9d19abf97f1465c573a0bf9d38 Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期四, 13 二月 2025 14:06:13 +0800
Subject: [PATCH] 测试版

---
 keil/include/components/algo/inc/lib_ranging.h |   65 ++++++++++++++++++++++++--------
 1 files changed, 48 insertions(+), 17 deletions(-)

diff --git a/keil/include/components/algo/inc/lib_ranging.h b/keil/include/components/algo/inc/lib_ranging.h
index 5910425..358df97 100644
--- a/keil/include/components/algo/inc/lib_ranging.h
+++ b/keil/include/components/algo/inc/lib_ranging.h
@@ -52,6 +52,10 @@
 #define CHEST_DUMP_EN (1)
 #endif
 
+#ifndef CHEST_DUMP_STS_EN
+#define CHEST_DUMP_STS_EN (1)
+#endif
+
 /* When debugging offline channel estimation, enable this macro */
 #ifndef OFFLINE_CHEST_EN
 #define OFFLINE_CHEST_EN (0)
@@ -74,11 +78,13 @@
     int16_t azimuth;
     uint8_t ranging_fom;
     uint8_t azimuth_fom;
+    uint8_t antenna;
     uint8_t frame_idx;
-    uint8_t rframe_idx;
-    uint16_t reserved;
+    uint8_t reserved[2];
 
     // pre-poll | poll | final | final-data
+    // poll | final
+    // RCM | RIM | RFM | MRM
     struct FRAME_INF_T
     {
         int8_t rssi;
@@ -87,27 +93,21 @@
         uint8_t bb_gain;
         uint16_t bd_cnt;
         uint16_t sfd_cnt;
-        uint16_t error_code;
-    } frame[4];
-
-    // poll | final
-    struct RFRAME_INF_T
-    {
         int32_t freq_offset;
-        float kfactor;
         uint32_t channel_power;
         uint32_t noise_power;
-        int8_t main_tap_power;
-        int8_t first_tap_power;
+        int16_t main_tap_power;
+        int16_t first_tap_power;
         uint8_t main_tap;
         uint8_t first_tap;
         uint8_t sts_main_tap;
         uint8_t sts_first_tap;
+        uint16_t error_code;
         uint8_t nlos;
         uint8_t fom;
         int8_t cir[128][2];
         float sts_taps[11];
-    } rframe[2];
+    } frame[4];
 };
 
 typedef struct
@@ -167,13 +167,19 @@
 
 extern struct RANGING_CSI_T debug_csi;
 uint8_t first_path_align(uint8_t *ce_chest_gaps, uint8_t *ce_chest_gaps_num, int8_t ce_chest[CIR_LEN][2], uint8_t ce_fap, uint8_t th, uint8_t margin);
-uint8_t ranging_fom_calculate(struct RANGING_CSI_T *csi, uint8_t response_fom, uint8_t *response_tap_gaps, uint8_t response_tap_gaps_num);
+uint8_t ranging_fom_calculate(struct RANGING_CSI_T *csi, uint8_t frame_start, uint8_t response_fom, uint8_t *response_tap_gaps, uint8_t response_tap_gaps_num);
 void dump_preamble_cir(uint8_t idx, uint8_t taps_num);
-void dump_sts_cir(uint8_t idx);
-void print_preamble_chest(uint8_t rx_pkt_num, uint8_t rframe_num);
-void print_sts_ch_taps(uint8_t rframe_num);
-void calculate_first_tap_power(uint8_t rx_pkt_num, uint8_t rframe_num);
+void print_preamble_chest(uint32_t seq_num, uint8_t frame_start, uint8_t frame_num);
+int8_t correct_rssi(int8_t rssi);
+int8_t correct_snr(int8_t snr);
+void calculate_first_tap_power(uint8_t frame_start, uint8_t frame_num);
 int8_t calculate_noise_floor(uint8_t rf_gain, uint8_t bb_gain);
+uint32_t auto_adjust_filter_coeff(uint8_t idx);
+
+#if CHEST_DUMP_STS_EN
+void dump_sts_cir(uint8_t idx);
+void print_sts_ch_taps(uint8_t frame_start, uint8_t frame_num);
+#endif
 #endif
 
 /**
@@ -227,6 +233,22 @@
  * @return RX timestamp (unit: 15.65ps)
  */
 int64_t ranging_rx_time(const struct MAC_HW_REPORT_T *ind);
+
+/**
+ * @brief Calculate TX timestamp of the ranging frame.
+ *
+ * @param[in] timestamp    PHY timer count of TX
+ * @return TX timestamp (unit: 2ns)
+ */
+int64_t ranging_tx_time_in_2ns(uint32_t timestamp);
+
+/**
+ * @brief Calculate RX timestamp of the ranging frame.
+ *
+ * @param[in] ind    MAC RX report
+ * @return RX timestamp (unit: 2ns)
+ */
+int64_t ranging_rx_time_in_2ns(const struct MAC_HW_REPORT_T *ind);
 
 /**
  * @brief Get ranging FAP FoM.
@@ -312,6 +334,15 @@
 int8_t ranging_expected_rssi_get(int8_t uwb_tx_power, uint16_t distance, uint8_t path_loss_exp, int8_t ant_gain_loss);
 
 /**
+ * @brief Function to compute 10*log10 of a number
+ * This function takes in 32-bit integer and outputs 10*log10 in floating point
+ *
+ * @param[in] num              Input number
+ * @return the result of 10*log10(num)
+ */
+float fast_10log10(uint32_t num);
+
+/**
  * @brief Get ranging library version.
  *
  * @return String of ranging library version

--
Gitblit v1.9.3