WXK
2025-02-11 e328ebef585cea2351b37117b2d5ac4978ecd3c0
keil/include/components/app/src/ranging_fira_task.c
@@ -111,15 +111,22 @@
            {
                const struct UWB_PKT_TX_DONE_IND_T *ind = (const struct UWB_PKT_TX_DONE_IND_T *)param;
                if (ind->status != UWB_TX_OK)
                {
                    LOG_INFO(TRACE_MODULE_APP, "UWB TX fail  0x%04x\r\n", ind->status);
                    break;
                }
                if (ind->slot_idx == 0)
                {
                    ranging_env.range_data.sequence_num = (ranging_env.phy_sts_index - fira_key.phyStsIdxInit) / ranging_env.slots_per_block;
                    uint8_t work_mode_idx = uwb_app_config.session_param.ranging_round_usage < 5 ? uwb_app_config.session_param.ranging_round_usage : 0;
#if MCTT_TEST_EN
                    LOG_INFO(TRACE_NO_OPTION, "%s Init-seq:%u\r\n", work_mode_table[work_mode_idx], ranging_env.range_data.sequence_num + 1);
                    LOG_INFO(TRACE_NO_OPTION, "%s Init-seq:%u Ridx:%d\r\n", work_mode_table[work_mode_idx], ranging_env.range_data.sequence_num,
                             ranging_env.next_round_index);
#else
                    LOG_INFO(TRACE_MODULE_APP | TRACE_NO_OPTION, "\r\n");
                    LOG_INFO(TRACE_MODULE_APP, "FiRa %s Initiator SEQ NUM %u\r\n", work_mode_table[work_mode_idx], ranging_env.range_data.sequence_num);
                    LOG_INFO(TRACE_MODULE_APP, "FiRa %s Controller SEQ NUM %u\r\n", work_mode_table[work_mode_idx], ranging_env.range_data.sequence_num);
#endif
                    uwb_app_config.ranging_count++;
@@ -190,11 +197,11 @@
                        uint8_t work_mode_idx = uwb_app_config.session_param.ranging_round_usage < 5 ? uwb_app_config.session_param.ranging_round_usage : 0;
                        ranging_env.range_data.sequence_num = (ranging_env.phy_sts_index - fira_key.phyStsIdxInit) / ranging_env.slots_per_block;
#if MCTT_TEST_EN
                        LOG_INFO(TRACE_NO_OPTION, "%s Resp-seq:%u Ridx:%d\r\n", work_mode_table[work_mode_idx], ranging_env.range_data.sequence_num + 1,
                        LOG_INFO(TRACE_NO_OPTION, "%s Resp-seq:%u Ridx:%d\r\n", work_mode_table[work_mode_idx], ranging_env.range_data.sequence_num,
                                 ranging_env.next_round_index);
#else
                        LOG_INFO(TRACE_NO_REPORT_HOST | TRACE_MODULE_APP | TRACE_NO_OPTION, "\r\n");
                        LOG_INFO(TRACE_NO_REPORT_HOST | TRACE_MODULE_APP, "FiRa %s Responder SEQ NUM %u\r\n", work_mode_table[work_mode_idx],
                        LOG_INFO(TRACE_NO_REPORT_HOST | TRACE_MODULE_APP, "FiRa %s Controlee SEQ NUM %u\r\n", work_mode_table[work_mode_idx],
                                 ranging_env.range_data.sequence_num);
#endif
                        // clear last round measurement
@@ -205,7 +212,8 @@
#if MCTT_TEST_EN == 0
                        LOG_INFO(TRACE_MODULE_APP, "CH Freq Offset %d\r\n", ranging_env.freq_offset_filter);
#endif
#if XTAL_AUTO_TUNE_EN
#if (X38M4_AUTO_TUNE_EN == 1)
                        int32_t ppm = ranging_env.freq_offset_filter / (int32_t)(ch_center_freq_map[uwb_app_config.ppdu_params.ch_num] * 1e-6);
                        calib_xtal38m4_load_cap_auto_tune(ppm);
#endif
@@ -213,7 +221,7 @@
                    if (ind->ranging_stage == RANGING_RIM || ind->ranging_stage == RANGING_RRM)
                    {
                        struct RANGING_MEASUREMENT_T *range_result = 0;
                        struct TWR_MEASUREMENT_T *range_result = 0;
                        if (ind->ranging_stage == RANGING_RIM)
                        {
                            range_result = &ranging_env.range_data.measurements[0];
@@ -326,7 +334,7 @@
                    }
                    else if (ind->ranging_stage == RANGING_RFM)
                    {
                        struct RANGING_MEASUREMENT_T *range_result = &ranging_env.range_data.measurements[0];
                        struct TWR_MEASUREMENT_T *range_result = &ranging_env.range_data.measurements[0];
                        uint8_t NLoS, FoM;
                        ranging_fom_get(&NLoS, &FoM);
                        if (NLoS > range_result->NLoS)
@@ -369,7 +377,7 @@
                        if (res)
                        {
                            // LOG_INFO(TRACE_MODULE_APP, "ToF %d\r\n", ranging_env.tof);
                            struct RANGING_MEASUREMENT_T *range_result = &ranging_env.range_data.measurements[0];
                            struct TWR_MEASUREMENT_T *range_result = &ranging_env.range_data.measurements[0];
                            ranging_env.range_data.measurements_num = 1;
                            range_result->status = STATUS_OK;
@@ -410,9 +418,15 @@
                                     range_result->distance, mk_q7_to_s16(range_result->aoa_azimuth), mk_q7_to_s16(range_result->aoa_elevation),
                                     range_result->aoa_azimuth_fom);
#elif AOA_EN
#if MCTT_TEST_EN
                            LOG_INFO(TRACE_NO_OPTION, "dt.%d.%d.%d\r\n", range_result->distance, mk_q7_to_s16(range_result->aoa_azimuth),
                                     mk_q7_to_s16(range_result->aoa_elevation));
#else
                            LOG_INFO(TRACE_NO_REPORT_HOST | TRACE_MODULE_APP, "Distance %ucm, AoA Azimuth %d Elevation %d Azimuth FoM %u\r\n",
                                     range_result->distance, mk_q7_to_s16(range_result->aoa_azimuth), mk_q7_to_s16(range_result->aoa_elevation),
                                     range_result->aoa_azimuth_fom);
#endif
#else
                            LOG_INFO(TRACE_NO_REPORT_HOST | TRACE_MODULE_APP, "Distance %ucm\r\n", (int16_t)range_result->distance);
#endif
@@ -435,6 +449,10 @@
                            // int8_t expected_rssi = ranging_expected_rssi_get(ranging_tx_power_get(), range_result->distance, 2, 0);
                            // LOG_INFO(TRACE_MODULE_APP, "Expected RSSI: %ddBm\r\n", expected_rssi);
                            // calculate_first_tap_power(1, 2);
                            // print_preamble_chest(ranging_env.range_data.sequence_num, 1, 2);
                            // print_sts_ch_taps(1, 2);
                        }
                    }
@@ -442,20 +460,14 @@
#if MCTT_TEST_EN
                    if (ind->ranging_stage == RANGING_RCM || ind->ranging_stage == RANGING_MRM || ind->ranging_stage == RANGING_RRRM)
                    {
                        if (ind->ranging_stage != RANGING_RRRM)
                        {
                            LOG_INFO(TRACE_NO_LEVEL_TAG | TRACE_NO_MODULE_NAME, "r%s tp=%x,%x,%x,%d\r\n", fira_fsm_table[stage_idx], ind->timestamp,
                                     ind->phy_header, ranging_env.phy_sts_index, ind->slot_idx);
                        }
                        else
                        {
                            LOG_INFO(TRACE_NO_LEVEL_TAG | TRACE_NO_MODULE_NAME, "r%s,%x,%x,%d\r\n", fira_fsm_table[stage_idx], ind->phy_header,
                                     ranging_env.phy_sts_index, ind->slot_idx);
                        }
                        // uint32_t sts_index = fira_key.phyStsIdxInit + ranging_env.curr_round_index * uwb_app_config.session_param.slots_per_round;
                        LOG_INFO(TRACE_NO_LEVEL_TAG | TRACE_NO_MODULE_NAME, "r%s tp=%x,%x,%x,%d\r\n", fira_fsm_table[stage_idx], ind->timestamp,
                                 ind->phy_header, ranging_env.phy_sts_index, ind->slot_idx);
                    }
                    else
                    {
                        LOG_INFO(TRACE_NO_LEVEL_TAG | TRACE_NO_MODULE_NAME, "r%s\r\n", fira_fsm_table[stage_idx]);
                        LOG_INFO(TRACE_NO_LEVEL_TAG | TRACE_NO_MODULE_NAME, "r%s tp=%x,%x,%x\r\n", fira_fsm_table[stage_idx], ind->timestamp,
                                 ranging_env.curr_round_index, ranging_env.range_data.sequence_num);
                    }
#else
#if DYNAMIC_UPDATE_MAIN_ANTENNA_EN
@@ -489,6 +501,11 @@
                        if ((payload_print_len + ind->rx_len) < PAYLOAD_BUF_MAX)
                        {
                            memcpy(payload_print_buf + payload_print_len, ind->rx_data, ind->rx_len);
                            if (uwb_app_config.session_param.sts_config == STS_DYNAMIC)
                            {
                                extern uint8_t vendor_oui_output[16];
                                memcpy(payload_print_buf + payload_print_len + 10, vendor_oui_output, 16);
                            }
                            payload_print_len += ind->rx_len;
                        }
                        else
@@ -520,6 +537,10 @@
                    {
                        // output result (notify)
                        uwbapi_report_ranging_data(&ranging_env.range_data);
                        // calculate_first_tap_power(0, 1);
                        // print_preamble_chest(ranging_env.range_data.sequence_num, 0, 1);
                        // print_sts_ch_taps(0, 1);
                    }
                }
            }