@@ -83,6 +83,11 @@ mac_to_fapi_translator::mac_to_fapi_translator(const mac_to_fapi_translator_conf
8383 srsran_assert (part2_mapper, " Invalid Part2 mapper" );
8484}
8585
86+ void mac_to_fapi_translator::stop ()
87+ {
88+ stop_manager.stop ();
89+ }
90+
8691template <typename builder_type, typename pdu_type>
8792static void add_pdcch_pdus_to_builder (builder_type& builder,
8893 span<const pdu_type> pdcch_info,
@@ -194,6 +199,13 @@ static void clear_dl_tti_pdus(fapi::dl_tti_request_message& msg)
194199
195200void mac_to_fapi_translator::on_new_downlink_scheduler_results (const mac_dl_sched_result& dl_res)
196201{
202+ stop_event_token token = stop_manager.get_token ();
203+ // Do not process results when the translator is not running.
204+ if (SRSRAN_UNLIKELY (token.is_stop_requested ())) {
205+ return ;
206+ }
207+
208+ stop_token = std::move (token);
197209 fapi::dl_tti_request_message msg;
198210 fapi::dl_tti_request_message_builder builder (msg);
199211
@@ -248,6 +260,14 @@ void mac_to_fapi_translator::on_new_downlink_scheduler_results(const mac_dl_sche
248260
249261void mac_to_fapi_translator::on_new_downlink_data (const mac_dl_data_result& dl_data)
250262{
263+ stop_event_token token = stop_manager.get_token ();
264+ // Do not process results when the translator is not running.
265+ if (SRSRAN_UNLIKELY (token.is_stop_requested ())) {
266+ return ;
267+ }
268+
269+ stop_token = std::move (token);
270+
251271 srsran_assert (!dl_data.si_pdus .empty () || !dl_data.rar_pdus .empty () || !dl_data.ue_pdus .empty () ||
252272 !dl_data.paging_pdus .empty (),
253273 " Received a mac_dl_data_result object with zero payloads" );
@@ -322,6 +342,14 @@ static void clear_ul_tti_pdus(fapi::ul_tti_request_message& msg)
322342
323343void mac_to_fapi_translator::on_new_uplink_scheduler_results (const mac_ul_sched_result& ul_res)
324344{
345+ stop_event_token token = stop_manager.get_token ();
346+ // Do not process results when the translator is not running.
347+ if (SRSRAN_UNLIKELY (token.is_stop_requested ())) {
348+ return ;
349+ }
350+
351+ stop_token = std::move (token);
352+
325353 fapi::ul_tti_request_message msg;
326354 fapi::ul_tti_request_message_builder builder (msg);
327355
@@ -407,4 +435,7 @@ void mac_to_fapi_translator::handle_ul_dci_request(span<const pdcch_ul_informati
407435void mac_to_fapi_translator::on_cell_results_completion (slot_point slot)
408436{
409437 last_msg_notifier.on_last_message (slot);
438+
439+ // Reset the stop token.
440+ stop_token.reset ();
410441}
0 commit comments