From 8c339ad672c16c223457ebb9e5fe274ae24620f0 Mon Sep 17 00:00:00 2001 From: Navid Nikaein <navid.nikaein@eurecom.fr> Date: Mon, 15 Jul 2013 16:21:05 +0000 Subject: [PATCH] add makefile support for DB stats, fix minor issues for jitter calculation git-svn-id: http://svn.eurecom.fr/openair4G/trunk@4030 818b1a75-f10b-46b9-bf7c-635c3b92a50f --- openair1/PHY/LTE_TRANSPORT/dlsch_coding.c | 2 +- openair2/NAS/DRIVER/MESH/netlink.c | 2 +- openair2/UTIL/OTG/otg_defs.h | 90 +++++----- openair2/UTIL/OTG/otg_form.c | 8 +- openair2/UTIL/OTG/otg_kpi.c | 6 +- openair2/UTIL/OTG/otg_kpi.h | 1 + openair2/UTIL/OTG/otg_models.c | 14 +- openair2/UTIL/OTG/otg_rx.c | 10 ++ openair2/UTIL/OTG/otg_tx.c | 202 ++++++++++++---------- targets/SIMU/USER/Makefile | 42 +++-- targets/SIMU/USER/oaisim.c | 2 + targets/SIMU/USER/oaisim_config.c | 8 +- 12 files changed, 220 insertions(+), 167 deletions(-) diff --git a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c index d25bb16ebb..a21566b399 100644 --- a/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c +++ b/openair1/PHY/LTE_TRANSPORT/dlsch_coding.c @@ -131,7 +131,7 @@ LTE_eNB_DLSCH_t *new_eNB_dlsch(unsigned char Kmimo,unsigned char Mdlharq,unsigne for (i=0;i<Mdlharq;i++) { dlsch->harq_processes[i] = (LTE_DL_eNB_HARQ_t *)malloc16(sizeof(LTE_DL_eNB_HARQ_t)); - printf("Required mem size %d (bw scaling %d), dlsch->harq_processes[%d] %p\n", + LOG_T(PHY, "Required mem size %d (bw scaling %d), dlsch->harq_processes[%d] %p\n", MAX_DLSCH_PAYLOAD_BYTES/bw_scaling,bw_scaling, i,dlsch->harq_processes[i]); if (dlsch->harq_processes[i]) { bzero(dlsch->harq_processes[i],sizeof(LTE_DL_eNB_HARQ_t)); diff --git a/openair2/NAS/DRIVER/MESH/netlink.c b/openair2/NAS/DRIVER/MESH/netlink.c index 603c7435bf..49d72d921e 100644 --- a/openair2/NAS/DRIVER/MESH/netlink.c +++ b/openair2/NAS/DRIVER/MESH/netlink.c @@ -45,7 +45,7 @@ #include "local.h" #include "proto_extern.h" -#include "platform_constants.h" +//#include "platform_constants.h" //#define NETLINK_DEBUG 1 diff --git a/openair2/UTIL/OTG/otg_defs.h b/openair2/UTIL/OTG/otg_defs.h index 6cab5941fe..6b1e2d8702 100644 --- a/openair2/UTIL/OTG/otg_defs.h +++ b/openair2/UTIL/OTG/otg_defs.h @@ -74,41 +74,41 @@ typedef enum { */ typedef enum { NO_PREDEFINED_TRAFFIC =0, - M2M, - SCBR, - MCBR, - BCBR, - AUTO_PILOT, - BICYCLE_RACE, - OPENARENA, - TEAM_FORTRESS, - FULL_BUFFER, - M2M_TRAFFIC, - AUTO_PILOT_L, /*AUTO PILOT LOW SPEEDS*/ - AUTO_PILOT_M, /*AUTO PILOT MEDIEUM SPEEDS*/ - AUTO_PILOT_H, /*AUTO PILOT HIGH SPEEDS*/ - AUTO_PILOT_E, /*AUTO PILOT EMERGENCY*/ - VIRTUAL_GAME_L, /*VIRTUAL GAME LOW SPEEDS*/ - VIRTUAL_GAME_M, /*VIRTUAL GAME MEDIEUM SPEEDS*/ - VIRTUAL_GAME_H, /*VIRTUAL GAME HIGH SPEEDS*/ - VIRTUAL_GAME_F, /*VIRTUAL GAME FINISH*/ - ALARM_HUMIDITY, /* SENSOR BASED ALARM : HUMIDITY */ - ALARM_SMOKE, /* SENSOR BASED ALARM : SMOKE */ - ALARM_TEMPERATURE,/* SENSOR BASED ALARM : TEMPERATURE */ - OPENARENA_DL, - OPENARENA_UL, - VOIP_G711, - VOIP_G729, - IQSIM_MANGO, - IQSIM_NEWSTEO, - OPENARENA_DL_TARMA, - VIDEO_VBR_10MBPS, - VIDEO_VBR_4MBPS, - VIDEO_VBR_2MBPS, - VIDEO_VBR_768KBPS, - VIDEO_VBR_384KBPS, - VIDEO_VBR_192KBPS, - BACKGROUND_USERS, + M2M, // 1 + SCBR, //2 + MCBR, //3 + BCBR, //4 + AUTO_PILOT, //5 + BICYCLE_RACE, // 6 + OPENARENA, // 7 + TEAM_FORTRESS, // 8 + FULL_BUFFER, // 9 + M2M_TRAFFIC, // 10 + AUTO_PILOT_L, //11 /*AUTO PILOT LOW SPEEDS*/ + AUTO_PILOT_M, // 12 /*AUTO PILOT MEDIEUM SPEEDS*/ + AUTO_PILOT_H, // 13 /*AUTO PILOT HIGH SPEEDS*/ + AUTO_PILOT_E, // 14 /*AUTO PILOT EMERGENCY*/ + VIRTUAL_GAME_L,// 15 /*VIRTUAL GAME LOW SPEEDS*/ + VIRTUAL_GAME_M, // 16 /*VIRTUAL GAME MEDIEUM SPEEDS*/ + VIRTUAL_GAME_H, // 17 /*VIRTUAL GAME HIGH SPEEDS*/ + VIRTUAL_GAME_F, // 18 /*VIRTUAL GAME FINISH*/ + ALARM_HUMIDITY, // 19 /* SENSOR BASED ALARM : HUMIDITY */ + ALARM_SMOKE, // 20 /* SENSOR BASED ALARM : SMOKE */ + ALARM_TEMPERATURE, // 21 /* SENSOR BASED ALARM : TEMPERATURE */ + OPENARENA_DL, // 22 + OPENARENA_UL, // 23 + VOIP_G711, // 24 + VOIP_G729, // 25 + IQSIM_MANGO, // 26 + IQSIM_NEWSTEO, // 27 + OPENARENA_DL_TARMA, // 28 + VIDEO_VBR_10MBPS, // 29 + VIDEO_VBR_4MBPS, // 30 + VIDEO_VBR_2MBPS, // 31 + VIDEO_VBR_768KBPS, // 32 + VIDEO_VBR_384KBPS, // 33 + VIDEO_VBR_192KBPS, // 34 + BACKGROUND_USERS, // 35 DUMMY }Application; @@ -123,16 +123,16 @@ typedef enum { typedef enum { NO_TRAFFIC=0, - UNIFORM, - GAUSSIAN, - EXPONENTIAL, - POISSON, - FIXED, - WEIBULL, - PARETO, - GAMMA, - CAUCHY, - LOG_NORMAL, + UNIFORM, //1 + GAUSSIAN, //2 + EXPONENTIAL, //3 + POISSON, // 4 + FIXED, // 5 + WEIBULL, // 6 + PARETO, // 7 + GAMMA, // 8 + CAUCHY, // 9 + LOG_NORMAL, // 10 TARMA, VIDEO, BACKGROUND_DIST, diff --git a/openair2/UTIL/OTG/otg_form.c b/openair2/UTIL/OTG/otg_form.c index 766272ed59..d41d06bd12 100644 --- a/openair2/UTIL/OTG/otg_form.c +++ b/openair2/UTIL/OTG/otg_form.c @@ -52,9 +52,9 @@ fl_initialize(&tArgc,tArgv,"OTG",0,0); fl_show_form (form_dl->otg, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); fl_set_form_position(form_dl->otg, 200, 200); if (g_otg->owd_radio_access==1) - fl_set_xyplot_ybounds(form_dl->owd,0,100); - else fl_set_xyplot_ybounds(form_dl->owd,0,200); + else + fl_set_xyplot_ybounds(form_dl->owd,0,400); fl_set_xyplot_ybounds(form_dl->throughput,0,200); @@ -66,9 +66,9 @@ fl_initialize(&tArgc,tArgv,"OTG",0,0); fl_show_form (form_ul->otg, FL_PLACE_HOTSPOT, FL_FULLBORDER, title); fl_set_form_position(form_ul->otg, 850, 200); if (g_otg->owd_radio_access==1) - fl_set_xyplot_ybounds(form_ul->owd,0,100); - else fl_set_xyplot_ybounds(form_ul->owd,0,200); + else + fl_set_xyplot_ybounds(form_ul->owd,0,400); diff --git a/openair2/UTIL/OTG/otg_kpi.c b/openair2/UTIL/OTG/otg_kpi.c index 5c79995d04..76e8de99de 100644 --- a/openair2/UTIL/OTG/otg_kpi.c +++ b/openair2/UTIL/OTG/otg_kpi.c @@ -686,8 +686,12 @@ void add_log_metric(int src, int dst, int ctime, double metric, unsigned int lab case OTG_GP_BG: add_log_label(label, &start_log_GP_bg); break; + case OTG_JITTER: + add_log_label(label, &start_log_GP_bg); + break; + default: - LOG_E(OTG, "File label unknown \n"); + LOG_E(OTG, "File label unknown %d \n", label); } LOG_F(label,"%d ", ctime); diff --git a/openair2/UTIL/OTG/otg_kpi.h b/openair2/UTIL/OTG/otg_kpi.h index 156de9e12e..58100dab52 100644 --- a/openair2/UTIL/OTG/otg_kpi.h +++ b/openair2/UTIL/OTG/otg_kpi.h @@ -53,6 +53,7 @@ unsigned int start_log_latency=0; unsigned int start_log_latency_bg=0; unsigned int start_log_GP=0; unsigned int start_log_GP_bg=0; +unsigned int start_log_jitter=0; /*! \fn void tx_throughput( int src, int dst, int application) * \brief compute the transmitter throughput in bytes per seconds diff --git a/openair2/UTIL/OTG/otg_models.c b/openair2/UTIL/OTG/otg_models.c index 9e95fd69e4..19dbe763cf 100644 --- a/openair2/UTIL/OTG/otg_models.c +++ b/openair2/UTIL/OTG/otg_models.c @@ -482,7 +482,7 @@ backgroundStream_t *backgroundStreamInit(backgroundStream_t *stream, double lamb } } - printf("OTG BACKGROUND_USERS DEBUG: backgroundStreamInit(%d) called\n",(int)stream); + LOG_D(OTG,"BACKGROUND_USERS DEBUG: backgroundStreamInit(%d) called\n",(int)stream); backgroundPrintStream (stream); return stream; } @@ -496,7 +496,7 @@ backgroundStream_t *backgroundStreamInit(backgroundStream_t *stream, double lamb void backgroundUpdateStream(backgroundStream_t *stream, int ctime){ int numNewSessions, cnts, period; - printf("OTG BACKGROUND DEBUG: backgroundUpdateStream(stream*=%d,ctime=%d,period=%d) called\n",(int)stream, ctime); + LOG_D(OTG,"BACKGROUND DEBUG: backgroundUpdateStream(stream*=%d,ctime=%d,period=%d) called\n",(int)stream, ctime); if(stream){ period=ctime-stream->lastUpdateTime; numNewSessions=poisson_dist(stream->meanNumSessions/5710*period); @@ -532,7 +532,7 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){ double mrate=0; backgroundUpdateStream(stream, ctime); - printf("OTG BACKGROUND DEBUG: backgroundCalculateSize(stream*=%d,idt=%d,ctime=%d) called\n",(int)stream, idt, ctime); + LOG_D(OTG,"BACKGROUND DEBUG: backgroundCalculateSize(stream*=%d,idt=%d,ctime=%d) called\n",(int)stream, idt, ctime); if(stream){ for(cnts=0; cnts<BACKGROUND_NUM_ACTIVE_MAX; cnts++){ if(stream->activeSessions[cnts].endTime>ctime){ @@ -541,7 +541,7 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){ } } size=mrate*idt/1000; - printf("OTG BACKGROUND DEBUG: cntact=%02d, idt=%05d, agg_mrate=%05.1f, size=%04.1f\n", cntact, idt, mrate,size); + LOG_D(OTG,"BACKGROUND DEBUG: cntact=%02d, idt=%05d, agg_mrate=%05.1f, size=%04.1f\n", cntact, idt, mrate,size); } return size; } @@ -554,11 +554,11 @@ double backgroundCalculateSize(backgroundStream_t *stream, int ctime, int idt){ void backgroundPrintStream(backgroundStream_t *stream){ int cnts; - printf("OTG BACKGROUND DEBUG: backgroundPrintStream(%d)\n",(int)stream); + LOG_D(OTG,"BACKGROUND DEBUG: backgroundPrintStream(%d)\n",(int)stream); if(stream){ - printf("OTG BACKGROUND DEBUG: meanNumSessions(lambda_n)=%f\n",stream->meanNumSessions); + LOG_D(OTG,"BACKGROUND DEBUG: meanNumSessions(lambda_n)=%f\n",stream->meanNumSessions); for(cnts=0; cnts<BACKGROUND_NUM_ACTIVE_MAX; cnts++){ - printf("OTG BACKGROUND DEBUG: session[%d] -> mrate=%06.3f, etime=%05d\n", + LOG_D(OTG,"BACKGROUND DEBUG: session[%d] -> mrate=%06.3f, etime=%05d\n", cnts, stream->activeSessions[cnts].meanSessionRate, stream->activeSessions[cnts].endTime); } } diff --git a/openair2/UTIL/OTG/otg_rx.c b/openair2/UTIL/OTG/otg_rx.c index 37c894c4f4..74f72db1b0 100644 --- a/openair2/UTIL/OTG/otg_rx.c +++ b/openair2/UTIL/OTG/otg_rx.c @@ -42,8 +42,12 @@ #include "otg_vars.h" #include "../UTIL/MATH/oml.h" #include <math.h> +#include <mysql.h> +#include <m_ctype.h> +#include <sql_common.h> #include "otg_form.h" + extern unsigned char NB_eNB_INST; extern unsigned char NB_UE_INST; @@ -84,6 +88,12 @@ int otg_rx_pkt( int src, int dst, int ctime, char *buffer_tx, unsigned int size) LOG_I(OTG,"[SRC %d][DST %d] [FLOW_idx %d][APP TYPE %d] RX INFO pkt at time %d: flag 0x %x, seq number %d, tx time %d, size (hdr %d, pdcp %d) \n", src, dst,otg_hdr_rx->flow_id, otg_hdr_rx->traffic_type, ctime, otg_hdr_info_rx->flag, otg_hdr_rx->seq_num, otg_hdr_rx->time, otg_hdr_info_rx->size, size); bytes_read += sizeof (otg_hdr_t); + if(otg_hdr_rx->traffic_type > MAX_NUM_APPLICATION){ + LOG_W(OTG,"RX packet: application type out of range %d for the pair of (src %d, dst %d) \n", + otg_hdr_rx->traffic_type, src, dst); + otg_hdr_rx->traffic_type=0; + } + if (otg_hdr_info_rx->flag == 0xffff){ seq_num_rx=otg_info->seq_num_rx[src][dst][otg_hdr_rx->traffic_type]; if (src<NB_eNB_INST) diff --git a/openair2/UTIL/OTG/otg_tx.c b/openair2/UTIL/OTG/otg_tx.c index e0ad0b72bc..19c78c5d35 100644 --- a/openair2/UTIL/OTG/otg_tx.c +++ b/openair2/UTIL/OTG/otg_tx.c @@ -105,7 +105,8 @@ int time_dist(int src, int dst,int application, int state) { break; default : idt =0; - LOG_W(OTG, "IDT distribution unknown, set to 0 \n"); + LOG_W(OTG, "IDT distribution unknown, set to 0 for (src %d, dst %d, app %d, state %d)\n", + src, dst, application, state ); } LOG_D(OTG,"IDT :: Inter Departure Time Distribution= %d , val= %d\n", g_otg->idt_dist[src][dst][application][state],idt); @@ -170,7 +171,8 @@ int size_dist(int src, int dst, int application, int state) { otg_info->ctime, otg_info->idt[src][dst][application])); break; default: - LOG_E(OTG, "PKT Size Distribution unknown \n"); + LOG_E(OTG, "PKT Size Distribution unknown (src %d, dst %d, app %d, state %d)\n", + src, dst, application, state ); } } @@ -276,7 +278,13 @@ Send Packets when: otg_info->tx_total_bytes_dl+=buffer_size; else otg_info->tx_total_bytes_ul+=buffer_size; - + + if (otg_info->traffic_type[src][dst] > MAX_NUM_APPLICATION) { + LOG_W(OTG,"application type out of range %d for the pair of (src %d, dst %d) \n", + otg_info->traffic_type[src][dst], src, dst); + otg_info->traffic_type[src][dst]=0; + } + return serialize_buffer(header, payload, buffer_size, otg_info->traffic_type[src][dst], flag, flow, ctime, seq_num, otg_info->header_type_app[src][dst][flow], state, otg_info->m2m_aggregation[src][dst]); } @@ -327,7 +335,7 @@ unsigned char *packet_gen_multicast(int src, int dst, int ctime, int * pkt_size) if (size!=strlen(payload)) LOG_E(OTG,"[src %d][dst %d] The expected packet size does not match the payload size : size %d, strlen %d \n", src, dst, size, strlen(payload)); else - LOG_D(OTG,"[src %d][dst %d]TX INFO pkt at time %d Size= [payload %d] [Total %d] with seq num %d: |%s|%s| \n", + LOG_I(OTG,"[src %d][dst %d]TX INFO pkt at time %d Size= [payload %d] [Total %d] with seq num %d: |%s|%s| \n", src, dst, ctime, size, strlen(header)+strlen(payload)+otg_hdr_size, seq_num, header, payload); buffer_size = otg_hdr_size + strlen(header) + strlen(payload); @@ -359,10 +367,10 @@ void init_packet_gen(int src, int dst,int ctime){ otg_info->traffic_type[src][dst]=0; otg_info->traffic_type_background[src][dst]=0; /* init background traffic*/ - if (otg_info->idt_background[src][dst]==0){ + /* if (otg_info->idt_background[src][dst]==0){ otg_info->idt_background[src][dst]= exponential_dist(0.025); otg_info->background_stream[src][dst][0]=backgroundStreamInit(0,1); - } + } */ } void check_ctime(int ctime){ @@ -379,15 +387,15 @@ int check_data_transmit(int src,int dst, int ctime){ for (application=0; application<g_otg->application_idx[src][dst]; application++){ otg_info->gen_pkts=0; - //LOG_D(OTG,"FLOW_INFO [src %d][dst %d] [IDX %d] [APPLICATION TYPE %d] MAX %d [M2M %d ]\n", src, dst, application , g_otg->application_type[src][dst][application],g_otg->application_idx[src][dst], g_otg->m2m[src][dst][application]); + LOG_T(OTG,"FLOW_INFO [src %d][dst %d] [IDX %d] [APPLICATION TYPE %d] MAX %d [M2M %d ]\n", src, dst, application , g_otg->application_type[src][dst][application],g_otg->application_idx[src][dst], g_otg->m2m[src][dst][application]); // do not generate packet for this pair of src, dst : no app type and/or no idt are defined if (g_otg->duration[src][dst][application] > ctime){ - //LOG_D(OTG,"Do not generate packet for this pair of src=%d, dst =%d, duration %d < ctime %d \n", src, dst,g_otg->duration[src][dst][application], ctime); + LOG_T(OTG,"Do not generate packet for this pair of src=%d, dst =%d, duration %d < ctime %d \n", src, dst,g_otg->duration[src][dst][application], ctime); size+=0; }else if ((g_otg->application_type[src][dst][application]==0)&&(g_otg->idt_dist[src][dst][application][PE_STATE]==0)){ - //LOG_D(OTG,"Do not generate packet for this pair of src=%d, dst =%d\n", src, dst); + LOG_D(OTG,"Do not generate packet for this pair of src=%d, dst =%d, IDT zero and app not specificed\n", src, dst); size+=0; } @@ -681,6 +689,22 @@ int k; for (k=0; k<g_otg->application_idx[i][j]; k++){ switch (g_otg->application_type[i][j][k]) { + case NO_PREDEFINED_TRAFFIC : + LOG_I(OTG, "[SRC %d][DST %d] No predefined Traffic \n", i, j); + g_otg->trans_proto[i][j][k] = 0; + g_otg->ip_v[i][j][k] = 0; + g_otg->idt_dist[i][j][k][PE_STATE] = 0; + g_otg->idt_min[i][j][k][PE_STATE] = 0; + g_otg->idt_max[i][j][k][PE_STATE] = 0; + g_otg->size_dist[i][j][k][PE_STATE] = FIXED; + g_otg->size_min[i][j][k][PE_STATE] = 0; + g_otg->size_max[i][j][k][PE_STATE] = 0; +#ifdef STANDALONE + g_otg->dst_port[i][j] = 302; + g_otg->duration[i][j] = 1000; +#endif + break; + case SCBR : g_otg->trans_proto[i][j][k] = UDP; g_otg->ip_v[i][j][k] = IPV4; @@ -688,7 +712,7 @@ int k; g_otg->idt_min[i][j][k][PE_STATE] = (int)round(uniform_dist((i+1)*30,(i+1)*100));// 500+(i+1)*10; //random idt among different UEs g_otg->idt_max[i][j][k][PE_STATE] = 10; g_otg->size_dist[i][j][k][PE_STATE] = FIXED; - g_otg->size_min[i][j][k][PE_STATE] = 128; + g_otg->size_min[i][j][k][PE_STATE] = 16; g_otg->size_max[i][j][k][PE_STATE] = 50; LOG_I(OTG,"OTG_CONFIG SCBR, src = %d, dst = %d, traffic id %d, idt %d dist type for size = %d\n", i, j, k, g_otg->idt_min[i][j][k][PE_STATE], g_otg->size_min[i][j][k][PE_STATE]); @@ -704,7 +728,7 @@ int k; g_otg->idt_min[i][j][k][PE_STATE] = (int)round(uniform_dist((i+1)*30, (i+1)*100));// 250+(i+1)*10; g_otg->idt_max[i][j][k][PE_STATE] = 10; g_otg->size_dist[i][j][k][PE_STATE] = FIXED; - g_otg->size_min[i][j][k][PE_STATE] = 256; + g_otg->size_min[i][j][k][PE_STATE] = 32; g_otg->size_max[i][j][k][PE_STATE] = 512; LOG_I(OTG,"OTG_CONFIG MCBR, src = %d, dst = %d, traffic id %d, dist type for size = %d\n", i, j,k , g_otg->size_dist[i][j][k][PE_STATE]); #ifdef STANDALONE @@ -719,7 +743,7 @@ int k; g_otg->idt_min[i][j][k][PE_STATE] = (int)round(uniform_dist((i+1)*30,(i+1)*100)); //125+(i+1)*10; g_otg->idt_max[i][j][k][PE_STATE] = 10; g_otg->size_dist[i][j][k][PE_STATE] = FIXED; // main param in this mode - g_otg->size_min[i][j][k][PE_STATE] = 512;// main param in this mode + g_otg->size_min[i][j][k][PE_STATE] = 128;// main param in this mode g_otg->size_max[i][j][k][PE_STATE] = 1024; LOG_I(OTG,"OTG_CONFIG BCBR, src = %d, dst = %d, dist type for size = %d\n", i, j, g_otg->size_dist[i][j][k][PE_STATE]); #ifdef STANDALONE @@ -806,21 +830,7 @@ int k; g_otg->duration[i][j] = 1000; #endif break; - case NO_PREDEFINED_TRAFFIC : - LOG_I(OTG, "[SRC %d][DST %d] No predefined Traffic \n", i, j); - g_otg->trans_proto[i][j][k] = 0; - g_otg->ip_v[i][j][k] = 0; - g_otg->idt_dist[i][j][k][PE_STATE] = 0; - g_otg->idt_min[i][j][k][PE_STATE] = 0; - g_otg->idt_max[i][j][k][PE_STATE] = 0; - g_otg->size_dist[i][j][k][PE_STATE] = FIXED; - g_otg->size_min[i][j][k][PE_STATE] = 0; - g_otg->size_max[i][j][k][PE_STATE] = 0; -#ifdef STANDALONE - g_otg->dst_port[i][j] = 302; - g_otg->duration[i][j] = 1000; -#endif - break; + case M2M_TRAFFIC : /* example of M2M traffic */ LOG_I(OTG," M2M_TRAFFIC, src = %d, dst = %d \n", i, j, g_otg->application_type[i][j][k]); g_otg->trans_proto[i][j][k] = TCP; @@ -853,23 +863,25 @@ case AUTO_PILOT_L : /* Measurements from: Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic) */ - LOG_I(OTG,"AUTO PILOT LOW SPEEDS, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + g_otg->trans_proto[i][j][k] = TCP; g_otg->ip_v[i][j][k] = IPV4; - g_otg->pu_size_pkts[i][j][k]=1000; - g_otg->ed_size_pkts[i][j][k]=1000; - g_otg->idt_dist[i][j][k][PE_STATE] = FIXED; + g_otg->pu_size_pkts[i][j][k]=1000; + g_otg->ed_size_pkts[i][j][k]=1000; + g_otg->idt_dist[i][j][k][PE_STATE] = UNIFORM; g_otg->idt_min[i][j][k][PE_STATE] = 100; - g_otg->idt_max[i][j][k][PE_STATE] = 100; - if (i<nb_enb_local){ /*DL*/ - g_otg->size_dist[i][j][k][PE_STATE] = FIXED; - g_otg->size_min[i][j][k][PE_STATE] = 1000; - g_otg->size_max[i][j][k][PE_STATE] = 1000; - }else{ /*UL*/ - g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM; - g_otg->size_min[j][i][k][PE_STATE] = 64; - g_otg->size_max[j][i][k][PE_STATE] = 1000; - } + g_otg->idt_max[i][j][k][PE_STATE] = 500; + if (i<nb_enb_local){ /*DL*/ + g_otg->size_dist[i][j][k][PE_STATE] = FIXED; + g_otg->size_min[i][j][k][PE_STATE] = 1000; + g_otg->size_max[i][j][k][PE_STATE] = 1000; + LOG_I(OTG,"AUTO PILOT LOW SPEEDS DL , src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + }else{ /*UL*/ + g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM; + g_otg->size_min[j][i][k][PE_STATE] = 64; + g_otg->size_max[j][i][k][PE_STATE] = 1000; + LOG_I(OTG,"AUTO PILOT LOW SPEEDS UL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + } g_otg->prob_off_pu[i][j][k]=0.2; g_otg->prob_off_ed[i][j][k]=0.3; g_otg->prob_off_pe[i][j][k]=0; @@ -880,7 +892,7 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku g_otg->holding_time_off_pu[i][j][k]=100; g_otg->holding_time_off_ed[i][j][k]=10; g_otg->holding_time_pe_off[i][j][k]=1000; - g_otg->m2m[i][j][k]=1; + g_otg->m2m[i][j][k]=1; #ifdef STANDALONE g_otg->dst_port[i][j]= 303; g_otg->duration[i][j] = 1000; @@ -890,7 +902,7 @@ case AUTO_PILOT_M : /* Measurements from: Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic) */ - LOG_I(OTG,"AUTO PILOT MEDIUM SPEEDS, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + g_otg->trans_proto[i][j][k] = TCP; g_otg->ip_v[i][j][k] = IPV4; g_otg->pu_size_pkts[i][j][k]=1000; @@ -898,15 +910,17 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku g_otg->idt_dist[i][j][k][PE_STATE] = FIXED; g_otg->idt_min[i][j][k][PE_STATE] = 100; g_otg->idt_max[i][j][k][PE_STATE] = 100; - if (i<nb_enb_local){ /*DL*/ - g_otg->size_dist[i][j][k][PE_STATE] = FIXED; - g_otg->size_min[i][j][k][PE_STATE] = 1000; - g_otg->size_max[i][j][k][PE_STATE] = 1000; - }else{ /*UL*/ - g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM; - g_otg->size_min[j][i][k][PE_STATE] = 64; - g_otg->size_max[j][i][k][PE_STATE] = 1000; - } + if (i<nb_enb_local){ /*DL*/ + g_otg->size_dist[i][j][k][PE_STATE] = FIXED; + g_otg->size_min[i][j][k][PE_STATE] = 1000; + g_otg->size_max[i][j][k][PE_STATE] = 1000; + LOG_I(OTG,"AUTO PILOT MEDIUM SPEEDS DL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + }else{ /*UL*/ + g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM; + g_otg->size_min[j][i][k][PE_STATE] = 64; + g_otg->size_max[j][i][k][PE_STATE] = 1000; + LOG_I(OTG,"AUTO PILOT MEDIUM SPEEDS UL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + } g_otg->prob_off_pu[i][j][k]=0.2; g_otg->prob_off_ed[i][j][k]=0.3; g_otg->prob_off_pe[i][j][k]=0; @@ -927,7 +941,7 @@ case AUTO_PILOT_H : /* Measurements from: Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic) */ - LOG_I(OTG,"AUTO PILOT HIGH SPEEDS, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + g_otg->trans_proto[i][j][k] = TCP; g_otg->ip_v[i][j][k] = IPV4; g_otg->pu_size_pkts[i][j][k]=1000; @@ -939,11 +953,13 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku g_otg->size_dist[i][j][k][PE_STATE] = FIXED; g_otg->size_min[i][j][k][PE_STATE] = 1000; g_otg->size_max[i][j][k][PE_STATE] = 1000; - }else{ /*UL*/ + LOG_I(OTG,"AUTO PILOT HIGH SPEEDS DL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + }else{ /*UL*/ g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM; g_otg->size_min[j][i][k][PE_STATE] = 64; g_otg->size_max[j][i][k][PE_STATE] = 1000; - } + LOG_I(OTG,"AUTO PILOT HIGH SPEEDS UL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + } g_otg->prob_off_pu[i][j][k]=0.2; g_otg->prob_off_ed[i][j][k]=0.3; g_otg->prob_off_pe[i][j][k]=0; @@ -964,24 +980,26 @@ case AUTO_PILOT_E : /* Measurements from: Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Markus Laner, Kajie Zhou, Philippe Svoboda, Dejan Drajic, Serjan Krco and Milica Popovic) */ - LOG_I(OTG,"AUTO PILOT EMERGENCY, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + /* DL SCENARIO*/ g_otg->trans_proto[i][j][k] = TCP; g_otg->ip_v[i][j][k] = IPV4; - g_otg->pu_size_pkts[i][j][k]=1000; - g_otg->ed_size_pkts[i][j][k]=1000; + g_otg->pu_size_pkts[i][j][k]=1000; + g_otg->ed_size_pkts[i][j][k]=1000; g_otg->idt_dist[i][j][k][PE_STATE] = UNIFORM; g_otg->idt_min[i][j][k][PE_STATE] = 20; g_otg->idt_max[i][j][k][PE_STATE] = 25; - if (i<nb_enb_local){ /*DL*/ - g_otg->size_dist[i][j][k][PE_STATE] = FIXED; - g_otg->size_min[i][j][k][PE_STATE] = 1000; - g_otg->size_max[i][j][k][PE_STATE] = 1000; - }else{ /*UL*/ - g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM; - g_otg->size_min[j][i][k][PE_STATE] = 64; - g_otg->size_max[j][i][k][PE_STATE] = 1000; - } + if (i<nb_enb_local){ /*DL*/ + g_otg->size_dist[i][j][k][PE_STATE] = FIXED; + g_otg->size_min[i][j][k][PE_STATE] = 1000; + g_otg->size_max[i][j][k][PE_STATE] = 1000; + LOG_I(OTG,"AUTO PILOT EMERGENCY DL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + }else{ /*UL*/ + g_otg->size_dist[j][i][k][PE_STATE] = UNIFORM; + g_otg->size_min[j][i][k][PE_STATE] = 64; + g_otg->size_max[j][i][k][PE_STATE] = 1000; + LOG_I(OTG,"AUTO PILOT EMERGENCY UL, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); + } g_otg->prob_off_pu[i][j][k]=0.2; g_otg->prob_off_ed[i][j][k]=0.3; g_otg->prob_off_pe[i][j][k]=0; @@ -1102,14 +1120,14 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku LOG_I(OTG,"ALARM SMOKE, src = %d, dst = %d, application type = %d\n", i, j, g_otg->application_type[i][j][k]); g_otg->trans_proto[i][j][k] = TCP; g_otg->ip_v[i][j][k] = IPV4; - g_otg->pu_size_pkts[i][j][k]=1000; - g_otg->ed_size_pkts[i][j][k]=2000; + g_otg->pu_size_pkts[i][j][k]=1000; + g_otg->ed_size_pkts[i][j][k]=2000; g_otg->prob_off_pu[i][j][k]=0.5; g_otg->prob_off_ed[i][j][k]=0.5; g_otg->prob_pu_ed[i][j][k]=0.5; g_otg->holding_time_off_pu[i][j][k]=60000; /* 1 minute*/ g_otg->holding_time_off_ed[i][j][k]=43200000; /* 12 hours*/ - g_otg->m2m[i][j][k]=1; + g_otg->m2m[i][j][k]=1; #ifdef STANDALONE g_otg->dst_port[i][j] = 303; g_otg->duration[i][j] = 1000; @@ -1135,19 +1153,20 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku g_otg->duration[i][j] = 1000; #endif break; - case OPENARENA : + case OPENARENA_DL : + case OPENARENA_UL : g_otg->trans_proto[i][j][k] = TCP; g_otg->ip_v[i][j][k] = IPV4; g_otg->idt_dist[i][j][k][PE_STATE] = FIXED; g_otg->size_dist[i][j][k][PE_STATE] = FIXED; - g_otg->m2m[i][j][k]=1; - if (i<nb_enb_local){/*DL*/ - LOG_I(OTG,"OTG_CONFIG GAMING_OA_DL, src = %d, dst = %d, dist IDT = %d\n", i, j, g_otg->idt_dist[i][j][k][PE_STATE]); - g_otg->idt_min[i][j][k][PE_STATE] = 40; - g_otg->idt_max[i][j][k][PE_STATE] = 40; - g_otg->size_min[i][j][k][PE_STATE] = 140; - g_otg->size_max[i][j][k][PE_STATE] = 140; - } else{/*UL*/ + g_otg->m2m[i][j][k]=1; + if (i<nb_enb_local){/*DL*/ + LOG_I(OTG,"OTG_CONFIG GAMING_OA_DL, src = %d, dst = %d, dist IDT = %d\n", i, j, g_otg->idt_dist[i][j][k][PE_STATE]); + g_otg->idt_min[i][j][k][PE_STATE] = 40; + g_otg->idt_max[i][j][k][PE_STATE] = 40; + g_otg->size_min[i][j][k][PE_STATE] = 140; + g_otg->size_max[i][j][k][PE_STATE] = 140; + } else{/*UL*/ LOG_I(OTG,"OTG_CONFIG GAMING_OA_UL, src = %d, dst = %d, dist IDT = %d\n", i, j, g_otg->idt_dist[i][j][k][PE_STATE]); g_otg->idt_min[i][j][k][PE_STATE] = 11; g_otg->idt_max[i][j][k][PE_STATE] = 11; @@ -1159,6 +1178,7 @@ Traffic Modeling Framework for Machine Type Communincation (Navid NiKaein, Marku g_otg->duration[i][j] = 1000; #endif break; + case OPENARENA_DL_TARMA : g_otg->trans_proto[i][j][k] = TCP; g_otg->ip_v[i][j][k] = IPV4; @@ -1261,7 +1281,7 @@ break; g_otg->idt_max[i][j][k][PE_STATE] = 80; g_otg->size_dist[i][j][k][PE_STATE] = BACKGROUND_DIST; /*the background initialization*/ - otg_info->background_stream[i][j][k]=backgroundStreamInit(0,2); + // otg_info->background_stream[i][j][k]=backgroundStreamInit(0,2); break; case DUMMY : @@ -1503,7 +1523,7 @@ void state_management(int src, int dst, int application, int ctime) { if (otg_info->state_transition_prob[src][dst][application]==0){ otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); otg_info->state[src][dst][application]=OFF_STATE; - LOG_I(OTG,"[%d][%d][Appli id %d] STATE:: OFF INIT \n", src, dst, application); + LOG_D(OTG,"[%d][%d][Appli id %d] STATE:: OFF INIT \n", src, dst, application); otg_info->start_holding_time_off[src][dst][application]=0/*ctime*/; } //LOG_D(OTG,"[%d][[%d] HOLDING_TIMES OFF_PE: %d, OFF_PU: %d, OFF_ED %d, PE_OFF: %d \n", src, dst, g_otg->holding_time_off_pe[src][dst], g_otg->holding_time_off_pu[src][dst],g_otg->holding_time_off_ed[src][dst], g_otg->holding_time_pe_off[src][dst] ); @@ -1514,7 +1534,7 @@ void state_management(int src, int dst, int application, int ctime) { if (ctime>otg_info->start_holding_time_off[src][dst][application]){ otg_info->c_holding_time_off[src][dst][application]= ctime - otg_info->start_holding_time_off[src][dst][application]; - LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] STATE:: OFF Holding Time %d (%d, %d)\n", src, dst,application , g_otg->aggregation_level[src][dst][application], otg_info->c_holding_time_off[src][dst][application], ctime, otg_info->start_holding_time_off[src][dst][application]); + LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] STATE:: OFF Holding Time %d (%d, %d)\n", src, dst,application , g_otg->aggregation_level[src][dst][application], otg_info->c_holding_time_off[src][dst][application], ctime, otg_info->start_holding_time_off[src][dst][application]); } if ( ((otg_info->state_transition_prob[src][dst][application]>= 1-(g_otg->prob_off_pu[src][dst][application]+g_otg->prob_off_ed[src][dst][application]+g_otg->prob_off_pe[src][dst][application])) && (otg_info->state_transition_prob[src][dst][application]<1-(g_otg->prob_off_ed[src][dst][application]+g_otg->prob_off_pe[src][dst][application]))) && (otg_info->c_holding_time_off[src][dst][application]>=g_otg->holding_time_off_pu[src][dst][application])){ @@ -1525,7 +1545,7 @@ void state_management(int src, int dst, int application, int ctime) { } else if ( ((otg_info->state_transition_prob[src][dst][application]>= 1-(g_otg->prob_off_ed[src][dst][application]+g_otg->prob_off_pe[src][dst][application])) && (otg_info->state_transition_prob[src][dst][application]< 1-g_otg->prob_off_pe[src][dst][application])) && (otg_info->c_holding_time_off[src][dst][application]>=g_otg->holding_time_off_ed[src][dst][application])){ otg_info->state[src][dst][application]=ED_STATE; - LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: OFF-->ED \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); + LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: OFF-->ED \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); } @@ -1538,7 +1558,7 @@ void state_management(int src, int dst, int application, int ctime) { else{ otg_info->c_holding_time_off[src][dst][application]= ctime - otg_info->start_holding_time_off[src][dst][application]; otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); - LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] STATE:: OFF\n", src, dst,application, g_otg->aggregation_level[src][dst][application]); + LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] STATE:: OFF\n", src, dst,application, g_otg->aggregation_level[src][dst][application]); } break; @@ -1548,7 +1568,7 @@ void state_management(int src, int dst, int application, int ctime) { otg_info->state[src][dst][application]=OFF_STATE; otg_info->start_holding_time_off[src][dst][application]=ctime; otg_info->c_holding_time_off[src][dst][application]=0; - LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PU-->OFF \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); + LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PU-->OFF \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); } else if ((otg_info->state_transition_prob[src][dst][application]<=1-g_otg->prob_pu_pe[src][dst][application]) && (otg_info->state_transition_prob[src][dst][application]>1-(g_otg->prob_pu_ed[src][dst][application]+g_otg->prob_pu_pe[src][dst][application]))){ @@ -1561,7 +1581,7 @@ void state_management(int src, int dst, int application, int ctime) { //otg_info->state[src][dst]=ON_STATE; otg_info->state[src][dst][application]=PE_STATE; otg_info->start_holding_time_pe_off[src][dst][application]=ctime; - LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PU-->PE \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); + LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PU-->PE \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); } break; @@ -1571,20 +1591,20 @@ void state_management(int src, int dst, int application, int ctime) { otg_info->state[src][dst][application]=OFF_STATE; otg_info->start_holding_time_off[src][dst][application]=ctime; otg_info->c_holding_time_off[src][dst][application]=0; - LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->OFF \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); + LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->OFF \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); } else if ((otg_info->state_transition_prob[src][dst][application]>=1-(g_otg->prob_ed_pu[src][dst][application] + g_otg->prob_ed_pe[src][dst][application] )) && (otg_info->state_transition_prob[src][dst][application]<1-g_otg->prob_ed_pe[src][dst][application])) { //otg_info->state[src][dst]=ON_STATE; otg_info->state[src][dst][application]=PE_STATE; - LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->PU \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); + LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->PU \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); } else /*if ((otg_info->state_transition_prob[src][dst]>=1-g_otg->prob_ed_pe)&&(otg_info->state_transition_prob[src][dst]<=1)) */{ //otg_info->state[src][dst]=ON_STATE; otg_info->state[src][dst][application]=PE_STATE; otg_info->start_holding_time_pe_off[src][dst][application]=ctime; - LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->PE \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); + LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: ED-->PE \n", src, dst,application, g_otg->aggregation_level[src][dst][application]); otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); } break; @@ -1593,7 +1613,7 @@ void state_management(int src, int dst, int application, int ctime) { if (g_otg->holding_time_pe_off[src][dst][application]<=otg_info->c_holding_time_pe_off[src][dst][application]){ //otg_info->state[src][dst]=OFF_STATE; otg_info->state[src][dst][application]=OFF_STATE; - LOG_I(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PE->OFF\n", src, dst,application, g_otg->aggregation_level[src][dst][application]); + LOG_D(OTG,"[%d][%d][Appli id %d][Agg Level=%d] NEW STATE:: PE->OFF\n", src, dst,application, g_otg->aggregation_level[src][dst][application]); otg_info->c_holding_time_pe_off[src][dst][application]=0; otg_info->state_transition_prob[src][dst][application]=uniform_dist(0,1); otg_info->start_holding_time_off[src][dst][application]=ctime; @@ -1602,7 +1622,7 @@ void state_management(int src, int dst, int application, int ctime) { else /* if (g_otg->holding_time_pe_off>otg_info->c_holding_time_pe_off[src][dst])*/{ if (ctime>otg_info->start_holding_time_pe_off[src][dst][application]) otg_info->c_holding_time_pe_off[src][dst][application]=ctime-otg_info->start_holding_time_pe_off[src][dst][application]; - LOG_I(OTG,"[%d][%d][Appli id %d] STATE:: PE \n", src, dst,application); + LOG_D(OTG,"[%d][%d][Appli id %d] STATE:: PE \n", src, dst,application); } break; default: diff --git a/targets/SIMU/USER/Makefile b/targets/SIMU/USER/Makefile index a293c46421..35a7e9ffe8 100644 --- a/targets/SIMU/USER/Makefile +++ b/targets/SIMU/USER/Makefile @@ -65,6 +65,13 @@ ifdef XFORMS CFLAGS += -DXFORMS endif +# Check if libmysqlclient is installed and use it if found to store simulation data for postprocessing +ENABLE_DB = $(shell if [ `dpkg -l | grep libmysqlclient -c` = "0" ]; then echo "0" ; else echo "1" ; fi ) +ifeq ($(ENABLE_DB), 1) +CFLAGS +=-I/usr/include/mysql -L/usr/lib/mysql -DENABLE_DB_STATS +DB_LDFLAGS = -lmysqlclient +endif + ifdef PRINT_STATS CFLAGS += -DPRINT_STATS endif @@ -309,7 +316,7 @@ oaisim : $(ASN1_MSG_OBJS1) $(OBJ) oaisim.c $(LFDS_DIR)/bin/liblfds611.a endif @echo "Compiling oaisim.c ..." @$(CC) -I$(TOP_DIR) $(L2_incl) $(UTIL_incl) -I$(ASN1_MSG_INC) $(S1AP_Incl) -o oaisim $(CFLAGS) $(EXTRA_CFLAGS) $^ \ - -lm -lblas -lpthread -llapack_atlas -lforms -lxml2 -lX11 -lXpm -lrt $(LFDS_DIR)/bin/liblfds611.a $(PGM_LDFLAGS) + -lm -lblas -lpthread -llapack_atlas -lforms -lxml2 -lX11 -lXpm -lrt $(LFDS_DIR)/bin/liblfds611.a $(PGM_LDFLAGS) $(DB_LDFLAGS) ifeq ($(rrc_cellular_eNB),1) mv oaisim oaisim_eNB @@ -320,22 +327,22 @@ endif oaisimCROWN : $(OBJ) $(ASN1_MSG_OBJS1) oaisimCROWN.c @echo "Compiling oaisimCROWN.c ..." - @$(CC) oaisimCROWN.c -I$(TOP_DIR) $(L2_incl) $(UTIL_incl) -I$(ASN1_MSG_INC) $(S1AP_Incl) -o oaisimCROWN $(CFLAGS) $(EXTRA_CFLAGS) $(OBJ) $(ASN1_MSG_OBJS1) -lm -lblas -lpthread -llapack_atlas -lforms -lxml2 -lX11 -lXpm -lrt + @$(CC) oaisimCROWN.c -I$(TOP_DIR) $(L2_incl) $(UTIL_incl) -I$(ASN1_MSG_INC) $(S1AP_Incl) -o oaisimCROWN $(CFLAGS) $(EXTRA_CFLAGS) $(OBJ) $(ASN1_MSG_OBJS1) -lm -lblas -lpthread -llapack_atlas -lforms -lxml2 -lX11 -lXpm -lrt test_nasmesh_fix: - (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make) - (cd $(OPENAIR2_DIR) && make nasmesh_netlink_address_fix.ko) + (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE)) + (cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink_address_fix.ko) (cp $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko . ) nasmesh_fix: - (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make) - (cd $(OPENAIR2_DIR) && make nasmesh_netlink_address_fix.ko) + (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE)) + (cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink_address_fix.ko) (sudo insmod $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko) nasmesh_nl: - (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make) - (cd $(OPENAIR2_DIR) && make nasmesh_netlink.ko) + (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE)) + (cd $(OPENAIR2_DIR) && $(MAKE) nasmesh_netlink.ko) (sudo insmod $(OPENAIR2_DIR)/NAS/DRIVER/MESH/nasmesh.ko) rb_tool: - (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && make) + (cd $(OPENAIR2_DIR)/NAS/DRIVER/MESH/RB_TOOL && $(MAKE)) nasmesh_install: (sudo rmmod nasmesh) @@ -399,13 +406,15 @@ cleancell: rm -f $(OPENAIR2_DIR)/NAS/SIMU_CELLULAR/*.d print: - @echo $(cygwin) - @echo $(OCG_FLAG) - @echo $(CFLAGS) - @echo $(EXTRA_CFLAGS) +# @echo $(cygwin) @echo $(OBJ) - @echo $(IS_REL10) - @echo $(IS_REL8) + @echo $(OCG_FLAG) + @echo "CFLAGS are " $(CFLAGS) + @echo "EXTRA_CFLAGS are" $(EXTRA_CFLAGS) + + @echo "IS_REL8 is " $(IS_REL10) + @echo "IS_REL8 is " $(IS_REL8) + @echo "ENABLE_DB is " $(ENABLE_DB) showcflags: @echo $(CFLAGS) @@ -428,6 +437,9 @@ otg_gp: otg_gp_bg: export TITLE="Background Goodput(Kb/s)" $(OPENAIR2_DIR)/UTIL/OTG/OTGplot "/tmp/otg_GP_bg.dat" "[$(COL1):$(COL2)]" +otg_jitter: + export TITLE="Aplication Jitter(ms)" + $(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 ) diff --git a/targets/SIMU/USER/oaisim.c b/targets/SIMU/USER/oaisim.c index 3aecc61673..442ce09f0a 100644 --- a/targets/SIMU/USER/oaisim.c +++ b/targets/SIMU/USER/oaisim.c @@ -489,6 +489,8 @@ int 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); + set_seed = oai_emulation.emulation_config.seed.value; + init_seed(set_seed); init_openair1(); diff --git a/targets/SIMU/USER/oaisim_config.c b/targets/SIMU/USER/oaisim_config.c index 8d5904dffc..70491beda9 100644 --- a/targets/SIMU/USER/oaisim_config.c +++ b/targets/SIMU/USER/oaisim_config.c @@ -123,6 +123,9 @@ mapping otg_distribution_names[] = {"gamma", 8}, {"cauchy",9}, {"log_normal",10}, + {"tarma",11}, + {"video",12}, + {"background_dist",13}, {NULL, -1} }; @@ -816,7 +819,7 @@ int ocg_config_app(){ g_otg->holding_time_off_pe[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]]=oai_emulation.application_config.customized_traffic.holding_time_off_pe[customized_traffic_config_index]; g_otg->holding_time_pe_off[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]]=oai_emulation.application_config.customized_traffic.holding_time_pe_off[customized_traffic_config_index]; - LOG_I(OTG,"customized:: OCG_config_OTG: (1) FORMAT (%d:%d) source = %d, dest = %d, Application = %d, background %d\n", sid_start, sid_end, source_id_index, destination_id_index, g_otg->application_type[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]], g_otg->background[source_id_index][destination_id_index]); + LOG_I(OTG,"customized:: OCG_config_OTG: (1) FORMAT (%d:%d) source = %d, dest = %d, Application = %d, state %d, background %d IDT DIST %d \n", sid_start, sid_end, source_id_index, destination_id_index, g_otg->application_type[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]], state, g_otg->background[source_id_index][destination_id_index], g_otg->idt_dist[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]][state]); g_otg->application_idx[source_id_index][destination_id_index]+=1; } } @@ -986,7 +989,8 @@ int ocg_config_emu(){ LOG_I(OCG, "number of frames in emulation is set to infinity\n"); oai_emulation.info.seed = (oai_emulation.emulation_config.seed.value == 0) ? oai_emulation.info.seed : oai_emulation.emulation_config.seed.value; - + LOG_I (OCG,"The seed value is set to %d \n", oai_emulation.info.seed ); + if (oai_emulation.info.cli_enabled == 1){ if (cli_server_init(cli_server_recv) < 0) { LOG_E(EMU,"cli server init failed \n"); -- GitLab