From 207a0ce5cda4db756866fe6c269117fda81b42b6 Mon Sep 17 00:00:00 2001
From: Navid Nikaein <navid.nikaein@eurecom.fr>
Date: Sat, 20 Dec 2014 00:23:43 +0000
Subject: [PATCH] fix wrong OTG application type index

git-svn-id: http://svn.eurecom.fr/openair4G/trunk@6300 818b1a75-f10b-46b9-bf7c-635c3b92a50f
---
 openair2/UTIL/OTG/otg_kpi.c                   | 133 ++----------------
 openair2/UTIL/OTG/otg_kpi.h                   |   1 +
 openair2/UTIL/OTG/otg_tx.c                    | 117 +++++++--------
 openair2/UTIL/OTG/otg_tx.h                    |   2 +-
 .../SIMU/EXAMPLES/OSD/WEBXML/template_60.xml  |  96 +++++++++++++
 targets/SIMU/USER/oaisim_config.c             |  12 +-
 6 files changed, 179 insertions(+), 182 deletions(-)
 create mode 100644 targets/SIMU/EXAMPLES/OSD/WEBXML/template_60.xml

diff --git a/openair2/UTIL/OTG/otg_kpi.c b/openair2/UTIL/OTG/otg_kpi.c
index 458ea4716e..b8212682ff 100644
--- a/openair2/UTIL/OTG/otg_kpi.c
+++ b/openair2/UTIL/OTG/otg_kpi.c
@@ -169,7 +169,7 @@ void average_pkt_jitter(int src, int dst, int application){
 
 }
 
-void average_total_jitter(){
+void average_total_jitter(void){
 unsigned int i,j,k;
 
 otg_info->average_jitter_dl=0;
@@ -273,15 +273,19 @@ fc=fopen("/tmp/otg.log","w");;
 	rx_total_pkts_ul_background+=otg_info->rx_num_pkt_background[i][j];
       }
       
-      for (k=0; k<MAX_EMU_TRAFFIC; k++) {    
+      for (k=0; k<MAX_NUM_APPLICATION; k++) {    
 	
 	tx_throughput(i,j,k);
 	rx_goodput(i,j,k);
 	rx_loss_rate_pkts(i,j,k);
 	average_pkt_jitter(i,j,k);
-
-	//	LOG_I(OTG,"KPI: (src=%d, dst=%d, traffic=%d) NB packet TX= %d,  NB packet RX= %d\n ",i, j,  k,otg_info->tx_num_pkt[i][j][k],  otg_info->rx_num_pkt[i][j][k]);
-	
+	/*
+       	LOG_I(OTG,"KPI: (src=%d, dst=%d, traffic=%d) NB TX Bytes= %d, NB packet TX= %d,  NB packet RX= %d\n ",
+	      i, j,  k,
+	      otg_info->tx_num_bytes[i][j][k],
+	      otg_info->tx_num_pkt[i][j][k],  
+	      otg_info->rx_num_pkt[i][j][k]);
+	*/
 	if (otg_multicast_info->tx_throughput[i][j]>0)  { 
 	  //multicast
 	  tx_total_bytes_dl_multicast+=otg_multicast_info->tx_num_bytes[i][j][k];
@@ -332,6 +336,7 @@ fc=fopen("/tmp/otg.log","w");;
 	  
 	}// end for multicast
 	
+
 	if ((otg_info->tx_throughput[i][j][k]>0)||((otg_info->tx_throughput_background[i][j]>0) && (otg_info->tx_num_bytes[i][j][k]>0)))  {
 	  
 	  num_active_source+=1;
@@ -385,121 +390,13 @@ fc=fopen("/tmp/otg.log","w");;
 	  else
 	    strcpy(traffic_type,"APPLICATION");
 	  
-	  
-	  switch  (k) {
-	  case  0 : 
-	    strcpy(traffic,"CUSTOMIZED TRAFFIC ");
-	    break;
-	  case 1 :
-	    strcpy(traffic,"M2M");
-	    break;
-	  case 2 :
-	    strcpy(traffic,"SCBR");
-	    break;
-	  case 3 :
-	    strcpy(traffic,"MCBR");
-	    break;
-	  case 4 :
-	    strcpy(traffic,"BCBR");
-	    break;
-	  case 5 :
-	    strcpy(traffic,"AUTO_PILOT");
-	    break;
-	  case 6 :
-	    strcpy(traffic,"BICYCLE_RACE");
-	    break;
-	  case 7 :
-	    strcpy(traffic,"OPENARENA");
-	    break;
-	  case 8 :
-	    strcpy(traffic,"TEAM_FORTRESS");
-	    break;
-	  case 9 :
-	    strcpy(traffic,"FULL_BUFFER");
-	    break;
-	  case 10 :
-	    strcpy(traffic,"M2M_TRAFFIC");
-	    break;
-	  case 11 :
-	    strcpy(traffic,"AUTO_PILOT_L");
-	    break;
-	  case 12 :
-	    strcpy(traffic,"AUTO_PILOT_M");
-	    break;
-	  case 13 :
-	    strcpy(traffic,"AUTO_PILOT_H");
-	    break;
-	  case 14 :
-	    strcpy(traffic,"AUTO_PILOT_E");
-	    break;
-	  case 15 :
-	    strcpy(traffic,"VIRTUAL_GAME_L");
-	    break;
-	  case 16 :
-	    strcpy(traffic,"VIRTUAL_GAME_M");
-	    break;
-	  case 17 :
-	    strcpy(traffic,"VIRTUAL_GAME_H");
-	    break;
-	  case 18 :
-	    strcpy(traffic,"VIRTUAL_GAME_F"); 
-	    break;
-	  case 19 :
-	    strcpy(traffic,"ALARM_HUMIDITY"); 
-	    break;
-	  case 20 :
-	    strcpy(traffic,"ALARM_SMOKE"); 
-	    break;
-	  case 21 :
-	    strcpy(traffic,"ALARM_TEMPERATURE"); 
-	    break;
-	  case 22 :
-	    strcpy(traffic,"OPENARENA_DL"); 
-	    break;
-	  case 23 :
-	    strcpy(traffic,"OPENARENA_UL"); 
-	    break;
-	  case 24 :
-	    strcpy(traffic,"VOIP_G711"); 
-	    break;
-	  case 25 :
-	    strcpy(traffic,"VOIP_G729"); 
-	    break;
-	  case 26 :
-	    strcpy(traffic,"IQSIM_MANGO"); 
-	    break;
-	  case 27 :
-	    strcpy(traffic,"IQSIM_NEWSTEO"); 
-	    break;
-	  case 28 :
-	    strcpy(traffic,"OPEMARENA_DL_TARMA"); 
-	    break;
-	  case 29 :
-	    strcpy(traffic,"VIDEO_VBR_10MBPS"); 
-	    break;
-	  case 30 :
-	    strcpy(traffic,"VIDEO_VBR_4MBPS"); 
-	    break;
-	  case 31 :
-	    strcpy(traffic,"VIDEO_VBR_2MBPS"); 
-	    break;
-	  case 32 :
-	    strcpy(traffic,"VIDEO_VBR_768KBPS"); 
-	    break;
-	  case 33 :
-	    strcpy(traffic,"VIDEO_VBR_384KBPS"); 
-	    break;
-	  case 34 :
-	    strcpy(traffic,"VIDEO_VBR_192KBPS"); 
-	    break;
-	  default:
-	    strcpy(traffic,"UKNOWN TRAFFIC"); 
-	    break;
+	  if (map_int_to_str(otg_app_type_names,g_otg->application_type[i][j][k]) == -1){
+	    LOG_E(OTG,"(src=%d, dst=%d, appli %d) : Unknown traffic \n ", i, j,k);
+	  strcpy(traffic,"UKNOWN TRAFFIC"); 	   
+	  } else {
+	    strcpy (traffic, map_int_to_str(otg_app_type_names,g_otg->application_type[i][j][k]));
 	  }
 	  
-	  
-
-
 
 #ifdef STANDALONE
 	
diff --git a/openair2/UTIL/OTG/otg_kpi.h b/openair2/UTIL/OTG/otg_kpi.h
index dd7767a8e5..5c33a6de31 100644
--- a/openair2/UTIL/OTG/otg_kpi.h
+++ b/openair2/UTIL/OTG/otg_kpi.h
@@ -107,4 +107,5 @@ void  add_log_label(unsigned int label, unsigned int * start_log_metric);
 
 void otg_kpi_nb_loss_pkts(void);
 
+void average_total_jitter(void);
 #endif
diff --git a/openair2/UTIL/OTG/otg_tx.c b/openair2/UTIL/OTG/otg_tx.c
index 219e4b1892..9864d8f75d 100644
--- a/openair2/UTIL/OTG/otg_tx.c
+++ b/openair2/UTIL/OTG/otg_tx.c
@@ -245,58 +245,61 @@ Send Packets when:
       payload = random_string(size, RANDOM_STRING, PAYLOAD_ALPHABET);
       if (payload == NULL) return NULL;
       flag=0xffff;
-  	flow=otg_info->flow_id[src][dst];
-  	seq_num=otg_info->seq_num[src][dst][otg_info->traffic_type[src][dst]];
-  	otg_info->header_type[src][dst]=type_header;
-  	otg_info->seq_num[src][dst][otg_info->traffic_type[src][dst]]+=1;
-    otg_info->tx_num_bytes[src][dst][otg_info->traffic_type[src][dst]]+=  otg_hdr_size(src,dst) + header_size + strlen(payload) ;
-  	otg_info->tx_num_pkt[src][dst][otg_info->traffic_type[src][dst]]+=1;
-  	if (size!=strlen(payload))
-  	  LOG_E(OTG,"[%d][%d] [0x %x] The expected packet size does not match the payload size : size %d, strlen %d, seq_num %d packet: |%s|%s| \n", src, dst, flag, 	size, strlen(payload), seq_num, header, payload);
-  	else 
-	  LOG_D(OTG,"[%d][%d] 0x %x][m2m Aggre %d][Flow %d][Type %d] TX INFO pkt at time %d Size= [payload %d] [Total %d] with seq num %d, state=%d : |%s|%s| \n", src, dst, flag, otg_info->m2m_aggregation[src][dst],otg_info->flow_id[src][dst], 
-		otg_info->traffic_type[src][dst], ctime,  size, header_size+strlen(payload), seq_num,state, header, payload);
-	LOG_D(OTG, "[%d]MY_SEQ %d \n", otg_info->traffic_type[src][dst], otg_info->seq_num[src][dst][otg_info->traffic_type[src][dst]] );  
-	 } 	
-	else {
-	  if ((g_otg->aggregation_level[src][dst][application]*otg_info->size_background[src][dst])<=PAYLOAD_MAX)
-	    otg_info->size_background[src][dst]=g_otg->aggregation_level[src][dst][application]*otg_info->size_background[src][dst];
-	  else{
-	    //otg_info->size_background[src][dst]=PAYLOAD_MAX;
-	    LOG_E(OTG,"[BACKGROUND] Aggregated packet larger than PAYLOAD_MAX, payload is limited to %d\n", PAYLOAD_MAX);
-	  }
- 	 header =random_string(header_size_gen_background(src,dst),  g_otg->packet_gen_type, HEADER_ALPHABET);
- 	 payload = random_string(otg_info->size_background[src][dst],  RANDOM_STRING, PAYLOAD_ALPHABET);
-	  flag=0xbbbb;
- 	 flow=flow_id_background;
- 	 seq_num=otg_info->seq_num_background[src][dst];
-    otg_info->tx_num_bytes_background[src][dst]+= otg_hdr_size(src,dst) + header_size + strlen(payload) ;
-  	otg_info->tx_num_pkt_background[src][dst]+=1;
-  	otg_info->seq_num_background[src][dst]+=1;
-  	if (otg_info->size_background[src][dst]!=strlen(payload))
-   	 LOG_E(OTG,"[%d][%d] [0x %x] The expected packet size does not match the payload size : size %d, strlen %d, seq num %d, packet |%s|%s| \n", src, dst, flag, otg_info->size_background[src][dst], strlen(payload), seq_num, header, payload);
- 		else
-    	LOG_T(OTG,"[%d][%d][0x %x] TX INFO pkt at time %d size is %d with seq num %d, state=%d : |%s|%s| \n", src, dst, flag,ctime, otg_info->size_background[src][dst], seq_num, state, header, payload);
-	}
+      flow=otg_info->flow_id[src][dst];
+      seq_num=otg_info->seq_num[src][dst][otg_info->traffic_type[src][dst]];
+      otg_info->header_type[src][dst]=type_header;
+      otg_info->seq_num[src][dst][otg_info->traffic_type[src][dst]]+=1;
+      otg_info->tx_num_bytes[src][dst][otg_info->traffic_type[src][dst]]+=  otg_hdr_size(src,dst) + header_size + strlen(payload) ;
+      otg_info->tx_num_pkt[src][dst][otg_info->traffic_type[src][dst]]+=1;
+      if (size!=strlen(payload))
+	LOG_E(OTG,"[%d][%d] [0x %x] The expected packet size does not match the payload size : size %d, strlen %d, seq_num %d packet: |%s|%s| \n", src, dst, flag, 	size, strlen(payload), seq_num, header, payload);
+      else 
+	LOG_D(OTG,"[%d][%d] 0x %x][m2m Aggre %d][Flow %d][Type %d/%s] TX INFO pkt at time %d Size= [payload %d] [Total %d] with seq num %d, state=%d : |%s|%s| \n", src, dst, flag, otg_info->m2m_aggregation[src][dst],otg_info->flow_id[src][dst], 
+	      otg_info->traffic_type[src][dst], map_int_to_str(otg_app_type_names,otg_info->traffic_type[src][dst]), 
+	      ctime,  size, header_size+strlen(payload), seq_num,state, header, payload);
+      LOG_D(OTG, "[%d]MY_SEQ %d \n", otg_info->traffic_type[src][dst], otg_info->seq_num[src][dst][otg_info->traffic_type[src][dst]] );  
+    } 	
+    else {
+      if ((g_otg->aggregation_level[src][dst][application]*otg_info->size_background[src][dst])<=PAYLOAD_MAX)
+	otg_info->size_background[src][dst]=g_otg->aggregation_level[src][dst][application]*otg_info->size_background[src][dst];
+      else{
+	//otg_info->size_background[src][dst]=PAYLOAD_MAX;
+	LOG_E(OTG,"[BACKGROUND] Aggregated packet larger than PAYLOAD_MAX, payload is limited to %d\n", PAYLOAD_MAX);
+      }
+      header =random_string(header_size_gen_background(src,dst),  g_otg->packet_gen_type, HEADER_ALPHABET);
+      payload = random_string(otg_info->size_background[src][dst],  RANDOM_STRING, PAYLOAD_ALPHABET);
+      flag=0xbbbb;
+      flow=flow_id_background;
+      seq_num=otg_info->seq_num_background[src][dst];
+      otg_info->tx_num_bytes_background[src][dst]+= otg_hdr_size(src,dst) + header_size + strlen(payload) ;
+      otg_info->tx_num_pkt_background[src][dst]+=1;
+      otg_info->seq_num_background[src][dst]+=1;
+      if (otg_info->size_background[src][dst]!=strlen(payload))
+	LOG_E(OTG,"[%d][%d] [0x %x] The expected packet size does not match the payload size : size %d, strlen %d, seq num %d, packet |%s|%s| \n", src, dst, flag, otg_info->size_background[src][dst], strlen(payload), seq_num, header, payload);
+      else
+    	LOG_D(OTG,"[%d][%d][%s][0x %x] TX INFO pkt at time %d size is %d with seq num %d, state=%d : |%s|%s| \n", src, dst, flag,ctime, 
+	      map_int_to_str(otg_app_type_names,otg_info->traffic_type[src][dst]),
+	      otg_info->size_background[src][dst], seq_num, state, header, payload);
+    }
+    
+    buffer_size = otg_hdr_size(src,dst) + header_size + strlen(payload);
+    *pkt_size = buffer_size;
+    if (src<NB_eNB_INST)
+      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;
+    } 
  
-  buffer_size = otg_hdr_size(src,dst) + header_size + strlen(payload);
-	*pkt_size = buffer_size;
-	if (src<NB_eNB_INST)
-		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]);
-	}
+    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]);
+  }
 
-	else 
-		return NULL;
+  else 
+    return NULL;
 
 
 }
@@ -460,7 +463,7 @@ int check_data_transmit(int src,int dst, int app, int ctime){
 			size=size_dist(src, dst, app,state); 
 			otg_info->header_size[src][dst]=otg_info->header_size_app[src][dst][app]; 
 			otg_info->flow_id[src][dst]=app;
-			otg_info->traffic_type[src][dst]=g_otg->application_type[src][dst][app];
+			otg_info->traffic_type[src][dst]=app;//g_otg->application_type[src][dst][app];
 		  /*} */
 
 
@@ -474,7 +477,7 @@ int check_data_transmit(int src,int dst, int app, int ctime){
 		else if ((otg_info->gen_pkts==0) && (g_otg->background[src][dst][app]==1)&&(background_gen(src, dst, ctime)!=0)){ // the gen_pkts condition could be relaxed here
 		  otg_info->traffic_type_background[src][dst]=1;
  			if   (g_otg->m2m[src][dst][app]==M2M)
-				otg_info->traffic_type[src][dst]=M2M;
+			  otg_info->traffic_type[src][dst]=app;//g_otg->application_idx[src][dst];//M2M;
 
 		  LOG_D(OTG,"[BACKGROUND=%d] Time To Transmit [SRC %d][DST %d][APPLI %d] \n", otg_info->traffic_type_background[src][dst], src, dst, app);
 		}
@@ -625,7 +628,7 @@ return(size);
 }
 
 
-unsigned char * serialize_buffer(char* header, char* payload, unsigned int buffer_size, int traffic_type, int flag, int flow_id, int ctime, int seq_num, int hdr_type, int state, unsigned int aggregation_level){
+unsigned char * serialize_buffer(char* header, char* payload, unsigned int buffer_size, unsigned int traffic_type, int flag, int flow_id, int ctime, int seq_num, int hdr_type, int state, unsigned int aggregation_level){
  
   unsigned char *tx_buffer=NULL;
   otg_hdr_info_t *otg_hdr_info_p=NULL;
@@ -651,6 +654,7 @@ unsigned char * serialize_buffer(char* header, char* payload, unsigned int buffe
   otg_hdr_p->traffic_type=traffic_type;
   byte_tx_count += sizeof(otg_hdr_t);
   
+  LOG_I(OTG,"traffic type %d\n",otg_hdr_p->traffic_type);
   // copy the header first 
   memcpy(&tx_buffer[byte_tx_count], header, strlen(header));
   byte_tx_count += strlen(header);
@@ -803,10 +807,9 @@ for (i=0; i<2; i++){ // src //maxServiceCount
    }
  }
 }
+
 void init_predef_traffic(unsigned char nb_ue_local, unsigned char nb_enb_local) {
-int i;
-int j;
-int k;
+  int i,j, k;
 
 //LOG_I(OTG,"OTG_CONFIG num_node %d\n",  g_otg->num_nodes);
 //LOG_I(OTG,"MAX_NODES [MAX UE= %d] [MAX eNB= %d] \n",nb_ue_local,  nb_enb_local);
@@ -1471,7 +1474,7 @@ break;
        g_otg->trans_proto[i][j][k] = UDP;
        g_otg->ip_v[i][j][k] = IPV4;
        g_otg->idt_dist[i][j][k][SIMPLE_TALK] = FIXED;
-       LOG_I(OTG,"OTG_CONFIG  VOIP G729, src = %d, dst = %d, dist IDT = %d\n", i, j, g_otg->idt_dist[i][j][k][SIMPLE_TALK]);
+       LOG_I(OTG,"OTG_CONFIG  VOIP G729, src = %d, dst = %d, traffic id %d, dist IDT = %d\n", i, j, k, g_otg->idt_dist[i][j][k][SIMPLE_TALK]);
        g_otg->idt_min[i][j][k][SIMPLE_TALK] =  30;
        g_otg->idt_max[i][j][k][SIMPLE_TALK] =  30;
        g_otg->size_dist[i][j][k][SIMPLE_TALK] = FIXED;
diff --git a/openair2/UTIL/OTG/otg_tx.h b/openair2/UTIL/OTG/otg_tx.h
index b92d6c84f0..e9c55fa08b 100644
--- a/openair2/UTIL/OTG/otg_tx.h
+++ b/openair2/UTIL/OTG/otg_tx.h
@@ -144,7 +144,7 @@ flow id, simulation time, , sequence number, header type (to know the transport/
 * @ingroup  _otg
 */
 
-unsigned char * serialize_buffer(char* header, char* payload, unsigned int buffer_size, int traffic_type, int flag, int flow_id, int ctime, int seq_num, int hdr_type, int state, unsigned int aggregation_level);
+unsigned char * serialize_buffer(char* header, char* payload, unsigned int buffer_size, unsigned int traffic_type, int flag, int flow_id, int ctime, int seq_num, int hdr_type, int state, unsigned int aggregation_level);
 
 
 /*! \fn int adjust_size(int size);
diff --git a/targets/SIMU/EXAMPLES/OSD/WEBXML/template_60.xml b/targets/SIMU/EXAMPLES/OSD/WEBXML/template_60.xml
new file mode 100644
index 0000000000..85c356f425
--- /dev/null
+++ b/targets/SIMU/EXAMPLES/OSD/WEBXML/template_60.xml
@@ -0,0 +1,96 @@
+<OAI_EMULATION>
+
+  <ENVIRONMENT_SYSTEM_CONFIG>
+    <FADING>
+      <LARGE_SCALE>urban</LARGE_SCALE>
+      <FREE_SPACE_MODEL_PARAMETERS>
+	<PATHLOSS_EXPONENT>2</PATHLOSS_EXPONENT>
+	<PATHLOSS_0_dB>-100</PATHLOSS_0_dB><!--pathloss at 1km -->
+      </FREE_SPACE_MODEL_PARAMETERS>
+      <SMALL_SCALE>AWGN</SMALL_SCALE>
+    </FADING>
+    <WALL_PENETRATION_LOSS_dB>5</WALL_PENETRATION_LOSS_dB>
+   <!-- <SYSTEM_BANDWIDTH_MB>20</SYSTEM_BANDWIDTH_MB> -->
+    <SYSTEM_FREQUENCY_GHz>1.9</SYSTEM_FREQUENCY_GHz>
+    <ANTENNA>
+      <eNB_ANTENNA>
+	<RX_NOISE_LEVEL_dB>5</RX_NOISE_LEVEL_dB>
+	<NUMBER_OF_SECTORS>1</NUMBER_OF_SECTORS>
+	<BEAM_WIDTH_dB>1.13</BEAM_WIDTH_dB>
+	<ANTENNA_GAIN_dBi>16</ANTENNA_GAIN_dBi>
+	<TX_POWER_dBm>40</TX_POWER_dBm>
+      </eNB_ANTENNA>
+      <UE_ANTENNA>
+	<RX_NOISE_LEVEL_dB>1</RX_NOISE_LEVEL_dB>
+	<ANTENNA_GAIN_dBi>5</ANTENNA_GAIN_dBi>
+	<TX_POWER_dBm>20</TX_POWER_dBm>
+      </UE_ANTENNA>
+    </ANTENNA>
+  </ENVIRONMENT_SYSTEM_CONFIG>
+
+
+<TOPOLOGY_CONFIG>	
+	<AREA>			
+	  <X_m>500</X_m>
+	  <Y_m>500</Y_m>	
+	</AREA>
+	<MOBILITY> 
+	        <UE_MOBILITY>
+			<RANDOM_UE_DISTRIBUTION>
+			  <NUMBER_OF_NODES>1</NUMBER_OF_NODES>
+			</RANDOM_UE_DISTRIBUTION>
+			<UE_MOBILITY_TYPE>STATIC</UE_MOBILITY_TYPE>
+		</UE_MOBILITY>
+	
+     		 <eNB_MOBILITY>
+			<eNB_INITIAL_DISTRIBUTION>fixed</eNB_INITIAL_DISTRIBUTION>
+			<eNB_INITIAL_COORDINATES>
+				<POS_X>10</POS_X>
+				<POS_Y>10</POS_Y>
+			</eNB_INITIAL_COORDINATES>
+			<RANDOM_eNB_DISTRIBUTION>
+			 	<NUMBER_OF_CELLS>1</NUMBER_OF_CELLS>
+			</RANDOM_eNB_DISTRIBUTION>
+			<eNB_MOBILITY_TYPE>STATIC</eNB_MOBILITY_TYPE>
+      		</eNB_MOBILITY>
+	</MOBILITY>
+</TOPOLOGY_CONFIG>
+
+<APPLICATION_CONFIG>
+ <!-- 1st VOIP TRAFFICS: VOIP G729 bidirectional -->   
+	<PREDEFINED_TRAFFIC>
+		<SOURCE_ID>0</SOURCE_ID> 					
+      		<APPLICATION_TYPE>voip_g729</APPLICATION_TYPE>   
+      		<DESTINATION_ID>1</DESTINATION_ID> 
+    	</PREDEFINED_TRAFFIC>
+	<PREDEFINED_TRAFFIC>
+		<SOURCE_ID>0</SOURCE_ID> 					
+      		<APPLICATION_TYPE>scbr</APPLICATION_TYPE>   
+      		<DESTINATION_ID>1</DESTINATION_ID> 
+    	</PREDEFINED_TRAFFIC>
+	<PREDEFINED_TRAFFIC>
+	      <SOURCE_ID>1</SOURCE_ID> 					
+	      <APPLICATION_TYPE>voip_g729</APPLICATION_TYPE>   
+	      <DESTINATION_ID>0</DESTINATION_ID> 
+	</PREDEFINED_TRAFFIC> 
+</APPLICATION_CONFIG>
+
+
+<EMULATION_CONFIG>
+	<EMULATION_TIME_ms>10000</EMULATION_TIME_ms>
+	<BACKGROUND_STATS>enable</BACKGROUND_STATS>
+	<CURVE>enable</CURVE>
+	<PERFORMANCE_METRICS>
+		    <THROUGHPUT>1</THROUGHPUT>
+		    <LATENCY>1</LATENCY>
+		    <LOSS_RATE>1</LOSS_RATE>
+		    <OWD_RADIO_ACESS>1</OWD_RADIO_ACESS>
+	</PERFORMANCE_METRICS>
+	<LOG>  <!-- set the global log level -->
+      		<LEVEL>debug</LEVEL>
+		<VERBOSITY>low</VERBOSITY>
+    	</LOG>
+</EMULATION_CONFIG>
+
+<PROFILE>TEST1</PROFILE>	
+</OAI_EMULATION>
diff --git a/targets/SIMU/USER/oaisim_config.c b/targets/SIMU/USER/oaisim_config.c
index 93fcfd8f7e..f577118763 100644
--- a/targets/SIMU/USER/oaisim_config.c
+++ b/targets/SIMU/USER/oaisim_config.c
@@ -776,7 +776,7 @@ int ocg_config_app(void){
 		    g_otg->m2m[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]], 
 		    g_otg->flow_start[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]],
 		    g_otg->flow_duration[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]]);
-	     g_otg->application_idx[source_id_index][destination_id_index]+=1;
+	      g_otg->application_idx[source_id_index][destination_id_index]+=1;
 	    }
 	  }
 	}
@@ -821,18 +821,18 @@ int ocg_config_app(void){
 	      g_otg->aggregation_level[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]]=oai_emulation.application_config.predefined_traffic.aggregation_level[predefined_traffic_config_index];
 	      g_otg->flow_start[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]]=oai_emulation.application_config.predefined_traffic.flow_start[predefined_traffic_config_index];
 	      g_otg->flow_duration[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]]=oai_emulation.application_config.predefined_traffic.flow_duration[predefined_traffic_config_index];
-	      g_otg->application_idx[source_id_index][destination_id_index]+=1;
-	    }
-
-	    LOG_I(OTG,"predef (2):: OCG_config_OTG: [MAX UE=%d] [MAX eNB=%d]: FORMAT (%d:%d) source = %d, dest = %d, Application ID %d, Background=%d, Aggregation=%d, m2m=%d, start/duration %d/%d\n", 
+	      
+	      LOG_I(OTG,"predef (2):: OCG_config_OTG: [MAX UE=%d] [MAX eNB=%d]: FORMAT (%d:%d) source = %d, dest = %d, Application ID %d, type %d, Background=%d, Aggregation=%d, m2m=%d, start/duration %d/%d\n", 
 		  oai_emulation.info.nb_ue_local, oai_emulation.info.nb_enb_local, sid_start, sid_end, source_id_index, destination_id_index,
 		  g_otg->application_idx[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][g_otg->application_idx[source_id_index][destination_id_index]], 
 		  g_otg->aggregation_level[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]], 
 		  g_otg->m2m[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]],
 		  g_otg->flow_start[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]],
 		  g_otg->flow_duration[source_id_index][destination_id_index][g_otg->application_idx[source_id_index][destination_id_index]]);
-
+	      g_otg->application_idx[source_id_index][destination_id_index]+=1;
+	    }
 	  }
 	}
       }
-- 
2.26.2