MSC logging utility as a config option
This commit is contained in:
@@ -882,12 +882,9 @@ add_library(HASHTABLE
|
|||||||
)
|
)
|
||||||
include_directories(${OPENAIR_DIR}/common/utils/hashtable)
|
include_directories(${OPENAIR_DIR}/common/utils/hashtable)
|
||||||
|
|
||||||
if (MESSAGE_CHART_GENERATOR)
|
add_library(msc MODULE ${OPENAIR_DIR}/common/utils/msc/msc.c )
|
||||||
add_library(MSC
|
target_link_libraries (msc LFDS)
|
||||||
${OPENAIR_DIR}/common/utils/msc/msc.c
|
|
||||||
)
|
|
||||||
set(MSC_LIB MSC)
|
|
||||||
endif()
|
|
||||||
include_directories(${OPENAIR_DIR}/common/utils/msc)
|
include_directories(${OPENAIR_DIR}/common/utils/msc)
|
||||||
|
|
||||||
set(UTIL_SRC
|
set(UTIL_SRC
|
||||||
@@ -1936,7 +1933,7 @@ add_executable(lte-softmodem
|
|||||||
target_link_libraries (lte-softmodem
|
target_link_libraries (lte-softmodem
|
||||||
-Wl,--start-group
|
-Wl,--start-group
|
||||||
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB SCHED_RU_LIB PHY_COMMON PHY PHY_RU LFDS L2
|
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB SCHED_RU_LIB PHY_COMMON PHY PHY_RU LFDS L2
|
||||||
${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7
|
${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7
|
||||||
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
|
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
|
||||||
-Wl,--end-group z dl)
|
-Wl,--end-group z dl)
|
||||||
|
|
||||||
@@ -1972,7 +1969,7 @@ add_executable(lte-softmodem-nos1
|
|||||||
)
|
)
|
||||||
target_link_libraries (lte-softmodem-nos1
|
target_link_libraries (lte-softmodem-nos1
|
||||||
-Wl,--start-group
|
-Wl,--start-group
|
||||||
RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_LIB SCHED_RU_LIB PHY_COMMON PHY PHY_RU LFDS L2 ${MSC_LIB} ${RAL_LIB} ${ITTI_LIB}
|
RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_LIB SCHED_RU_LIB PHY_COMMON PHY PHY_RU LFDS L2 ${RAL_LIB} ${ITTI_LIB}
|
||||||
${MIH_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7
|
${MIH_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} ${FLEXRAN_AGENT_LIB} LFDS7
|
||||||
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
|
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
|
||||||
-Wl,--end-group z dl )
|
-Wl,--end-group z dl )
|
||||||
@@ -2012,7 +2009,7 @@ add_executable(lte-uesoftmodem
|
|||||||
target_link_libraries (lte-uesoftmodem
|
target_link_libraries (lte-uesoftmodem
|
||||||
-Wl,--start-group
|
-Wl,--start-group
|
||||||
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_UE PHY_RU LFDS L2_UE SIMU
|
RRC_LIB S1AP_LIB S1AP_ENB GTPV1U SECU_CN SECU_OSA UTIL HASHTABLE SCTP_CLIENT UDP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_UE PHY_RU LFDS L2_UE SIMU
|
||||||
${MSC_LIB} ${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} LFDS7 ${ATLAS_LIBRARIES}
|
${RAL_LIB} ${NAS_UE_LIB} ${ITTI_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} LFDS7 ${ATLAS_LIBRARIES}
|
||||||
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
|
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
|
||||||
-Wl,--end-group z dl)
|
-Wl,--end-group z dl)
|
||||||
|
|
||||||
@@ -2050,7 +2047,7 @@ add_executable(lte-uesoftmodem-nos1
|
|||||||
|
|
||||||
target_link_libraries (lte-uesoftmodem-nos1
|
target_link_libraries (lte-uesoftmodem-nos1
|
||||||
-Wl,--start-group
|
-Wl,--start-group
|
||||||
RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_UE PHY_RU LFDS L2_UE SIMU ${MSC_LIB} ${RAL_LIB} ${ITTI_LIB}
|
RRC_LIB SECU_CN SECU_OSA UTIL HASHTABLE SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON PHY_UE PHY_RU LFDS L2_UE SIMU ${RAL_LIB} ${ITTI_LIB}
|
||||||
${MIH_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} LFDS7 ${ATLAS_LIBRARIES}
|
${MIH_LIB} ${FLPT_MSG_LIB} ${ASYNC_IF_LIB} LFDS7 ${ATLAS_LIBRARIES}
|
||||||
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
|
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB
|
||||||
-Wl,--end-group z dl )
|
-Wl,--end-group z dl )
|
||||||
@@ -2128,7 +2125,7 @@ add_executable(test_epc_generate_scenario
|
|||||||
${OPENAIR3_DIR}/S1AP/s1ap_eNB_defs.h
|
${OPENAIR3_DIR}/S1AP/s1ap_eNB_defs.h
|
||||||
)
|
)
|
||||||
target_link_libraries (test_epc_generate_scenario
|
target_link_libraries (test_epc_generate_scenario
|
||||||
-Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} ${MSC_LIB} L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
-Wl,--start-group RRC_LIB S1AP_LIB S1AP_ENB X2AP_LIB GTPV1U LIB_NAS_UE SECU_CN UTIL HASHTABLE SCTP_CLIENT UDP SCHED_LIB PHY LFDS ${ITTI_LIB} L2 -Wl,--end-group pthread m rt crypt sctp ${LIBXML2_LIBRARIES} ${LIBXSLT_LIBRARIES} ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${NETTLE_LIBRARIES} ${CONFIG_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable(test_epc_play_scenario
|
add_executable(test_epc_play_scenario
|
||||||
|
|||||||
+18
-1
@@ -40,7 +40,7 @@ set_openair_env
|
|||||||
gen_nvram_path=$OPENAIR_DIR/targets/bin
|
gen_nvram_path=$OPENAIR_DIR/targets/bin
|
||||||
conf_nvram_path=$OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
|
conf_nvram_path=$OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
|
||||||
|
|
||||||
MSC_GEN="False"
|
MSC_GEN=0
|
||||||
XFORMS="True"
|
XFORMS="True"
|
||||||
UE_EXPANSION="False"
|
UE_EXPANSION="False"
|
||||||
PRINT_STATS="False"
|
PRINT_STATS="False"
|
||||||
@@ -155,6 +155,10 @@ Options
|
|||||||
Disable all LOG_* macros
|
Disable all LOG_* macros
|
||||||
--build-eclipse
|
--build-eclipse
|
||||||
Build eclipse project files. Paths are auto corrected by fixprj.sh
|
Build eclipse project files. Paths are auto corrected by fixprj.sh
|
||||||
|
--build-telnet
|
||||||
|
Build telnet server, specify --telnetsrv on command line to start it (eNB only)
|
||||||
|
--build-msc
|
||||||
|
Build MSC tracing utility, specify --msc on command line to start it (eNB and UE)
|
||||||
--usrp-recplay
|
--usrp-recplay
|
||||||
Build for I/Q record-playback modes
|
Build for I/Q record-playback modes
|
||||||
--ue-nas-use-tun
|
--ue-nas-use-tun
|
||||||
@@ -345,6 +349,10 @@ function main() {
|
|||||||
--build-telnetsrv)
|
--build-telnetsrv)
|
||||||
BUILD_TELNETSRV=1
|
BUILD_TELNETSRV=1
|
||||||
echo_info "Build embedded telnet server"
|
echo_info "Build embedded telnet server"
|
||||||
|
shift ;;
|
||||||
|
--build-msc)
|
||||||
|
MSC_GEN=1
|
||||||
|
echo_info "Build MSC tracing utility"
|
||||||
shift ;;
|
shift ;;
|
||||||
--usrp-recplay)
|
--usrp-recplay)
|
||||||
USRP_REC_PLAY="True"
|
USRP_REC_PLAY="True"
|
||||||
@@ -690,6 +698,15 @@ function main() {
|
|||||||
$build_dir telnetsrv \
|
$build_dir telnetsrv \
|
||||||
libtelnetsrv.so $dbin/libtelnetsrv.so
|
libtelnetsrv.so $dbin/libtelnetsrv.so
|
||||||
|
|
||||||
|
fi
|
||||||
|
# Telnet server compilation
|
||||||
|
#####################
|
||||||
|
if [ "$MSC_GEN" = "1" ] ; then
|
||||||
|
build_dir=$lte_build_dir
|
||||||
|
compilations \
|
||||||
|
$build_dir msc \
|
||||||
|
libmsc.so $dbin/libmsc.so
|
||||||
|
|
||||||
fi
|
fi
|
||||||
# build RF device and transport protocol libraries
|
# build RF device and transport protocol libraries
|
||||||
#####################################
|
#####################################
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ set(CONF2UEDATA_LIB_SRC
|
|||||||
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/usim_api.c
|
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/usim_api.c
|
||||||
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/aka_functions.c
|
${OPENAIR_DIR}/openair3/NAS/UE/API/USIM/aka_functions.c
|
||||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/memory.c
|
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/memory.c
|
||||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/nas_log.c
|
|
||||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/OctetString.c
|
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/OctetString.c
|
||||||
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/TLVEncoder.c
|
${OPENAIR_DIR}/openair3/NAS/COMMON/UTIL/TLVEncoder.c
|
||||||
${OPENAIR_DIR}/common/utils/utils.c
|
${OPENAIR_DIR}/common/utils/utils.c
|
||||||
|
|||||||
@@ -455,13 +455,14 @@ int rt = pthread_getname_np(pthread_self(), threadname,bufsize) ;
|
|||||||
|
|
||||||
int inline log_header(char *log_buffer, int buffsize, int comp, int level,const char *format) {
|
int inline log_header(char *log_buffer, int buffsize, int comp, int level,const char *format) {
|
||||||
char threadname[PR_SET_NAME];
|
char threadname[PR_SET_NAME];
|
||||||
return snprintf(log_buffer, buffsize , "%s%s[%s]%c %s %s",
|
return snprintf(log_buffer, buffsize , "%s%s[%s]%c %s %s%s",
|
||||||
log_level_highlight_end[level],
|
log_level_highlight_end[level],
|
||||||
( (g_log->flag & FLAG_NOCOLOR)?"":log_level_highlight_start[level]),
|
( (g_log->flag & FLAG_NOCOLOR)?"":log_level_highlight_start[level]),
|
||||||
g_log->log_component[comp].name,
|
g_log->log_component[comp].name,
|
||||||
( (g_log->flag & FLAG_LEVEL)?g_log->level2string[level]:' '),
|
( (g_log->flag & FLAG_LEVEL)?g_log->level2string[level]:' '),
|
||||||
( (g_log->flag & FLAG_THREAD)?log_getthreadname(threadname,PR_SET_NAME+1):""),
|
( (g_log->flag & FLAG_THREAD)?log_getthreadname(threadname,PR_SET_NAME+1):""),
|
||||||
format);
|
format,
|
||||||
|
log_level_highlight_end[level]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void logRecord_mt(const char *file, const char *func, int line, int comp, int level, const char* format, ... )
|
void logRecord_mt(const char *file, const char *func, int line, int comp, int level, const char* format, ... )
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ int ret;
|
|||||||
return tmpstr;
|
return tmpstr;
|
||||||
}
|
}
|
||||||
|
|
||||||
int load_module_shlib(char *modname,loader_shlibfunc_t *farray, int numf)
|
int load_module_shlib(char *modname,loader_shlibfunc_t *farray, int numf, void *autoinit_arg)
|
||||||
{
|
{
|
||||||
void *lib_handle;
|
void *lib_handle;
|
||||||
initfunc_t fpi;
|
initfunc_t fpi;
|
||||||
@@ -155,7 +155,7 @@ int load_module_shlib(char *modname,loader_shlibfunc_t *farray, int numf)
|
|||||||
fpi = dlsym(lib_handle,afname);
|
fpi = dlsym(lib_handle,afname);
|
||||||
|
|
||||||
if (fpi != NULL ) {
|
if (fpi != NULL ) {
|
||||||
fpi();
|
fpi(autoinit_arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (farray != NULL) {
|
if (farray != NULL) {
|
||||||
|
|||||||
@@ -59,7 +59,8 @@ typedef struct {
|
|||||||
|
|
||||||
/* function type of functions which may be implemented by a module */
|
/* function type of functions which may be implemented by a module */
|
||||||
/* 1: init function, called when loading, if found in the shared lib */
|
/* 1: init function, called when loading, if found in the shared lib */
|
||||||
typedef int(*initfunc_t)(void);
|
typedef int(*initfunc_t)(void *);
|
||||||
|
|
||||||
/* 2: version checking function, called when loading, if it returns -1, trigger main exec abort */
|
/* 2: version checking function, called when loading, if it returns -1, trigger main exec abort */
|
||||||
typedef int(*checkverfunc_t)(char * mainexec_version, char ** shlib_version);
|
typedef int(*checkverfunc_t)(char * mainexec_version, char ** shlib_version);
|
||||||
/* 3: get function array function, called when loading when a module doesn't provide */
|
/* 3: get function array function, called when loading when a module doesn't provide */
|
||||||
@@ -83,7 +84,7 @@ loader_data_t loader_data;
|
|||||||
|
|
||||||
/*-------------------------------------------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------------------------------------------*/
|
||||||
#else /* LOAD_MODULE_SHLIB_MAIN */
|
#else /* LOAD_MODULE_SHLIB_MAIN */
|
||||||
extern int load_module_shlib(char *modname, loader_shlibfunc_t *farray, int numf);
|
extern int load_module_shlib(char *modname, loader_shlibfunc_t *farray, int numf, void *initfunc_arg);
|
||||||
extern void * get_shlibmodule_fptr(char *modname, char *fname);
|
extern void * get_shlibmodule_fptr(char *modname, char *fname);
|
||||||
extern loader_data_t loader_data;
|
extern loader_data_t loader_data;
|
||||||
#endif /* LOAD_MODULE_SHLIB_MAIN */
|
#endif /* LOAD_MODULE_SHLIB_MAIN */
|
||||||
|
|||||||
+23
-6
@@ -32,11 +32,15 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
#define MSC_LIBRARY
|
||||||
|
#include "msc.h"
|
||||||
|
|
||||||
#include "liblfds611.h"
|
#include "liblfds611.h"
|
||||||
#include "intertask_interface.h"
|
#include "intertask_interface.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
|
||||||
#include "msc.h"
|
|
||||||
|
|
||||||
#include "assertions.h"
|
#include "assertions.h"
|
||||||
|
|
||||||
//-------------------------------
|
//-------------------------------
|
||||||
@@ -67,8 +71,8 @@ void *msc_task(void *args_p)
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
{
|
{
|
||||||
MessageDef *received_message_p = NULL;
|
MessageDef *received_message_p = NULL;
|
||||||
const char *msg_name = NULL;
|
// const char *msg_name = NULL;
|
||||||
instance_t instance = 0;
|
// instance_t instance = 0;
|
||||||
long timer_id;
|
long timer_id;
|
||||||
|
|
||||||
itti_mark_task_ready(TASK_MSC);
|
itti_mark_task_ready(TASK_MSC);
|
||||||
@@ -88,9 +92,9 @@ void *msc_task(void *args_p)
|
|||||||
itti_receive_msg(TASK_MSC, &received_message_p);
|
itti_receive_msg(TASK_MSC, &received_message_p);
|
||||||
|
|
||||||
if (received_message_p != NULL) {
|
if (received_message_p != NULL) {
|
||||||
msg_name = ITTI_MSG_NAME (received_message_p);
|
// msg_name = ITTI_MSG_NAME (received_message_p);
|
||||||
instance = ITTI_MSG_INSTANCE (received_message_p);
|
// instance = ITTI_MSG_INSTANCE (received_message_p);
|
||||||
|
|
||||||
switch (ITTI_MSG_ID(received_message_p)) {
|
switch (ITTI_MSG_ID(received_message_p)) {
|
||||||
|
|
||||||
case TIMER_HAS_EXPIRED: {
|
case TIMER_HAS_EXPIRED: {
|
||||||
@@ -571,4 +575,17 @@ error_event:
|
|||||||
free(new_item_p);
|
free(new_item_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// function called when oai loader loads the msc shared lib
|
||||||
|
int msc_autoinit(msc_interface_t *msc_interface)
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
{
|
||||||
|
|
||||||
|
msc_interface->msc_init = msc_init;
|
||||||
|
msc_interface->msc_start_use = msc_start_use;
|
||||||
|
msc_interface->msc_end = msc_end;
|
||||||
|
msc_interface->msc_log_event = msc_log_event;
|
||||||
|
msc_interface->msc_log_message = msc_log_message;
|
||||||
|
msc_interface->msc_loaded = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|||||||
+29
-18
@@ -73,7 +73,23 @@ typedef enum {
|
|||||||
#define MSC_AS_TIME_ARGS(CTXT_Pp) \
|
#define MSC_AS_TIME_ARGS(CTXT_Pp) \
|
||||||
(CTXT_Pp)->frame, \
|
(CTXT_Pp)->frame, \
|
||||||
(CTXT_Pp)->subframe
|
(CTXT_Pp)->subframe
|
||||||
#if defined(MESSAGE_CHART_GENERATOR)
|
|
||||||
|
typedef int(*msc_init_t)(const msc_env_t, const int );
|
||||||
|
typedef void(*msc_start_use_t)(void );
|
||||||
|
typedef void(*msc_end_t)(void);
|
||||||
|
typedef void(*msc_log_event_t)(const msc_proto_t,char *, ...);
|
||||||
|
typedef void(*msc_log_message_t)(const char * const, const msc_proto_t, const msc_proto_t,
|
||||||
|
const uint8_t* const, const unsigned int, char * , ...);
|
||||||
|
typedef struct msc_interface {
|
||||||
|
int msc_loaded;
|
||||||
|
msc_init_t msc_init;
|
||||||
|
msc_start_use_t msc_start_use;
|
||||||
|
msc_end_t msc_end;
|
||||||
|
msc_log_event_t msc_log_event;
|
||||||
|
msc_log_message_t msc_log_message;
|
||||||
|
} msc_interface_t;
|
||||||
|
|
||||||
|
#ifdef MSC_LIBRARY
|
||||||
int msc_init(const msc_env_t envP, const int max_threadsP);
|
int msc_init(const msc_env_t envP, const int max_threadsP);
|
||||||
void msc_start_use(void);
|
void msc_start_use(void);
|
||||||
void msc_flush_messages(void);
|
void msc_flush_messages(void);
|
||||||
@@ -88,22 +104,17 @@ void msc_log_message(
|
|||||||
const unsigned int num_bytes,
|
const unsigned int num_bytes,
|
||||||
char *format, ...);
|
char *format, ...);
|
||||||
|
|
||||||
#define MSC_INIT(arg1,arg2) msc_init(arg1,arg2)
|
|
||||||
#define MSC_START_USE msc_start_use
|
|
||||||
#define MSC_END msc_end
|
|
||||||
#define MSC_LOG_EVENT(mScPaRaMs, fORMAT, aRGS...) msc_log_event(mScPaRaMs, fORMAT, ##aRGS)
|
|
||||||
#define MSC_LOG_RX_MESSAGE(rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, aRGS...) msc_log_message("<-",rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, ##aRGS)
|
|
||||||
#define MSC_LOG_RX_DISCARDED_MESSAGE(rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, aRGS...) msc_log_message("x-",rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, ##aRGS)
|
|
||||||
#define MSC_LOG_TX_MESSAGE(sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, aRGS...) msc_log_message("->",sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, ##aRGS)
|
|
||||||
#define MSC_LOG_TX_MESSAGE_FAILED(sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, aRGS...) msc_log_message("-x",sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, ##aRGS)
|
|
||||||
#else
|
#else
|
||||||
#define MSC_INIT(arg1,arg2)
|
|
||||||
#define MSC_START_USE(mScPaRaMs)
|
msc_interface_t msc_interface;
|
||||||
#define MSC_END(mScPaRaMs)
|
#define MSC_INIT(arg1,arg2) if(msc_interface.msc_loaded) msc_interface.msc_init(arg1,arg2)
|
||||||
#define MSC_LOG_EVENT(mScPaRaMs, fORMAT, aRGS...)
|
#define MSC_START_USE if(msc_interface.msc_loaded) msc_interface.msc_start_use
|
||||||
#define MSC_LOG_RX_MESSAGE(mScPaRaMs, fORMAT, aRGS...)
|
#define MSC_END if(msc_interface.msc_loaded) msc_interface.msc_end
|
||||||
#define MSC_LOG_RX_DISCARDED_MESSAGE(mScPaRaMs, fORMAT, aRGS...)
|
#define MSC_LOG_EVENT(mScPaRaMs, fORMAT, aRGS...) if(msc_interface.msc_loaded) msc_interface.msc_log_event(mScPaRaMs, fORMAT, ##aRGS)
|
||||||
#define MSC_LOG_TX_MESSAGE(mScPaRaMs, fORMAT, aRGS...)
|
#define MSC_LOG_RX_MESSAGE(rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, aRGS...) if(msc_interface.msc_loaded) msc_interface.msc_log_message("<-",rECEIVER, sENDER, (const uint8_t *)bYTES, nUMbYTES, fORMAT, ##aRGS)
|
||||||
#define MSC_LOG_TX_MESSAGE_FAILED(mScPaRaMs, fORMAT, aRGS...)
|
#define MSC_LOG_RX_DISCARDED_MESSAGE(rECEIVER, sENDER, bYTES, nUMbYTES, fORMAT, aRGS...) if(msc_interface.msc_loaded) msc_interface.msc_log_message("x-",rECEIVER, sENDER, (const uint8_t *)bYTES, nUMbYTES, fORMAT, ##aRGS)
|
||||||
#endif
|
#define MSC_LOG_TX_MESSAGE(sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, aRGS...) if(msc_interface.msc_loaded) msc_interface.msc_log_message("->",sENDER, rECEIVER, (const uint8_t *)bYTES, nUMbYTES, fORMAT, ##aRGS)
|
||||||
|
#define MSC_LOG_TX_MESSAGE_FAILED(sENDER, rECEIVER, bYTES, nUMbYTES, fORMAT, aRGS...) if(msc_interface.msc_loaded) msc_interface.msc_log_message("-x",sENDER, rECEIVER, (const uint8_t *)bYTES, nUMbYTES, fORMAT, ##aRGS)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ int load_codinglib(void) {
|
|||||||
shlib_fdesc[ENCODE_SSE_FPTRIDX].fname= "threegpplte_turbo_encoder_sse";
|
shlib_fdesc[ENCODE_SSE_FPTRIDX].fname= "threegpplte_turbo_encoder_sse";
|
||||||
shlib_fdesc[ENCODE_C_FPTRIDX].fname= "threegpplte_turbo_encoder";
|
shlib_fdesc[ENCODE_C_FPTRIDX].fname= "threegpplte_turbo_encoder";
|
||||||
shlib_fdesc[ENCODE_INIT_SSE_FPTRIDX].fname= "init_encoder_sse";
|
shlib_fdesc[ENCODE_INIT_SSE_FPTRIDX].fname= "init_encoder_sse";
|
||||||
ret=load_module_shlib("coding",shlib_fdesc,DECODE_NUM_FPTR);
|
ret=load_module_shlib("coding",shlib_fdesc,DECODE_NUM_FPTR,NULL);
|
||||||
if (ret < 0) exit_fun("Error loading coding library");
|
if (ret < 0) exit_fun("Error loading coding library");
|
||||||
|
|
||||||
/* execute encoder/decoder init functions */
|
/* execute encoder/decoder init functions */
|
||||||
|
|||||||
@@ -347,7 +347,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
|
|||||||
dlsch_harq->rvidx,
|
dlsch_harq->rvidx,
|
||||||
dlsch_harq->round);
|
dlsch_harq->round);
|
||||||
}
|
}
|
||||||
#if defined(MESSAGE_CHART_GENERATOR_PHY)
|
|
||||||
MSC_LOG_TX_MESSAGE(
|
MSC_LOG_TX_MESSAGE(
|
||||||
MSC_PHY_ENB,MSC_PHY_UE,
|
MSC_PHY_ENB,MSC_PHY_UE,
|
||||||
NULL,0,
|
NULL,0,
|
||||||
@@ -368,7 +368,7 @@ void pdsch_procedures(PHY_VARS_eNB *eNB,
|
|||||||
pmi2hex_2Ar1(dlsch_harq->pmi_alloc),
|
pmi2hex_2Ar1(dlsch_harq->pmi_alloc),
|
||||||
dlsch_harq->rvidx,
|
dlsch_harq->rvidx,
|
||||||
dlsch_harq->round);
|
dlsch_harq->round);
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
if (ue_stats) ue_stats->dlsch_sliding_cnt++;
|
if (ue_stats) ue_stats->dlsch_sliding_cnt++;
|
||||||
@@ -1375,7 +1375,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
|
|||||||
ulsch->harq_mask &= ~(1 << harq_pid);
|
ulsch->harq_mask &= ~(1 << harq_pid);
|
||||||
ulsch_harq->round = 0;
|
ulsch_harq->round = 0;
|
||||||
}
|
}
|
||||||
#if defined(MESSAGE_CHART_GENERATOR_PHY)
|
|
||||||
MSC_LOG_RX_DISCARDED_MESSAGE(
|
MSC_LOG_RX_DISCARDED_MESSAGE(
|
||||||
MSC_PHY_ENB,MSC_PHY_UE,
|
MSC_PHY_ENB,MSC_PHY_UE,
|
||||||
NULL,0,
|
NULL,0,
|
||||||
@@ -1384,7 +1384,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
|
|||||||
ulsch->rnti,harq_pid,
|
ulsch->rnti,harq_pid,
|
||||||
ulsch_harq->round-1
|
ulsch_harq->round-1
|
||||||
);
|
);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Mark the HARQ process to release it later if max transmission reached
|
/* Mark the HARQ process to release it later if max transmission reached
|
||||||
* (see below).
|
* (see below).
|
||||||
@@ -1403,7 +1403,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
|
|||||||
T(T_ENB_PHY_ULSCH_UE_ACK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(ulsch->rnti),
|
T(T_ENB_PHY_ULSCH_UE_ACK, T_INT(eNB->Mod_id), T_INT(frame), T_INT(subframe), T_INT(ulsch->rnti),
|
||||||
T_INT(harq_pid));
|
T_INT(harq_pid));
|
||||||
|
|
||||||
#if defined(MESSAGE_CHART_GENERATOR_PHY)
|
|
||||||
MSC_LOG_RX_MESSAGE(
|
MSC_LOG_RX_MESSAGE(
|
||||||
MSC_PHY_ENB,MSC_PHY_UE,
|
MSC_PHY_ENB,MSC_PHY_UE,
|
||||||
NULL,0,
|
NULL,0,
|
||||||
@@ -1411,7 +1411,7 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
|
|||||||
frame,subframe,
|
frame,subframe,
|
||||||
ulsch->rnti,harq_pid
|
ulsch->rnti,harq_pid
|
||||||
);
|
);
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DEBUG_PHY_PROC
|
#ifdef DEBUG_PHY_PROC
|
||||||
#ifdef DEBUG_ULSCH
|
#ifdef DEBUG_ULSCH
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ int load_NB_IoT(void) {
|
|||||||
RCConfig_NbIoT_f_t RCConfig;
|
RCConfig_NbIoT_f_t RCConfig;
|
||||||
loader_shlibfunc_t shlib_fdesc[]=NBIOT_INTERFACE_FLIST;
|
loader_shlibfunc_t shlib_fdesc[]=NBIOT_INTERFACE_FLIST;
|
||||||
|
|
||||||
ret=load_module_shlib(NBIOT_MODULENAME,shlib_fdesc,sizeof(shlib_fdesc)/sizeof(loader_shlibfunc_t));
|
ret=load_module_shlib(NBIOT_MODULENAME,shlib_fdesc,sizeof(shlib_fdesc)/sizeof(loader_shlibfunc_t),NULL);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -760,10 +760,10 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP)
|
|||||||
0,
|
0,
|
||||||
MSC_AS_TIME_FMT" DATA-REQ inst %u rb %u rab %u size %u",
|
MSC_AS_TIME_FMT" DATA-REQ inst %u rb %u rab %u size %u",
|
||||||
MSC_AS_TIME_ARGS(ctxt_pP),
|
MSC_AS_TIME_ARGS(ctxt_pP),
|
||||||
pc5s_header.inst,
|
pc5s_header->inst,
|
||||||
pc5s_header.rb_id,
|
pc5s_header->rb_id,
|
||||||
rab_id,
|
rab_id,
|
||||||
pc5s_header.data_size);
|
pc5s_header->data_size);
|
||||||
|
|
||||||
pdcp_data_req(
|
pdcp_data_req(
|
||||||
&ctxt,
|
&ctxt,
|
||||||
@@ -787,10 +787,10 @@ int pdcp_fifo_read_input_sdus (const protocol_ctxt_t* const ctxt_pP)
|
|||||||
0,
|
0,
|
||||||
MSC_AS_TIME_FMT" DATA-REQ inst %u rb %u rab %u size %u",
|
MSC_AS_TIME_FMT" DATA-REQ inst %u rb %u rab %u size %u",
|
||||||
MSC_AS_TIME_ARGS(ctxt_pP),
|
MSC_AS_TIME_ARGS(ctxt_pP),
|
||||||
pc5s_header.inst,
|
pc5s_header->inst,
|
||||||
pc5s_header.rb_id,
|
pc5s_header->rb_id,
|
||||||
rab_id,
|
rab_id,
|
||||||
pc5s_header.data_size);
|
pc5s_header->data_size);
|
||||||
LOG_D(PDCP,
|
LOG_D(PDCP,
|
||||||
"[FRAME %5u][UE][IP][INSTANCE %u][RB %u][--- PDCP_DATA_REQ / %d Bytes ---X][PDCP][MOD %u][UE %u][RB %u] NON INSTANCIATED INSTANCE key 0x%"PRIx64", DROPPED\n",
|
"[FRAME %5u][UE][IP][INSTANCE %u][RB %u][--- PDCP_DATA_REQ / %d Bytes ---X][PDCP][MOD %u][UE %u][RB %u] NON INSTANCIATED INSTANCE key 0x%"PRIx64", DROPPED\n",
|
||||||
ctxt.frame,
|
ctxt.frame,
|
||||||
|
|||||||
@@ -1043,7 +1043,7 @@ int s1ap_eNB_handle_paging(uint32_t assoc_id,
|
|||||||
|
|
||||||
/* Paging procedure -> stream != 0 */
|
/* Paging procedure -> stream != 0 */
|
||||||
if (stream == 0) {
|
if (stream == 0) {
|
||||||
S1AP_ERROR("[SCTP %d] Received Paging procedure on stream (%d)\n",
|
LOG_W(S1AP,"[SCTP %d] Received Paging procedure on stream (%d)\n",
|
||||||
assoc_id, stream);
|
assoc_id, stream);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -473,17 +473,11 @@ int s1ap_eNB_handle_nas_downlink(uint32_t assoc_id,
|
|||||||
MSC_LOG_RX_DISCARDED_MESSAGE(
|
MSC_LOG_RX_DISCARDED_MESSAGE(
|
||||||
MSC_S1AP_ENB,
|
MSC_S1AP_ENB,
|
||||||
MSC_S1AP_MME,
|
MSC_S1AP_MME,
|
||||||
(const char *)NULL,
|
|
||||||
NULL,
|
NULL,
|
||||||
|
0,
|
||||||
MSC_AS_TIME_FMT" downlinkNASTransport eNB_ue_s1ap_id %u mme_ue_s1ap_id %u",
|
MSC_AS_TIME_FMT" downlinkNASTransport eNB_ue_s1ap_id %u mme_ue_s1ap_id %u",
|
||||||
0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
|
|
||||||
enb_ue_s1ap_id,
|
enb_ue_s1ap_id,
|
||||||
mme_ue_s1ap_id);
|
mme_ue_s1ap_id);
|
||||||
/* TODO: fix this log - the original version is suspicious (twice downlink_NAS_transport_p->eNB_UE_S1AP_ID?) */
|
|
||||||
/*S1AP_ERROR("[SCTP %d] Received NAS downlink message for non existing UE context eNB_UE_S1AP_ID: 0x%"PRIx32" %u\n",
|
|
||||||
assoc_id,
|
|
||||||
downlink_NAS_transport_p->eNB_UE_S1AP_ID,
|
|
||||||
downlink_NAS_transport_p->eNB_UE_S1AP_ID);*/
|
|
||||||
S1AP_ERROR("[SCTP %d] Received NAS downlink message for non existing UE context eNB_UE_S1AP_ID: 0x%lx\n",
|
S1AP_ERROR("[SCTP %d] Received NAS downlink message for non existing UE context eNB_UE_S1AP_ID: 0x%lx\n",
|
||||||
assoc_id,
|
assoc_id,
|
||||||
enb_ue_s1ap_id);
|
enb_ue_s1ap_id);
|
||||||
@@ -518,11 +512,10 @@ int s1ap_eNB_handle_nas_downlink(uint32_t assoc_id,
|
|||||||
MSC_LOG_RX_MESSAGE(
|
MSC_LOG_RX_MESSAGE(
|
||||||
MSC_S1AP_ENB,
|
MSC_S1AP_ENB,
|
||||||
MSC_S1AP_MME,
|
MSC_S1AP_MME,
|
||||||
(const char *)NULL,
|
|
||||||
NULL,
|
NULL,
|
||||||
|
0,
|
||||||
MSC_AS_TIME_FMT" downlinkNASTransport eNB_ue_s1ap_id %u mme_ue_s1ap_id %u",
|
MSC_AS_TIME_FMT" downlinkNASTransport eNB_ue_s1ap_id %u mme_ue_s1ap_id %u",
|
||||||
0,0,//MSC_AS_TIME_ARGS(ctxt_pP),
|
assoc_id,
|
||||||
enb_ue_s1ap_id,
|
|
||||||
mme_ue_s1ap_id);
|
mme_ue_s1ap_id);
|
||||||
|
|
||||||
S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_DownlinkNASTransport_IEs_t, ie, container,
|
S1AP_FIND_PROTOCOLIE_BY_ID(S1AP_DownlinkNASTransport_IEs_t, ie, container,
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ int load_lib(openair0_device *device, openair0_config_t *openair0_cfg, eth_param
|
|||||||
libname=OAI_TP_LIBNAME;
|
libname=OAI_TP_LIBNAME;
|
||||||
shlib_fdesc[0].fname="transport_init";
|
shlib_fdesc[0].fname="transport_init";
|
||||||
}
|
}
|
||||||
ret=load_module_shlib(libname,shlib_fdesc,1);
|
ret=load_module_shlib(libname,shlib_fdesc,1,NULL);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
fprintf(stderr,"Library %s couldn't be loaded\n",libname);
|
fprintf(stderr,"Library %s couldn't be loaded\n",libname);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -514,7 +514,7 @@ void *l2l1_task(void *arg) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static void get_options(void) {
|
static void get_options(unsigned int *start_msc) {
|
||||||
|
|
||||||
int tddflag, nonbiotflag;
|
int tddflag, nonbiotflag;
|
||||||
|
|
||||||
@@ -548,11 +548,9 @@ static void get_options(void) {
|
|||||||
set_glog(glog_level);
|
set_glog(glog_level);
|
||||||
}
|
}
|
||||||
if (start_telnetsrv) {
|
if (start_telnetsrv) {
|
||||||
load_module_shlib("telnetsrv",NULL,0);
|
load_module_shlib("telnetsrv",NULL,0,NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ( !(CONFIG_ISFLAGSET(CONFIG_ABORT)) ) {
|
if ( !(CONFIG_ISFLAGSET(CONFIG_ABORT)) ) {
|
||||||
memset((void*)&RC,0,sizeof(RC));
|
memset((void*)&RC,0,sizeof(RC));
|
||||||
/* Read RC configuration file */
|
/* Read RC configuration file */
|
||||||
@@ -925,6 +923,7 @@ int main( int argc, char **argv )
|
|||||||
#if defined (XFORMS)
|
#if defined (XFORMS)
|
||||||
int ret;
|
int ret;
|
||||||
#endif
|
#endif
|
||||||
|
unsigned int start_msc=0;
|
||||||
|
|
||||||
if ( load_configmodule(argc,argv) == NULL) {
|
if ( load_configmodule(argc,argv) == NULL) {
|
||||||
exit_fun("[SOFTMODEM] Error, configuration module init failed\n");
|
exit_fun("[SOFTMODEM] Error, configuration module init failed\n");
|
||||||
@@ -942,7 +941,7 @@ int main( int argc, char **argv )
|
|||||||
|
|
||||||
printf("Reading in command-line options\n");
|
printf("Reading in command-line options\n");
|
||||||
|
|
||||||
get_options ();
|
get_options (&start_msc);
|
||||||
if (CONFIG_ISFLAGSET(CONFIG_ABORT) ) {
|
if (CONFIG_ISFLAGSET(CONFIG_ABORT) ) {
|
||||||
fprintf(stderr,"Getting configuration failed\n");
|
fprintf(stderr,"Getting configuration failed\n");
|
||||||
exit(-1);
|
exit(-1);
|
||||||
@@ -968,9 +967,13 @@ int main( int argc, char **argv )
|
|||||||
#if defined(ENABLE_ITTI)
|
#if defined(ENABLE_ITTI)
|
||||||
|
|
||||||
printf("ITTI init, useMME: %i\n" ,EPC_MODE_ENABLED);
|
printf("ITTI init, useMME: %i\n" ,EPC_MODE_ENABLED);
|
||||||
|
|
||||||
itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info);
|
itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info);
|
||||||
|
|
||||||
// initialize mscgen log after ITTI
|
// initialize mscgen log after ITTI
|
||||||
|
if (start_msc) {
|
||||||
|
load_module_shlib("msc",NULL,0,&msc_interface);
|
||||||
|
}
|
||||||
MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX);
|
MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -194,6 +194,7 @@
|
|||||||
#define CONFIG_HLP_FLOG "Enable online log \n"
|
#define CONFIG_HLP_FLOG "Enable online log \n"
|
||||||
#define CONFIG_HLP_LOGL "Set the global log level, valide options: (4:trace, 3:debug, 2:info, 1:warn, (0:error))\n"
|
#define CONFIG_HLP_LOGL "Set the global log level, valide options: (4:trace, 3:debug, 2:info, 1:warn, (0:error))\n"
|
||||||
#define CONFIG_HLP_TELN "Start embedded telnet server \n"
|
#define CONFIG_HLP_TELN "Start embedded telnet server \n"
|
||||||
|
#define CONFIG_HLP_MSC "Enable the MSC tracing utility \n"
|
||||||
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
/* command line parameters for LOG utility */
|
/* command line parameters for LOG utility */
|
||||||
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
/* optname helpstr paramflags XXXptr defXXXval type numelt */
|
||||||
@@ -202,6 +203,7 @@
|
|||||||
{"R" , CONFIG_HLP_FLOG, 0, uptr:&online_log_messages, defintval:1, TYPE_INT, 0}, \
|
{"R" , CONFIG_HLP_FLOG, 0, uptr:&online_log_messages, defintval:1, TYPE_INT, 0}, \
|
||||||
{"g" , CONFIG_HLP_LOGL, 0, uptr:&glog_level, defintval:0, TYPE_UINT, 0}, \
|
{"g" , CONFIG_HLP_LOGL, 0, uptr:&glog_level, defintval:0, TYPE_UINT, 0}, \
|
||||||
{"telnetsrv", CONFIG_HLP_TELN, PARAMFLAG_BOOL, uptr:&start_telnetsrv, defintval:0, TYPE_UINT, 0}, \
|
{"telnetsrv", CONFIG_HLP_TELN, PARAMFLAG_BOOL, uptr:&start_telnetsrv, defintval:0, TYPE_UINT, 0}, \
|
||||||
|
{"msc", CONFIG_HLP_MSC, PARAMFLAG_BOOL, uptr:start_msc, defintval:0, TYPE_UINT, 0}, \
|
||||||
}
|
}
|
||||||
#define CMDLINE_ONLINELOG_IDX 0
|
#define CMDLINE_ONLINELOG_IDX 0
|
||||||
#define CMDLINE_GLOGLEVEL_IDX 1
|
#define CMDLINE_GLOGLEVEL_IDX 1
|
||||||
|
|||||||
@@ -470,7 +470,7 @@ void *l2l1_task(void *arg) {
|
|||||||
|
|
||||||
extern int16_t dlsch_demod_shift;
|
extern int16_t dlsch_demod_shift;
|
||||||
|
|
||||||
static void get_options(void) {
|
static void get_options(unsigned int *start_msc) {
|
||||||
int CC_id;
|
int CC_id;
|
||||||
int tddflag, nonbiotflag;
|
int tddflag, nonbiotflag;
|
||||||
char *loopfile=NULL;
|
char *loopfile=NULL;
|
||||||
@@ -505,7 +505,7 @@ static void get_options(void) {
|
|||||||
set_glog(glog_level);
|
set_glog(glog_level);
|
||||||
}
|
}
|
||||||
if (start_telnetsrv) {
|
if (start_telnetsrv) {
|
||||||
load_module_shlib("telnetsrv",NULL,0);
|
load_module_shlib("telnetsrv",NULL,0,NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
paramdef_t cmdline_uemodeparams[] =CMDLINE_UEMODEPARAMS_DESC;
|
paramdef_t cmdline_uemodeparams[] =CMDLINE_UEMODEPARAMS_DESC;
|
||||||
@@ -770,6 +770,7 @@ int main( int argc, char **argv )
|
|||||||
|
|
||||||
int CC_id;
|
int CC_id;
|
||||||
uint8_t abstraction_flag=0;
|
uint8_t abstraction_flag=0;
|
||||||
|
unsigned int start_msc=0;
|
||||||
|
|
||||||
// Default value for the number of UEs. It will hold,
|
// Default value for the number of UEs. It will hold,
|
||||||
// if not changed from the command line option --num-ues
|
// if not changed from the command line option --num-ues
|
||||||
@@ -797,7 +798,7 @@ int main( int argc, char **argv )
|
|||||||
printf("Reading in command-line options\n");
|
printf("Reading in command-line options\n");
|
||||||
|
|
||||||
for (int i=0;i<MAX_NUM_CCs;i++) tx_max_power[i]=23;
|
for (int i=0;i<MAX_NUM_CCs;i++) tx_max_power[i]=23;
|
||||||
get_options ();
|
get_options (&start_msc);
|
||||||
|
|
||||||
|
|
||||||
printf("Running with %d UE instances\n",NB_UE_INST);
|
printf("Running with %d UE instances\n",NB_UE_INST);
|
||||||
@@ -843,6 +844,9 @@ int main( int argc, char **argv )
|
|||||||
itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info);
|
itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info);
|
||||||
|
|
||||||
// initialize mscgen log after ITTI
|
// initialize mscgen log after ITTI
|
||||||
|
if (start_msc) {
|
||||||
|
load_module_shlib("msc",NULL,0,&msc_interface);
|
||||||
|
}
|
||||||
MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX);
|
MSC_INIT(MSC_E_UTRAN, THREAD_MAX+TASK_MAX);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user