@@ -66,9 +66,14 @@ void upper_phy_rx_symbol_handler_impl::handle_rx_symbol(const upper_phy_rx_symbo
6666 }
6767
6868 const uplink_slot_pdu_entry& first_entry = pdus.front ();
69- unsigned nof_symbols =
70- get_nsymb_per_slot ((first_entry.type == uplink_slot_pdu_entry::pdu_type::PUSCH) ? first_entry.pusch .pdu .cp
71- : get_cp (first_entry.pucch ));
69+ unsigned nof_symbols = 0 ;
70+ if (variant_holds_alternative<uplink_processor::pusch_pdu>(first_entry)) {
71+ const uplink_processor::pusch_pdu& pdu = variant_get<uplink_processor::pusch_pdu>(first_entry);
72+ nof_symbols = get_nsymb_per_slot (pdu.pdu .cp );
73+ } else {
74+ const uplink_processor::pucch_pdu& pdu = variant_get<uplink_processor::pucch_pdu>(first_entry);
75+ nof_symbols = get_nsymb_per_slot (get_cp (pdu));
76+ }
7277 unsigned last_symbol_id = nof_symbols - 1U ;
7378
7479 // Process the PDUs when all symbols of the slot have been received.
@@ -81,13 +86,12 @@ void upper_phy_rx_symbol_handler_impl::handle_rx_symbol(const upper_phy_rx_symbo
8186
8287 // Process all the PDUs from the pool.
8388 for (const auto & pdu : pdus) {
84- switch (pdu.type ) {
85- case uplink_slot_pdu_entry::pdu_type::PUSCH:
86- process_pusch (pdu.pusch , ul_processor, grid, context.slot );
87- break ;
88- case uplink_slot_pdu_entry::pdu_type::PUCCH:
89- ul_processor.process_pucch (rx_results_notifier, grid, pdu.pucch );
90- break ;
89+ if (variant_holds_alternative<uplink_processor::pusch_pdu>(pdu)) {
90+ const uplink_processor::pusch_pdu& pusch_pdu = variant_get<uplink_processor::pusch_pdu>(pdu);
91+ process_pusch (pusch_pdu, ul_processor, grid, context.slot );
92+ } else if (variant_holds_alternative<uplink_processor::pucch_pdu>(pdu)) {
93+ const uplink_processor::pucch_pdu& pucch_pdu = variant_get<uplink_processor::pucch_pdu>(pdu);
94+ ul_processor.process_pucch (rx_results_notifier, grid, pucch_pdu);
9195 }
9296 }
9397}
0 commit comments