For the initialization of the xran library (split 7.2), we need some
parameters such as PRACH or frame config. However, to date,
initialization of split at level 7 use the split 8 openair0_config
structure, which does not have the necessary information.
Hence, add a single structure that contains that information.
* make a single call to various function
* make fill_rf_config() static, it is only used in this file
* do not initialize the number of antennas in openair0_cfg in
init_NR_RU(), as it is already done in fill_rf_config()
Harmonize the call to openair0_transport_load(), by putting it in a
single place instead of multiple calls
Further, delay the call to ru_thread, for two reasons:
1) it is somewhat "symmetric" with local RF, which is done there as well
2) for the xran library, we need to read some parameters such as PRACH,
frame format, etc. At the RU, the corresponding FAPI config request
parameter structure is copied from the gNB to RU at the beginning of
the ru_thread, so we have to wait for that to happen.
For FR2 and including analog beamforming, we control the beams via GPIO
on radio units.
In this commit, introduce a configuration option to switch the GPIO
control for different devices: "generic" is the current GPIO control,
"interdigital" configures the GPIO configuration to be used with an
InterDigital device.
- move following radios: AW2S, BladeRF, IRIS, LMSSDR, RFsimulator, USRP
- move following transports: Ethernet, benetel4g, benetel5g
- for each: create independent cmake variable to switch compilation
on/off, in order: OAI_AW2S, OAI_BLADERF, OAI_IRIS, OAI_LMSSDR,
OAI_SIMU, OAI_USRP, OAI_ETHERNET, OAI_BENETEL4G, OAI_BENETEL5G
- Remove RF_BOARD variable, allows to compile multiple boards at once
- where applicable: remove USERSPACE/LIB in path, i.e., move files up to
directories, as all are userspace libraries
Note that with the above, it is now mandatory to enable a radio
implementation before compiling it, e.g., for USRP:
./build_oai -w USRP
cmake .. -DOAI_USRP=ON && ninja oai_usrpdevif
reorder_thread_disable we use the native message queue and L1_rx_thread instead of the thread-pool for the main L1 thread. There is a single TX thread (no slot parallelization)
For some (unclear) reason, nr-softmodem with aw2s device does not print
"Bye." when stopping it with control+c, which is problematic in the CI.
This little hack solves the problem.
(Maybe not the right solution, to be changed if needed.)
If we do not stop RF after all threads, it can happen that the RF is
finished, but another thread of the RU (e.g., reorder thread) tries to
send out a package to the RF. This can lead to a segfault, as observed
in UHD, because we free all resources before reusing them.
This commit fixes this behavior.