diff --git a/executables/nr-softmodem.c b/executables/nr-softmodem.c index 479aec465f..614fecad62 100644 --- a/executables/nr-softmodem.c +++ b/executables/nr-softmodem.c @@ -675,11 +675,28 @@ int main( int argc, char **argv ) { wait_nfapi_init("main?"); } + if (IS_SOFTMODEM_IMSCOPE_ENABLED || IS_SOFTMODEM_IMSCOPE_RECORD_ENABLED) { + sleep(1); + scopeParms_t p; + p.argc = &argc; + p.argv = argv; + p.gNB = RC.gNB[0]; + p.ru = RC.ru[0]; + if (IS_SOFTMODEM_IMSCOPE_ENABLED) { + load_softscope("im", &p); + } + AssertFatal(!(IS_SOFTMODEM_IMSCOPE_ENABLED && IS_SOFTMODEM_IMSCOPE_RECORD_ENABLED), + "Data recoding and ImScope cannot be enabled at the same time\n"); + if (IS_SOFTMODEM_IMSCOPE_RECORD_ENABLED) { + load_module_shlib("imscope_record", NULL, 0, &p); + } + } + if (RC.nb_nr_L1_inst > 0) { wait_RUs(); // once all RUs are ready initialize the rest of the gNBs ((dependence on final RU parameters after configuration) - if (IS_SOFTMODEM_DOSCOPE || IS_SOFTMODEM_IMSCOPE_ENABLED || IS_SOFTMODEM_IMSCOPE_RECORD_ENABLED) { + if (IS_SOFTMODEM_DOSCOPE) { sleep(1); scopeParms_t p; p.argc = &argc; @@ -689,14 +706,6 @@ int main( int argc, char **argv ) { if (IS_SOFTMODEM_DOSCOPE) { load_softscope("nr", &p); } - if (IS_SOFTMODEM_IMSCOPE_ENABLED) { - load_softscope("im", &p); - } - AssertFatal(!(IS_SOFTMODEM_IMSCOPE_ENABLED && IS_SOFTMODEM_IMSCOPE_RECORD_ENABLED), - "Data recoding and ImScope cannot be enabled at the same time\n"); - if (IS_SOFTMODEM_IMSCOPE_RECORD_ENABLED) { - load_module_shlib("imscope_record", NULL, 0, &p); - } } if (NFAPI_MODE != NFAPI_MODE_PNF && NFAPI_MODE != NFAPI_MODE_VNF && NFAPI_MODE != NFAPI_MODE_AERIAL) { diff --git a/openair1/PHY/TOOLS/imscope/imscope_init.cpp b/openair1/PHY/TOOLS/imscope/imscope_init.cpp index 2bb3d8dd33..ea0b26dea6 100644 --- a/openair1/PHY/TOOLS/imscope/imscope_init.cpp +++ b/openair1/PHY/TOOLS/imscope/imscope_init.cpp @@ -41,7 +41,8 @@ extern "C" void imscope_autoinit(void *dataptr) if (IS_SOFTMODEM_GNB) { scopeParms_t *scope_params = (scopeParms_t *)dataptr; scope_params->gNB->scopeData = scope; - scope_params->ru->scopeData = scope; + if (scope_params->ru) + scope_params->ru->scopeData = scope; } else { PHY_VARS_NR_UE *ue = (PHY_VARS_NR_UE *)dataptr; ue->scopeData = scope;