nr scope as a dynamically loaded shared lib
This commit is contained in:
@@ -2730,7 +2730,7 @@ add_executable(nr-softmodem
|
|||||||
${OPENAIR_DIR}/common/utils/system.c
|
${OPENAIR_DIR}/common/utils/system.c
|
||||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||||
${GTPU_need_ITTI}
|
${GTPU_need_ITTI}
|
||||||
${XFORMS_SOURCE_NR}
|
${XFORMSINTERFACE_SOURCE}
|
||||||
${T_SOURCE}
|
${T_SOURCE}
|
||||||
${CONFIG_SOURCES}
|
${CONFIG_SOURCES}
|
||||||
${SHLIB_LOADER_SOURCES}
|
${SHLIB_LOADER_SOURCES}
|
||||||
@@ -2772,7 +2772,7 @@ add_executable(nr-uesoftmodem
|
|||||||
${OPENAIR_DIR}/common/utils/utils.c
|
${OPENAIR_DIR}/common/utils/utils.c
|
||||||
${OPENAIR_DIR}/common/utils/system.c
|
${OPENAIR_DIR}/common/utils/system.c
|
||||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||||
${XFORMS_SOURCE_NR}
|
${XFORMSINTERFACE_SOURCE}
|
||||||
${T_SOURCE}
|
${T_SOURCE}
|
||||||
${UTIL_SRC}
|
${UTIL_SRC}
|
||||||
${CONFIG_SOURCES}
|
${CONFIG_SOURCES}
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ unsigned short config_frames[4] = {2,9,11,13};
|
|||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include <openair2/GNB_APP/gnb_app.h>
|
#include <openair2/GNB_APP/gnb_app.h>
|
||||||
|
#include "PHY/TOOLS/phy_scope_interface.h"
|
||||||
#include "PHY/TOOLS/nr_phy_scope.h"
|
#include "PHY/TOOLS/nr_phy_scope.h"
|
||||||
#include "stats.h"
|
#include "stats.h"
|
||||||
#include "nr-softmodem.h"
|
#include "nr-softmodem.h"
|
||||||
@@ -156,7 +156,6 @@ char channels[128] = "0";
|
|||||||
|
|
||||||
int rx_input_level_dBm;
|
int rx_input_level_dBm;
|
||||||
|
|
||||||
uint32_t do_forms=0;
|
|
||||||
int otg_enabled;
|
int otg_enabled;
|
||||||
|
|
||||||
//int number_of_cards = 1;
|
//int number_of_cards = 1;
|
||||||
@@ -454,7 +453,11 @@ static void get_options(void) {
|
|||||||
|
|
||||||
paramdef_t cmdline_params[] = CMDLINE_PARAMS_DESC_GNB ;
|
paramdef_t cmdline_params[] = CMDLINE_PARAMS_DESC_GNB ;
|
||||||
|
|
||||||
|
CONFIG_SETRTFLAG(CONFIG_NOEXITONHELP);
|
||||||
|
get_common_options(SOFTMODEM_GNB_BIT );
|
||||||
config_process_cmdline( cmdline_params,sizeof(cmdline_params)/sizeof(paramdef_t),NULL);
|
config_process_cmdline( cmdline_params,sizeof(cmdline_params)/sizeof(paramdef_t),NULL);
|
||||||
|
CONFIG_CLEARRTFLAG(CONFIG_NOEXITONHELP);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -817,7 +820,6 @@ int main( int argc, char **argv )
|
|||||||
configure_linux();
|
configure_linux();
|
||||||
printf("Reading in command-line options\n");
|
printf("Reading in command-line options\n");
|
||||||
get_options ();
|
get_options ();
|
||||||
get_common_options(SOFTMODEM_GNB_BIT );
|
|
||||||
|
|
||||||
if (CONFIG_ISFLAGSET(CONFIG_ABORT) ) {
|
if (CONFIG_ISFLAGSET(CONFIG_ABORT) ) {
|
||||||
fprintf(stderr,"Getting configuration failed\n");
|
fprintf(stderr,"Getting configuration failed\n");
|
||||||
@@ -959,14 +961,14 @@ if(!IS_SOFTMODEM_NOS1)
|
|||||||
printf("RC.nb_RU:%d\n", RC.nb_RU);
|
printf("RC.nb_RU:%d\n", RC.nb_RU);
|
||||||
// once all RUs are ready initialize the rest of the gNBs ((dependence on final RU parameters after configuration)
|
// once all RUs are ready initialize the rest of the gNBs ((dependence on final RU parameters after configuration)
|
||||||
printf("ALL RUs ready - init gNBs\n");
|
printf("ALL RUs ready - init gNBs\n");
|
||||||
|
if(IS_SOFTMODEM_DOFORMS) {
|
||||||
if (do_forms==1) {
|
|
||||||
scopeParms_t p;
|
scopeParms_t p;
|
||||||
p.argc=&argc;
|
p.argc=&argc;
|
||||||
p.argv=argv;
|
p.argv=argv;
|
||||||
p.gNB=RC.gNB[0];
|
p.gNB=RC.gNB[0];
|
||||||
p.ru=RC.ru[0];
|
p.ru=RC.ru[0];
|
||||||
gNBinitScope(&p);
|
load_softscope("gnb",&p);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nfapi_mode != 1 && nfapi_mode != 2) {
|
if (nfapi_mode != 1 && nfapi_mode != 2) {
|
||||||
|
|||||||
@@ -19,21 +19,12 @@
|
|||||||
/*----------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
#define CMDLINE_PARAMS_DESC_GNB { \
|
#define CMDLINE_PARAMS_DESC_GNB { \
|
||||||
{"mmapped-dma", CONFIG_HLP_DMAMAP, PARAMFLAG_BOOL, uptr:&mmapped_dma, defintval:0, TYPE_INT, 0}, \
|
{"mmapped-dma", CONFIG_HLP_DMAMAP, PARAMFLAG_BOOL, uptr:&mmapped_dma, defintval:0, TYPE_INT, 0}, \
|
||||||
{"wait-for-sync", NULL, PARAMFLAG_BOOL, iptr:&wait_for_sync, defintval:0, TYPE_INT, 0}, \
|
|
||||||
{"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, TYPE_INT, 0}, \
|
{"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, TYPE_INT, 0}, \
|
||||||
{"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \
|
{"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \
|
||||||
{"C" , CONFIG_HLP_DLF, 0, u64ptr:&(downlink_frequency[0][0]), defuintval:DEFAULT_DLF, TYPE_UINT64, 0}, \
|
|
||||||
{"a" , CONFIG_HLP_CHOFF, 0, iptr:&chain_offset, defintval:0, TYPE_INT, 0}, \
|
|
||||||
{"d" , CONFIG_HLP_SOFTS, PARAMFLAG_BOOL, uptr:(uint32_t *)&do_forms, defintval:0, TYPE_INT8, 0}, \
|
|
||||||
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, i8ptr:&threequarter_fs, defintval:0, TYPE_INT8, 0}, \
|
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, i8ptr:&threequarter_fs, defintval:0, TYPE_INT8, 0}, \
|
||||||
{"K" , CONFIG_HLP_ITTIL, PARAMFLAG_NOFREE, strptr:&itti_dump_file, defstrval:"/tmp/itti.dump", TYPE_STRING, 0}, \
|
{"K" , CONFIG_HLP_ITTIL, PARAMFLAG_NOFREE, strptr:&itti_dump_file, defstrval:"/tmp/itti.dump", TYPE_STRING, 0}, \
|
||||||
{"m" , CONFIG_HLP_DLMCS, 0, uptr:&target_dl_mcs, defintval:0, TYPE_UINT, 0}, \
|
{"m" , CONFIG_HLP_DLMCS, 0, uptr:&target_dl_mcs, defintval:0, TYPE_UINT, 0}, \
|
||||||
{"t" , CONFIG_HLP_ULMCS, 0, uptr:&target_ul_mcs, defintval:0, TYPE_UINT, 0}, \
|
{"t" , CONFIG_HLP_ULMCS, 0, uptr:&target_ul_mcs, defintval:0, TYPE_UINT, 0}, \
|
||||||
{"q" , CONFIG_HLP_STMON, PARAMFLAG_BOOL, iptr:&opp_enabled, defintval:0, TYPE_INT, 0}, \
|
|
||||||
{"numerology" , CONFIG_HLP_NUMEROLOGY, PARAMFLAG_BOOL, iptr:&numerology, defintval:0, TYPE_INT, 0}, \
|
|
||||||
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0}, \
|
|
||||||
{"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0}, \
|
|
||||||
{"worker-config", CONFIG_HLP_WORKER_CMD, 0, strptr:(char **)&worker_config, defstrval:NULL, TYPE_STRING, 0}, \
|
|
||||||
{"usrp-tx-thread-config", CONFIG_HLP_USRP_THREAD, 0, iptr:&usrp_tx_thread, defstrval:0, TYPE_INT, 0}, \
|
{"usrp-tx-thread-config", CONFIG_HLP_USRP_THREAD, 0, iptr:&usrp_tx_thread, defstrval:0, TYPE_INT, 0}, \
|
||||||
{"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25, TYPE_DOUBLE, 0}, \
|
{"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25, TYPE_DOUBLE, 0}, \
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ unsigned short config_frames[4] = {2,9,11,13};
|
|||||||
|
|
||||||
//#include "stats.h"
|
//#include "stats.h"
|
||||||
// current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0)
|
// current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0)
|
||||||
|
#include "PHY/TOOLS/phy_scope_interface.h"
|
||||||
#include "PHY/TOOLS/nr_phy_scope.h"
|
#include "PHY/TOOLS/nr_phy_scope.h"
|
||||||
// at eNB 0, an UL scope for every UE
|
// at eNB 0, an UL scope for every UE
|
||||||
//FD_lte_phy_scope_enb *form_enb[MAX_NUM_CCs][NUMBER_OF_UE_MAX];
|
//FD_lte_phy_scope_enb *form_enb[MAX_NUM_CCs][NUMBER_OF_UE_MAX];
|
||||||
@@ -158,7 +159,7 @@ int rx_input_level_dBm;
|
|||||||
|
|
||||||
//static int online_log_messages=0;
|
//static int online_log_messages=0;
|
||||||
|
|
||||||
uint32_t do_forms=0;
|
|
||||||
int otg_enabled;
|
int otg_enabled;
|
||||||
//int number_of_cards = 1;
|
//int number_of_cards = 1;
|
||||||
|
|
||||||
@@ -761,8 +762,10 @@ int main( int argc, char **argv ) {
|
|||||||
memset (&UE_PF_PO[0][0], 0, sizeof(UE_PF_PO_t)*NUMBER_OF_UE_MAX*MAX_NUM_CCs);
|
memset (&UE_PF_PO[0][0], 0, sizeof(UE_PF_PO_t)*NUMBER_OF_UE_MAX*MAX_NUM_CCs);
|
||||||
configure_linux();
|
configure_linux();
|
||||||
mlockall(MCL_CURRENT | MCL_FUTURE);
|
mlockall(MCL_CURRENT | MCL_FUTURE);
|
||||||
if (do_forms)
|
|
||||||
nrUEinitScope(PHY_vars_UE_g[0][0]);
|
if(IS_SOFTMODEM_DOFORMS) {
|
||||||
|
load_softscope("gnb",PHY_vars_UE_g[0][0]);
|
||||||
|
}
|
||||||
number_of_cards = 1;
|
number_of_cards = 1;
|
||||||
|
|
||||||
for(int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
for(int CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
|
||||||
|
|||||||
@@ -61,19 +61,11 @@
|
|||||||
{"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, TYPE_INT, 0}, \
|
{"single-thread-disable", CONFIG_HLP_NOSNGLT, PARAMFLAG_BOOL, iptr:&single_thread_flag, defintval:1, TYPE_INT, 0}, \
|
||||||
{"nr-dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&nr_dlsch_demod_shift, defintval:0, TYPE_INT, 0}, \
|
{"nr-dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&nr_dlsch_demod_shift, defintval:0, TYPE_INT, 0}, \
|
||||||
{"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \
|
{"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \
|
||||||
{"C" , CONFIG_HLP_DLF, 0, u64ptr:&(downlink_frequency[0][0]), defuintval:0,TYPE_UINT64, 0}, \
|
|
||||||
{"a" , CONFIG_HLP_CHOFF, 0, iptr:&chain_offset, defintval:0, TYPE_INT, 0}, \
|
|
||||||
{"d" , CONFIG_HLP_SOFTS, PARAMFLAG_BOOL, uptr:&do_forms, defintval:0, TYPE_INT, 0}, \
|
|
||||||
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, iptr:&threequarter_fs, defintval:0, TYPE_INT, 0}, \
|
{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, iptr:&threequarter_fs, defintval:0, TYPE_INT, 0}, \
|
||||||
{"m" , CONFIG_HLP_DLMCS, 0, uptr:&target_dl_mcs, defintval:0, TYPE_UINT, 0}, \
|
{"m" , CONFIG_HLP_DLMCS, 0, uptr:&target_dl_mcs, defintval:0, TYPE_UINT, 0}, \
|
||||||
{"t" , CONFIG_HLP_ULMCS, 0, uptr:&target_ul_mcs, defintval:0, TYPE_UINT, 0}, \
|
{"t" , CONFIG_HLP_ULMCS, 0, uptr:&target_ul_mcs, defintval:0, TYPE_UINT, 0}, \
|
||||||
{"q" , CONFIG_HLP_STMON, PARAMFLAG_BOOL, iptr:&opp_enabled, defintval:0, TYPE_INT, 0}, \
|
|
||||||
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \
|
{"T" , CONFIG_HLP_TDD, PARAMFLAG_BOOL, iptr:&tddflag, defintval:0, TYPE_INT, 0}, \
|
||||||
{"V" , CONFIG_HLP_VCD, PARAMFLAG_BOOL, iptr:&vcdflag, defintval:0, TYPE_INT, 0}, \
|
{"V" , CONFIG_HLP_VCD, PARAMFLAG_BOOL, iptr:&vcdflag, defintval:0, TYPE_INT, 0}, \
|
||||||
{"numerology" , CONFIG_HLP_NUMEROLOGY, 0, iptr:&numerology, defintval:0, TYPE_INT, 0}, \
|
|
||||||
{"emulate-rf" , CONFIG_HLP_EMULATE_RF, PARAMFLAG_BOOL, iptr:&emulate_rf, defintval:0, TYPE_INT, 0}, \
|
|
||||||
{"parallel-config", CONFIG_HLP_PARALLEL_CMD,0, strptr:(char **)¶llel_config, defstrval:NULL, TYPE_STRING, 0}, \
|
|
||||||
{"worker-config", CONFIG_HLP_WORKER_CMD, 0, strptr:(char **)&worker_config, defstrval:NULL, TYPE_STRING, 0}, \
|
|
||||||
{"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25, TYPE_DOUBLE, 0}, \
|
{"s" , CONFIG_HLP_SNR, 0, dblptr:&snr_dB, defdblval:25, TYPE_DOUBLE, 0}, \
|
||||||
{"nbiot-disable", CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL, iptr:&nonbiotflag, defintval:0, TYPE_INT, 0}, \
|
{"nbiot-disable", CONFIG_HLP_DISABLNBIOT, PARAMFLAG_BOOL, iptr:&nonbiotflag, defintval:0, TYPE_INT, 0}, \
|
||||||
{"ue-timing-correction-disable", CONFIG_HLP_DISABLETIMECORR, PARAMFLAG_BOOL, iptr:&UE_no_timing_correction, defintval:0, TYPE_INT, 0}, \
|
{"ue-timing-correction-disable", CONFIG_HLP_DISABLETIMECORR, PARAMFLAG_BOOL, iptr:&UE_no_timing_correction, defintval:0, TYPE_INT, 0}, \
|
||||||
|
|||||||
@@ -416,7 +416,7 @@ static void *scope_thread_gNB(void *arg) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void gNBinitScope(scopeParms_t *p) {
|
void gnbscope_autoinit(scopeParms_t *p) {
|
||||||
static scopeParms_t parms;
|
static scopeParms_t parms;
|
||||||
memcpy(&parms,p,sizeof(parms));
|
memcpy(&parms,p,sizeof(parms));
|
||||||
pthread_t forms_thread;
|
pthread_t forms_thread;
|
||||||
@@ -763,7 +763,7 @@ static void *nrUEscopeThread(void *arg) {
|
|||||||
pthread_exit((void *)arg);
|
pthread_exit((void *)arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void nrUEinitScope(PHY_VARS_NR_UE *ue) {
|
void nruescope_autoinit(PHY_VARS_NR_UE *ue) {
|
||||||
pthread_t forms_thread;
|
pthread_t forms_thread;
|
||||||
threadCreate(&forms_thread, nrUEscopeThread, ue, "scope", -1, OAI_PRIORITY_RT_LOW);
|
threadCreate(&forms_thread, nrUEscopeThread, ue, "scope", -1, OAI_PRIORITY_RT_LOW);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,8 +40,6 @@ typedef struct {
|
|||||||
PHY_VARS_gNB *gNB;
|
PHY_VARS_gNB *gNB;
|
||||||
} scopeParms_t;
|
} scopeParms_t;
|
||||||
|
|
||||||
void gNBinitScope(scopeParms_t *p);
|
|
||||||
void nrUEinitScope(PHY_VARS_NR_UE *ue);
|
|
||||||
|
|
||||||
extern RAN_CONTEXT_t RC;
|
extern RAN_CONTEXT_t RC;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -37,10 +37,10 @@
|
|||||||
#define SOFTSCOPE_ENDFUNC_IDX 0
|
#define SOFTSCOPE_ENDFUNC_IDX 0
|
||||||
static loader_shlibfunc_t scope_fdesc[]= {{"end_forms",NULL}};
|
static loader_shlibfunc_t scope_fdesc[]= {{"end_forms",NULL}};
|
||||||
|
|
||||||
int load_softscope(char *exectype) {
|
int load_softscope(char *exectype, void *initarg) {
|
||||||
char libname[64];
|
char libname[64];
|
||||||
sprintf(libname,"%.10sscope",exectype);
|
sprintf(libname,"%.10sscope",exectype);
|
||||||
return load_module_shlib(libname,scope_fdesc,1,NULL);
|
return load_module_shlib(libname,scope_fdesc,1,initarg);
|
||||||
}
|
}
|
||||||
|
|
||||||
int end_forms(void) {
|
int end_forms(void) {
|
||||||
|
|||||||
@@ -31,5 +31,5 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
int load_softscope(char *exectype);
|
int load_softscope(char *exectype, void *initarg);
|
||||||
int end_forms(void) ;
|
int end_forms(void) ;
|
||||||
|
|||||||
@@ -725,7 +725,7 @@ int main ( int argc, char **argv )
|
|||||||
// end of CI modifications
|
// end of CI modifications
|
||||||
//getchar();
|
//getchar();
|
||||||
if(IS_SOFTMODEM_DOFORMS)
|
if(IS_SOFTMODEM_DOFORMS)
|
||||||
load_softscope("enb");
|
load_softscope("enb",NULL);
|
||||||
itti_wait_tasks_end();
|
itti_wait_tasks_end();
|
||||||
oai_exit=1;
|
oai_exit=1;
|
||||||
LOG_I(ENB_APP,"oai_exit=%d\n",oai_exit);
|
LOG_I(ENB_APP,"oai_exit=%d\n",oai_exit);
|
||||||
|
|||||||
@@ -759,7 +759,7 @@ int main( int argc, char **argv ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(IS_SOFTMODEM_DOFORMS)
|
if(IS_SOFTMODEM_DOFORMS)
|
||||||
load_softscope("ue");
|
load_softscope("ue",NULL);
|
||||||
|
|
||||||
config_check_unknown_cmdlineopt(CONFIG_CHECKALLSECTIONS);
|
config_check_unknown_cmdlineopt(CONFIG_CHECKALLSECTIONS);
|
||||||
printf("Sending sync to all threads (%p,%p,%p)\n",&sync_var,&sync_cond,&sync_mutex);
|
printf("Sending sync to all threads (%p,%p,%p)\n",&sync_var,&sync_cond,&sync_mutex);
|
||||||
|
|||||||
Reference in New Issue
Block a user