From adfc7e798b9cbdd022bf8df971843436912a0fe5 Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期日, 20 七月 2025 16:58:30 +0800
Subject: [PATCH] 成功移植g_com_map表逻辑,初步测试能读能写,并且TDOA效果和官方一致

---
 keil/include/components/app/src/aoa.c |   67 ++++++++++++++++-----------------
 1 files changed, 33 insertions(+), 34 deletions(-)

diff --git a/keil/include/components/app/src/aoa.c b/keil/include/components/app/src/aoa.c
index 9ba4534..6eb5fed 100644
--- a/keil/include/components/app/src/aoa.c
+++ b/keil/include/components/app/src/aoa.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2023 Beijing Hanwei Innovation Technology Ltd. Co. and
+ * Copyright (c) 2019-2025 Beijing Hanwei Innovation Technology Ltd. Co. and
  * its subsidiaries and affiliates (collectly called MKSEMI).
  *
  * All rights reserved.
@@ -51,8 +51,16 @@
 
 #include "board.h"
 
+#if FILTER_EN
+#define KF_SUPPORT_NUM 6
+#define KF_TIMEOUT_MS 2000
+static struct KF_MAC_ADDR_T kf_mac_addr_cache[KF_SUPPORT_NUM];
+static struct KF_CHANNEL_CACHE_T kf_channel_cache[KF_SUPPORT_NUM];
+static struct KF_MAT_VALUE_CACHE_T kf_mat_value_cache[KF_SUPPORT_NUM];
+#endif
+
 #if PDOA_3D_EN
-#define PDOA_3D_SUPPORT_NUM 100
+#define PDOA_3D_SUPPORT_NUM 10
 #define PDOA_3D_TIMEOUT_MS 2000
 static struct PDOA_3D_MAC_ADDR_T mac_addr_cache[PDOA_3D_SUPPORT_NUM];
 static struct PDOA_3D_PDOA_DATA_T pdoa_data_cache[PDOA_3D_SUPPORT_NUM];
@@ -114,15 +122,15 @@
 
     if (uwb_app_config.session_param.device_role == DEV_ROLE_INITIATOR)
     {
-        phy_rx_sts_switch_mode_set(uwb_app_config.ppdu_params.sts_pkt_cfg, STS_NEVER_SWITCH, 0, 0);
+        phy_rx_sts_switch_mode_set(uwb_app_config.ppdu_params->sts_pkt_cfg, STS_NEVER_SWITCH, 0, 0);
     }
     else
     {
-        phy_rx_sts_switch_mode_set(uwb_app_config.ppdu_params.sts_pkt_cfg, STS_SWITCH_EVERY_4SYM, 0, 0);
+        phy_rx_sts_switch_mode_set(uwb_app_config.ppdu_params->sts_pkt_cfg, STS_SWITCH_EVERY_4SYM, 0, 0);
     }
 
 #if (ANT_PATTERN == ANT_PATTERN_SQUARE)
-    struct AOA_ANGLE_SPAN_T aoa_span;
+    angle_span_t aoa_span;
 #if AOA_3D_EN
     aoa_span.Ndim = 2;
     aoa_span.el_low = 0;
@@ -144,22 +152,21 @@
 #endif
 
 #if AOA_EN
-    aoa_aux_info_set(AOA_AUX_ANT_IQ_RSSI_PDOA_AOA_FOM);
-    aoa_steering_vector_set((const float *)((uint32_t)((uwb_app_config.ppdu_params.ch_num == 9) ? svec_ch9_ptr : svec_ch5_ptr) | SRAM_BASE));
+    sts_param_config(uwb_app_config.ppdu_params->sts_pkt_cfg, STS_AUX_ANT_IQ_RSSI_PDOA_AOA_FOM, STS_BUF_NUM, STS_BUF_SIZE);
+    aoa_steering_vector_set((const float *)((uint32_t)((uwb_app_config.ppdu_params->ch_num == 9) ? svec_ch9_ptr : svec_ch5_ptr) | SRAM_BASE));
 #else
-    aoa_aux_info_set(AOA_AUX_ANT_IQ_RSSI);
+    sts_param_config(uwb_app_config.ppdu_params->sts_pkt_cfg, STS_AUX_ANT_IQ_RSSI, STS_BUF_NUM, STS_BUF_SIZE);
 #endif
 
-    aoa_param_config();
-
 #if PDOA_3D_EN
-    pdoa_3d_param_config(ANT_PATTERN, ANT_LAYOUT, PDOA_3D_AMBIGUITY_LEVEL_HIGH, mac_addr_cache, pdoa_data_cache, PDOA_3D_SUPPORT_NUM, PDOA_3D_TIMEOUT_MS);
+    pdoa_3d_param_config(ANT_PATTERN, ANT_LAYOUT, PDOA_3D_AMBIGUITY_LEVEL_NONE, mac_addr_cache, pdoa_data_cache, PDOA_3D_SUPPORT_NUM, PDOA_3D_TIMEOUT_MS);
 #endif
 
 #if FILTER_EN
     if (uwb_app_config.filter_en)
     {
-        loc_post_filter_config(uwb_app_config.session_param.ranging_interval, 0, 1);
+        uint32_t update_period_ms = uwb_app_config.session_param.ranging_interval;
+        loc_post_kf_config(update_period_ms, kf_mac_addr_cache, kf_channel_cache, kf_mat_value_cache, KF_SUPPORT_NUM, KF_TIMEOUT_MS);
     }
 #endif
 }
@@ -170,12 +177,7 @@
     aoa_env.sequence_num++;
     if (uwb_app_config.session_param.device_role == DEV_ROLE_INITIATOR)
     {
-        // Power on radio
-        power_on_radio(1, 0);
-
-        // SP3 payload len = 0
-        mac_tx(EVT_MODE_MAC_ASAP_PHY_FIX, aoa_env.anchor_point, 0, NULL, 0);
-        mac_start();
+        uwb_tx(NULL, 0, TX_MODE_DEFER, aoa_env.anchor_point);
 
         LOG_INFO(TRACE_MODULE_APP, "AoA Initiator SEQ NUM %u\r\n", aoa_env.sequence_num);
     }
@@ -183,20 +185,18 @@
     {
         // Change Rx main antenna
         uint8_t main_ant = 3;
-        phy_rx_sts_switch_mode_set(uwb_app_config.ppdu_params.sts_pkt_cfg, STS_SWITCH_EVERY_4SYM, 1, main_ant);
-        aoa_param_update(main_ant);
-        // Power on radio
-        power_on_radio(0, 1);
-        sts_lsp_store();
+        phy_rx_sts_switch_mode_set(uwb_app_config.ppdu_params->sts_pkt_cfg, STS_SWITCH_EVERY_4SYM, 1, main_ant);
+        sts_param_update(main_ant);
+
         if (aoa_env.stage == AOA_SYNC)
         {
-            mac_rx(EVT_MODE_MAC_PHY_ASAP, 0, aoa_env.ranging_period);
+            uwb_rx(RX_MODE_IMMEDIATE, 0, aoa_env.ranging_period);
         }
         else
         {
-            mac_rx(EVT_MODE_MAC_ASAP_PHY_FIX, aoa_env.anchor_point - UWB_RX_OPEN_IN_ADVANCE, UWB_RX_WINDOW);
+            uwb_rx(RX_MODE_DEFER, aoa_env.anchor_point - UWB_RX_OPEN_IN_ADVANCE, UWB_RX_WINDOW);
         }
-        mac_start();
+
         LOG_INFO(TRACE_MODULE_APP, "AoA Responder SEQ NUM %u\r\n", aoa_env.sequence_num);
     }
 }
@@ -218,6 +218,9 @@
 
 void aoa_process(const struct MAC_HW_REPORT_T *ind)
 {
+    power_off_radio();
+    sts_lsp_store_stop();
+
     if (uwb_app_config.session_param.device_role == DEV_ROLE_INITIATOR)
     {
         phy_timer_target_set(aoa_env.anchor_point + aoa_env.ranging_period - UWB_EVT_PREFETCH_TIME, aoa_timer_callback);
@@ -226,7 +229,6 @@
     {
         if (ind->err_code == UWB_RX_OK)
         {
-            sts_lsp_store_stop();
             // update anchor point
             aoa_env.anchor_point = ind->timestamp - phy_shr_duration();
             aoa_env.stage = AOA_POLL;
@@ -242,9 +244,7 @@
         {
             if (aoa_env.stage == AOA_SYNC)
             {
-                sts_lsp_store();
-                mac_rx(EVT_MODE_MAC_PHY_ASAP, 0, aoa_env.ranging_period);
-                mac_start();
+                uwb_rx(RX_MODE_IMMEDIATE, 0, aoa_env.ranging_period);
                 return;
             }
             else
@@ -258,8 +258,6 @@
         }
         phy_timer_target_set(aoa_env.anchor_point + aoa_env.ranging_period - UWB_EVT_PREFETCH_TIME, aoa_timer_callback);
     }
-
-    power_off_radio();
 }
 
 void aoa_done(const struct MAC_HW_REPORT_T *rx)
@@ -270,8 +268,9 @@
     {
         ind->hdr.event = AOA_DONE_MSG;
         ind->status = rx->err_code;
-        ind->rssi = rx->rssi;
-        ind->snr = rx->snr;
+        // ind->rssi = rx->rssi;
+        ind->rssi = correct_rssi(rx->rssi);
+        ind->snr = correct_snr(rx->snr);
 
         if ((rx->pkt_len) && (rx->pkt_data != NULL))
         {

--
Gitblit v1.9.3