mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 04:30:28 +00:00
NR_gNB_PUCCH_job_t and NR_gNB_PUSCH_job_t which are stored in pucch_queue and pusch_queue and do not contain the information we need for fronthaul: rxdataF, and beam_id. All is stored in RU_t and can be obtained via RU_t *ru = RC.ru[0]; PHY_VARS_gNB *gNB = ru->gNB_list[0];which not ideal but does the job. The same lines are used in oai_xran_fh_rx_prach_callback(), except that prach_item_t (prach_buf, ant_start) is stored in prach_ru_queue and prach_l1rx_queue which allows extraction of the necessary data. Therefore, I decided to not reuse the same template as for PRACH, i.e. to create an additional queues for PUCCH/PUSCH. So I added just a bool, at least it only needs 1 byte. We shall assume that for any topology, other than split 7.2, PUCCH/PUSCH is always received in scheduled slots (which is also the current logic). We shall assume that for split 7.2, PUCCH/PUSCH can only be received if scheduled -> scheduled and not received can happen if the ethernet packet is not properly filled, e.g. numRB = 0, but pData != NULL. The reason we need this bool for 7.2 is that somehow we need to keep track between xran_thread and L1_tx_thread. For other topology, it shall keep track between ru_thread and L1_tx_thread. TODO: * delete oran_fh_if4p5_south_in and somehow align timing with RU_proc_t * better handle get_current_* (PUxCH/SRS) jobs Signed-off-by: Teodora Vladić <teodora.vladic@openairinterface.org>
44 lines
1.2 KiB
C
44 lines
1.2 KiB
C
/*
|
|
* SPDX-License-Identifier: LicenseRef-CSSL-1.0
|
|
*/
|
|
|
|
#ifndef _ORAN_ISOLATE_H_
|
|
#define _ORAN_ISOLATE_H_
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <pthread.h>
|
|
#include <stdint.h>
|
|
|
|
#include "xran_fh_o_du.h"
|
|
#include "openair1/PHY/impl_defs_nr.h"
|
|
#include "openair1/PHY/TOOLS/tools_defs.h"
|
|
#include "openair1/PHY/defs_nr_common.h"
|
|
#include "openair1/PHY/NR_TRANSPORT/nr_transport_proto.h"
|
|
|
|
/*
|
|
* Structure added to bear the information needed from OAI RU
|
|
*/
|
|
typedef struct ru_info_s {
|
|
int nb_rx; // to delete; but now needed for xran_send_cp_ul_slot()
|
|
|
|
// Needed for DL
|
|
int nb_tx;
|
|
int32_t **txdataF_BF;
|
|
|
|
/// \brief Anaglogue beam ID for each OFDM symbol (used when beamforming not done in RU)
|
|
/// - first index: symbol index [0.. symbols_per_frame)
|
|
/// - second index: beam_id [0..num_ports)
|
|
uint16_t **beam_id;
|
|
|
|
} ru_info_t;
|
|
|
|
void print_fhi_counters(ru_info_t *ru, const int frame, const int slot);
|
|
|
|
/** @brief Writes CP UL data for given slot. */
|
|
int xran_send_cp_ul_slot(ru_info_t *ru, int frame, int slot);
|
|
/** @brief Writes TX data (PDSCH) of given slot. */
|
|
int xran_fh_tx_send_slot(ru_info_t *ru, int frame, int slot, uint64_t timestamp);
|
|
|
|
#endif /* _ORAN_ISOLATE_H_ */
|