Commit 5e6fd58d authored by Jaroslava Fiedlerova's avatar Jaroslava Fiedlerova Committed by Robert Schmidt

Merge remote-tracking branch 'origin/cleanup-split8-api' into integration_2026_w14 (!4023)

Cleanup common_lib.h

This change reduces the number of dependecies of common_lib.h and simplifies
the task of implementing an external OAI radio library.
parents 978932e5 e4d2d2b8
...@@ -3,8 +3,7 @@ ...@@ -3,8 +3,7 @@
*/ */
#include <common/utils/simple_executable.h> #include <common/utils/simple_executable.h>
#include "notified_fifo.h"
#include "thread-pool.h"
#define SEP "\t" #define SEP "\t"
......
...@@ -300,8 +300,6 @@ void init_UE(int nb_inst, ...@@ -300,8 +300,6 @@ void init_UE(int nb_inst,
UE_thread, UE_thread,
(void *)UE), ""); (void *)UE), "");
} }
printf("UE threads created by %ld\n", gettid());
} }
// Initiating all UEs within a single set of threads for PHY_STUB. Future extensions -> multiple // Initiating all UEs within a single set of threads for PHY_STUB. Future extensions -> multiple
......
...@@ -1015,7 +1015,6 @@ int nr_start_if(struct RU_t_s *ru, struct PHY_VARS_gNB_s *gNB) { ...@@ -1015,7 +1015,6 @@ int nr_start_if(struct RU_t_s *ru, struct PHY_VARS_gNB_s *gNB) {
for (int i = 0; i < ru->nb_rx; i++) for (int i = 0; i < ru->nb_rx; i++)
ru->openair0_cfg.rxbase[i] = ru->common.rxdata[i]; ru->openair0_cfg.rxbase[i] = ru->common.rxdata[i];
ru->openair0_cfg.rxsize = ru->nr_frame_parms->samples_per_subframe*10; ru->openair0_cfg.rxsize = ru->nr_frame_parms->samples_per_subframe*10;
reset_meas(&ru->ifdevice.tx_fhaul);
return ru->ifdevice.trx_start_func(&ru->ifdevice); return ru->ifdevice.trx_start_func(&ru->ifdevice);
} }
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
#include "nr-ue-ru.h" #include "nr-ue-ru.h"
#include "nr-uesoftmodem.h" #include "nr-uesoftmodem.h"
#include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h" #include "PHY/NR_UE_TRANSPORT/nr_transport_proto_ue.h"
#include "common/config/config_paramdesc.h"
#include "common/config/config_userapi.h"
/* NR UE RU configuration section name */ /* NR UE RU configuration section name */
#define CONFIG_STRING_NRUE_RU_LIST "RUs" #define CONFIG_STRING_NRUE_RU_LIST "RUs"
......
...@@ -441,7 +441,6 @@ int main(int argc, char **argv) ...@@ -441,7 +441,6 @@ int main(int argc, char **argv)
LOG_I(PHY,"Intializing UE Threads for instance %d ...\n", inst); LOG_I(PHY,"Intializing UE Threads for instance %d ...\n", inst);
init_NR_UE_threads(PHY_vars_UE_g[inst][0]); init_NR_UE_threads(PHY_vars_UE_g[inst][0]);
} }
printf("UE threads created by %ld\n", gettid());
// wait for end of program // wait for end of program
printf("TYPE <CTRL-C> TO TERMINATE\n"); printf("TYPE <CTRL-C> TO TERMINATE\n");
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "position_interface.h" #include "position_interface.h"
#include "executables/nr-uesoftmodem.h" #include "executables/nr-uesoftmodem.h"
#include "common/config/config_userapi.h"
static void read_position_coordinates(char *sectionName, position_t *position) static void read_position_coordinates(char *sectionName, position_t *position)
{ {
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "nrLDPC_cnProc.h" #include "nrLDPC_cnProc.h"
#include "nrLDPC_bnProc.h" #include "nrLDPC_bnProc.h"
#include "openair1/PHY/CODING/coding_defs.h" #include "openair1/PHY/CODING/coding_defs.h"
#include "log.h"
#define UNROLL_CN_PROC 1 #define UNROLL_CN_PROC 1
#define UNROLL_BN_PROC 1 #define UNROLL_BN_PROC 1
#define UNROLL_BN_PROC_PC 1 #define UNROLL_BN_PROC_PC 1
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "openair2/COMMON/prs_nr_paramdef.h" #include "openair2/COMMON/prs_nr_paramdef.h"
#include "SCHED_NR_UE/harq_nr.h" #include "SCHED_NR_UE/harq_nr.h"
#include "nr-uesoftmodem.h" #include "nr-uesoftmodem.h"
#include "common/config/config_userapi.h"
void RCconfig_nrUE_prs(void *cfg) void RCconfig_nrUE_prs(void *cfg)
{ {
......
...@@ -7,6 +7,7 @@ extern "C" { ...@@ -7,6 +7,7 @@ extern "C" {
#include <stdlib.h> #include <stdlib.h>
#include "openair1/PHY/defs_nr_common.h" #include "openair1/PHY/defs_nr_common.h"
#include "openair1/PHY/INIT/nr_parms.h" #include "openair1/PHY/INIT/nr_parms.h"
#include "common/config/config_userapi.h"
static softmodem_params_t softmodem_params; static softmodem_params_t softmodem_params;
softmodem_params_t *get_softmodem_params(void) softmodem_params_t *get_softmodem_params(void)
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "common/platform_types.h" #include "common/platform_types.h"
//#include "dci.h" //#include "dci.h"
#include "PHY/LTE_TRANSPORT/uci_NB_IoT.h" #include "PHY/LTE_TRANSPORT/uci_NB_IoT.h"
#include "common/cmake_defs.h"
//#include "dci.h" //#include "dci.h"
//#include "uci.h" //#include "uci.h"
//#ifndef STANDALONE_COMPILE //#ifndef STANDALONE_COMPILE
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "dci.h" #include "dci.h"
#include "mdci.h" #include "mdci.h"
#include "uci_common.h" #include "uci_common.h"
#include "common/cmake_defs.h"
//#ifndef STANDALONE_COMPILE //#ifndef STANDALONE_COMPILE
// #include "UTIL/LISTS/list.h" // #include "UTIL/LISTS/list.h"
//#endif //#endif
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "PHY/NR_REFSIG/ss_pbch_nr.h" #include "PHY/NR_REFSIG/ss_pbch_nr.h"
#include "PHY/NR_REFSIG/dmrs_nr.h" #include "PHY/NR_REFSIG/dmrs_nr.h"
#include "log.h"
#include "nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h" #include "nfapi/open-nFAPI/nfapi/public_inc/nfapi_nr_interface.h"
uint8_t allowed_xlsch_re_in_dmrs_symbol(uint16_t k, uint8_t allowed_xlsch_re_in_dmrs_symbol(uint16_t k,
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <math.h> #include <math.h>
#include "defs.h" #include "defs.h"
#include "log.h"
#include "PHY/NR_REFSIG/ul_ref_seq_nr.h" #include "PHY/NR_REFSIG/ul_ref_seq_nr.h"
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "nr_transport_common_proto.h" #include "nr_transport_common_proto.h"
#include "PHY/CODING/coding_defs.h" #include "PHY/CODING/coding_defs.h"
#include "PHY/defs_nr_common.h" #include "PHY/defs_nr_common.h"
#include "log.h"
uint32_t uint32_t
nr_get_G(uint16_t nb_rb, uint16_t nb_symb_sch, uint8_t nb_re_dmrs, uint16_t length_dmrs, uint32_t unav_res, uint8_t Qm, uint8_t Nl) nr_get_G(uint16_t nb_rb, uint16_t nb_symb_sch, uint8_t nb_re_dmrs, uint16_t length_dmrs, uint32_t unav_res, uint8_t Qm, uint8_t Nl)
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include <stdlib.h> #include <stdlib.h>
#include "common/utils/system.h" #include "common/utils/system.h"
#include "common/utils/utils.h"
#include "common/utils/LOG/log.h"
#include "executables/softmodem-common.h" #include "executables/softmodem-common.h"
#include "executables/nr-softmodem-common.h" #include "executables/nr-softmodem-common.h"
#include <forms.h> #include <forms.h>
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <executables/softmodem-common.h> #include <executables/softmodem-common.h>
#include <openair1/PHY/TOOLS/calibration_scope.h> #include <openair1/PHY/TOOLS/calibration_scope.h>
#include "nfapi/oai_integration/vendor_ext.h" #include "nfapi/oai_integration/vendor_ext.h"
#include "common/config/config_userapi.h"
int oai_exit=false; int oai_exit=false;
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
//#include <complex.h> //#include <complex.h>
#include "assertions.h" #include "assertions.h"
#include "common/utils/LOG/log.h" #include "common/utils/LOG/log.h"
#include "common/cmake_defs.h"
#define msg(aRGS...) LOG_D(PHY, ##aRGS) #define msg(aRGS...) LOG_D(PHY, ##aRGS)
//use msg in the real-time thread context //use msg in the real-time thread context
#define msg_nrt printf #define msg_nrt printf
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "nfapi_nr_interface_scf.h" #include "nfapi_nr_interface_scf.h"
#include "common/utils/threadPool/task_ans.h" #include "common/utils/threadPool/task_ans.h"
#include "common/utils/threadPool/thread-pool.h" #include "common/utils/threadPool/thread-pool.h"
#include "common/utils/threadPool/notified_fifo.h"
#define MAX_BANDS_PER_RRU 4 #define MAX_BANDS_PER_RRU 4
#define MAX_RRU_CONFIG_SIZE 1024 #define MAX_RRU_CONFIG_SIZE 1024
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
#include "common/utils/ocp_itti/intertask_interface.h" #include "common/utils/ocp_itti/intertask_interface.h"
#include "openair2/GNB_APP/gnb_paramdef.h" #include "openair2/GNB_APP/gnb_paramdef.h"
#include "openair3/ocp-gtpu/gtp_itf.h" #include "openair3/ocp-gtpu/gtp_itf.h"
#include "common/config/config_paramdesc.h"
#include "common/config/config_userapi.h"
static void get_NGU_S1U_addr(char **addr, uint16_t *port) static void get_NGU_S1U_addr(char **addr, uint16_t *port)
{ {
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "common/config/config_paramdesc.h" #include "common/config/config_paramdesc.h"
#include "sctp_default_values.h" #include "sctp_default_values.h"
#include "gnb_paramdef.h" #include "gnb_paramdef.h"
#include "common/config/config_userapi.h"
int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i) int RCconfig_NR_NG(MessageDef *msg_p, uint32_t i)
{ {
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
#include "LTE_PMCH-InfoList-r9.h" #include "LTE_PMCH-InfoList-r9.h"
#include "openair3/SECU/secu_defs.h" #include "openair3/SECU/secu_defs.h"
#include "common/utils/threadPool/notified_fifo.h"
#define MAX_NUMBER_NETIF 1 //16 #define MAX_NUMBER_NETIF 1 //16
#define ENB_NAS_USE_TUN_W_MBMS_BIT (1<< 10) #define ENB_NAS_USE_TUN_W_MBMS_BIT (1<< 10)
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "openair1/PHY/defs_gNB.h" #include "openair1/PHY/defs_gNB.h"
#include "common/ran_context.h" #include "common/ran_context.h"
#include "positioning_nr_paramdef.h" #include "positioning_nr_paramdef.h"
#include "common/config/config_userapi.h"
positioning_config_t RCconfig_nr_positioning(void) positioning_config_t RCconfig_nr_positioning(void)
{ {
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include <libbladeRF.h> #include <libbladeRF.h>
#include "common_lib.h" #include "common_lib.h"
#include "log.h"
/*! \brief BladeRF specific data structure */ /*! \brief BladeRF specific data structure */
typedef struct { typedef struct {
......
...@@ -17,6 +17,9 @@ ...@@ -17,6 +17,9 @@
#include "common/utils/load_module_shlib.h" #include "common/utils/load_module_shlib.h"
#include "common/utils/LOG/log.h" #include "common/utils/LOG/log.h"
#include "executables/softmodem-common.h" #include "executables/softmodem-common.h"
#include "common/config/config_paramdesc.h"
#include "common/config/config_userapi.h"
#include "common/cmake_defs.h"
#define MAX_GAP 100ULL #define MAX_GAP 100ULL
const char *const devtype_names[MAX_RF_DEV_TYPE] = const char *const devtype_names[MAX_RF_DEV_TYPE] =
...@@ -224,6 +227,9 @@ int openair0_write_reorder_common(nrue_ru_write_t nrue_ru_write, ...@@ -224,6 +227,9 @@ int openair0_write_reorder_common(nrue_ru_write_t nrue_ru_write,
ctx->nextTS = timestamp; ctx->nextTS = timestamp;
pthread_mutex_init(&ctx->mutex_write, NULL); pthread_mutex_init(&ctx->mutex_write, NULL);
pthread_mutex_init(&ctx->mutex_store, NULL); pthread_mutex_init(&ctx->mutex_store, NULL);
for (int i = 0; i < WRITE_QUEUE_SZ; i++) {
ctx->queue[i].txp = malloc(sizeof(void *) * NB_ANTENNAS_TX);
}
ctx->initDone = true; ctx->initDone = true;
} }
if (pthread_mutex_trylock(&ctx->mutex_write) == 0) { if (pthread_mutex_trylock(&ctx->mutex_write) == 0) {
...@@ -270,8 +276,10 @@ void openair0_write_reorder_clear_context(openair0_device_t *device) ...@@ -270,8 +276,10 @@ void openair0_write_reorder_clear_context(openair0_device_t *device)
LOG_E(HW, "write_reorder_clear_context call while still writing on the device\n"); LOG_E(HW, "write_reorder_clear_context call while still writing on the device\n");
pthread_mutex_destroy(&ctx->mutex_write); pthread_mutex_destroy(&ctx->mutex_write);
pthread_mutex_lock(&ctx->mutex_store); pthread_mutex_lock(&ctx->mutex_store);
for (int i = 0; i < WRITE_QUEUE_SZ; i++) for (int i = 0; i < WRITE_QUEUE_SZ; i++) {
ctx->queue[i].active = false; ctx->queue[i].active = false;
free(ctx->queue[i].txp);
}
pthread_mutex_unlock(&ctx->mutex_store); pthread_mutex_unlock(&ctx->mutex_store);
pthread_mutex_destroy(&ctx->mutex_store); pthread_mutex_destroy(&ctx->mutex_store);
ctx->initDone = false; ctx->initDone = false;
......
...@@ -11,10 +11,8 @@ ...@@ -11,10 +11,8 @@
#include <stdint.h> #include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include <sys/types.h> #include <sys/types.h>
#include "common/cmake_defs.h" #include <stdbool.h>
#include <openair1/PHY/TOOLS/tools_defs.h>
#include "record_player.h" #include "record_player.h"
#include "common/utils/threadPool/notified_fifo.h"
/* default name of shared library implementing the radio front end */ /* default name of shared library implementing the radio front end */
#define OAI_RF_LIBNAME "oai_device" #define OAI_RF_LIBNAME "oai_device"
...@@ -140,14 +138,6 @@ typedef enum { ...@@ -140,14 +138,6 @@ typedef enum {
TX_GPIO_CHANGE = 0x1000, TX_GPIO_CHANGE = 0x1000,
} radio_tx_gpio_flag_t; } radio_tx_gpio_flag_t;
/*! \brief Structure used for initializing UDP read threads */
typedef struct {
openair0_device_t *device;
int thread_id;
pthread_t pthread;
notifiedFIFO_t *resp;
} udp_ctx_t;
typedef enum { typedef enum {
RU_GPIO_CONTROL_NONE, RU_GPIO_CONTROL_NONE,
RU_GPIO_CONTROL_GENERIC, RU_GPIO_CONTROL_GENERIC,
...@@ -351,7 +341,7 @@ typedef struct { ...@@ -351,7 +341,7 @@ typedef struct {
struct { struct {
bool active; bool active;
openair0_timestamp_t timestamp; openair0_timestamp_t timestamp;
void *txp[NB_ANTENNAS_TX]; void **txp;
int nsamps; int nsamps;
int nbAnt; int nbAnt;
int flags; int flags;
...@@ -393,9 +383,6 @@ struct openair0_device { ...@@ -393,9 +383,6 @@ struct openair0_device {
/*!brief pointer to FH state, used in ECPRI split 8*/ /*!brief pointer to FH state, used in ECPRI split 8*/
fhstate_t fhstate; fhstate_t fhstate;
/*!brief UDP TX thread context*/
udp_ctx_t **utx;
/*!brief Used in ECPRI split 8 to indicate numerator of sampling rate ratio*/ /*!brief Used in ECPRI split 8 to indicate numerator of sampling rate ratio*/
int sampling_rate_ratio_n; int sampling_rate_ratio_n;
...@@ -631,7 +618,6 @@ struct openair0_device { ...@@ -631,7 +618,6 @@ struct openair0_device {
void *(*get_internal_parameter)(char *id); void *(*get_internal_parameter)(char *id);
/* \brief timing statistics for TX fronthaul (ethernet) /* \brief timing statistics for TX fronthaul (ethernet)
*/ */
time_stats_t tx_fhaul;
re_order_t reOrder; re_order_t reOrder;
}; };
...@@ -689,10 +675,6 @@ extern void iqrecorder_end(openair0_device_t *device); ...@@ -689,10 +675,6 @@ extern void iqrecorder_end(openair0_device_t *device);
int openair0_write_reorder(openair0_device_t *device, openair0_timestamp_t timestamp, void **txp, int nsamps, int nbAnt, int flags); int openair0_write_reorder(openair0_device_t *device, openair0_timestamp_t timestamp, void **txp, int nsamps, int nbAnt, int flags);
void openair0_write_reorder_clear_context(openair0_device_t *device); void openair0_write_reorder_clear_context(openair0_device_t *device);
#include <unistd.h>
#ifndef gettid
#define gettid() syscall(__NR_gettid)
#endif
/**@}*/ /**@}*/
#ifdef __cplusplus #ifdef __cplusplus
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
#include "assertions.h" #include "assertions.h"
#include "common_lib.h" #include "common_lib.h"
#include "record_player.h" #include "record_player.h"
#include "common/config/config_paramdesc.h"
#include "common/config/config_userapi.h"
/*! \brief read the oai recorder or player configuration, called from common device code /*! \brief read the oai recorder or player configuration, called from common device code
* \param recplay_conf: store parameters * \param recplay_conf: store parameters
......
...@@ -9,8 +9,6 @@ ...@@ -9,8 +9,6 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <fcntl.h> #include <fcntl.h>
#include "common/config/config_paramdesc.h"
#include "common/config/config_userapi.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" extern "C"
......
...@@ -365,7 +365,8 @@ void *trx_eth_write_udp_cmd(udpTXelem_t *udpTXelem) ...@@ -365,7 +365,8 @@ void *trx_eth_write_udp_cmd(udpTXelem_t *udpTXelem)
int trx_eth_write_udp(openair0_device_t *device, openair0_timestamp_t timestamp, void **buff, int fd_ind, int nsamps, int flags, int nant) int trx_eth_write_udp(openair0_device_t *device, openair0_timestamp_t timestamp, void **buff, int fd_ind, int nsamps, int flags, int nant)
{ {
union udpTXReqUnion id = {.s={(uint64_t)timestamp,nsamps,0}}; union udpTXReqUnion id = {.s={(uint64_t)timestamp,nsamps,0}};
notifiedFIFO_elt_t *req=newNotifiedFIFO_elt(sizeof(udpTXelem_t), id.p, device->utx[fd_ind]->resp,NULL); eth_state_t *eth = (eth_state_t*)device->priv;
notifiedFIFO_elt_t *req=newNotifiedFIFO_elt(sizeof(udpTXelem_t), id.p, eth->utx[fd_ind]->resp,NULL);
udpTXelem_t * udptxelem=(udpTXelem_t *) NotifiedFifoData(req); udpTXelem_t * udptxelem=(udpTXelem_t *) NotifiedFifoData(req);
udptxelem->device = device; udptxelem->device = device;
udptxelem->timestamp = timestamp; udptxelem->timestamp = timestamp;
...@@ -375,7 +376,7 @@ int trx_eth_write_udp(openair0_device_t *device, openair0_timestamp_t timestamp, ...@@ -375,7 +376,7 @@ int trx_eth_write_udp(openair0_device_t *device, openair0_timestamp_t timestamp,
udptxelem->nsamps = nsamps; udptxelem->nsamps = nsamps;
udptxelem->flags = flags; udptxelem->flags = flags;
udptxelem->nant = nant; udptxelem->nant = nant;
pushNotifiedFIFO(device->utx[fd_ind]->resp, req); pushNotifiedFIFO(eth->utx[fd_ind]->resp, req);
LOG_D(PHY,"Pushed to TX FH FIFO, TS %llu, nsamps %d, nant %d buffs[0] %p buffs[1] %p\n", LOG_D(PHY,"Pushed to TX FH FIFO, TS %llu, nsamps %d, nant %d buffs[0] %p buffs[1] %p\n",
(unsigned long long)timestamp,nsamps,nant,udptxelem->buff[0],udptxelem->buff[1]); (unsigned long long)timestamp,nsamps,nant,udptxelem->buff[0],udptxelem->buff[1]);
return(0); return(0);
...@@ -386,14 +387,11 @@ void *udp_write_thread(void *arg) { ...@@ -386,14 +387,11 @@ void *udp_write_thread(void *arg) {
utx->resp = malloc(sizeof(*utx->resp)); utx->resp = malloc(sizeof(*utx->resp));
initNotifiedFIFO(utx->resp); initNotifiedFIFO(utx->resp);
LOG_D(PHY,"UDP write thread started on core %d\n",sched_getcpu()); LOG_D(PHY,"UDP write thread started on core %d\n",sched_getcpu());
reset_meas(&utx->device->tx_fhaul);
while (oai_exit == 0) { while (oai_exit == 0) {
notifiedFIFO_elt_t *res = pullNotifiedFIFO(utx->resp); notifiedFIFO_elt_t *res = pullNotifiedFIFO(utx->resp);
udpTXelem_t *udptxelem = (udpTXelem_t *)NotifiedFifoData(res); udpTXelem_t *udptxelem = (udpTXelem_t *)NotifiedFifoData(res);
LOG_D(PHY,"Pulled from TX FH FIFO, TS %llu, nsamps %d, nant %d\n",(unsigned long long)udptxelem->timestamp,udptxelem->nsamps,udptxelem->nant); LOG_D(PHY,"Pulled from TX FH FIFO, TS %llu, nsamps %d, nant %d\n",(unsigned long long)udptxelem->timestamp,udptxelem->nsamps,udptxelem->nant);
start_meas(&utx->device->tx_fhaul);
trx_eth_write_udp_cmd(udptxelem); trx_eth_write_udp_cmd(udptxelem);
stop_meas(&utx->device->tx_fhaul);
// send data to RU // send data to RU
delNotifiedFIFO_elt(res); delNotifiedFIFO_elt(res);
} }
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
* \brief API to stream I/Q samples over standard ethernet * \brief API to stream I/Q samples over standard ethernet
*/ */
#include "utils.h"
#include <arpa/inet.h> #include <arpa/inet.h>
#include <linux/if_packet.h> #include <linux/if_packet.h>
#include <stdio.h> #include <stdio.h>
...@@ -37,20 +38,30 @@ int trx_eth_start(openair0_device_t *device) ...@@ -37,20 +38,30 @@ int trx_eth_start(openair0_device_t *device)
AssertFatal(device->thirdparty_init != NULL, "device->thirdparty_init is null\n"); AssertFatal(device->thirdparty_init != NULL, "device->thirdparty_init is null\n");
AssertFatal(device->thirdparty_init(device) == 0, "third-party init failed\n"); AssertFatal(device->thirdparty_init(device) == 0, "third-party init failed\n");
device->openair0_cfg->samples_per_packet = 256; device->openair0_cfg->samples_per_packet = 256;
eth->num_fd = 1; //max(device->openair0_cfg->rx_num_channels,device->openair0_cfg->tx_num_channels); eth->num_fd = 1; //max(device->openair0_cfg->rx_num_channels,device->openair0_cfg->tx_num_channels);
udp_ctx_t *u[1+eth->num_fd]; udp_ctx_t *u[1 + eth->num_fd];
device->utx = (udp_ctx_t**)malloc(sizeof(device->utx)); eth->utx = malloc_or_fail(sizeof(eth->utx));
for (int i=0;i<eth->num_fd;i++) { for (int i = 0; i < eth->num_fd; i++) {
u[i] = malloc(sizeof(udp_ctx_t)); u[i] = malloc_or_fail(sizeof(udp_ctx_t));
u[i]->thread_id=i; u[i]->thread_id = i;
u[i]->device = device; u[i]->device = device;
printf("UDP Read Thread %d on core %d\n",i,device->openair0_cfg->rxfh_cores[i]); printf("UDP Read Thread %d on core %d\n", i, device->openair0_cfg->rxfh_cores[i]);
threadCreate(&u[i]->pthread,udp_read_thread,u[i],"udp read thread",device->openair0_cfg->rxfh_cores[i],OAI_PRIORITY_RT_MAX); threadCreate(&u[i]->pthread,
device->utx[i] = malloc(sizeof(udp_ctx_t)); udp_read_thread,
device->utx[i]->thread_id=i; u[i],
device->utx[i]->device = device; "udp read thread",
printf("UDP Write Thread %d on core %d\n",i,device->openair0_cfg->txfh_cores[i]); device->openair0_cfg->rxfh_cores[i],
threadCreate(&device->utx[i]->pthread,udp_write_thread,device->utx[i],"udp write thread",device->openair0_cfg->txfh_cores[i],OAI_PRIORITY_RT_MAX); OAI_PRIORITY_RT_MAX);
eth->utx[i] = malloc_or_fail(sizeof(udp_ctx_t));
eth->utx[i]->thread_id = i;
eth->utx[i]->device = device;
printf("UDP Write Thread %d on core %d\n", i, device->openair0_cfg->txfh_cores[i]);
threadCreate(&eth->utx[i]->pthread,
udp_write_thread,
eth->utx[i],
"udp write thread",
device->openair0_cfg->txfh_cores[i],
OAI_PRIORITY_RT_MAX);
} }
device->sampling_rate_ratio_n=1; device->sampling_rate_ratio_n=1;
device->sampling_rate_ratio_d=1; device->sampling_rate_ratio_d=1;
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <sys/socket.h> #include <sys/socket.h>
#include <net/if.h> #include <net/if.h>
#include <netinet/ether.h> #include <netinet/ether.h>
#include "common/utils/threadPool/notified_fifo.h"
#define MAX_INST 4 #define MAX_INST 4
...@@ -29,6 +30,14 @@ ...@@ -29,6 +30,14 @@
#define APP_HEADER_SIZE_BYTES (ECPRICOMMON_BYTES + ECPRIPCID_BYTES + sizeof(openair0_timestamp_t)) #define APP_HEADER_SIZE_BYTES (ECPRICOMMON_BYTES + ECPRIPCID_BYTES + sizeof(openair0_timestamp_t))
#define ECPRIREV 1 // ECPRI Version 1, C=0 - single ECPRI message per OAI TX packet #define ECPRIREV 1 // ECPRI Version 1, C=0 - single ECPRI message per OAI TX packet
/*! \brief Structure used for initializing UDP read threads */
typedef struct {
openair0_device_t *device;
int thread_id;
pthread_t pthread;
notifiedFIFO_t *resp;
} udp_ctx_t;
/*!\brief opaque ethernet data structure */ /*!\brief opaque ethernet data structure */
typedef struct { typedef struct {
...@@ -115,6 +124,8 @@ typedef struct { ...@@ -115,6 +124,8 @@ typedef struct {
struct ether_header ehd; struct ether_header ehd;
/*!\brief local address (user) for RAW socket*/ /*!\brief local address (user) for RAW socket*/
struct sockaddr_ll local_addrd_ll; struct sockaddr_ll local_addrd_ll;
/*!brief UDP TX thread context*/
udp_ctx_t **utx;
} eth_state_t; } eth_state_t;
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "noise_device.h" #include "noise_device.h"
#include "simde/x86/avx512.h" #include "simde/x86/avx512.h"
#include "SIMULATION/TOOLS/sim.h" #include "SIMULATION/TOOLS/sim.h"
#include "common/config/config_userapi.h"
#define RF_EMULATOR_SECTION "rf_emulator" #define RF_EMULATOR_SECTION "rf_emulator"
// clang-format off // clang-format off
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "stdio.h" #include "stdio.h"
#include "string.h" #include "string.h"
#include "log.h"
#ifdef OAI_MPLANE #ifdef OAI_MPLANE
#include "mplane/ru-mplane-api.h" #include "mplane/ru-mplane-api.h"
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "stdbool.h" #include "stdbool.h"
#include "stdint.h" #include "stdint.h"
#include "common/config/config_userapi.h"
#define CONFIG_STRING_ORAN "fhi_72" #define CONFIG_STRING_ORAN "fhi_72"
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include <common/utils/telnetsrv/telnetsrv.h> #include <common/utils/telnetsrv/telnetsrv.h>
#include <common/config/config_userapi.h> #include <common/config/config_userapi.h>
#include "common_lib.h" #include "common_lib.h"
#include "common/utils/threadPool/pthread_utils.h"
extern "C" { extern "C" {
#include <common/utils/load_module_shlib.h> #include <common/utils/load_module_shlib.h>
#include <openair1/SIMULATION/TOOLS/sim.h> #include <openair1/SIMULATION/TOOLS/sim.h>
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "openair2/E1AP/e1ap.h" #include "openair2/E1AP/e1ap.h"
#include "openair3/ocp-gtpu/gtp_itf.h" #include "openair3/ocp-gtpu/gtp_itf.h"
#include "openair2/E1AP/lib/e1ap_interface_management.h" #include "openair2/E1AP/lib/e1ap_interface_management.h"
#include "common/config/config_userapi.h"
configmodule_interface_t *uniqCfg; configmodule_interface_t *uniqCfg;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment