diff --git a/radio/fhi_72/README.md b/radio/fhi_72/README.md index 48e21220fb..e161ceaf40 100644 --- a/radio/fhi_72/README.md +++ b/radio/fhi_72/README.md @@ -46,5 +46,5 @@ For PUSCH/PRACH, `oran_fh_if4p5_south_in()` calls `xran_fh_rx_read_slot()`/ This is done through either a message queue, or through polling, which in both cases depends on xran calling the callbacks `oai_xran_fh_rx_callback()`/ `oai_xran_fh_rx_prach_callback()` as installed during xran initialization. -Once unblocked, it reads first PRACH data, then PUSCH data, before returning to +Once unblocked, it reads first PUSCH data, then PRACH data, before returning to OAI. diff --git a/radio/fhi_72/oran_isolate.c b/radio/fhi_72/oran_isolate.c index 29da80a979..4f45a6cf18 100644 --- a/radio/fhi_72/oran_isolate.c +++ b/radio/fhi_72/oran_isolate.c @@ -277,19 +277,7 @@ void oran_fh_if4p5_south_in(RU_t *ru, int *frame, int *slot) .prach_buf = NULL, }; - /* Firstly, process PRACH packets */ - int f_prach, sl_prach; -#if defined F_RELEASE - // no PRACH callback (no queue) in F release so use the expected combination - f_prach = *frame; - sl_prach = *slot; -#endif - ret = xran_fh_rx_prach_read_slot(ru->gNB_list[0], &ru_info, &f_prach, &sl_prach); - if (ret != 0) { - printf("ORAN: %d.%d ORAN_fh_if4p5_south_in ERROR in RX PRACH function \n", f_prach, sl_prach); - } - - /* Secondly, process PUSCH packets */ + /* Firstly, process PUSCH packets */ RU_proc_t *proc = &ru->proc; // to check if (frame,slot) combination corresponds to the expected PUSCH one int f, sl; LOG_D(HW, "Read rxdataF %p,%p\n", ru_info.rxdataF[0], ru_info.rxdataF[1]); @@ -301,6 +289,18 @@ void oran_fh_if4p5_south_in(RU_t *ru, int *frame, int *slot) printf("ORAN: %d.%d ORAN_fh_if4p5_south_in ERROR in RX function \n", f, sl); } + /* Secondly, process PRACH packets */ + int f_prach, sl_prach; +#if defined F_RELEASE + // no PRACH callback (no queue) in F release so use the expected combination + f_prach = *frame; + sl_prach = *slot; +#endif + ret = xran_fh_rx_prach_read_slot(ru->gNB_list[0], &ru_info, &f_prach, &sl_prach); + if (ret != 0) { + printf("ORAN: %d.%d ORAN_fh_if4p5_south_in ERROR in RX PRACH function \n", f_prach, sl_prach); + } + int slots_per_frame = 10 << (ru->openair0_cfg.nr_scs_for_raster); proc->tti_rx = sl; proc->frame_rx = f;