| | |
| | | void ul_tdoa_process(const struct MAC_HW_REPORT_T *ind) |
| | | { |
| | | enum DEV_ROLE_T role = uwb_app_config.session_param.device_role; |
| | | // Power off radio |
| | | power_off_radio(); |
| | | |
| | | if (role == DEV_ROLE_UT_SYNC_ANCHOR) |
| | | { |
| | | if (ul_tdoa_env.stage == UL_TDOA_LISTEN) |
| | |
| | | if (count > MS_TO_PHY_TIMER_COUNT(2)) |
| | | { |
| | | ul_tdoa_env.stage = UL_TDOA_LISTEN; |
| | | power_on_radio(0, 1); |
| | | mac_rx(EVT_MODE_MAC_PHY_ASAP, 0, count - MS_TO_PHY_TIMER_COUNT(2)); |
| | | mac_start(); |
| | | } |
| | |
| | | { |
| | | ul_tdoa_env.stage = UL_TDOA_TX_SYNC; |
| | | phy_timer_target_set(ul_tdoa_env.anchor_point + ul_tdoa_env.tx_offset - UWB_PERIOD_PREFETCH_TIME, ul_tdoa_timer_callback); |
| | | power_off_radio(); |
| | | } |
| | | } |
| | | else if (role == DEV_ROLE_UT_TAG) |
| | |
| | | ul_tdoa_env.anchor_point += ul_tdoa_env.ranging_period; |
| | | |
| | | phy_timer_target_set(ul_tdoa_env.anchor_point + ul_tdoa_env.tx_offset - UWB_PERIOD_PREFETCH_TIME, ul_tdoa_timer_callback); |
| | | power_off_radio(); |
| | | |
| | | LOG_INFO(TRACE_MODULE_APP, "UL-TDoA TX Blink %u\r\n", ul_tdoa_env.sequence_num); |
| | | } |
| | |
| | | ul_tdoa_rx_ind(ind->err_code, ind->pkt_data, ind->pkt_len, timestamp); |
| | | } |
| | | |
| | | power_on_radio(0, 1); |
| | | mac_rx(EVT_MODE_MAC_PHY_ASAP, 0, ul_tdoa_env.random_window); |
| | | mac_start(); |
| | | } |