From d5a12e3b79ad0c68d3e2b5f31b7bb51a4f55ca1b Mon Sep 17 00:00:00 2001 From: Cedric Roux <cedric.roux@eurecom.fr> Date: Mon, 25 Nov 2013 16:49:27 +0000 Subject: [PATCH] - Moved Makerules to OPENAIR_TARGETS - Created Makefile.common that gathers common definitions for oaisim and lte-softmodem - Added ITTI capabilities to lte-softmodem (currently not stable) * Created dummy l2l1 task * Added -K option to output itti messages to file (some RT issues with file flush) - Added S1AP/SCTP tasks in lte-softmodem pre-ci ok lte-softmodem with HARD_RT=1 build ok git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4514 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair-cn/GTPV1-U/Makefile.eNB | 11 ++- openair-cn/S1AP/Makefile.eNB | 2 +- openair-cn/SCTP/Makefile.eNB | 2 +- targets/Makefile.common | 61 +++++++++++++ targets/{SIMU/USER => }/Makerules | 11 ++- targets/RTAI/USER/Makefile | 85 +++++++++--------- targets/RTAI/USER/lte-softmodem.c | 144 +++++++++++++++++++++++++++++- targets/SIMU/USER/Makefile | 98 ++++---------------- 8 files changed, 276 insertions(+), 138 deletions(-) create mode 100644 targets/Makefile.common rename targets/{SIMU/USER => }/Makerules (83%) diff --git a/openair-cn/GTPV1-U/Makefile.eNB b/openair-cn/GTPV1-U/Makefile.eNB index 149a6f6bb4..59c42b95ac 100644 --- a/openair-cn/GTPV1-U/Makefile.eNB +++ b/openair-cn/GTPV1-U/Makefile.eNB @@ -6,16 +6,15 @@ libgtpv1u_OBJECTS = \ nw-gtpv1u/src/NwGtpv1uMsg.o \ nw-gtpv1u/src/NwGtpv1u.o \ gtpv1u_eNB.o \ - gtpv1u_teid_pool.o \ - + gtpv1u_teid_pool.o CFLAGS = \ -I./nw-gtpv1u/shared \ -I./nw-gtpv1u/include \ - -I../UTILS \ - -I../UTILS/HASHTABLE \ - -I../UDP \ - -I$(OPENAIR2_DIR) \ + -I../UTILS \ + -I../UTILS/HASHTABLE \ + -I../UDP \ + -I$(OPENAIR2_DIR) \ -DUSER_MODE \ -DENABLE_USE_MME \ -DUSER_MODE \ diff --git a/openair-cn/S1AP/Makefile.eNB b/openair-cn/S1AP/Makefile.eNB index 34a4459607..8624cb228d 100644 --- a/openair-cn/S1AP/Makefile.eNB +++ b/openair-cn/S1AP/Makefile.eNB @@ -1,4 +1,4 @@ -include $(OPENAIR_TARGETS)/SIMU/USER/Makerules +# include $(OPENAIR_TARGETS)/SIMU/USER/Makerules OUTDIR = $(S1AP_DIR)/enb_objs diff --git a/openair-cn/SCTP/Makefile.eNB b/openair-cn/SCTP/Makefile.eNB index ee40d1492e..c9db6db019 100644 --- a/openair-cn/SCTP/Makefile.eNB +++ b/openair-cn/SCTP/Makefile.eNB @@ -1,4 +1,4 @@ -include $(OPENAIR_TARGETS)/SIMU/USER/Makerules +# include $(OPENAIR_TARGETS)/SIMU/USER/Makerules OUTDIR = . diff --git a/targets/Makefile.common b/targets/Makefile.common new file mode 100644 index 0000000000..106aa5f3e3 --- /dev/null +++ b/targets/Makefile.common @@ -0,0 +1,61 @@ +# This file gathers compilation directive shared between lte-softmodem and oaisim + +ITTI_MESSAGES_H = messages_xml.h +ITTI_MESSAGES_XML = messages.xml +ITTI_MESSAGES_FILE = $(ITTI_DIR)/intertask_interface_types.h + +include $(COMMON_UTILS_DIR)/Makefile.inc + +$(ITTI_MESSAGES_XML): $(ITTI_MESSAGES_FILE) + @echo "Generating messages.xml ..." + @gccxml $(L2_incl) $(UTILS_incl) $< -fxml=$@ + @$(CC) -MM $(L2_incl) $(UTILS_incl) $< > $(basename $@).d + @mv -f $(basename $@).d $(basename $@).d.tmp + @sed -e 's|.*:|$@:|' < $(basename $@).d.tmp > $(basename $@).d + @sed -e 's/.*://' -e 's/\\$$//' < $(basename $@).d.tmp | fmt -1 | \ + sed -e 's/^ *//' -e 's/$$/:/' >> $(basename $@).d + @rm -f $(basename $@).d.tmp + +$(ITTI_MESSAGES_H): $(ITTI_MESSAGES_XML) + @echo "Generating messages_xml.h ..." + @sed -e 's/[ ]*//' -e 's/"/\\"/g' -e 's/^/"/' -e 's/$$/\\n"/' $< > $@ + +ifdef ENABLE_ITTI +SHARED_DEPENDENCIES = $(ITTI_MESSAGES_H) +endif + +ifdef USE_MME +CFLAGS += -DENB_MODE -DENABLE_USE_MME -DENABLE_EVENT_FD -I$(S1AP_DIR) -I$(SCTP_DIR) +S1AP_CFLAGS = $(CFLAGS) -I$(TOP_DIR) $(L2_incl) $(UTIL_incl) $(UTILS_incl) + +LIBS += $(S1AP_OBJ_DIR)/libs1ap.a $(SCTP_OBJ_DIR)/libsctp.a -lsctp -lcrypt +SHARED_DEPENDENCIES += $(S1AP_OBJ_DIR)/libs1ap.a $(SCTP_OBJ_DIR)/libsctp.a +export S1AP_CFLAGS + +ENABLE_ITTI = 1 + +$(S1AP_OBJ_DIR)/libs1ap.a: force_look + @$(MAKE) -C $(S1AP_DIR) -f Makefile.eNB $(S1AP_OBJ_DIR)/libs1ap.a OUTDIR=$(S1AP_OBJ_DIR) +$(SCTP_OBJ_DIR)/libsctp.a: force_look + @$(MAKE) -C $(SCTP_DIR) -f Makefile.eNB $(SCTP_OBJ_DIR)/libsctp.a OUTDIR=$(SCTP_OBJ_DIR) +endif + +ifdef ENABLE_ITTI +gccxml_available = $(shell if [ `gccxml --version | grep GCC-XML -c` = "0" ]; then echo "0" ; else echo "1" ; fi ) +ifeq ($(gccxml_available), 0) +$(error gccxml is missing, please install) +endif +CFLAGS += -I$(OPENAIR2_DIR)/COMMON -DENABLE_ITTI $(UTILS_incl) +ifndef DISABLE_ITTI_EVENT_FD +CFLAGS += -DENABLE_EVENT_FD +endif +endif + +force_look: + @true + +common-clean: + @$(RM_F_V) $(ITTI_MESSAGES_H) $(ITTI_MESSAGES_XML) $(ITTI_MESSAGES_XML:.xml=.d) + @$(MAKE) -C $(LFDS_DIR) -f makefile.linux clean OUTDIR=$(LFDS_OBJ_DIR) +# @if [ -d $(S1AP_DIR) ]; then $(MAKE) -C $(S1AP_DIR) -f Makefile.eNB clean OUTDIR=$(S1AP_OBJ_DIR); fi +# @if [ -d $(SCTP_DIR) ]; then $(MAKE) -C $(SCTP_DIR) -f Makefile.eNB clean OUTDIR=$(SCTP_OBJ_DIR); fi diff --git a/targets/SIMU/USER/Makerules b/targets/Makerules similarity index 83% rename from targets/SIMU/USER/Makerules rename to targets/Makerules index 51ad15e08f..a6532c9337 100644 --- a/targets/SIMU/USER/Makerules +++ b/targets/Makerules @@ -57,4 +57,13 @@ COMMON_CFLAGS = \ -fno-strict-aliasing \ -g \ -ggdb \ - -O2 \ No newline at end of file + -O2 + +COMMON_UTILS_DIR = $(OPENAIR_HOME)/common/utils +S1AP_DIR = $(OPENAIR_HOME)/openair-cn/S1AP +SCTP_DIR = $(OPENAIR_HOME)/openair-cn/SCTP +S1AP_OBJ_DIR = $(subst $(OPENAIR_HOME),$(OBJS_DIR),$(S1AP_DIR)) +SCTP_OBJ_DIR = $(subst $(OPENAIR_HOME),$(OBJS_DIR),$(SCTP_DIR)) + +export S1AP_DIR +export COMMON_UTILS_DIR \ No newline at end of file diff --git a/targets/RTAI/USER/Makefile b/targets/RTAI/USER/Makefile index 0a851dad32..b73b887fa9 100644 --- a/targets/RTAI/USER/Makefile +++ b/targets/RTAI/USER/Makefile @@ -1,3 +1,11 @@ +# Include some shared directives +include $(OPENAIR_TARGETS)/Makerules + +default: lte-softmodem +all: lte-softmodem + +include $(OPENAIR_TARGETS)/Makefile.common + GCCVERSION = $(shell gcc --version | grep ^gcc | sed 's/^.* //g') ifeq "$(GCCVERSION)" "4.4.3" CFLAGS += -Wno-packed-bitfield-compat @@ -52,9 +60,6 @@ endif OBJ += $(OPENAIR_TARGETS)/ARCH/EXMIMO/USERSPACE/LIB/openair0_lib.o CFLAGS += -DDRIVER2013 -I$(OPENAIR_TARGETS)/ARCH/EXMIMO/USERSPACE/LIB/ -I$(OPENAIR_TARGETS)/ARCH/EXMIMO/DEFS -DENABLE_VCD_FIFO -COMMON_UTILS_DIR = $(OPENAIR_HOME)/common/utils -include $(COMMON_UTILS_DIR)/Makefile.inc - TOP_DIR = $(OPENAIR1_DIR) include $(OPENAIR1_DIR)/PHY/Makefile.inc include $(OPENAIR1_DIR)/SCHED/Makefile.inc @@ -66,22 +71,6 @@ else OBJ += $(SCHED_OBJS) endif -#ifndef rrc_cellular -ifeq ($(rrc_cellular),0) -rrc_cellular = 0 -rrc_cellular_eNB = 0 -rrc_cellular_UE = 0 -else - ifeq ($(eNB_flag),1) - rrc_cellular_eNB=1 - endif - ifeq ($(UE_flag),1) - rrc_cellular_UE=1 - endif -endif - -export rrc_cellular - OPENAIR2_TOP = $(OPENAIR2_DIR) include $(OPENAIR2_DIR)/LAYER2/Makefile.inc include $(OPENAIR2_DIR)/UTIL/Makefile.inc @@ -102,12 +91,16 @@ OPENAIR2=1 endif ifeq ($(OPENAIR2),1) ASN1_MSG_OBJS1=$(addprefix $(OPENAIR2_DIR)/RRC/LITE/MESSAGES/, $(ASN1_MSG_OBJS)) -OBJ += $(L2_OBJS) $(LIST_OBJ) $(TIMER_OBJ) $(MEM_OBJ) $(OTG_OBJS) $(MATH_OBJS) +OBJ += $(L2_OBJS) $(LIST_OBJ) $(TIMER_OBJ) $(MEM_OBJ) $(OTG_OBJS) $(MATH_OBJS) OBJ += $(OPENAIR1_DIR)/SIMULATION/ETH_TRANSPORT/netlink_init.o #OBJ += $(PDCP_DIR)/pdcp_thread.o CFLAGS += -DOPENAIR2 -DNO_RRM -DPUCCH -DMAC_CONTEXT=1 endif +ifdef ENABLE_ITTI +OBJ += $(UTILS_OBJS) +endif + CFLAGS += $(L2_incl) $(UTIL_incl) $(UTILS_incl) CFLAGS += -I$(OPENAIR1_DIR) -I$(OPENAIR2_DIR)/RRC/LITE/MESSAGES #-I$(OPENAIR3_DIR)/MESH -I$(OPENAIR3_DIR)/MESH/RRM @@ -158,7 +151,7 @@ endif RTAI_CFLAGS += $(shell rtai-config --lxrt-cflags) -DRTAI LDFLAGS += -lpthread -lm -lforms ifeq ($(RTAI),1) -LDFLAGS += $(shell rtai-config --lxrt-ldflags) +LDFLAGS += $(shell rtai-config --lxrt-ldflags) -lrt else LDFLAGS += -lrt endif @@ -168,19 +161,33 @@ CFLAGS += -I/opt/uhd/include -L/opt/uhd/lib -luhd -lpthread -lstdc++ endif #CFLAGS += -I/usr/include/c++/4.6 -I/usr/include/c++/4.6/x86_64-linux-gnu -I/usr/include/rtai/ -all: lte-softmodem - -$(LFDS_DIR)/bin/liblfds611.a: - $(MAKE) -C $(LFDS_DIR) -f makefile.linux +LFDS_OBJ_DIR = $(subst $(OPENAIR_HOME),$(OBJS_DIR),$(LFDS_DIR)) +LFDS_LIB = $(LFDS_OBJ_DIR)/bin/liblfds611.a +LIBS += $(LFDS_LIB) +SHARED_DEPENDENCIES += $(LFDS_LIB) +$(LFDS_LIB): + @if [ ! -d $(LFDS_OBJ_DIR)/bin ]; then mkdir -p $(LFDS_OBJ_DIR)/bin; fi; + @if [ ! -d $(LFDS_OBJ_DIR)/obj ]; then mkdir -p $(LFDS_OBJ_DIR)/obj; fi; + $(MAKE) -C $(LFDS_DIR) -f makefile.linux OUTDIR=$(LFDS_OBJ_DIR) $(RTAI_OBJ): %.o : %.c @echo Compiling $< ... @$(CC) -c $(CFLAGS) $(EXTRA_CFLAGS) $(RTAI_CFLAGS) -o $@ $< +ifdef ENABLE_ITTI +$(OBJ) $(RTAI_OBJ): $(ITTI_MESSAGES_H) +endif + $(OBJ) $(ASN1_MSG_OBJS1): %.o : %.c @echo Compiling $< ... @$(CC) -c $(CFLAGS) $(EXTRA_CFLAGS) -o $@ $< + @$(CC) -MM $(CFLAGS) $(EXTRA_CFLAGS) $< > $*.d + @mv -f $*.d $*.d.tmp + @sed -e 's|.*:|$*.o:|' < $*.d.tmp > $*.d + @sed -e 's/.*://' -e 's/\\$$//' < $*.d.tmp | fmt -1 | \ + sed -e 's/^ *//' -e 's/$$/:/' >> $*.d + @rm -f $*.d.tmp $(USRP_OBJ):$(USRP_FILE_OBJ) @echo Compiling openair_usrp.cpp @@ -192,19 +199,13 @@ condtest: condtest.c synctest: $(OBJ) $(ASN1_MSG_OBJS1) $(RTAI_OBJ) $(CC) $(CFLAGS) $(LDFLAGS) $(OBJ) $(RTAI_OBJ) $(ASN1_MSG_OBJS1) -o synctest +lte-softmodem: $(OBJ) $(ASN1_MSG_OBJS1) $(RTAI_OBJ) $(SHARED_DEPENDENCIES) + @echo Linking $@ + $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(OBJ) $(RTAI_OBJ) $(ASN1_MSG_OBJS1) -o lte-softmodem $(LDFLAGS) $(LIBS) -lte-softmodem: $(OBJ) $(ASN1_MSG_OBJS1) $(RTAI_OBJ) $(LFDS_DIR)/bin/liblfds611.a - $(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(OBJ) $(RTAI_OBJ) $(ASN1_MSG_OBJS1) -o lte-softmodem $(LDFLAGS) $(LFDS_DIR)/bin/liblfds611.a - -lte-softmodem-usrp: $(OBJ) $(ASN1_MSG_OBJS1) $(RTAI_OBJ) $(USRP_OBJ) $(LFDS_DIR)/bin/liblfds611.a - $(CC) $(USRP_OBJ) $(CFLAGS) $(OBJ) $(RTAI_OBJ) $(ASN1_MSG_OBJS1) -o lte-softmodem-usrp $(LDFLAGS) $(LFDS_DIR)/bin/liblfds611.a - -ifeq ($(rrc_cellular_eNB),1) - mv lte-softmodem lte-softmodem_eNB -endif -ifeq ($(rrc_cellular_UE),1) - mv lte-softmodem lte-softmodem_UE -endif +lte-softmodem-usrp: $(OBJ) $(ASN1_MSG_OBJS1) $(RTAI_OBJ) $(USRP_OBJ) $(SHARED_DEPENDENCIES) + @echo Linking $@ + @$(CC) $(USRP_OBJ) $(CFLAGS) $(OBJ) $(RTAI_OBJ) $(ASN1_MSG_OBJS1) -o lte-softmodem-usrp $(LDFLAGS) $(LIBS) synctest_eNB: synctest cp synctest synctest_eNB @@ -284,9 +285,10 @@ run_eNB1: run_eNB2: rtai-load eNB2 --verbose -clean: - rm -rf $(OBJ) $(RTAI_OBJ) - rm -f $(ASN1_MSG_INC)/asn1_msg.o +clean: common-clean + @$(RM_F_V) $(OBJ) $(RTAI_OBJ) + @$(RM_F_V) $(OBJ:.o=.d) $(RTAI_OBJ:.o=.d) + @$(RM_F_V) $(ASN1_MSG_INC)/asn1_msg.o $(ASN1_MSG_INC)/asn1_msg.d cleanasn1: rm -f $(ASN1_MSG_OBJS1) @@ -318,9 +320,6 @@ show: @echo $(EXTRA_CFLAGS) @echo $(OBJ) $(RTAI_OBJ) @echo $(USRP_OBJ) - @echo rrc_cellular variable is $(rrc_cellular) - @echo eNB_flag is $(eNB_flag) - @echo UE_flag is $(UE_flag) @echo IS_REL8 is $(IS_REL8) @echo IS_REL10 is $(IS_REL10) diff --git a/targets/RTAI/USER/lte-softmodem.c b/targets/RTAI/USER/lte-softmodem.c index 50a271cce0..c5b963ced5 100644 --- a/targets/RTAI/USER/lte-softmodem.c +++ b/targets/RTAI/USER/lte-softmodem.c @@ -92,8 +92,13 @@ unsigned short config_frames[4] = {2,9,11,13}; #include "UTIL/MATH/oml.h" #include "UTIL/LOG/vcd_signal_dumper.h" -#if defined(ENABLE_USE_MME) -# include "s1ap_eNB.h" +#if defined(ENABLE_ITTI) +# include "intertask_interface_init.h" +# include "timer.h" +# if defined(ENABLE_USE_MME) +# include "s1ap_eNB.h" +# include "sctp_eNB_task.h" +# endif #endif #ifdef XFORMS @@ -657,6 +662,9 @@ static void *eNB_thread(void *arg) slot=0; frame++; } +#if defined(ENABLE_ITTI) + itti_update_lte_time(frame, slot); +#endif } LOG_D(HW,"eNB_thread: finished, ran %d times.\n",frame); @@ -889,6 +897,9 @@ static void *UE_thread(void *arg) slot=0; frame++; } +#if defined(ENABLE_ITTI) + itti_update_lte_time(frame, slot); +#endif } LOG_D(HW,"UE_thread: finished, ran %d times.\n",frame); @@ -904,9 +915,85 @@ static void *UE_thread(void *arg) return 0; } +/* DUmmy l2l1 task */ +void *l2l1_task(void *args_p) { +#if defined(ENABLE_ITTI) + MessageDef *message_p; + itti_mark_task_ready (TASK_L2L1); +# if defined(ENABLE_USE_MME) + /* Trying to register each eNB */ + { + char *mme_address_v4; + char *mme_address_v6 = "2001:660:5502:12:30da:829a:2343:b6cf"; + s1ap_register_eNB_t *s1ap_register_eNB; + uint32_t hash; + + if (EPC_MODE_ENABLED) + { + mme_address_v4 = EPC_MODE_MME_ADDRESS; + } + else + { + mme_address_v4 = "192.168.12.87"; + } + + /* FIXME: following parameters should be setup by eNB applicative layer ? */ + message_p = itti_alloc_new_message(TASK_L2L1, S1AP_REGISTER_ENB); + + s1ap_register_eNB = &message_p->ittiMsg.s1ap_register_eNB; + + hash = s1ap_generate_eNB_id(); + + /* Some default/random parameters */ + s1ap_register_eNB->eNB_id = eNB_id + (hash & 0xFFFF8); + s1ap_register_eNB->cell_type = CELL_MACRO_ENB; + s1ap_register_eNB->tac = 0; + s1ap_register_eNB->mcc = 208; + s1ap_register_eNB->mnc = 34; + s1ap_register_eNB->default_drx = PAGING_DRX_256; + s1ap_register_eNB->nb_mme = 1; + s1ap_register_eNB->mme_ip_address[0].ipv4 = 1; + s1ap_register_eNB->mme_ip_address[0].ipv6 = 0; + memcpy(s1ap_register_eNB->mme_ip_address[0].ipv4_address, mme_address_v4, + strlen(mme_address_v4)); + memcpy(s1ap_register_eNB->mme_ip_address[0].ipv6_address, mme_address_v6, + strlen(mme_address_v6)); + + itti_send_msg_to_task(TASK_S1AP, eNB_id, message_p); + } +# endif +#endif + +#if defined(ENABLE_ITTI) + while (1) { + // Checks if a message has been sent to L2L1 task + itti_receive_msg (TASK_L2L1, &message_p); + + if (message_p != NULL) { + switch (ITTI_MSG_ID(message_p)) { + case TERMINATE_MESSAGE: + itti_exit_task (); + break; + + case MESSAGE_TEST: + LOG_D(EMU, "Received %s\n", ITTI_MSG_NAME(message_p)); + break; + + default: + LOG_E(EMU, "Received unexpected message %s\n", ITTI_MSG_NAME(message_p)); + break; + } + + free (message_p); + } + } +#endif + + return NULL; +} int main(int argc, char **argv) { @@ -964,6 +1051,7 @@ int main(int argc, char **argv) { int ant_offset=0; int error_code; + char *itti_dump_file = NULL; const struct option long_options[] = { {"calib-ue-rx", required_argument, NULL, 256}, @@ -976,7 +1064,7 @@ int main(int argc, char **argv) { mode = normal_txrx; - while ((c = getopt_long (argc, argv, "C:O:ST:UdF:V",long_options,NULL)) != -1) + while ((c = getopt_long (argc, argv, "C:K:O:ST:UdF:V",long_options,NULL)) != -1) { switch (c) { @@ -1001,6 +1089,13 @@ int main(int argc, char **argv) { case 'T': tcxo=atoi(optarg); break; + case 'K': +#if defined(ENABLE_ITTI) + itti_dump_file = strdup(optarg); +#else + printf("-K option is disabled when ENABLE_ITTI is not defined\n"); +#endif + break; case 'O': #if defined(ENABLE_USE_MME) EPC_MODE_ENABLED = 1; @@ -1110,6 +1205,32 @@ int main(int argc, char **argv) { // initialize the log (see log.h for details) logInit(); +#if defined(ENABLE_ITTI) + itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info, messages_definition_xml, itti_dump_file); + +# if defined(ENABLE_USE_MME) + if (itti_create_task(TASK_SCTP, sctp_eNB_task, NULL) < 0) { + LOG_E(EMU, "Create task failed"); + LOG_D(EMU, "Initializing SCTP task interface: FAILED\n"); + return -1; + } + if (itti_create_task(TASK_S1AP, s1ap_eNB_task, NULL) < 0) { + LOG_E(EMU, "Create task failed"); + LOG_D(EMU, "Initializing S1AP task interface: FAILED\n"); + return -1; + } +# endif + + if (itti_create_task(TASK_L2L1, l2l1_task, NULL) < 0) { + LOG_E(EMU, "Create task failed"); + LOG_D(EMU, "Initializing L2L1 task interface: FAILED\n"); + return -1; + } + + // Handle signals until all tasks are terminated +// itti_wait_tasks_end(); +#endif + if (ouput_vcd) { if (UE_flag==1) vcd_signal_dumper_init("/tmp/openair_dump_UE.vcd"); @@ -1431,6 +1552,23 @@ int main(int argc, char **argv) { #ifdef OPENAIR2 int eMBMS_active=0; + +#if defined(ENABLE_ITTI) + if (UE_flag == 1) { + if (itti_create_task (TASK_RRC_UE, rrc_ue_task, NULL) < 0) { + LOG_E(EMU, "Create task failed"); + LOG_D(EMU, "Initializing RRC UE task interface: FAILED\n"); + exit (EXIT_FAILURE); + } + } else { + if (itti_create_task (TASK_RRC_ENB, rrc_enb_task, NULL) < 0) { + LOG_E(EMU, "Create task failed"); + LOG_D(EMU, "Initializing RRC eNB task interface: FAILED\n"); + exit (EXIT_FAILURE); + } + } +#endif + l2_init(frame_parms,eMBMS_active, 0,// cba_group_active 0); // HO flag diff --git a/targets/SIMU/USER/Makefile b/targets/SIMU/USER/Makefile index dc2037af23..debaee116a 100644 --- a/targets/SIMU/USER/Makefile +++ b/targets/SIMU/USER/Makefile @@ -1,5 +1,9 @@ -# Include some standard directives -include Makerules +# Include some shared directives +include $(OPENAIR_TARGETS)/Makerules + +default: oaisim + +include $(OPENAIR_TARGETS)/Makefile.common CPUFLAGS = -mmmx -msse -msse2 -msse4.1 -march=native # FORCE ssse3 for compilation of openair on User Mode Linux @@ -7,29 +11,13 @@ CPUFLAGS += $(shell if grep --silent ssse3 /proc/cpuinfo ; then echo "-mssse3" ; CPUFLAGS += $(shell if grep --silent -w sse4 /proc/cpuinfo ; then echo "-msse4" ; else echo ""; fi) linux = $(shell if [ `uname` = "Linux" ] ; then echo "1" ; else echo "0" ; fi) -COMMON_UTILS_DIR = $(OPENAIR_HOME)/common/utils TOP_DIR = $(OPENAIR1_DIR) OPENAIR1_TOP = $(OPENAIR1_DIR) OPENAIR2_TOP = $(OPENAIR2_DIR) OPENAIR3_TOP = $(OPENAIR3_DIR) OPENAIR3 = $(OPENAIR3_DIR) -S1AP_DIR = $(OPENAIR_HOME)/openair-cn/S1AP -SCTP_DIR = $(OPENAIR_HOME)/openair-cn/SCTP -S1AP_OBJ_DIR = $(subst $(OPENAIR_HOME),$(OBJS_DIR),$(S1AP_DIR)) -SCTP_OBJ_DIR = $(subst $(OPENAIR_HOME),$(OBJS_DIR),$(SCTP_DIR)) - -export S1AP_DIR -export COMMON_UTILS_DIR - -CFLAGS = $(COMMON_CFLAGS) -DUSER_MODE -DNB_ANTENNAS_RX=2 -DNB_ANTENNAS_TXRX=2 -DNB_ANTENNAS_TX=2 $(CPUFLAGS) -I/usr/include/X11 #-Wno-packed-bitfield-compat - -ifdef ENABLE_ITTI -CFLAGS += -DENABLE_ITTI -ifndef DISABLE_ITTI_EVENT_FD -CFLAGS += -DENABLE_EVENT_FD -endif -endif +CFLAGS += $(COMMON_CFLAGS) -DUSER_MODE -DNB_ANTENNAS_RX=2 -DNB_ANTENNAS_TXRX=2 -DNB_ANTENNAS_TX=2 $(CPUFLAGS) -I/usr/include/X11 #-Wno-packed-bitfield-compat # Check if GCC version is greater or equal to 4.4 GCCVERSIONGTEQ44 := $(shell expr `gcc -dumpversion | cut -f1,2 -d. --output-delimiter=""` \>= 44) @@ -175,10 +163,6 @@ ifndef DISABLE_XER_PRINT CFLAGS += -DXER_PRINT endif -ifneq ($(USE_MME), R8) -UPDATE_RELEASE_9=1 -endif - ifdef SECU ifeq ($(NETTLE_FOUND), 0) @echo "Nettle library >= 2.5 is not installed on your system, continuing with security disabled" @@ -194,7 +178,6 @@ endif endif endif -include $(COMMON_UTILS_DIR)/Makefile.inc include $(OPENAIR1_DIR)/PHY/Makefile.inc include $(OPENAIR1_DIR)/SCHED/Makefile.inc include $(OPENAIR2_DIR)/RRC/LITE/MESSAGES/Makefile.inc @@ -202,14 +185,6 @@ include $(OPENAIR2_DIR)/LAYER2/Makefile.inc include $(OPENAIR1_DIR)/SIMULATION/ETH_TRANSPORT/Makefile.inc include $(OPENAIR2_DIR)/RRC/NAS/Makefile.inc include $(OPENAIR2_DIR)/UTIL/Makefile.inc -#include $(OPENAIR2_DIR)/S1AP/Makefile.inc -#include $(OPENAIR2_DIR)/S1AP/MESSAGES/Makefile.inc - -ITTI_MESSAGES_H = messages_xml.h - -ITTI_MESSAGES_XML = messages.xml - -ITTI_MESSAGES_FILE = $(ITTI_DIR)/intertask_interface_types.h SIMULATION_OBJS = $(TOP_DIR)/SIMULATION/TOOLS/gauss.o SIMULATION_OBJS += $(TOP_DIR)/SIMULATION/TOOLS/random_channel.o @@ -230,7 +205,7 @@ OAISIM_OBJS_COMMON += $(OPENAIR_TARGETS)/SIMU/USER/sinr_sim.o OAISIM_OBJS_COMMON += $(OPENAIR_TARGETS)/SIMU/USER/cor_SF_sim.o OAISIM_OBJS_COMMON += $(OPENAIR_TARGETS)/SIMU/USER/oaisim_functions.o -OAISIM_OBJS = oaisim.o +OAISIM_OBJS = $(OPENAIR_TARGETS)/SIMU/USER/oaisim.o ifdef XFORMS TOOLS_OBJS += $(OPENAIR1_DIR)/PHY/TOOLS/lte_phy_scope.o @@ -264,8 +239,8 @@ endif # Check if libpgm is installed and use it if found instead of the unreliable # multicast ifeq ($(PGM_FOUND), 1) -CFLAGS += $(PGM_CFLAGS) -DENABLE_PGM_TRANSPORT -LIBS += $(PGM_LIBS) +CFLAGS += $(PGM_CFLAGS) -DENABLE_PGM_TRANSPORT +LIBS += $(PGM_LIBS) endif OBJ = $(PHY_OBJS) $(SIMULATION_OBJS) $(ETHERNET_TRANSPORT_OBJS) $(TOOLS_OBJS) $(SCHED_OBJS) $(STATS_OBJS) $(NAS_OBJS) $(INT_OBJS) $(UTIL_OBJ) $(UTILS_OBJS) $(OAISIM_OBJS_COMMON) @@ -276,9 +251,7 @@ endif LFDS_OBJ_DIR = $(subst $(OPENAIR_HOME),$(OBJS_DIR),$(LFDS_DIR)) LFDS_LIB = $(LFDS_OBJ_DIR)/bin/liblfds611.a LIBS += $(LFDS_LIB) -OAISIM_DEPENDENCIES = $(LFDS_LIB) - -default: oaisim +SHARED_DEPENDENCIES += $(LFDS_LIB) all: oaisim pad @@ -289,20 +262,6 @@ userclean: cleanall oaisim objsdir: @if [ ! -d $(OBJS_DIR) ]; then mkdir -p $(OBJS_DIR); fi -ifdef USE_MME -CFLAGS += -DENB_MODE -DENABLE_USE_MME -DENABLE_EVENT_FD -I$(S1AP_DIR) -I$(SCTP_DIR) -S1AP_CFLAGS = $(CFLAGS) -I$(TOP_DIR) $(L2_incl) $(UTIL_incl) $(UTILS_incl) - -LIBS += $(S1AP_OBJ_DIR)/libs1ap.a $(SCTP_OBJ_DIR)/libsctp.a -lsctp -lcrypt -OAISIM_DEPENDENCIES += $(S1AP_OBJ_DIR)/libs1ap.a $(SCTP_OBJ_DIR)/libsctp.a -export S1AP_CFLAGS - -$(S1AP_OBJ_DIR)/libs1ap.a: force_look - @$(MAKE) -C $(S1AP_DIR) -f Makefile.eNB $(S1AP_OBJ_DIR)/libs1ap.a OUTDIR=$(S1AP_OBJ_DIR) -$(SCTP_OBJ_DIR)/libsctp.a: force_look - @$(MAKE) -C $(SCTP_DIR) -f Makefile.eNB $(SCTP_OBJ_DIR)/libsctp.a OUTDIR=$(SCTP_OBJ_DIR) -endif - printvars: @echo rrc_cellular variable is $(rrc_cellular) @echo EXTRA_CFLAGS = $(EXTRA_CFLAGS) @@ -323,28 +282,7 @@ OAISIM_COMPILED_OBJECTS = $(subst $(OPENAIR_HOME), $(OBJS_DIR), $(OBJ) $(OAISIM_ -include $(OAISIM_COMPILED_OBJECTS:.o=.d) ifdef ENABLE_ITTI -gccxml_available = $(shell if [ `gccxml --version | grep GCC-XML -c` = "0" ]; then echo "0" ; else echo "1" ; fi ) -ifeq ($(gccxml_available), 0) -$(error gccxml is missing, please install) -endif -endif - -$(ITTI_MESSAGES_XML): $(ITTI_MESSAGES_FILE) - @echo "Generating messages.xml ..." - @gccxml $(L2_incl) $(UTILS_incl) $< -fxml=$@ - @$(CC) -MM $(L2_incl) $(UTILS_incl) $< > $(basename $@).d - @mv -f $(basename $@).d $(basename $@).d.tmp - @sed -e 's|.*:|$@:|' < $(basename $@).d.tmp > $(basename $@).d - @sed -e 's/.*://' -e 's/\\$$//' < $(basename $@).d.tmp | fmt -1 | \ - sed -e 's/^ *//' -e 's/$$/:/' >> $(basename $@).d - @rm -f $(basename $@).d.tmp - -$(ITTI_MESSAGES_H): $(ITTI_MESSAGES_XML) - @echo "Generating messages_xml.h ..." - @sed -e 's/[ ]*//' -e 's/"/\\"/g' -e 's/^/"/' -e 's/$$/\\n"/' $< > $@ - -ifdef ENABLE_ITTI -$(OAISIM_OBJS): $(ITTI_MESSAGES_H) +$(OAISIM_COMPILED_OBJECTS): $(ITTI_MESSAGES_H) oaisim_pad.o: $(ITTI_MESSAGES_H) endif @@ -373,7 +311,7 @@ oaisim_pad: $(OBJ) $(OAISIM_PAD_OBJS) $(ASN1_MSG_OBJS1) @$(MPICC) -I$(TOP_DIR) $(L2_incl) $(UTIL_incl) $(UTILS_incl) -I$(ASN1_MSG_INC) $(S1AP_Incl) -o oaisim_pad $(CFLAGS) $(EXTRA_CFLAGS) $(OBJ) $(OAISIM_PAD_OBJS) $(ASN1_MSG_OBJS1) \ -lpthread -llapack_atlas -lforms -lrt $(LIBS) $(DB_LDFLAGS) -oaisim: $(OAISIM_COMPILED_OBJECTS) $(OAISIM_DEPENDENCIES) +oaisim: $(OAISIM_COMPILED_OBJECTS) $(SHARED_DEPENDENCIES) @echo "Linking oaisim ..." @$(CC) -I$(TOP_DIR) $(L2_incl) $(UTIL_incl) $(UTILS_incl) -I$(ASN1_MSG_INC) $(S1AP_Incl) -o oaisim $(CFLAGS) $(EXTRA_CFLAGS) $(OAISIM_COMPILED_OBJECTS) \ -lpthread -llapack_atlas -lforms -lrt $(LIBS) $(DB_LDFLAGS) @@ -425,19 +363,16 @@ cleanall: clean cleanasn1 cleanalmostall: clean rm -f $(ASN1_MSG_OBJS1) -clean: - @$(MAKE) -C $(LFDS_DIR) -f makefile.linux clean OUTDIR=$(LFDS_OBJ_DIR) +clean: common-clean @$(RM_F_V) oaisim @$(RM_F_V) oaisim_pad - @$(RM_F_V) $(ITTI_MESSAGES_H) $(ITTI_MESSAGES_XML) $(ITTI_MESSAGES_XML:.xml=.d) +# @$(RM_F_V) $(ITTI_MESSAGES_H) $(ITTI_MESSAGES_XML) $(ITTI_MESSAGES_XML:.xml=.d) @$(RM_F_V) $(OAISIM_PAD_OBJS) @$(RM_F_V) $(OAISIM_PAD_OBJS:.o=.d) @$(RM_F_V) $(OAISIM_COMPILED_OBJECTS) @$(RM_F_V) $(OAISIM_COMPILED_OBJECTS:.o=.d) @$(RM_F_V) *.exe* @$(RM_F_V) $(ASN1_MSG_INC)/asn1_msg.o - @if [ -d $(S1AP_DIR) ]; then $(MAKE) -C $(S1AP_DIR) -f Makefile.eNB clean OUTDIR=$(S1AP_OBJ_DIR); fi - @if [ -d $(SCTP_DIR) ]; then $(MAKE) -C $(SCTP_DIR) -f Makefile.eNB clean OUTDIR=$(SCTP_OBJ_DIR); fi cleanl1: @$(RM_F_V) LOG_THREAD oaisim @@ -489,9 +424,6 @@ showcflags: @echo oaisim cflags: $(CFLAGS) @if [ -d $(S1AP_DIR) ]; then $(MAKE) -C $(S1AP_DIR) -f Makefile.eNB showcflags; fi -force_look: - @true - otg_all: otg_latency otg_gp # need to check if the file exists before calling otgplot -- GitLab