Commit 6be97a95 authored by gauthier's avatar gauthier

Added configuration File, example in targets/PROJECTS/GENERIC-LTE-EPC

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4950 818b1a75-f10b-46b9-bf7c-635c3b92a50f
parent 0ee55ead
...@@ -74,7 +74,7 @@ ENABLE_DB = $(shell if [ `dpkg -l | grep libmysqlclient -c` = "0" ]; then echo ...@@ -74,7 +74,7 @@ ENABLE_DB = $(shell if [ `dpkg -l | grep libmysqlclient -c` = "0" ]; then echo
ifeq ($(ENABLE_DB), 1) ifeq ($(ENABLE_DB), 1)
CFLAGS +=-I/usr/include/mysql -L/usr/lib/mysql -DENABLE_DB_STATS CFLAGS +=-I/usr/include/mysql -L/usr/lib/mysql -DENABLE_DB_STATS
DB_LDFLAGS = -lmysqlclient DB_LDFLAGS = -lmysqlclient
endif endif
endif endif
ifdef PRINT_STATS ifdef PRINT_STATS
...@@ -240,7 +240,7 @@ endif ...@@ -240,7 +240,7 @@ endif
OAISIM_PAD_OBJS = $(OPENAIR_TARGETS)/SIMU/USER/discrete_event_generator.o OAISIM_PAD_OBJS = $(OPENAIR_TARGETS)/SIMU/USER/discrete_event_generator.o
OAISIM_PAD_OBJS += $(OPENAIR_TARGETS)/SIMU/USER/threadpool.o OAISIM_PAD_OBJS += $(OPENAIR_TARGETS)/SIMU/USER/threadpool.o
OAISIM_PAD_OBJS += $(OPENAIR_TARGETS)/SIMU/USER/oaisim_pad.o OAISIM_PAD_OBJS += $(OPENAIR_TARGETS)/SIMU/USER/oaisim_pad.o
#deactivate the log offloading #deactivate the log offloading
ifndef LOG_THREAD ifndef LOG_THREAD
CFLAGS +=-DLOG_NO_THREAD CFLAGS +=-DLOG_NO_THREAD
endif endif
...@@ -266,7 +266,7 @@ LIBS += $(PGM_LIBS) ...@@ -266,7 +266,7 @@ LIBS += $(PGM_LIBS)
endif 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) OBJ += $(INT_OBJS) $(UTIL_OBJ) $(UTILS_OBJS) $(OAISIM_OBJS_COMMON) $(ENB_APP_OBJS)
ifeq ($(OPENAIR2),1) ifeq ($(OPENAIR2),1)
OBJ += $(L2_OBJS) OBJ += $(L2_OBJS)
endif endif
...@@ -298,6 +298,10 @@ printvars: ...@@ -298,6 +298,10 @@ printvars:
@echo CFLAGS: $(CFLAGS) @echo CFLAGS: $(CFLAGS)
@echo Enable PGM: $(ENABLE_PGM) @echo Enable PGM: $(ENABLE_PGM)
##UTIL_YAC_C = $(OPENAIR2_TOP)/UTIL/enb_parser.o
##$(UTIL_LEX_C) = $(subst $(OPENAIR_HOME), $(OBJS_DIR), $(OBJ) $(OAISIM_OBJS) $(ASN1_MSG_OBJS1))
OAISIM_COMPILED_OBJECTS = $(subst $(OPENAIR_HOME), $(OBJS_DIR), $(OBJ) $(OAISIM_OBJS) $(ASN1_MSG_OBJS1)) OAISIM_COMPILED_OBJECTS = $(subst $(OPENAIR_HOME), $(OBJS_DIR), $(OBJ) $(OAISIM_OBJS) $(ASN1_MSG_OBJS1))
-include $(ITTI_MESSAGES_XML:.xml=.d) -include $(ITTI_MESSAGES_XML:.xml=.d)
...@@ -337,7 +341,7 @@ oaisim_pad: $(OBJ) $(OAISIM_PAD_OBJS) $(ASN1_MSG_OBJS1) ...@@ -337,7 +341,7 @@ oaisim_pad: $(OBJ) $(OAISIM_PAD_OBJS) $(ASN1_MSG_OBJS1)
oaisim: $(OAISIM_COMPILED_OBJECTS) $(SHARED_DEPENDENCIES) oaisim: $(OAISIM_COMPILED_OBJECTS) $(SHARED_DEPENDENCIES)
@echo "Linking oaisim ..." @echo "Linking oaisim ..."
@$(CC) $(INCLUDES) $(S1AP_Incl) -o oaisim $(CFLAGS) $(EXTRA_CFLAGS) $(OAISIM_COMPILED_OBJECTS) \ @$(CC) $(INCLUDES) $(S1AP_Incl) -o oaisim $(CFLAGS) $(EXTRA_CFLAGS) $(OAISIM_COMPILED_OBJECTS) \
-lpthread -llapack_atlas -lforms -lrt $(LIBS) $(DB_LDFLAGS) -lpthread -llapack_atlas -lforms -lrt -lconfig $(LIBS) $(DB_LDFLAGS)
ifeq ($(rrc_cellular_eNB),1) ifeq ($(rrc_cellular_eNB),1)
mv oaisim oaisim_eNB mv oaisim oaisim_eNB
...@@ -363,7 +367,7 @@ nasmesh_fix_install: ...@@ -363,7 +367,7 @@ nasmesh_fix_install:
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE)) (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE))
(cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink_address_fix.ko) (cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink_address_fix.ko)
(sudo insmod $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko) (sudo insmod $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko)
(cp $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko . ) (cp $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko . )
nasmesh_nl: nasmesh_nl:
(cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE)) (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE))
(cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink.ko) (cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink.ko)
...@@ -387,7 +391,7 @@ rrm_std_cellular: ...@@ -387,7 +391,7 @@ rrm_std_cellular:
cleanall: common-cleanall clean cleanasn1 cleanall: common-cleanall clean cleanasn1
cleanalmostall: clean cleanalmostall: clean
rm -f $(ASN1_MSG_OBJS1) rm -f $(ASN1_MSG_OBJS1)
clean: common-clean clean: common-clean
...@@ -456,21 +460,21 @@ otg_all: otg_latency otg_gp ...@@ -456,21 +460,21 @@ otg_all: otg_latency otg_gp
# need to check if the file exists before calling otgplot # need to check if the file exists before calling otgplot
otg_latency: otg_latency:
export TITLE="Application OWD(ms)" export TITLE="Application OWD(ms)"
cp /tmp/otg_latency.dat /tmp/onewaydelay.dat cp /tmp/otg_latency.dat /tmp/onewaydelay.dat
$(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_latency.dat" "[$(COL1):$(COL2)]" $(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_latency.dat" "[$(COL1):$(COL2)]"
otg_latency_bg: otg_latency_bg:
export TITLE="Background OWD(ms)" export TITLE="Background OWD(ms)"
$(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_latency_bg.dat" "[$(COL1):$(COL2)]" $(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_latency_bg.dat" "[$(COL1):$(COL2)]"
otg_gp: otg_gp:
export TITLE="Application Goodput(Kb/s)" export TITLE="Application Goodput(Kb/s)"
cp /tmp/otg_GP.dat /tmp/goodput.dat cp /tmp/otg_GP.dat /tmp/goodput.dat
$(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/goodput.dat" "[$(COL1):$(COL2)]" $(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/goodput.dat" "[$(COL1):$(COL2)]"
otg_gp_bg: otg_gp_bg:
export TITLE="Background Goodput(Kb/s)" export TITLE="Background Goodput(Kb/s)"
$(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_GP_bg.dat" "[$(COL1):$(COL2)]" $(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_GP_bg.dat" "[$(COL1):$(COL2)]"
otg_jitter: otg_jitter:
export TITLE="Aplication Jitter(ms)" export TITLE="Aplication Jitter(ms)"
$(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_jitter.dat" "[$(COL1):$(COL2)]" $(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_jitter.dat" "[$(COL1):$(COL2)]"
pexpect = $(shell if [ `dpkg -l | grep pexpect -c` = "0" ]; then echo "0" ; else echo "1" ; fi ) pexpect = $(shell if [ `dpkg -l | grep pexpect -c` = "0" ]; then echo "0" ; else echo "1" ; fi )
...@@ -478,7 +482,7 @@ pexpect = $(shell if [ `dpkg -l | grep pexpect -c` = "0" ]; then echo "0" ; els ...@@ -478,7 +482,7 @@ pexpect = $(shell if [ `dpkg -l | grep pexpect -c` = "0" ]; then echo "0" ; els
pre-ci: pre-ci:
@echo "Pre-commit check" @echo "Pre-commit check"
ifeq ($(pexpect), 1) ifeq ($(pexpect), 1)
ifndef PW ifndef PW
@echo "Usage: make pre-ci PW=mypassword" @echo "Usage: make pre-ci PW=mypassword"
@echo "Password is used to access the local host through ssh." @echo "Password is used to access the local host through ssh."
......
...@@ -53,6 +53,7 @@ int otg_times = 0; ...@@ -53,6 +53,7 @@ int otg_times = 0;
int if_times = 0; int if_times = 0;
int for_times = 0; int for_times = 0;
char *g_conf_config_file_name = NULL;
u16 Nid_cell = 0; //needed by init_lte_vars u16 Nid_cell = 0; //needed by init_lte_vars
int nb_antennas_rx=2; // // int nb_antennas_rx=2; // //
u8 target_dl_mcs = 0; u8 target_dl_mcs = 0;
...@@ -117,6 +118,7 @@ void get_simulation_options(int argc, char *argv[]) { ...@@ -117,6 +118,7 @@ void get_simulation_options(int argc, char *argv[]) {
char c; char c;
int option_index; int option_index;
static struct option long_options[] = { static struct option long_options[] = {
{"config-file", required_argument, 0, 0},
{"pdcp_period", 1, 0, 0}, {"pdcp_period", 1, 0, 0},
{"omg_period", 1, 0, 0}, {"omg_period", 1, 0, 0},
{"enb-ral-listening-port", required_argument, 0, 0}, {"enb-ral-listening-port", required_argument, 0, 0},
...@@ -139,7 +141,12 @@ void get_simulation_options(int argc, char *argv[]) { ...@@ -139,7 +141,12 @@ void get_simulation_options(int argc, char *argv[]) {
while ((c = getopt_long (argc, argv, "aA:b:B:c:C:D:d:eE:f:FGg:hHi:IJ:j:k:K:l:L:m:M:n:N:oO:p:P:Q:rR:s:S:t:T:u:U:vV:w:W:x:X:y:Y:z:Z:", long_options, &option_index)) != -1) { while ((c = getopt_long (argc, argv, "aA:b:B:c:C:D:d:eE:f:FGg:hHi:IJ:j:k:K:l:L:m:M:n:N:oO:p:P:Q:rR:s:S:t:T:u:U:vV:w:W:x:X:y:Y:z:Z:", long_options, &option_index)) != -1) {
switch (c) { switch (c) {
case 0: case 0:
if (! strcmp(long_options[option_index].name, "pdcp_period")) { if (! strcmp(long_options[option_index].name, "config-file")) {
if (optarg) {
g_conf_config_file_name = strdup(optarg);
printf("config file is %s\n", g_conf_config_file_name);
}
} else if (! strcmp(long_options[option_index].name, "pdcp_period")) {
if (optarg) { if (optarg) {
pdcp_period = atoi(optarg); pdcp_period = atoi(optarg);
printf("PDCP period is %d\n", pdcp_period); printf("PDCP period is %d\n", pdcp_period);
...@@ -240,8 +247,8 @@ void get_simulation_options(int argc, char *argv[]) { ...@@ -240,8 +247,8 @@ void get_simulation_options(int argc, char *argv[]) {
break; break;
case 'Q': case 'Q':
//eMBMS_active=1; //eMBMS_active=1;
// 0 : not used (default), 1: eMBMS and RRC enabled, 2: eMBMS relaying and RRC enabled, 3: eMBMS enabled, RRC disabled, 4: eMBMS relaying enabled, RRC disabled // 0 : not used (default), 1: eMBMS and RRC enabled, 2: eMBMS relaying and RRC enabled, 3: eMBMS enabled, RRC disabled, 4: eMBMS relaying enabled, RRC disabled
oai_emulation.info.eMBMS_active_state = atoi (optarg); oai_emulation.info.eMBMS_active_state = atoi (optarg);
break; break;
case 'R': case 'R':
oai_emulation.info.N_RB_DL = atoi (optarg); oai_emulation.info.N_RB_DL = atoi (optarg);
...@@ -494,7 +501,7 @@ void check_and_adjust_params() { ...@@ -494,7 +501,7 @@ void check_and_adjust_params() {
LOG_E(EMU,"Enter fewer than %d eNBs/RNs for the moment or change the NUMBER_OF_UE_MAX\n", NUMBER_OF_eNB_MAX); LOG_E(EMU,"Enter fewer than %d eNBs/RNs for the moment or change the NUMBER_OF_UE_MAX\n", NUMBER_OF_eNB_MAX);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if (oai_emulation.info.nb_rn_local > NUMBER_OF_RN_MAX) { if (oai_emulation.info.nb_rn_local > NUMBER_OF_RN_MAX) {
LOG_E(EMU,"Enter fewer than %d RNs for the moment or change the NUMBER_OF_RN_MAX\n", NUMBER_OF_RN_MAX); LOG_E(EMU,"Enter fewer than %d RNs for the moment or change the NUMBER_OF_RN_MAX\n", NUMBER_OF_RN_MAX);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
...@@ -537,7 +544,7 @@ void check_and_adjust_params() { ...@@ -537,7 +544,7 @@ void check_and_adjust_params() {
} }
} // ethernet flag } // ethernet flag
// //
NB_UE_INST = oai_emulation.info.nb_ue_local + oai_emulation.info.nb_ue_remote; NB_UE_INST = oai_emulation.info.nb_ue_local + oai_emulation.info.nb_ue_remote;
NB_eNB_INST = oai_emulation.info.nb_enb_local + oai_emulation.info.nb_enb_remote; NB_eNB_INST = oai_emulation.info.nb_enb_local + oai_emulation.info.nb_enb_remote;
NB_RN_INST = oai_emulation.info.nb_rn_local + oai_emulation.info.nb_rn_remote; NB_RN_INST = oai_emulation.info.nb_rn_local + oai_emulation.info.nb_rn_remote;
...@@ -548,8 +555,8 @@ void check_and_adjust_params() { ...@@ -548,8 +555,8 @@ void check_and_adjust_params() {
if (NB_RN_INST > 0 ) { if (NB_RN_INST > 0 ) {
LOG_N(EMU,"Total number of RN %d (local %d, remote %d) mobility (the same as eNB) %s \n", NB_RN_INST,oai_emulation.info.nb_rn_local,oai_emulation.info.nb_rn_remote, oai_emulation.topology_config.mobility.eNB_mobility.eNB_mobility_type.selected_option); LOG_N(EMU,"Total number of RN %d (local %d, remote %d) mobility (the same as eNB) %s \n", NB_RN_INST,oai_emulation.info.nb_rn_local,oai_emulation.info.nb_rn_remote, oai_emulation.topology_config.mobility.eNB_mobility.eNB_mobility_type.selected_option);
LOG_N(EMU,"Adjust the number of eNB inst (%d->%d) and UE inst (%d->%d)\n ", LOG_N(EMU,"Adjust the number of eNB inst (%d->%d) and UE inst (%d->%d)\n ",
NB_eNB_INST, NB_eNB_INST+NB_RN_INST, NB_eNB_INST, NB_eNB_INST+NB_RN_INST,
NB_UE_INST, NB_UE_INST+NB_RN_INST); NB_UE_INST, NB_UE_INST+NB_RN_INST);
NB_eNB_INST+=NB_RN_INST; NB_eNB_INST+=NB_RN_INST;
...@@ -559,9 +566,9 @@ void check_and_adjust_params() { ...@@ -559,9 +566,9 @@ void check_and_adjust_params() {
NB_UE_INST,oai_emulation.info.first_ue_local, oai_emulation.info.nb_ue_local,oai_emulation.info.nb_ue_remote, NB_UE_INST,oai_emulation.info.first_ue_local, oai_emulation.info.nb_ue_local,oai_emulation.info.nb_ue_remote,
NB_RN_INST, NB_RN_INST,
oai_emulation.topology_config.mobility.UE_mobility.UE_mobility_type.selected_option); oai_emulation.topology_config.mobility.UE_mobility.UE_mobility_type.selected_option);
LOG_I(EMU,"Total number of eNB %d (local %d, remote %d, relay %d) mobility %s \n", LOG_I(EMU,"Total number of eNB %d (local %d, remote %d, relay %d) mobility %s \n",
NB_eNB_INST,oai_emulation.info.nb_enb_local,oai_emulation.info.nb_enb_remote, NB_eNB_INST,oai_emulation.info.nb_enb_local,oai_emulation.info.nb_enb_remote,
NB_RN_INST, NB_RN_INST,
oai_emulation.topology_config.mobility.eNB_mobility.eNB_mobility_type.selected_option); oai_emulation.topology_config.mobility.eNB_mobility.eNB_mobility_type.selected_option);
...@@ -581,7 +588,7 @@ void init_omv() { ...@@ -581,7 +588,7 @@ void init_omv() {
case -1 : case -1 :
perror("fork failed \n"); perror("fork failed \n");
break; break;
case 0 : // child is going to be the omv, it is the reader case 0 : // child is going to be the omv, it is the reader
if(close(pfd[1]) == -1 ) // we close the write desc. if(close(pfd[1]) == -1 ) // we close the write desc.
perror("close on write\n" ); perror("close on write\n" );
sprintf(fdstr, "%d", pfd[0] ); sprintf(fdstr, "%d", pfd[0] );
...@@ -594,12 +601,12 @@ void init_omv() { ...@@ -594,12 +601,12 @@ void init_omv() {
sprintf(nb_antenna, "%d", 4); sprintf(nb_antenna, "%d", 4);
sprintf(frame_type, "%s", (oai_emulation.info.frame_type == 0) ? "FDD" : "TDD"); sprintf(frame_type, "%s", (oai_emulation.info.frame_type == 0) ? "FDD" : "TDD");
sprintf(tdd_config, "%d", oai_emulation.info.tdd_config); sprintf(tdd_config, "%d", oai_emulation.info.tdd_config);
// execl is used to launch the visualisor // execl is used to launch the visualisor
execl(full_name,"OMV", fdstr, frames, num_enb, num_ue, x_area, y_area, z_area, nb_antenna, frame_type, tdd_config,NULL ); execl(full_name,"OMV", fdstr, frames, num_enb, num_ue, x_area, y_area, z_area, nb_antenna, frame_type, tdd_config,NULL );
perror( "error in execl the OMV" ); perror( "error in execl the OMV" );
} }
//parent //parent
if(close( pfd[0] ) == -1 ) // we close the write desc. if(close( pfd[0] ) == -1 ) // we close the write desc.
perror("close on read\n" ); perror("close on read\n" );
} }
} }
...@@ -691,10 +698,10 @@ void init_openair2() { ...@@ -691,10 +698,10 @@ void init_openair2() {
#ifdef OPENAIR2 #ifdef OPENAIR2
s32 i; s32 i;
s32 UE_id; s32 UE_id;
l2_init (&PHY_vars_eNB_g[0]->lte_frame_parms, l2_init (&PHY_vars_eNB_g[0]->lte_frame_parms,
oai_emulation.info.eMBMS_active_state, oai_emulation.info.eMBMS_active_state,
oai_emulation.info.cba_group_active, oai_emulation.info.cba_group_active,
oai_emulation.info.handover_active); oai_emulation.info.handover_active);
for (i = 0; i < NB_eNB_INST; i++) for (i = 0; i < NB_eNB_INST; i++)
...@@ -716,7 +723,7 @@ void init_ocm() { ...@@ -716,7 +723,7 @@ void init_ocm() {
LOG_I(OCM,"Running with frame_type %d, Nid_cell %d, N_RB_DL %d, EP %d, mode %d, target dl_mcs %d, rate adaptation %d, nframes %d, abstraction %d, channel %s\n", oai_emulation.info.frame_type, Nid_cell, oai_emulation.info.N_RB_DL, oai_emulation.info.extended_prefix_flag, oai_emulation.info.transmission_mode,target_dl_mcs,rate_adaptation_flag,oai_emulation.info.n_frames,abstraction_flag,oai_emulation.environment_system_config.fading.small_scale.selected_option); LOG_I(OCM,"Running with frame_type %d, Nid_cell %d, N_RB_DL %d, EP %d, mode %d, target dl_mcs %d, rate adaptation %d, nframes %d, abstraction %d, channel %s\n", oai_emulation.info.frame_type, Nid_cell, oai_emulation.info.N_RB_DL, oai_emulation.info.extended_prefix_flag, oai_emulation.info.transmission_mode,target_dl_mcs,rate_adaptation_flag,oai_emulation.info.n_frames,abstraction_flag,oai_emulation.environment_system_config.fading.small_scale.selected_option);
if (abstraction_flag) { if (abstraction_flag) {
get_beta_map(); get_beta_map();
#ifdef PHY_ABSTRACTION_UL #ifdef PHY_ABSTRACTION_UL
get_beta_map_up(); get_beta_map_up();
...@@ -859,9 +866,9 @@ void update_ocm() { ...@@ -859,9 +866,9 @@ void update_ocm() {
//LOG_D(OMG," extracting position of UE...\n"); //LOG_D(OMG," extracting position of UE...\n");
// if (oai_emulation.info.omg_model_ue == TRACE) // if (oai_emulation.info.omg_model_ue == TRACE)
extract_position(ue_node_list, ue_data, NB_UE_INST); extract_position(ue_node_list, ue_data, NB_UE_INST);
/* if (frame % 50 == 0) /* if (frame % 50 == 0)
LOG_N(OCM,"Path loss for TTI %d : \n", frame); LOG_N(OCM,"Path loss for TTI %d : \n", frame);
*/ */
for (eNB_id = 0; eNB_id < NB_eNB_INST; eNB_id++) { for (eNB_id = 0; eNB_id < NB_eNB_INST; eNB_id++) {
for (UE_id = 0; UE_id < NB_UE_INST; UE_id++) { for (UE_id = 0; UE_id < NB_UE_INST; UE_id++) {
...@@ -899,24 +906,24 @@ void update_ocm() { ...@@ -899,24 +906,24 @@ void update_ocm() {
#ifdef OPENAIR2 #ifdef OPENAIR2
void update_otg_eNB(int module_id, unsigned int ctime) { void update_otg_eNB(int module_id, unsigned int ctime) {
#if defined(USER_MODE) && defined(OAI_EMU) #if defined(USER_MODE) && defined(OAI_EMU)
if (oai_emulation.info.otg_enabled ==1 ) { if (oai_emulation.info.otg_enabled ==1 ) {
int dst_id, app_id; int dst_id, app_id;
Packet_otg_elt *otg_pkt; Packet_otg_elt *otg_pkt;
for (dst_id = 0; dst_id < NUMBER_OF_UE_MAX; dst_id++) { for (dst_id = 0; dst_id < NUMBER_OF_UE_MAX; dst_id++) {
for_times += 1; for_times += 1;
// generate traffic if the ue is rrc reconfigured state // generate traffic if the ue is rrc reconfigured state
if (mac_get_rrc_status(module_id, 1/*eNB_flag*/, dst_id) > 2 /*RRC_CONNECTED*/ ) { if (mac_get_rrc_status(module_id, 1/*eNB_flag*/, dst_id) > 2 /*RRC_CONNECTED*/ ) {
for (app_id=0; app_id<MAX_NUM_APPLICATION; app_id++){ for (app_id=0; app_id<MAX_NUM_APPLICATION; app_id++){
otg_pkt = malloc (sizeof(Packet_otg_elt)); otg_pkt = malloc (sizeof(Packet_otg_elt));
if_times += 1; if_times += 1;
(otg_pkt->otg_pkt).sdu_buffer = (u8*) packet_gen(module_id, dst_id + NB_eNB_INST, app_id, ctime, &((otg_pkt->otg_pkt).sdu_buffer_size)); (otg_pkt->otg_pkt).sdu_buffer = (u8*) packet_gen(module_id, dst_id + NB_eNB_INST, app_id, ctime, &((otg_pkt->otg_pkt).sdu_buffer_size));
if ((otg_pkt->otg_pkt).sdu_buffer != NULL) { if ((otg_pkt->otg_pkt).sdu_buffer != NULL) {
otg_times += 1; otg_times += 1;
(otg_pkt->otg_pkt).rb_id = dst_id * NB_RB_MAX + DTCH; // app could be binded to a given DRB (otg_pkt->otg_pkt).rb_id = dst_id * NB_RB_MAX + DTCH; // app could be binded to a given DRB
...@@ -926,7 +933,7 @@ void update_otg_eNB(int module_id, unsigned int ctime) { ...@@ -926,7 +933,7 @@ void update_otg_eNB(int module_id, unsigned int ctime) {
(otg_pkt->otg_pkt).mode = PDCP_DATA_PDU; (otg_pkt->otg_pkt).mode = PDCP_DATA_PDU;
//Adding the packet to the OTG-PDCP buffer //Adding the packet to the OTG-PDCP buffer
pkt_list_add_tail_eurecom(otg_pkt, &(otg_pdcp_buffer[module_id])); pkt_list_add_tail_eurecom(otg_pkt, &(otg_pdcp_buffer[module_id]));
LOG_I(EMU, "[eNB %d] ADD pkt to OTG buffer with size %d for dst %d on rb_id %d for app id %d \n", LOG_I(EMU, "[eNB %d] ADD pkt to OTG buffer with size %d for dst %d on rb_id %d for app id %d \n",
(otg_pkt->otg_pkt).module_id, otg_pkt->otg_pkt.sdu_buffer_size, (otg_pkt->otg_pkt).dst_id,(otg_pkt->otg_pkt).rb_id, app_id); (otg_pkt->otg_pkt).module_id, otg_pkt->otg_pkt.sdu_buffer_size, (otg_pkt->otg_pkt).dst_id,(otg_pkt->otg_pkt).rb_id, app_id);
} else { } else {
//LOG_I(EMU, "OTG returns null \n"); //LOG_I(EMU, "OTG returns null \n");
...@@ -936,19 +943,19 @@ void update_otg_eNB(int module_id, unsigned int ctime) { ...@@ -936,19 +943,19 @@ void update_otg_eNB(int module_id, unsigned int ctime) {
} }
//LOG_T(EMU,"[eNB %d] UE mod id %d is not connected\n", module_id, dst_id); //LOG_T(EMU,"[eNB %d] UE mod id %d is not connected\n", module_id, dst_id);
//LOG_I(EMU,"HEAD of otg_pdcp_buffer[%d] is %p\n", module_id, pkt_list_get_head(&(otg_pdcp_buffer[module_id]))); //LOG_I(EMU,"HEAD of otg_pdcp_buffer[%d] is %p\n", module_id, pkt_list_get_head(&(otg_pdcp_buffer[module_id])));
} }
} }
#ifdef Rel10 #ifdef Rel10
int service_id, session_id, rb_id; int service_id, session_id, rb_id;
// MBSM multicast traffic // MBSM multicast traffic
// if (frame >= 50) {// only generate when UE can receive MTCH (need to control this value) // if (frame >= 50) {// only generate when UE can receive MTCH (need to control this value)
for (service_id = 0; service_id < 2 ; service_id++) { //maxServiceCount for (service_id = 0; service_id < 2 ; service_id++) { //maxServiceCount
for (session_id = 0; session_id < 2; session_id++) { // maxSessionPerPMCH for (session_id = 0; session_id < 2; session_id++) { // maxSessionPerPMCH
// LOG_I(OTG,"DUY:frame %d, pdcp_mbms_array[module_id][rb_id].instanciated_instance is %d\n",frame,pdcp_mbms_array[module_id][service_id*maxSessionPerPMCH + session_id].instanciated_instance); // LOG_I(OTG,"DUY:frame %d, pdcp_mbms_array[module_id][rb_id].instanciated_instance is %d\n",frame,pdcp_mbms_array[module_id][service_id*maxSessionPerPMCH + session_id].instanciated_instance);
if (pdcp_mbms_array[module_id][service_id*maxSessionPerPMCH + session_id].instanciated_instance == module_id + 1){ // this service/session is configured if (pdcp_mbms_array[module_id][service_id*maxSessionPerPMCH + session_id].instanciated_instance == module_id + 1){ // this service/session is configured
otg_pkt = malloc (sizeof(Packet_otg_elt)); otg_pkt = malloc (sizeof(Packet_otg_elt));
// LOG_T(OTG,"multicast packet gen for (service/mch %d, session/lcid %d, rb_id %d)\n", service_id, session_id, service_id*maxSessionPerPMCH + session_id); // LOG_T(OTG,"multicast packet gen for (service/mch %d, session/lcid %d, rb_id %d)\n", service_id, session_id, service_id*maxSessionPerPMCH + session_id);
rb_id = pdcp_mbms_array[module_id][service_id*maxSessionPerPMCH + session_id].rb_id; rb_id = pdcp_mbms_array[module_id][service_id*maxSessionPerPMCH + session_id].rb_id;
...@@ -961,7 +968,7 @@ void update_otg_eNB(int module_id, unsigned int ctime) { ...@@ -961,7 +968,7 @@ void update_otg_eNB(int module_id, unsigned int ctime) {
//Adding the packet to the OTG-PDCP buffer //Adding the packet to the OTG-PDCP buffer
(otg_pkt->otg_pkt).mode = PDCP_TM; (otg_pkt->otg_pkt).mode = PDCP_TM;
pkt_list_add_tail_eurecom(otg_pkt, &(otg_pdcp_buffer[module_id])); pkt_list_add_tail_eurecom(otg_pkt, &(otg_pdcp_buffer[module_id]));
LOG_I(EMU, "[eNB %d] ADD packet (%p) multicast to OTG buffer for dst %d on rb_id %d\n", LOG_I(EMU, "[eNB %d] ADD packet (%p) multicast to OTG buffer for dst %d on rb_id %d\n",
(otg_pkt->otg_pkt).module_id, otg_pkt, (otg_pkt->otg_pkt).dst_id,(otg_pkt->otg_pkt).rb_id); (otg_pkt->otg_pkt).module_id, otg_pkt, (otg_pkt->otg_pkt).dst_id,(otg_pkt->otg_pkt).rb_id);
} else { } else {
//LOG_I(EMU, "OTG returns null \n"); //LOG_I(EMU, "OTG returns null \n");
...@@ -970,8 +977,8 @@ void update_otg_eNB(int module_id, unsigned int ctime) { ...@@ -970,8 +977,8 @@ void update_otg_eNB(int module_id, unsigned int ctime) {
} }
// old version // old version
/* // MBSM multicast traffic /* // MBSM multicast traffic
#ifdef Rel10 #ifdef Rel10
if (frame >= 46) {// only generate when UE can receive MTCH (need to control this value) if (frame >= 46) {// only generate when UE can receive MTCH (need to control this value)
for (service_id = 0; service_id < 2 ; service_id++) { //maxServiceCount for (service_id = 0; service_id < 2 ; service_id++) { //maxServiceCount
...@@ -993,7 +1000,7 @@ void update_otg_eNB(int module_id, unsigned int ctime) { ...@@ -993,7 +1000,7 @@ void update_otg_eNB(int module_id, unsigned int ctime) {
} }
} }
} // end multicast traffic } // end multicast traffic
#endif #endif
*/ */
...@@ -1001,8 +1008,8 @@ void update_otg_eNB(int module_id, unsigned int ctime) { ...@@ -1001,8 +1008,8 @@ void update_otg_eNB(int module_id, unsigned int ctime) {
} }
} }
// } // end multicast traffic // } // end multicast traffic
#endif #endif
//LOG_I(EMU, "[eNB %d] update OTG nb_elts = %d \n", module_id, otg_pdcp_buffer[module_id].nb_elements); //LOG_I(EMU, "[eNB %d] update OTG nb_elts = %d \n", module_id, otg_pdcp_buffer[module_id].nb_elements);
//free(otg_pkt); //free(otg_pkt);
...@@ -1063,7 +1070,7 @@ void update_otg_UE(int UE_id, unsigned int ctime) { ...@@ -1063,7 +1070,7 @@ void update_otg_UE(int UE_id, unsigned int ctime) {
//Adding the packet to the OTG-PDCP buffer //Adding the packet to the OTG-PDCP buffer
(otg_pkt->otg_pkt).mode = PDCP_DATA_PDU; (otg_pkt->otg_pkt).mode = PDCP_DATA_PDU;
pkt_list_add_tail_eurecom(otg_pkt, &(otg_pdcp_buffer[module_id])); pkt_list_add_tail_eurecom(otg_pkt, &(otg_pdcp_buffer[module_id]));
LOG_I(EMU, "[UE %d] ADD pkt to OTG buffer with size %d for dst %d on rb_id %d \n", LOG_I(EMU, "[UE %d] ADD pkt to OTG buffer with size %d for dst %d on rb_id %d \n",
(otg_pkt->otg_pkt).module_id, otg_pkt->otg_pkt.sdu_buffer_size, (otg_pkt->otg_pkt).dst_id,(otg_pkt->otg_pkt).rb_id); (otg_pkt->otg_pkt).module_id, otg_pkt->otg_pkt.sdu_buffer_size, (otg_pkt->otg_pkt).dst_id,(otg_pkt->otg_pkt).rb_id);
} else { } else {
free(otg_pkt); free(otg_pkt);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment