From f8013e4f432b323dfc3e3725a62858e73176742a Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期五, 01 十一月 2024 15:16:32 +0800 Subject: [PATCH] 更换了新的sdk,测试了实际的uwb测距 --- 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