Reorganized RTAI and SIMU makefiles to factorize some common code.
Added some NAS primitive handling on UE side. pre-ci Ok. git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4625 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -60,6 +60,10 @@ void *nas_ue_task(void *args_p) {
|
||||
LOG_I(NAS, "[UE %d] Received %s\n", Mod_id, msg_name);
|
||||
break;
|
||||
|
||||
case NAS_DOWNLINK_DATA_IND:
|
||||
LOG_I(NAS, "[UE %d] Received %s: UEid %u, lenght %u\n", Mod_id, msg_name,
|
||||
NAS_DOWNLINK_DATA_IND (msg_p).UEid, NAS_DOWNLINK_DATA_IND (msg_p).nasMsg.length);
|
||||
break;
|
||||
|
||||
default:
|
||||
LOG_E(NAS, "[UE %d] Received unexpected message %s\n", Mod_id, msg_name);
|
||||
|
||||
+418
-407
File diff suppressed because it is too large
Load Diff
+14
-4
@@ -5,6 +5,8 @@ ITTI_MESSAGES_XML = messages.xml
|
||||
ITTI_MESSAGES_FILE = $(ITTI_DIR)/intertask_interface_types.h
|
||||
|
||||
include $(COMMON_UTILS_DIR)/Makefile.inc
|
||||
include $(OPENAIR_TARGETS)/COMMON/Makefile.inc
|
||||
include $(OPENAIR2_DIR)/NAS/Makefile.inc
|
||||
|
||||
$(ITTI_MESSAGES_XML): $(ITTI_MESSAGES_FILE)
|
||||
@echo "Generating messages.xml ..."
|
||||
@@ -20,10 +22,6 @@ $(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)
|
||||
@@ -38,6 +36,18 @@ $(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)
|
||||
|
||||
CFLAGS += $(NAS_UE_incl)
|
||||
|
||||
OBJ = $(NAS_UE_OBJS)
|
||||
endif
|
||||
|
||||
ifdef ENABLE_ITTI
|
||||
SHARED_DEPENDENCIES = $(ITTI_MESSAGES_H)
|
||||
|
||||
CFLAGS += $(TARGETS_COMMON_incl)
|
||||
|
||||
OBJ += $(TARGETS_COMMON_OBJS)
|
||||
endif
|
||||
|
||||
ifdef ENABLE_ITTI
|
||||
|
||||
@@ -41,8 +41,8 @@ else
|
||||
RTAI_OBJ += lte-softmodem.o
|
||||
endif
|
||||
else
|
||||
#OBJ = sched_dlsch.o sched_ulsch.o sched_rx_pdsch.o lte-softmodem.o rt_wrapper.o
|
||||
OBJ = sched_dlsch.o sched_ulsch.o sched_rx_pdsch.o rt_wrapper.o
|
||||
#OBJ += sched_dlsch.o sched_ulsch.o sched_rx_pdsch.o lte-softmodem.o rt_wrapper.o
|
||||
OBJ += sched_dlsch.o sched_ulsch.o sched_rx_pdsch.o rt_wrapper.o
|
||||
ifeq ($(USRP),1)
|
||||
OBJ += lte-softmodem-usrp.o
|
||||
else
|
||||
|
||||
@@ -101,14 +101,11 @@ unsigned short config_frames[4] = {2,9,11,13};
|
||||
#include "UTIL/MATH/oml.h"
|
||||
#include "UTIL/LOG/vcd_signal_dumper.h"
|
||||
|
||||
#include "enb_app.h"
|
||||
|
||||
#if defined(ENABLE_ITTI)
|
||||
# include "intertask_interface_init.h"
|
||||
# include "timer.h"
|
||||
# include "create_tasks.h"
|
||||
# if defined(ENABLE_USE_MME)
|
||||
# include "s1ap_eNB.h"
|
||||
# include "sctp_eNB_task.h"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
@@ -233,16 +230,23 @@ void signal_handler(int sig)
|
||||
exit(-1);
|
||||
}
|
||||
else {
|
||||
oai_exit=1;
|
||||
oai_exit = 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void exit_fun(const char* s)
|
||||
{
|
||||
printf("Exiting: %s\n",s);
|
||||
if (s != NULL) {
|
||||
printf("Exiting: %s\n",s);
|
||||
}
|
||||
|
||||
oai_exit = 1;
|
||||
|
||||
#if defined(ENABLE_ITTI)
|
||||
itti_send_terminate_message (TASK_UNKNOWN);
|
||||
#endif
|
||||
|
||||
oai_exit=1;
|
||||
//rt_sleep_ns(FRAME_PERIOD);
|
||||
|
||||
//exit (-1);
|
||||
@@ -528,64 +532,6 @@ void *l2l1_task(void *arg)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(ENABLE_ITTI)
|
||||
static int create_tasks(uint32_t enb_nb, uint32_t ue_nb) {
|
||||
# if defined(ENABLE_USE_MME)
|
||||
{
|
||||
if (enb_nb > 0) {
|
||||
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
|
||||
|
||||
# ifdef OPENAIR2
|
||||
{
|
||||
if (enb_nb > 0) {
|
||||
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 (-1);
|
||||
}
|
||||
}
|
||||
|
||||
if (ue_nb > 0) {
|
||||
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 (-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;
|
||||
}
|
||||
|
||||
if (enb_nb > 0) {
|
||||
/* Last task to create, others task must be ready before its start */
|
||||
if (itti_create_task(TASK_ENB_APP, eNB_app_task, NULL) < 0) {
|
||||
LOG_E(EMU, "Create task failed");
|
||||
LOG_D(EMU, "Initializing eNB APP task interface: FAILED\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* This is the main eNB thread. It gets woken up by the kernel driver using the RTAI message mechanism (rt_send and rt_receive). */
|
||||
static void *eNB_thread(void *arg)
|
||||
{
|
||||
@@ -659,10 +605,7 @@ static void *eNB_thread(void *arg)
|
||||
LOG_D(HW,"eNB Frame %d, time %llu: missed slot, proceeding with next one (slot %d, hw_slot %d, diff %d)\n",frame, rt_get_time_ns(), slot, hw_slot, diff);
|
||||
slot++;
|
||||
if (frame > 0) {
|
||||
oai_exit = 1;
|
||||
#if defined(ENABLE_ITTI)
|
||||
itti_send_terminate_message (TASK_L2L1);
|
||||
#endif
|
||||
exit_fun(NULL);
|
||||
}
|
||||
if (slot==20){
|
||||
slot=0;
|
||||
@@ -687,8 +630,8 @@ static void *eNB_thread(void *arg)
|
||||
delay_cnt++;
|
||||
if (delay_cnt == 10)
|
||||
{
|
||||
oai_exit = 1;
|
||||
LOG_D(HW,"eNB Frame %d: HW stopped ... \n",frame);
|
||||
exit_fun(NULL);
|
||||
}
|
||||
mbox_current = ((volatile unsigned int *)DAQ_MBOX)[0];
|
||||
if ((mbox_current>=135) && (mbox_target<15)) //handle the frame wrap-arround
|
||||
@@ -896,7 +839,7 @@ static void *UE_thread(void *arg)
|
||||
if (diff2 <(-7)) {
|
||||
LOG_D(HW,"UE Frame %d: missed slot, proceeding with next one (slot %d, hw_slot %d, diff %d)\n",frame, slot, hw_slot, diff2);
|
||||
if (frame>0)
|
||||
oai_exit=1;
|
||||
exit_fun(NULL);
|
||||
slot++;
|
||||
if (slot==20) {
|
||||
slot=0;
|
||||
@@ -930,8 +873,8 @@ static void *UE_thread(void *arg)
|
||||
delay_cnt++;
|
||||
if (delay_cnt == 30)
|
||||
{
|
||||
oai_exit = 1;
|
||||
LOG_D(HW,"UE frame %d: HW stopped ... \n",frame);
|
||||
exit_fun(NULL);
|
||||
}
|
||||
mbox_current = ((volatile unsigned int *)DAQ_MBOX)[0];
|
||||
if ((mbox_current>=135) && (mbox_target<15)) //handle the frame wrap-arround
|
||||
@@ -998,43 +941,43 @@ static void *UE_thread(void *arg)
|
||||
memset(PHY_vars_UE_g[0]->lte_ue_common_vars.rxdata[aa],0,
|
||||
PHY_vars_UE_g[0]->lte_frame_parms.samples_per_tti*LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*sizeof(int));
|
||||
*/
|
||||
if (mode == rx_calib_ue) {
|
||||
oai_exit=1;
|
||||
}
|
||||
else {
|
||||
is_synchronized = 1;
|
||||
//start the DMA transfers
|
||||
//LOG_D(HW,"Before openair0_start_rt_acquisition \n");
|
||||
openair0_start_rt_acquisition(card);
|
||||
|
||||
hw_slot_offset = (PHY_vars_UE_g[0]->rx_offset<<1) / PHY_vars_UE_g[0]->lte_frame_parms.samples_per_tti;
|
||||
LOG_D(HW,"Got synch: hw_slot_offset %d\n",hw_slot_offset);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (openair_daq_vars.freq_offset >= 0) {
|
||||
openair_daq_vars.freq_offset += 100;
|
||||
openair_daq_vars.freq_offset *= -1;
|
||||
}
|
||||
else {
|
||||
openair_daq_vars.freq_offset *= -1;
|
||||
}
|
||||
if (abs(openair_daq_vars.freq_offset) > 7500) {
|
||||
LOG_I(PHY,"[initial_sync] No cell synchronization found, abondoning\n");
|
||||
mac_xface->macphy_exit("");
|
||||
}
|
||||
else {
|
||||
LOG_I(PHY,"[initial_sync] trying carrier off %d Hz\n",openair_daq_vars.freq_offset);
|
||||
for (i=0; i<4; i++) {
|
||||
if (p_exmimo_config->rf.rf_freq_rx[i])
|
||||
p_exmimo_config->rf.rf_freq_rx[i] = carrier_freq[i]+openair_daq_vars.freq_offset;
|
||||
if (p_exmimo_config->rf.rf_freq_tx[i])
|
||||
p_exmimo_config->rf.rf_freq_tx[i] = carrier_freq[i]+openair_daq_vars.freq_offset;
|
||||
}
|
||||
openair0_dump_config(card);
|
||||
rt_sleep_ns(FRAME_PERIOD);
|
||||
}
|
||||
}
|
||||
if (mode == rx_calib_ue) {
|
||||
exit_fun(NULL);
|
||||
}
|
||||
else {
|
||||
is_synchronized = 1;
|
||||
//start the DMA transfers
|
||||
//LOG_D(HW,"Before openair0_start_rt_acquisition \n");
|
||||
openair0_start_rt_acquisition(card);
|
||||
|
||||
hw_slot_offset = (PHY_vars_UE_g[0]->rx_offset<<1) / PHY_vars_UE_g[0]->lte_frame_parms.samples_per_tti;
|
||||
LOG_D(HW,"Got synch: hw_slot_offset %d\n",hw_slot_offset);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (openair_daq_vars.freq_offset >= 0) {
|
||||
openair_daq_vars.freq_offset += 100;
|
||||
openair_daq_vars.freq_offset *= -1;
|
||||
}
|
||||
else {
|
||||
openair_daq_vars.freq_offset *= -1;
|
||||
}
|
||||
if (abs(openair_daq_vars.freq_offset) > 7500) {
|
||||
LOG_I(PHY,"[initial_sync] No cell synchronization found, abondoning\n");
|
||||
mac_xface->macphy_exit("");
|
||||
}
|
||||
else {
|
||||
LOG_I(PHY,"[initial_sync] trying carrier off %d Hz\n",openair_daq_vars.freq_offset);
|
||||
for (i=0; i<4; i++) {
|
||||
if (p_exmimo_config->rf.rf_freq_rx[i])
|
||||
p_exmimo_config->rf.rf_freq_rx[i] = carrier_freq[i]+openair_daq_vars.freq_offset;
|
||||
if (p_exmimo_config->rf.rf_freq_tx[i])
|
||||
p_exmimo_config->rf.rf_freq_tx[i] = carrier_freq[i]+openair_daq_vars.freq_offset;
|
||||
}
|
||||
openair0_dump_config(card);
|
||||
rt_sleep_ns(FRAME_PERIOD);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1793,7 +1736,6 @@ int main(int argc, char **argv) {
|
||||
if (UE_flag!=1)
|
||||
openair0_start_rt_acquisition(card);
|
||||
|
||||
|
||||
#ifdef XFORMS
|
||||
if (do_forms==1) {
|
||||
fl_initialize (&argc, argv, NULL, 0, 0);
|
||||
|
||||
@@ -5,18 +5,18 @@ 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
|
||||
CPUFLAGS += $(shell if grep --silent ssse3 /proc/cpuinfo ; then echo "-mssse3" ; else if grep --silent User\ Mode\ Linux /proc/cpuinfo ; then echo "-mssse3" ; else echo ""; fi; fi)
|
||||
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)
|
||||
|
||||
TOP_DIR = $(OPENAIR1_DIR)
|
||||
OPENAIR1_TOP = $(OPENAIR1_DIR)
|
||||
OPENAIR2_TOP = $(OPENAIR2_DIR)
|
||||
OPENAIR3_TOP = $(OPENAIR3_DIR)
|
||||
OPENAIR3 = $(OPENAIR3_DIR)
|
||||
|
||||
CPUFLAGS = -mmmx -msse -msse2 -msse4.1 -march=native
|
||||
# FORCE ssse3 for compilation of openair on User Mode Linux
|
||||
CPUFLAGS += $(shell if grep --silent ssse3 /proc/cpuinfo ; then echo "-mssse3" ; else if grep --silent User\ Mode\ Linux /proc/cpuinfo ; then echo "-mssse3" ; else echo ""; fi; fi)
|
||||
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)
|
||||
|
||||
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
|
||||
@@ -187,7 +187,7 @@ include $(OPENAIR2_DIR)/RRC/NAS/Makefile.inc
|
||||
include $(OPENAIR2_DIR)/UTIL/Makefile.inc
|
||||
include $(OPENAIR2_DIR)/ENB_APP/Makefile.inc
|
||||
|
||||
INCLUDES = -I$(TOP_DIR)
|
||||
INCLUDES += -I$(TOP_DIR)
|
||||
INCLUDES += $(L2_incl)
|
||||
INCLUDES += $(ENB_APP_incl)
|
||||
INCLUDES += $(UTIL_incl)
|
||||
@@ -251,7 +251,7 @@ 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)
|
||||
OBJ += $(PHY_OBJS) $(SIMULATION_OBJS) $(ETHERNET_TRANSPORT_OBJS) $(TOOLS_OBJS) $(SCHED_OBJS) $(STATS_OBJS) $(NAS_OBJS)
|
||||
OBJ += $(INT_OBJS) $(UTIL_OBJ) $(UTILS_OBJS) $(OAISIM_OBJS_COMMON) $(ENB_APP_OBJS)
|
||||
ifeq ($(OPENAIR2),1)
|
||||
OBJ += $(L2_OBJS)
|
||||
|
||||
@@ -71,15 +71,9 @@ char smbv_ip[16];
|
||||
#include "UTIL/OTG/otg_kpi.h"
|
||||
#include "assertions.h"
|
||||
|
||||
#include "enb_app.h"
|
||||
|
||||
#if defined(ENABLE_ITTI)
|
||||
# include "intertask_interface.h"
|
||||
# include "timer.h"
|
||||
# if defined(ENABLE_USE_MME)
|
||||
# include "s1ap_eNB.h"
|
||||
# include "sctp_eNB_task.h"
|
||||
# endif
|
||||
# include "create_tasks.h"
|
||||
#endif
|
||||
|
||||
#define RF
|
||||
@@ -375,7 +369,7 @@ static s32 UE_id = 0, eNB_id = 0;
|
||||
static s32 RN_id=0;
|
||||
#endif
|
||||
|
||||
static void *l2l1_task(void *args_p) {
|
||||
void *l2l1_task(void *args_p) {
|
||||
// Framing variables
|
||||
s32 slot, last_slot, next_slot;
|
||||
|
||||
@@ -951,64 +945,6 @@ static void *l2l1_task(void *args_p) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if defined(ENABLE_ITTI)
|
||||
static int create_tasks(uint32_t enb_nb, uint32_t ue_nb) {
|
||||
# if defined(ENABLE_USE_MME)
|
||||
{
|
||||
if (enb_nb > 0) {
|
||||
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
|
||||
|
||||
# ifdef OPENAIR2
|
||||
{
|
||||
if (enb_nb > 0) {
|
||||
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 (-1);
|
||||
}
|
||||
}
|
||||
|
||||
if (ue_nb > 0) {
|
||||
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 (-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;
|
||||
}
|
||||
|
||||
if (enb_nb > 0) {
|
||||
/* Last task to create, others task must be ready before its start */
|
||||
if (itti_create_task(TASK_ENB_APP, eNB_app_task, NULL) < 0) {
|
||||
LOG_E(EMU, "Create task failed");
|
||||
LOG_D(EMU, "Initializing eNB APP task interface: FAILED\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
Packet_OTG_List *otg_pdcp_buffer;
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
Reference in New Issue
Block a user