| | |
| | | #include "board.h" |
| | | |
| | | #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]; |
| | |
| | | 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); |
| | | // pdoa_angle_reverse_set(1, 0); |
| | | #endif |
| | | |
| | |
| | | ranging_user_pkt.msg.result_msg[0] = responder_id & 0xff; |
| | | ranging_user_pkt.msg.result_msg[1] = (responder_id >> 8) & 0xff; |
| | | |
| | | 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_user_pkt.msg.result_msg[2] = range_result->distance & 0xff; |
| | | ranging_user_pkt.msg.result_msg[3] = (range_result->distance >> 8) & 0xff; |
| | | |
| | |
| | | |
| | | target_time = ranging_env.anchor_point - LPM_PPM_COMPENSATION(LOW_POWER_CLOCK_PPM, uwb_app_config.session_param.ranging_interval); |
| | | mac_rx(EVT_MODE_MAC_ASAP_PHY_FIX, target_time - UWB_RX_OPEN_IN_ADVANCE, |
| | | UWB_RX_WINDOW + LPM_PPM_COMPENSATION(LOW_POWER_CLOCK_PPM, uwb_app_config.session_param.ranging_interval)); |
| | | UWB_RX_WINDOW + 2 * LPM_PPM_COMPENSATION(LOW_POWER_CLOCK_PPM, uwb_app_config.session_param.ranging_interval)); |
| | | power_mode_request(POWER_UNIT_APP, POWER_MODE_SLEEP); |
| | | ranging_env.responder_final_flag = 0; |
| | | } |
| | |
| | | #if RANGING_FOM_FILTER_EN |
| | | // update response taps |
| | | ranging_env.frame[responder_idx].fap_valid = |
| | | first_path_align(ranging_env.frame[responder_idx].gaps, &ranging_env.frame[responder_idx].gaps_num, debug_csi.rframe[0].cir, |
| | | debug_csi.rframe[0].first_tap, PWR_TH, TAP_MARGIN); |
| | | first_path_align(ranging_env.frame[responder_idx].gaps, &ranging_env.frame[responder_idx].gaps_num, debug_csi.frame[0].cir, |
| | | debug_csi.frame[0].first_tap, PWR_TH, TAP_MARGIN); |
| | | #endif |
| | | } |
| | | } |
| | |
| | | ind->hdr.event = UWB_PKT_RX_DONE_MSG; |
| | | ind->ranging_stage = (uint8_t)stage; |
| | | 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->err_code == UWB_RX_OK) |
| | | { |
| | |
| | | if (ranging_debug_csi_en_get()) |
| | | { |
| | | uint8_t frame_idx = (ind->ranging_stage == RANGING_FINAL ? 1 : 0); |
| | | |
| | | debug_csi.antenna = ranging_env.main_ant_id; |
| | | debug_csi.frame_idx = frame_idx; |
| | | debug_csi.rframe_idx = frame_idx; |
| | | |
| | | uint32_t val = REG_READ(0x40003050); |
| | | debug_csi.frame[frame_idx].rf_gain = (val & 0x07); |
| | |
| | | { |
| | | debug_csi.frame[frame_idx].rssi = ind->rssi; |
| | | debug_csi.frame[frame_idx].snr = ind->snr; |
| | | |
| | | debug_csi.frame[frame_idx].channel_power = REG_READ(0x40002064); |
| | | debug_csi.frame[frame_idx].noise_power = REG_READ(0x40002078); |
| | | dump_preamble_cir(frame_idx, 128); |
| | | dump_sts_cir(frame_idx); |
| | | } |