diff --git a/targets/SIMU/USER/oaisim.c b/targets/SIMU/USER/oaisim.c
index 1eff02f49d81410c3ca4695de5d3f7eb754a1c25..a0ed9dbcac4d7dd0a9239ea61db3489dc48af3ce 100644
--- a/targets/SIMU/USER/oaisim.c
+++ b/targets/SIMU/USER/oaisim.c
@@ -1,31 +1,31 @@
 /*******************************************************************************
-    OpenAirInterface 
-    Copyright(c) 1999 - 2014 Eurecom
+ OpenAirInterface
+ Copyright(c) 1999 - 2014 Eurecom
 
-    OpenAirInterface is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
+ OpenAirInterface is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
 
 
-    OpenAirInterface is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
+ OpenAirInterface is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
 
-    You should have received a copy of the GNU General Public License
-    along with OpenAirInterface.The full GNU General Public License is 
-    included in this distribution in the file called "COPYING". If not, 
-    see <http://www.gnu.org/licenses/>.
+ You should have received a copy of the GNU General Public License
+ along with OpenAirInterface.The full GNU General Public License is
+ included in this distribution in the file called "COPYING". If not,
+ see <http://www.gnu.org/licenses/>.
 
-   Contact Information
-   OpenAirInterface Admin: openair_admin@eurecom.fr
-   OpenAirInterface Tech : openair_tech@eurecom.fr
-   OpenAirInterface Dev  : openair4g-devel@eurecom.fr
-  
-   Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
+ Contact Information
+ OpenAirInterface Admin: openair_admin@eurecom.fr
+ OpenAirInterface Tech : openair_tech@eurecom.fr
+ OpenAirInterface Dev  : openair4g-devel@eurecom.fr
 
-*******************************************************************************/
+ Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
+
+ *******************************************************************************/
 
 #include <string.h>
 #include <math.h>
@@ -71,12 +71,12 @@
 
 #ifdef SMBV
 #include "PHY/TOOLS/smbv.h"
-char           smbv_fname[] = "smbv_config_file.smbv";
+char smbv_fname[] = "smbv_config_file.smbv";
 unsigned short smbv_nframes = 4; // how many frames to configure 1,..,4
 unsigned short config_frames[4] = {2,9,11,13};
-unsigned char  smbv_frame_cnt = 0;
-uint8_t             config_smbv = 0;
-char           smbv_ip[16];
+unsigned char smbv_frame_cnt = 0;
+uint8_t config_smbv = 0;
+char smbv_ip[16];
 #endif
 
 #include "oaisim_functions.h"
@@ -109,11 +109,11 @@ char           smbv_ip[16];
 #define N_TRIALS              1
 
 /*
-  DCI0_5MHz_TDD0_t          UL_alloc_pdu;
-  DCI1A_5MHz_TDD_1_6_t      CCCH_alloc_pdu;
-  DCI2_5MHz_2A_L10PRB_TDD_t DLSCH_alloc_pdu1;
-  DCI2_5MHz_2A_M10PRB_TDD_t DLSCH_alloc_pdu2;
-*/
+ DCI0_5MHz_TDD0_t          UL_alloc_pdu;
+ DCI1A_5MHz_TDD_1_6_t      CCCH_alloc_pdu;
+ DCI2_5MHz_2A_L10PRB_TDD_t DLSCH_alloc_pdu1;
+ DCI2_5MHz_2A_M10PRB_TDD_t DLSCH_alloc_pdu2;
+ */
 
 #define UL_RB_ALLOC            computeRIV(lte_frame_parms->N_RB_UL,0,24)
 #define CCCH_RB_ALLOC          computeRIV(lte_frame_parms->N_RB_UL,0,3)
@@ -129,33 +129,33 @@ char           smbv_ip[16];
 //#define K                      2             /* averaging coefficient */
 //#define TARGET_SF_TIME_NS      1000000       /* 1ms = 1000000 ns */
 
-frame_t                frame = 0;
-char                   stats_buffer[16384];
-channel_desc_t        *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_NUM_CCs];
-channel_desc_t        *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_NUM_CCs];
+frame_t frame = 0;
+char stats_buffer[16384];
+channel_desc_t *eNB2UE[NUMBER_OF_eNB_MAX][NUMBER_OF_UE_MAX][MAX_NUM_CCs];
+channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_NUM_CCs];
 //Added for PHY abstraction
-node_desc_t           *enb_data[NUMBER_OF_eNB_MAX];
-node_desc_t           *ue_data[NUMBER_OF_UE_MAX];
+node_desc_t *enb_data[NUMBER_OF_eNB_MAX];
+node_desc_t *ue_data[NUMBER_OF_UE_MAX];
 // Added for PHY abstraction
-extern node_list*       ue_node_list;
-extern node_list*       enb_node_list;
-extern int             pdcp_period, omg_period;
-
-extern double        **s_re, **s_im, **r_re, **r_im, **r_re0, **r_im0;
-int                    map1, map2;
-extern double        **ShaF;
-double                 snr_dB, sinr_dB, snr_direction; //,sinr_direction;
-extern double          snr_step;
-extern uint8_t              set_sinr;
-extern uint8_t              ue_connection_test;
-extern uint8_t              set_seed;
-uint8_t                     cooperation_flag; // for cooperative communication
-extern uint8_t              target_dl_mcs;
-extern uint8_t              target_ul_mcs;
-uint8_t                     rate_adaptation_flag;
-extern uint8_t              abstraction_flag;
-extern uint8_t              ethernet_flag;
-extern uint16_t             Nid_cell;
+extern node_list* ue_node_list;
+extern node_list* enb_node_list;
+extern int pdcp_period, omg_period;
+
+extern double **s_re, **s_im, **r_re, **r_im, **r_re0, **r_im0;
+int map1, map2;
+extern double **ShaF;
+double snr_dB, sinr_dB, snr_direction; //,sinr_direction;
+extern double snr_step;
+extern uint8_t set_sinr;
+extern uint8_t ue_connection_test;
+extern uint8_t set_seed;
+uint8_t cooperation_flag; // for cooperative communication
+extern uint8_t target_dl_mcs;
+extern uint8_t target_ul_mcs;
+uint8_t rate_adaptation_flag;
+extern uint8_t abstraction_flag;
+extern uint8_t ethernet_flag;
+extern uint16_t Nid_cell;
 
 extern LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
 
@@ -169,216 +169,212 @@ time_stats_t dl_chan_stats;
 time_stats_t ul_chan_stats;
 
 // this should reflect the channel models in openair1/SIMULATION/TOOLS/defs.h
-mapping small_scale_names[] = {
-  {"custom", custom},
-  {"SCM_A", SCM_A},
-  {"SCM_B", SCM_B},
-  {"SCM_C", SCM_C},
-  {"SCM_D", SCM_D},
-  {"EPA", EPA},
-  {"EVA", EVA},
-  {"ETU", ETU},
-  {"MBSFN", MBSFN},
-  {"Rayleigh8", Rayleigh8},
-  {"Rayleigh1", Rayleigh1},
-  {"Rayleigh1_800", Rayleigh1_800},
-  {"Rayleigh1_corr", Rayleigh1_corr},
-  {"Rayleigh1_anticorr", Rayleigh1_anticorr},
-  {"Rice8", Rice8},
-  {"Rice1", Rice1},
-  {"Rice1_corr", Rice1_corr},
-  {"Rice1_anticorr", Rice1_anticorr},
-  {"AWGN", AWGN},
-  {NULL, -1}
-};
+mapping small_scale_names[] = { { "custom", custom }, { "SCM_A", SCM_A }, {
+                "SCM_B", SCM_B }, { "SCM_C", SCM_C }, { "SCM_D", SCM_D }, {
+                "EPA", EPA }, { "EVA", EVA }, { "ETU", ETU },
+                { "MBSFN", MBSFN }, { "Rayleigh8", Rayleigh8 }, { "Rayleigh1",
+                                Rayleigh1 }, { "Rayleigh1_800", Rayleigh1_800 },
+                { "Rayleigh1_corr", Rayleigh1_corr }, { "Rayleigh1_anticorr",
+                                Rayleigh1_anticorr }, { "Rice8", Rice8 }, {
+                                "Rice1", Rice1 }, { "Rice1_corr", Rice1_corr },
+                { "Rice1_anticorr", Rice1_anticorr }, { "AWGN", AWGN }, { NULL,
+                                -1 } };
 #if !defined(ENABLE_ITTI)
-static void *sigh(void *arg);
+static void *
+sigh (void *arg);
 #endif
-void oai_shutdown(void);
-
-void help(void) {
-  printf ("Usage: oaisim -h -a -F -C tdd_config -K [log_file] -V [vcd_file] -R N_RB_DL -e -x transmission_mode -m target_dl_mcs -r(ate_adaptation) -n n_frames -s snr_dB -k ricean_factor -t max_delay -f forgetting factor -A channel_model -z cooperation_flag -u nb_local_ue -U UE mobility -b nb_local_enb -B eNB_mobility -M ethernet_flag -p nb_master -g multicast_group -l log_level -c ocg_enable -T traffic model -D multicast network device\n");
-
-  printf ("-h provides this help message!\n");
-  printf ("-a Activates PHY abstraction mode\n");
-  printf ("-A set the multipath channel simulation,  options are: SCM_A, SCM_B, SCM_C, SCM_D, EPA, EVA, ETU, Rayleigh8, Rayleigh1, Rayleigh1_corr,Rayleigh1_anticorr, Rice8,, Rice1, AWGN \n");
-  printf ("-b Set the number of local eNB\n");
-  printf ("-B Set the mobility model for eNB, options are: STATIC, RWP, RWALK, \n");
-  printf ("-c [1,2,3,4] Activate the config generator (OCG) to process the scenario descriptor, or give the scenario manually: -c template_1.xml \n");
-  printf ("-C [0-6] Sets TDD configuration\n");
-  printf ("-e Activates extended prefix mode\n");
-  printf ("-E Random number generator seed\n");
-  printf ("-f Set the forgetting factor for time-variation\n");
-  printf ("-F Activates FDD transmission (TDD is default)\n");
-  printf ("-g Set multicast group ID (0,1,2,3) - valid if M is set\n");
-  printf ("-G Enable background traffic \n");
-  printf ("-H Enable handover operation (default disabled) \n");
-  printf ("-I Enable CLI interface (to connect use telnet localhost 1352)\n");
-  printf ("-k Set the Ricean factor (linear)\n");
-  printf ("-K [log_file] Enable ITTI logging into log_file\n");
-  printf ("-l Set the global log level (8:trace, 7:debug, 6:info, 4:warn, 3:error) \n");
-  printf ("-L [0-1] 0 to disable new link adaptation, 1 to enable new link adapatation\n");
-  printf ("-m Gives a fixed DL mcs for eNB scheduler\n");
-  printf ("-M Set the machine ID for Ethernet-based emulation\n");
-  printf ("-n Set the number of frames for the simulation\n");
-  printf ("-O [enb_conf_file] eNB configuration file name\n");
-  printf ("-p Set the total number of machine in emulation - valid if M is set\n");
-  printf ("-P [trace type] Enable protocol analyzer. Possible values for OPT:\n");
-  printf ("    - wireshark: Enable tracing of layers above PHY using an UDP socket\n");
-  printf ("    - pcap:      Enable tracing of layers above PHY to a pcap file\n");
-  printf ("    - tshark:    Not implemented yet\n");
-  printf ("-q Enable Openair performance profiler \n");
-  printf ("-Q Activate and set the MBMS service: 0 : not used (default eMBMS disabled), 1: eMBMS and RRC Connection enabled, 2: eMBMS relaying and RRC Connection enabled, 3: eMBMS enabled, RRC Connection disabled, 4: eMBMS relaying enabled, RRC Connection disabled\n");
-  printf ("-R [6,15,25,50,75,100] Sets N_RB_DL\n");
-  printf ("-r Activates rate adaptation (DL for now)\n");
-  printf ("-s snr_dB set a fixed (average) SNR, this deactivates the openair channel model generator (OCM)\n");
-  printf ("-S snir_dB set a fixed (average) SNIR, this deactivates the openair channel model generator (OCM)\n");
-  printf ("-t Gives a fixed UL mcs for eNB scheduler\n");
-  printf ("-T activate the traffic generator: cbr, scbr, mcbr, bcbr, mscbr\n");
-  printf ("-u Set the number of local UE\n");
-  printf ("-U Set the mobility model for UE, options are: STATIC, RWP, RWALK\n");
-  printf ("-V [vcd_file] Enable VCD dump into vcd_file\n");
-  printf ("-w number of CBA groups, if not specified or zero, CBA is inactive\n");
-  printf ("-W IP address to connect to SMBV and configure SMBV from config file. Requires compilation with SMBV=1, -W0 uses default IP 192.168.12.201\n");
-  printf ("-x Set the transmission mode (1,2,5,6 supported for now)\n");
-  printf ("-Y Set the global log verbosity (none, low, medium, high, full) \n");
-  printf ("-z Set the cooperation flag (0 for no cooperation, 1 for delay diversity and 2 for distributed alamouti\n");
-  printf ("-Z Reserved\n");
+void
+oai_shutdown (void);
+
+void
+help (void) {
+    printf ("Usage: oaisim -h -a -F -C tdd_config -K [log_file] -V [vcd_file] -R N_RB_DL -e -x transmission_mode -m target_dl_mcs -r(ate_adaptation) -n n_frames -s snr_dB -k ricean_factor -t max_delay -f forgetting factor -A channel_model -z cooperation_flag -u nb_local_ue -U UE mobility -b nb_local_enb -B eNB_mobility -M ethernet_flag -p nb_master -g multicast_group -l log_level -c ocg_enable -T traffic model -D multicast network device\n");
+
+    printf ("-h provides this help message!\n");
+    printf ("-a Activates PHY abstraction mode\n");
+    printf ("-A set the multipath channel simulation,  options are: SCM_A, SCM_B, SCM_C, SCM_D, EPA, EVA, ETU, Rayleigh8, Rayleigh1, Rayleigh1_corr,Rayleigh1_anticorr, Rice8,, Rice1, AWGN \n");
+    printf ("-b Set the number of local eNB\n");
+    printf ("-B Set the mobility model for eNB, options are: STATIC, RWP, RWALK, \n");
+    printf ("-c [1,2,3,4] Activate the config generator (OCG) to process the scenario descriptor, or give the scenario manually: -c template_1.xml \n");
+    printf ("-C [0-6] Sets TDD configuration\n");
+    printf ("-e Activates extended prefix mode\n");
+    printf ("-E Random number generator seed\n");
+    printf ("-f Set the forgetting factor for time-variation\n");
+    printf ("-F Activates FDD transmission (TDD is default)\n");
+    printf ("-g Set multicast group ID (0,1,2,3) - valid if M is set\n");
+    printf ("-G Enable background traffic \n");
+    printf ("-H Enable handover operation (default disabled) \n");
+    printf ("-I Enable CLI interface (to connect use telnet localhost 1352)\n");
+    printf ("-k Set the Ricean factor (linear)\n");
+    printf ("-K [log_file] Enable ITTI logging into log_file\n");
+    printf ("-l Set the global log level (8:trace, 7:debug, 6:info, 4:warn, 3:error) \n");
+    printf ("-L [0-1] 0 to disable new link adaptation, 1 to enable new link adapatation\n");
+    printf ("-m Gives a fixed DL mcs for eNB scheduler\n");
+    printf ("-M Set the machine ID for Ethernet-based emulation\n");
+    printf ("-n Set the number of frames for the simulation\n");
+    printf ("-O [enb_conf_file] eNB configuration file name\n");
+    printf ("-p Set the total number of machine in emulation - valid if M is set\n");
+    printf ("-P [trace type] Enable protocol analyzer. Possible values for OPT:\n");
+    printf ("    - wireshark: Enable tracing of layers above PHY using an UDP socket\n");
+    printf ("    - pcap:      Enable tracing of layers above PHY to a pcap file\n");
+    printf ("    - tshark:    Not implemented yet\n");
+    printf ("-q Enable Openair performance profiler \n");
+    printf ("-Q Activate and set the MBMS service: 0 : not used (default eMBMS disabled), 1: eMBMS and RRC Connection enabled, 2: eMBMS relaying and RRC Connection enabled, 3: eMBMS enabled, RRC Connection disabled, 4: eMBMS relaying enabled, RRC Connection disabled\n");
+    printf ("-R [6,15,25,50,75,100] Sets N_RB_DL\n");
+    printf ("-r Activates rate adaptation (DL for now)\n");
+    printf ("-s snr_dB set a fixed (average) SNR, this deactivates the openair channel model generator (OCM)\n");
+    printf ("-S snir_dB set a fixed (average) SNIR, this deactivates the openair channel model generator (OCM)\n");
+    printf ("-t Gives a fixed UL mcs for eNB scheduler\n");
+    printf ("-T activate the traffic generator: cbr, scbr, mcbr, bcbr, mscbr\n");
+    printf ("-u Set the number of local UE\n");
+    printf ("-U Set the mobility model for UE, options are: STATIC, RWP, RWALK\n");
+    printf ("-V [vcd_file] Enable VCD dump into vcd_file\n");
+    printf ("-w number of CBA groups, if not specified or zero, CBA is inactive\n");
+    printf ("-W IP address to connect to SMBV and configure SMBV from config file. Requires compilation with SMBV=1, -W0 uses default IP 192.168.12.201\n");
+    printf ("-x Set the transmission mode (1,2,5,6 supported for now)\n");
+    printf ("-Y Set the global log verbosity (none, low, medium, high, full) \n");
+    printf ("-z Set the cooperation flag (0 for no cooperation, 1 for delay diversity and 2 for distributed alamouti\n");
+    printf ("-Z Reserved\n");
 }
 
 pthread_t log_thread;
 
-void log_thread_init() {
-  //create log_list
-  //log_list_init(&log_list);
+void
+log_thread_init () {
+    //create log_list
+    //log_list_init(&log_list);
 #ifndef LOG_NO_THREAD
 
-  log_shutdown = 0;
+    log_shutdown = 0;
 
-  if ((pthread_mutex_init (&log_lock, NULL) != 0) || (pthread_cond_init (&log_notify, NULL) != 0)) {
-    return;
-  }
+    if ((pthread_mutex_init (&log_lock, NULL) != 0)
+                    || (pthread_cond_init (&log_notify, NULL) != 0)) {
+        return;
+    }
 
-  if (pthread_create (&log_thread, NULL, log_thread_function, (void*) NULL) != 0) {
-    log_thread_finalize ();
-    return;
-  }
+    if (pthread_create (&log_thread, NULL, log_thread_function, (void*) NULL)
+                    != 0) {
+        log_thread_finalize ();
+        return;
+    }
 #endif
 
 }
 
 //Call it after the last LOG call
-int log_thread_finalize() {
-  int err = 0;
+int
+log_thread_finalize () {
+    int err = 0;
 
 #ifndef LOG_NO_THREAD
 
-  if (pthread_mutex_lock (&log_lock) != 0) {
-    return -1;
-  }
-
-  log_shutdown = 1;
-
-  /* Wake up LOG thread */
-  if ((pthread_cond_broadcast (&log_notify) != 0) || (pthread_mutex_unlock (&log_lock) != 0)) {
-    err = -1;
-  }
-  if (pthread_join (log_thread, NULL) != 0) {
-    err = -1;
-  }
-  if (pthread_mutex_unlock (&log_lock) != 0) {
-    err = -1;
-  }
-
-  if (!err) {
-    //log_list_free(&log_list);
-    pthread_mutex_lock (&log_lock);
-    pthread_mutex_destroy (&log_lock);
-    pthread_cond_destroy (&log_notify);
-  }
+    if (pthread_mutex_lock (&log_lock) != 0) {
+        return -1;
+    }
+
+    log_shutdown = 1;
+
+    /* Wake up LOG thread */
+    if ((pthread_cond_broadcast (&log_notify) != 0)
+                    || (pthread_mutex_unlock (&log_lock) != 0)) {
+        err = -1;
+    }
+    if (pthread_join (log_thread, NULL) != 0) {
+        err = -1;
+    }
+    if (pthread_mutex_unlock (&log_lock) != 0) {
+        err = -1;
+    }
+
+    if (!err) {
+        //log_list_free(&log_list);
+        pthread_mutex_lock (&log_lock);
+        pthread_mutex_destroy (&log_lock);
+        pthread_cond_destroy (&log_notify);
+    }
 #endif
 
-  return err;
+    return err;
 }
 
 #if defined(ENABLE_ITTI)
 static void set_cli_start(module_id_t module_idP, uint8_t start) {
-  if (module_idP < NB_eNB_INST) {
-    oai_emulation.info.cli_start_enb[module_idP] = start;
-  } else {
-    oai_emulation.info.cli_start_ue[module_idP - NB_eNB_INST] = start;
-  }
+    if (module_idP < NB_eNB_INST) {
+        oai_emulation.info.cli_start_enb[module_idP] = start;
+    } else {
+        oai_emulation.info.cli_start_ue[module_idP - NB_eNB_INST] = start;
+    }
 }
 #endif
 
 #ifdef OPENAIR2
 int omv_write(int pfd, node_list* enb_node_list, node_list* ue_node_list, Data_Flow_Unit omv_data) {
-  module_id_t i, j;
-  omv_data.end = 0;
-  //omv_data.total_num_nodes = NB_UE_INST + NB_eNB_INST;
-  for (i = 0; i < NB_eNB_INST; i++) {
-    if (enb_node_list != NULL) {
-      omv_data.geo[i].x = (enb_node_list->node->x_pos < 0.0) ? 0.0 : enb_node_list->node->x_pos;
-      omv_data.geo[i].y = (enb_node_list->node->y_pos < 0.0) ? 0.0 : enb_node_list->node->y_pos;
-      omv_data.geo[i].z = 1.0;
-      omv_data.geo[i].mobility_type = oai_emulation.info.omg_model_enb;
-      omv_data.geo[i].node_type = 0; //eNB
-      enb_node_list = enb_node_list->next;
-      omv_data.geo[i].Neighbors = 0;
-      for (j = NB_eNB_INST; j < NB_UE_INST + NB_eNB_INST; j++) {
-	if (is_UE_active (i, j - NB_eNB_INST) == 1) {
-	  omv_data.geo[i].Neighbor[omv_data.geo[i].Neighbors] = j;
-	  omv_data.geo[i].Neighbors++;
-	  LOG_D(
-		OMG,
-		"[eNB %d][UE %d] is_UE_active(i,j) %d geo (x%d, y%d) num neighbors %d\n", i, j-NB_eNB_INST, is_UE_active(i,j-NB_eNB_INST), omv_data.geo[i].x, omv_data.geo[i].y, omv_data.geo[i].Neighbors);
-	}
-      }
+    module_id_t i, j;
+    omv_data.end = 0;
+    //omv_data.total_num_nodes = NB_UE_INST + NB_eNB_INST;
+    for (i = 0; i < NB_eNB_INST; i++) {
+        if (enb_node_list != NULL) {
+            omv_data.geo[i].x = (enb_node_list->node->x_pos < 0.0) ? 0.0 : enb_node_list->node->x_pos;
+            omv_data.geo[i].y = (enb_node_list->node->y_pos < 0.0) ? 0.0 : enb_node_list->node->y_pos;
+            omv_data.geo[i].z = 1.0;
+            omv_data.geo[i].mobility_type = oai_emulation.info.omg_model_enb;
+            omv_data.geo[i].node_type = 0; //eNB
+            enb_node_list = enb_node_list->next;
+            omv_data.geo[i].Neighbors = 0;
+            for (j = NB_eNB_INST; j < NB_UE_INST + NB_eNB_INST; j++) {
+                if (is_UE_active (i, j - NB_eNB_INST) == 1) {
+                    omv_data.geo[i].Neighbor[omv_data.geo[i].Neighbors] = j;
+                    omv_data.geo[i].Neighbors++;
+                    LOG_D(
+                                    OMG,
+                                    "[eNB %d][UE %d] is_UE_active(i,j) %d geo (x%d, y%d) num neighbors %d\n", i, j-NB_eNB_INST, is_UE_active(i,j-NB_eNB_INST), omv_data.geo[i].x, omv_data.geo[i].y, omv_data.geo[i].Neighbors);
+                }
+            }
+        }
     }
-  }
-  for (i = NB_eNB_INST; i < NB_UE_INST + NB_eNB_INST; i++) {
-    if (ue_node_list != NULL) {
-      omv_data.geo[i].x = (ue_node_list->node->x_pos < 0.0) ? 0.0 : ue_node_list->node->x_pos;
-      omv_data.geo[i].y = (ue_node_list->node->y_pos < 0.0) ? 0.0 : ue_node_list->node->y_pos;
-      omv_data.geo[i].z = 1.0;
-      omv_data.geo[i].mobility_type = oai_emulation.info.omg_model_ue;
-      omv_data.geo[i].node_type = 1; //UE
-      //trial
-      omv_data.geo[i].state = 1;
-      omv_data.geo[i].rnti = 88;
-      omv_data.geo[i].connected_eNB = 0;
-      omv_data.geo[i].RSRP = 66;
-      omv_data.geo[i].RSRQ = 55;
-      omv_data.geo[i].Pathloss = 44;
-      omv_data.geo[i].RSSI[0] = 33;
-      omv_data.geo[i].RSSI[1] = 22;
-      if ((sizeof(omv_data.geo[0].RSSI) / sizeof(omv_data.geo[0].RSSI[0])) > 2)
-	{
-	  omv_data.geo[i].RSSI[2] = 11;
-	}
-
-      ue_node_list = ue_node_list->next;
-      omv_data.geo[i].Neighbors = 0;
-      for (j = 0; j < NB_eNB_INST; j++) {
-	if (is_UE_active (j, i - NB_eNB_INST) == 1) {
-	  omv_data.geo[i].Neighbor[omv_data.geo[i].Neighbors] = j;
-	  omv_data.geo[i].Neighbors++;
-	  LOG_D(
-		OMG,
-		"[UE %d][eNB %d] is_UE_active  %d geo (x%d, y%d) num neighbors %d\n", i-NB_eNB_INST, j, is_UE_active(j,i-NB_eNB_INST), omv_data.geo[i].x, omv_data.geo[i].y, omv_data.geo[i].Neighbors);
-	}
-      }
+    for (i = NB_eNB_INST; i < NB_UE_INST + NB_eNB_INST; i++) {
+        if (ue_node_list != NULL) {
+            omv_data.geo[i].x = (ue_node_list->node->x_pos < 0.0) ? 0.0 : ue_node_list->node->x_pos;
+            omv_data.geo[i].y = (ue_node_list->node->y_pos < 0.0) ? 0.0 : ue_node_list->node->y_pos;
+            omv_data.geo[i].z = 1.0;
+            omv_data.geo[i].mobility_type = oai_emulation.info.omg_model_ue;
+            omv_data.geo[i].node_type = 1; //UE
+            //trial
+            omv_data.geo[i].state = 1;
+            omv_data.geo[i].rnti = 88;
+            omv_data.geo[i].connected_eNB = 0;
+            omv_data.geo[i].RSRP = 66;
+            omv_data.geo[i].RSRQ = 55;
+            omv_data.geo[i].Pathloss = 44;
+            omv_data.geo[i].RSSI[0] = 33;
+            omv_data.geo[i].RSSI[1] = 22;
+            if ((sizeof(omv_data.geo[0].RSSI) / sizeof(omv_data.geo[0].RSSI[0])) > 2)
+            {
+                omv_data.geo[i].RSSI[2] = 11;
+            }
+
+            ue_node_list = ue_node_list->next;
+            omv_data.geo[i].Neighbors = 0;
+            for (j = 0; j < NB_eNB_INST; j++) {
+                if (is_UE_active (j, i - NB_eNB_INST) == 1) {
+                    omv_data.geo[i].Neighbor[omv_data.geo[i].Neighbors] = j;
+                    omv_data.geo[i].Neighbors++;
+                    LOG_D(
+                                    OMG,
+                                    "[UE %d][eNB %d] is_UE_active  %d geo (x%d, y%d) num neighbors %d\n", i-NB_eNB_INST, j, is_UE_active(j,i-NB_eNB_INST), omv_data.geo[i].x, omv_data.geo[i].y, omv_data.geo[i].Neighbors);
+                }
+            }
+        }
     }
-  }
-  LOG_E(OMG, "pfd %d \n", pfd);
-  if (write (pfd, &omv_data, sizeof(struct Data_Flow_Unit)) == -1)
+    LOG_E(OMG, "pfd %d \n", pfd);
+    if (write (pfd, &omv_data, sizeof(struct Data_Flow_Unit)) == -1)
     perror ("write omv failed");
-  return 1;
+    return 1;
 }
 
 void omv_end(int pfd, Data_Flow_Unit omv_data) {
-  omv_data.end = 1;
-  if (write (pfd, &omv_data, sizeof(struct Data_Flow_Unit)) == -1)
+    omv_data.end = 1;
+    if (write (pfd, &omv_data, sizeof(struct Data_Flow_Unit)) == -1)
     perror ("write omv failed");
 }
 #endif 
@@ -390,680 +386,783 @@ int pfd[2]; // fd for omv : fixme: this could be a local var
 #ifdef OPENAIR2
 static Data_Flow_Unit omv_data;
 #endif //ALU
-static module_id_t UE_inst  = 0;
+static module_id_t UE_inst = 0;
 static module_id_t eNB_inst = 0;
 #ifdef Rel10
-static module_id_t RN_id    = 0;
+static module_id_t RN_id = 0;
 #endif
 
 Packet_OTG_List_t *otg_pdcp_buffer;
 
-typedef enum l2l1_task_state_e
-  {
-    L2L1_WAITTING,
-    L2L1_RUNNING,
-    L2L1_TERMINATED,
-  } l2l1_task_state_t;
+typedef enum l2l1_task_state_e {
+    L2L1_WAITTING, L2L1_RUNNING, L2L1_TERMINATED,
+} l2l1_task_state_t;
 
-l2l1_task_state_t     l2l1_state = L2L1_WAITTING;
+l2l1_task_state_t l2l1_state = L2L1_WAITTING;
 
 /*------------------------------------------------------------------------------*/
-void *l2l1_task(void *args_p) {
-  
-  clock_t               t;
-  int CC_id;
+void *
+l2l1_task (void *args_p) {
+
+    clock_t t;
+    int CC_id;
 
-  // Framing variables
-  int32_t                   slot, last_slot, next_slot;
+    // Framing variables
+    int32_t slot, last_slot, next_slot;
 
 #ifdef Rel10
-  relaying_type_t       r_type = no_relay; // no relaying
+    relaying_type_t r_type = no_relay; // no relaying
 #endif
 
-  lte_subframe_t        direction;
-
-  char                  fname[64], vname[64];
-  int sf;
+    lte_subframe_t direction;
 
+    char fname[64], vname[64];
+    int sf;
+    protocol_ctxt_t  ctxt;
 #ifdef XFORMS
-  // current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0)
-  // at eNB 0, an UL scope for every UE 
-  FD_lte_phy_scope_ue  *form_ue[NUMBER_OF_UE_MAX];
-  FD_lte_phy_scope_enb *form_enb[NUMBER_OF_UE_MAX];
-  char                  title[255];
-  char                  xname[32]                  = "oaisim";
-  int                   xargc                      = 1;
-  char                 *xargv[1];
+    // current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0)
+    // at eNB 0, an UL scope for every UE
+    FD_lte_phy_scope_ue *form_ue[NUMBER_OF_UE_MAX];
+    FD_lte_phy_scope_enb *form_enb[NUMBER_OF_UE_MAX];
+    char title[255];
+    char xname[32] = "oaisim";
+    int xargc = 1;
+    char *xargv[1];
 #endif
 
 #ifdef PRINT_STATS
-  int                   len;
-  FILE                 *UE_stats[NUMBER_OF_UE_MAX];
-  FILE                 *UE_stats_th[NUMBER_OF_UE_MAX];
-  FILE                 *eNB_stats[NUMBER_OF_eNB_MAX];
-  FILE                 *eNB_avg_thr;
-  FILE                 *eNB_l2_stats;
-  char                  UE_stats_filename[255];
-  char                  eNB_stats_filename[255];
-  char                  UE_stats_th_filename[255];
-  char                  eNB_stats_th_filename[255];
+    int len;
+    FILE *UE_stats[NUMBER_OF_UE_MAX];
+    FILE *UE_stats_th[NUMBER_OF_UE_MAX];
+    FILE *eNB_stats[NUMBER_OF_eNB_MAX];
+    FILE *eNB_avg_thr;
+    FILE *eNB_l2_stats;
+    char UE_stats_filename[255];
+    char eNB_stats_filename[255];
+    char UE_stats_th_filename[255];
+    char eNB_stats_th_filename[255];
 #endif
 
-  for (CC_id = 0;CC_id<MAX_NUM_CCs;CC_id++)
-    for (eNB_inst=0;eNB_inst<NB_eNB_INST;eNB_inst++) {
-      for (sf=0;sf<10;sf++) {
-	PHY_vars_eNB_g[eNB_inst][CC_id]->proc[sf].frame_tx = 0;
-	PHY_vars_eNB_g[eNB_inst][CC_id]->proc[sf].frame_rx = 0;
-	PHY_vars_eNB_g[eNB_inst][CC_id]->proc[sf].subframe_tx = (sf+1)%10;
-	PHY_vars_eNB_g[eNB_inst][CC_id]->proc[sf].subframe_rx = (sf+9)%10;
-      }
-      PHY_vars_eNB_g[eNB_inst][CC_id]->proc[0].frame_rx = 1023;
-      PHY_vars_eNB_g[eNB_inst][CC_id]->proc[9].frame_tx = 1;
-    }
+    for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++)
+        for (eNB_inst = 0; eNB_inst < NB_eNB_INST; eNB_inst++) {
+            for (sf = 0; sf < 10; sf++) {
+                PHY_vars_eNB_g[eNB_inst][CC_id]->proc[sf].frame_tx = 0;
+                PHY_vars_eNB_g[eNB_inst][CC_id]->proc[sf].frame_rx = 0;
+                PHY_vars_eNB_g[eNB_inst][CC_id]->proc[sf].subframe_tx = (sf + 1)
+                                % 10;
+                PHY_vars_eNB_g[eNB_inst][CC_id]->proc[sf].subframe_rx = (sf + 9)
+                                % 10;
+            }
+            PHY_vars_eNB_g[eNB_inst][CC_id]->proc[0].frame_rx = 1023;
+            PHY_vars_eNB_g[eNB_inst][CC_id]->proc[9].frame_tx = 1;
+        }
 #ifdef XFORMS
-  xargv[0] = xname;
-  fl_initialize (&xargc, xargv, NULL, 0, 0);
-  eNB_inst = 0;
-  for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) {
-    // DL scope at UEs
-    form_ue[UE_inst] = create_lte_phy_scope_ue();
-    sprintf (title, "LTE DL SCOPE eNB %d to UE %d", eNB_inst, UE_inst);
-    fl_show_form (form_ue[UE_inst]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
-
-    // UL scope at eNB 0
-    form_enb[UE_inst] = create_lte_phy_scope_enb();
-    sprintf (title, "LTE UL SCOPE UE %d to eNB %d", UE_inst, eNB_inst);
-    fl_show_form (form_enb[UE_inst]->lte_phy_scope_enb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
-
-    if (openair_daq_vars.use_ia_receiver == 1) {
-      fl_set_button(form_ue[UE_inst]->button_0,1);
-      fl_set_object_label(form_ue[UE_inst]->button_0, "IA Receiver ON");
-      fl_set_object_color(form_ue[UE_inst]->button_0, FL_GREEN, FL_GREEN);
-    }
+    xargv[0] = xname;
+    fl_initialize (&xargc, xargv, NULL, 0, 0);
+    eNB_inst = 0;
+    for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) {
+        // DL scope at UEs
+        form_ue[UE_inst] = create_lte_phy_scope_ue();
+        sprintf (title, "LTE DL SCOPE eNB %d to UE %d", eNB_inst, UE_inst);
+        fl_show_form (form_ue[UE_inst]->lte_phy_scope_ue, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
+
+        // UL scope at eNB 0
+        form_enb[UE_inst] = create_lte_phy_scope_enb();
+        sprintf (title, "LTE UL SCOPE UE %d to eNB %d", UE_inst, eNB_inst);
+        fl_show_form (form_enb[UE_inst]->lte_phy_scope_enb, FL_PLACE_HOTSPOT, FL_FULLBORDER, title);
+
+        if (openair_daq_vars.use_ia_receiver == 1) {
+            fl_set_button(form_ue[UE_inst]->button_0,1);
+            fl_set_object_label(form_ue[UE_inst]->button_0, "IA Receiver ON");
+            fl_set_object_color(form_ue[UE_inst]->button_0, FL_GREEN, FL_GREEN);
+        }
 
-  }
+    }
 #endif
 
 #ifdef PRINT_STATS
-  for (UE_inst=0;UE_inst<NB_UE_INST;UE_inst++) {
-    sprintf(UE_stats_filename,"UE_stats%d.txt",UE_inst);
-    UE_stats[UE_inst] = fopen (UE_stats_filename, "w");
-  }
-  for (eNB_inst=0;eNB_inst<NB_eNB_INST;eNB_inst++) {
-    sprintf(eNB_stats_filename,"eNB_stats%d.txt",eNB_inst);
-    eNB_stats[eNB_inst] = fopen (eNB_stats_filename, "w");
-  }
-
-  if(abstraction_flag==0) {
     for (UE_inst=0;UE_inst<NB_UE_INST;UE_inst++) {
-      sprintf(UE_stats_th_filename,"UE_stats_th%d_tx%d.txt",UE_inst,oai_emulation.info.transmission_mode);
-      UE_stats_th[UE_inst] = fopen (UE_stats_th_filename, "w");
+        sprintf(UE_stats_filename,"UE_stats%d.txt",UE_inst);
+        UE_stats[UE_inst] = fopen (UE_stats_filename, "w");
     }
-    sprintf(eNB_stats_th_filename,"eNB_stats_th_tx%d.txt",oai_emulation.info.transmission_mode);
-    eNB_avg_thr = fopen (eNB_stats_th_filename, "w");
-  }
-  else {
-    for (UE_inst=0;UE_inst<NB_UE_INST;UE_inst++) {
-      sprintf(UE_stats_th_filename,"UE_stats_abs_th%d_tx%d.txt",UE_inst,oai_emulation.info.transmission_mode);
-      UE_stats_th[UE_inst] = fopen (UE_stats_th_filename, "w");
+    for (eNB_inst=0;eNB_inst<NB_eNB_INST;eNB_inst++) {
+        sprintf(eNB_stats_filename,"eNB_stats%d.txt",eNB_inst);
+        eNB_stats[eNB_inst] = fopen (eNB_stats_filename, "w");
+    }
+
+    if(abstraction_flag==0) {
+        for (UE_inst=0;UE_inst<NB_UE_INST;UE_inst++) {
+            sprintf(UE_stats_th_filename,"UE_stats_th%d_tx%d.txt",UE_inst,oai_emulation.info.transmission_mode);
+            UE_stats_th[UE_inst] = fopen (UE_stats_th_filename, "w");
+        }
+        sprintf(eNB_stats_th_filename,"eNB_stats_th_tx%d.txt",oai_emulation.info.transmission_mode);
+        eNB_avg_thr = fopen (eNB_stats_th_filename, "w");
+    }
+    else {
+        for (UE_inst=0;UE_inst<NB_UE_INST;UE_inst++) {
+            sprintf(UE_stats_th_filename,"UE_stats_abs_th%d_tx%d.txt",UE_inst,oai_emulation.info.transmission_mode);
+            UE_stats_th[UE_inst] = fopen (UE_stats_th_filename, "w");
+        }
+        sprintf(eNB_stats_th_filename,"eNB_stats_abs_th_tx%d.txt",oai_emulation.info.transmission_mode);
+        eNB_avg_thr = fopen (eNB_stats_th_filename, "w");
     }
-    sprintf(eNB_stats_th_filename,"eNB_stats_abs_th_tx%d.txt",oai_emulation.info.transmission_mode);
-    eNB_avg_thr = fopen (eNB_stats_th_filename, "w");
-  }
 #ifdef OPENAIR2
-  eNB_l2_stats = fopen ("eNB_l2_stats.txt", "w");
-  LOG_I(EMU,"eNB_l2_stats=%p\n", eNB_l2_stats);
+    eNB_l2_stats = fopen ("eNB_l2_stats.txt", "w");
+    LOG_I(EMU,"eNB_l2_stats=%p\n", eNB_l2_stats);
 #endif 
 
 #endif
 
 #if defined(ENABLE_ITTI)
-  MessageDef   *message_p = NULL;
-  const char   *msg_name  = NULL;
-  int           result;
-
-  itti_mark_task_ready (TASK_L2L1);
-  LOG_I(EMU, "TASK_L2L1 is READY\n");
-
-  if (oai_emulation.info.nb_enb_local > 0) {
-    /* Wait for the initialize message */
-    do {
-      if (message_p != NULL) {
-	result = itti_free (ITTI_MSG_ORIGIN_ID(message_p), message_p);
-	AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-      }
-      itti_receive_msg (TASK_L2L1, &message_p);
-      msg_name = ITTI_MSG_NAME (message_p);
-      LOG_I(EMU, "TASK_L2L1 received %s in state L2L1_WAITTING\n", msg_name);
-
-      switch (ITTI_MSG_ID(message_p)) {
-      case INITIALIZE_MESSAGE:
-	l2l1_state = L2L1_RUNNING;
-	break;
-
-      case ACTIVATE_MESSAGE:
-	set_cli_start(ITTI_MSG_INSTANCE (message_p), 1);
-	break;
-
-      case DEACTIVATE_MESSAGE:
-	set_cli_start(ITTI_MSG_INSTANCE (message_p), 0);
-	break;
-
-      case TERMINATE_MESSAGE:
-	l2l1_state = L2L1_TERMINATED;
-	break;
-
-      default:
-	LOG_E(EMU, "Received unexpected message %s\n", ITTI_MSG_NAME(message_p));
-	break;
-      }
-    } while (l2l1_state == L2L1_WAITTING);
-    result = itti_free (ITTI_MSG_ORIGIN_ID(message_p), message_p);
-    AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-  }
-#endif
-  start_meas(&oaisim_stats);
-  for (frame = 0; (l2l1_state != L2L1_TERMINATED) && (frame < oai_emulation.info.n_frames); frame++) {
-
+    MessageDef *message_p = NULL;
+    const char *msg_name = NULL;
+    int result;
 
-#if defined(ENABLE_ITTI)
-    do {
-      // Checks if a message has been sent to L2L1 task
-      itti_poll_msg (TASK_L2L1, &message_p);
-
-      if (message_p != NULL) {
-	msg_name = ITTI_MSG_NAME (message_p);
-	LOG_I(EMU, "TASK_L2L1 received %s\n", msg_name);
-	switch (ITTI_MSG_ID(message_p)) {
-	case ACTIVATE_MESSAGE:
-	  set_cli_start(ITTI_MSG_INSTANCE (message_p), 1);
-	  break;
-
-	case DEACTIVATE_MESSAGE:
-	  set_cli_start(ITTI_MSG_INSTANCE (message_p), 0);
-	  break;
-
-	case TERMINATE_MESSAGE:
-	  l2l1_state = L2L1_TERMINATED;
-	  break;
-
-	case MESSAGE_TEST:
-	  break;
-
-
-	default:
-	  LOG_E(EMU, "Received unexpected message %s\n", ITTI_MSG_NAME(message_p));
-	  break;
-	}
-
-	result = itti_free (ITTI_MSG_ORIGIN_ID(message_p), message_p);
-	AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
-      }
-    } while(message_p != NULL);
-#endif
-      
-    //Run the aperiodic user-defined events
-    if (oai_emulation.info.oeh_enabled == 1)
-      execute_events(frame);
-           
-    /*
-    // Handling the cooperation Flag
-    if (cooperation_flag == 2)
-    {
-    if ((PHY_vars_eNB_g[0]->eNB_UE_stats[0].mode == PUSCH) && (PHY_vars_eNB_g[0]->eNB_UE_stats[1].mode == PUSCH))
-    PHY_vars_eNB_g[0]->cooperation_flag = 2;
-    }
-    */
-    if (ue_connection_test == 1) {
-      if ((frame % 20) == 0) {
-	snr_dB += snr_direction;
-	sinr_dB -= snr_direction;
-      }
-      if (snr_dB == -20) {
-	snr_direction = snr_step;
-      }
-      else
-	if (snr_dB == 20) {
-	  snr_direction = -snr_step;
-	}
-    }
+    itti_mark_task_ready (TASK_L2L1);
+    LOG_I(EMU, "TASK_L2L1 is READY\n");
 
-    oai_emulation.info.frame = frame;
-    //oai_emulation.info.time_ms += 1;
-    oai_emulation.info.time_s += 0.01; // emu time in s, each frame lasts for 10 ms // JNote: TODO check the coherency of the time and frame (I corrected it to 10 (instead of 0.01)
-    // if n_frames not set by the user or is greater than max num frame then set adjust the frame counter
-    if ((oai_emulation.info.n_frames_flag == 0) || (oai_emulation.info.n_frames >= 0xffff)) {
-      frame %= (oai_emulation.info.n_frames - 1);
+    if (oai_emulation.info.nb_enb_local > 0) {
+        /* Wait for the initialize message */
+        do {
+            if (message_p != NULL) {
+                result = itti_free (ITTI_MSG_ORIGIN_ID(message_p), message_p);
+                AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
+            }
+            itti_receive_msg (TASK_L2L1, &message_p);
+            msg_name = ITTI_MSG_NAME (message_p);
+            LOG_I(EMU, "TASK_L2L1 received %s in state L2L1_WAITTING\n", msg_name);
+
+            switch (ITTI_MSG_ID(message_p)) {
+                case INITIALIZE_MESSAGE:
+                l2l1_state = L2L1_RUNNING;
+                break;
+
+                case ACTIVATE_MESSAGE:
+                set_cli_start(ITTI_MSG_INSTANCE (message_p), 1);
+                break;
+
+                case DEACTIVATE_MESSAGE:
+                set_cli_start(ITTI_MSG_INSTANCE (message_p), 0);
+                break;
+
+                case TERMINATE_MESSAGE:
+                l2l1_state = L2L1_TERMINATED;
+                break;
+
+                default:
+                LOG_E(EMU, "Received unexpected message %s\n", ITTI_MSG_NAME(message_p));
+                break;
+            }
+        }while (l2l1_state == L2L1_WAITTING);
+        result = itti_free (ITTI_MSG_ORIGIN_ID(message_p), message_p);
+        AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
     }
+#endif
+    start_meas (&oaisim_stats);
+    for (frame = 0;
+                    (l2l1_state != L2L1_TERMINATED)
+                                    && (frame < oai_emulation.info.n_frames);
+                    frame++) {
 
-    update_omg (frame); // frequency is defined in the omg_global params configurable by the user
+#if defined(ENABLE_ITTI)
+        do {
+            // Checks if a message has been sent to L2L1 task
+            itti_poll_msg (TASK_L2L1, &message_p);
+
+            if (message_p != NULL) {
+                msg_name = ITTI_MSG_NAME (message_p);
+                LOG_I(EMU, "TASK_L2L1 received %s\n", msg_name);
+                switch (ITTI_MSG_ID(message_p)) {
+                    case ACTIVATE_MESSAGE:
+                    set_cli_start(ITTI_MSG_INSTANCE (message_p), 1);
+                    break;
+
+                    case DEACTIVATE_MESSAGE:
+                    set_cli_start(ITTI_MSG_INSTANCE (message_p), 0);
+                    break;
+
+                    case TERMINATE_MESSAGE:
+                    l2l1_state = L2L1_TERMINATED;
+                    break;
+
+                    case MESSAGE_TEST:
+                    break;
+
+                    default:
+                    LOG_E(EMU, "Received unexpected message %s\n", ITTI_MSG_NAME(message_p));
+                    break;
+                }
+
+                result = itti_free (ITTI_MSG_ORIGIN_ID(message_p), message_p);
+                AssertFatal (result == EXIT_SUCCESS, "Failed to free memory (%d)!\n", result);
+            }
+        }while(message_p != NULL);
+#endif
 
-    update_omg_ocm ();
+        //Run the aperiodic user-defined events
+        if (oai_emulation.info.oeh_enabled == 1)
+            execute_events (frame);
+
+        /*
+         // Handling the cooperation Flag
+         if (cooperation_flag == 2)
+         {
+         if ((PHY_vars_eNB_g[0]->eNB_UE_stats[0].mode == PUSCH) && (PHY_vars_eNB_g[0]->eNB_UE_stats[1].mode == PUSCH))
+         PHY_vars_eNB_g[0]->cooperation_flag = 2;
+         }
+         */
+        if (ue_connection_test == 1) {
+            if ((frame % 20) == 0) {
+                snr_dB += snr_direction;
+                sinr_dB -= snr_direction;
+            }
+            if (snr_dB == -20) {
+                snr_direction = snr_step;
+            } else
+                if (snr_dB == 20) {
+                    snr_direction = -snr_step;
+                }
+        }
+
+        oai_emulation.info.frame = frame;
+        //oai_emulation.info.time_ms += 1;
+        oai_emulation.info.time_s += 0.01; // emu time in s, each frame lasts for 10 ms // JNote: TODO check the coherency of the time and frame (I corrected it to 10 (instead of 0.01)
+        // if n_frames not set by the user or is greater than max num frame then set adjust the frame counter
+        if ((oai_emulation.info.n_frames_flag == 0)
+                        || (oai_emulation.info.n_frames >= 0xffff)) {
+            frame %= (oai_emulation.info.n_frames - 1);
+        }
+
+        update_omg (frame); // frequency is defined in the omg_global params configurable by the user
+
+        update_omg_ocm ();
 
 #ifdef OPENAIR2
-    // check if pipe is still open
-    if ((oai_emulation.info.omv_enabled == 1)) {
-      omv_write (pfd[1], enb_node_list, ue_node_list, omv_data);
-    }
+        // check if pipe is still open
+        if ((oai_emulation.info.omv_enabled == 1)) {
+            omv_write (pfd[1], enb_node_list, ue_node_list, omv_data);
+        }
 #endif
 #ifdef DEBUG_OMG
-    /*
-      if ((((int) oai_emulation.info.time_s) % 100) == 0) {
-      for (UE_inst = oai_emulation.info.first_ue_local; UE_inst < (oai_emulation.info.first_ue_local + oai_emulation.info.nb_ue_local); UE_inst++) {
-      get_node_position (UE, UE_inst);
-      }
-      }
-    */
+        /*
+         if ((((int) oai_emulation.info.time_s) % 100) == 0) {
+         for (UE_inst = oai_emulation.info.first_ue_local; UE_inst < (oai_emulation.info.first_ue_local + oai_emulation.info.nb_ue_local); UE_inst++) {
+         get_node_position (UE, UE_inst);
+         }
+         }
+         */
 #endif
 
-    update_ocm ();
+        update_ocm ();
+
+        for (slot = 0; slot < 20; slot++) {
+            if (slot % 2 == 0)
+                start_meas (&oaisim_stats_f);
 
-    for (slot = 0; slot < 20; slot++) {
-      if (slot%2==0)
-	start_meas(&oaisim_stats_f);
-	
-      wait_for_slot_isr ();
+            wait_for_slot_isr ();
 
 #if defined(ENABLE_ITTI)
-      itti_update_lte_time(frame, slot);
+            itti_update_lte_time(frame, slot);
 #endif
 
-      last_slot = (slot - 1) % 20;
-      if (last_slot < 0)
-	last_slot += 20;
-      next_slot = (slot + 1) % 20;
+            last_slot = (slot - 1) % 20;
+            if (last_slot < 0)
+                last_slot += 20;
+            next_slot = (slot + 1) % 20;
 
-      oai_emulation.info.time_ms = frame * 10 + (slot >> 1);
+            oai_emulation.info.time_ms = frame * 10 + (slot >> 1);
 
-      direction = subframe_select (frame_parms[0], next_slot >> 1);
+            direction = subframe_select (frame_parms[0], next_slot >> 1);
 
 #ifdef PROC
-      if(Channel_Flag==1)
-	Channel_Func(s_re2,s_im2,r_re2,r_im2,r_re02,r_im02,r_re0_d,r_im0_d,r_re0_u,r_im0_u,eNB2UE,UE2eNB,enb_data,ue_data,abstraction_flag,frame_parms,slot);
+            if(Channel_Flag==1)
+            Channel_Func(s_re2,s_im2,r_re2,r_im2,r_re02,r_im02,r_re0_d,r_im0_d,r_re0_u,r_im0_u,eNB2UE,UE2eNB,enb_data,ue_data,abstraction_flag,frame_parms,slot);
 
-      if(Channel_Flag==0)
+            if(Channel_Flag==0)
 #endif
-	{
+            {
 #if defined(ENABLE_ITTI)
-	  log_set_instance_type (LOG_INSTANCE_ENB);
+                log_set_instance_type (LOG_INSTANCE_ENB);
 #endif
 
-	  //	  if ((next_slot % 2) == 0)  
-	  if ((slot&1) == 0) 
-	    clear_eNB_transport_info (oai_emulation.info.nb_enb_local);
-
-	  for (eNB_inst = oai_emulation.info.first_enb_local; (eNB_inst < (oai_emulation.info.first_enb_local + oai_emulation.info.nb_enb_local)); eNB_inst++) {
-	    if (oai_emulation.info.cli_start_enb[eNB_inst] != 0) {
-	      if ((slot&1) == 0) 
-		LOG_D(
-		      EMU,
-		      "PHY procedures eNB %d for frame %d, slot %d (subframe TX %d, RX %d) TDD %d/%d Nid_cell %d\n",
-		      eNB_inst,
-		      frame,
-		      slot,
-		      PHY_vars_eNB_g[eNB_inst][0]->proc[slot >> 1].subframe_tx,
-		      PHY_vars_eNB_g[eNB_inst][0]->proc[slot >> 1].subframe_rx,
-		      PHY_vars_eNB_g[eNB_inst][0]->lte_frame_parms.frame_type,
-		      PHY_vars_eNB_g[eNB_inst][0]->lte_frame_parms.tdd_config,
-		      PHY_vars_eNB_g[eNB_inst][0]->lte_frame_parms.Nid_cell);
-		  
+                //	  if ((next_slot % 2) == 0)
+                if ((slot & 1) == 0)
+                    clear_eNB_transport_info (oai_emulation.info.nb_enb_local);
+
+                for (eNB_inst = oai_emulation.info.first_enb_local;
+                                (eNB_inst
+                                                < (oai_emulation.info.first_enb_local
+                                                                + oai_emulation.info.nb_enb_local));
+                                eNB_inst++) {
+                    if (oai_emulation.info.cli_start_enb[eNB_inst] != 0) {
+                        if ((slot & 1) == 0)
+                            LOG_D(EMU,
+                                  "PHY procedures eNB %d for frame %d, slot %d (subframe TX %d, RX %d) TDD %d/%d Nid_cell %d\n",
+                                  eNB_inst,
+                                  frame,
+                                  slot,
+                                  PHY_vars_eNB_g[eNB_inst][0]->proc[slot >> 1].subframe_tx,
+                                  PHY_vars_eNB_g[eNB_inst][0]->proc[slot >> 1].subframe_rx,
+                                  PHY_vars_eNB_g[eNB_inst][0]->lte_frame_parms.frame_type,
+                                  PHY_vars_eNB_g[eNB_inst][0]->lte_frame_parms.tdd_config,
+                                  PHY_vars_eNB_g[eNB_inst][0]->lte_frame_parms.Nid_cell);
+
 #ifdef OPENAIR2
-	      //Appliation: traffic gen
-	      update_otg_eNB (eNB_inst, oai_emulation.info.time_ms);
+                        //Appliation: traffic gen
+                        update_otg_eNB (eNB_inst, oai_emulation.info.time_ms);
 
-	      //IP/OTG to PDCP and PDCP to IP operation
-	      //	      pdcp_run (frame, 1, 0, eNB_inst); //PHY_vars_eNB_g[eNB_id]->Mod_id
+                        //IP/OTG to PDCP and PDCP to IP operation
+                        //	      pdcp_run (frame, 1, 0, eNB_inst); //PHY_vars_eNB_g[eNB_id]->Mod_id
 #endif
 
-	      // PHY_vars_eNB_g[eNB_id]->frame = frame;
-	      if ((slot&1) == 0) 
-		phy_procedures_eNB_lte (slot>>1,PHY_vars_eNB_g[eNB_inst], abstraction_flag, no_relay, NULL);
+                        // PHY_vars_eNB_g[eNB_id]->frame = frame;
+                        if ((slot & 1) == 0)
+                            phy_procedures_eNB_lte (slot >> 1,
+                                                    PHY_vars_eNB_g[eNB_inst],
+                                                    abstraction_flag, no_relay,
+                                                    NULL);
 #ifdef PRINT_STATS
-	      if(last_slot==9 && frame%10==0)
-		if(eNB_avg_thr) 
-		  fprintf(eNB_avg_thr,"%d %d\n",PHY_vars_eNB_g[eNB_inst][0]->proc[slot>>1].frame_tx,
-			  (PHY_vars_eNB_g[eNB_inst][0]->total_system_throughput)/((PHY_vars_eNB_g[eNB_inst][0]->proc[slot>>1].frame_tx+1)*10));
-	      if (eNB_stats[eNB_inst]) {
-		len = dump_eNB_stats(PHY_vars_eNB_g[eNB_inst][0], stats_buffer, 0);
-		rewind (eNB_stats[eNB_inst]);
-		fwrite (stats_buffer, 1, len, eNB_stats[eNB_inst]);
-		fflush(eNB_stats[eNB_inst]);
-	      }
+                        if(last_slot==9 && frame%10==0)
+                        if(eNB_avg_thr)
+                        fprintf(eNB_avg_thr,"%d %d\n",PHY_vars_eNB_g[eNB_inst][0]->proc[slot>>1].frame_tx,
+                                        (PHY_vars_eNB_g[eNB_inst][0]->total_system_throughput)/((PHY_vars_eNB_g[eNB_inst][0]->proc[slot>>1].frame_tx+1)*10));
+                        if (eNB_stats[eNB_inst]) {
+                            len = dump_eNB_stats(PHY_vars_eNB_g[eNB_inst][0], stats_buffer, 0);
+                            rewind (eNB_stats[eNB_inst]);
+                            fwrite (stats_buffer, 1, len, eNB_stats[eNB_inst]);
+                            fflush(eNB_stats[eNB_inst]);
+                        }
 #ifdef OPENAIR2
-	      if (eNB_l2_stats) {
-		len = dump_eNB_l2_stats (stats_buffer, 0);
-		rewind (eNB_l2_stats);
-		fwrite (stats_buffer, 1, len, eNB_l2_stats);
-		fflush(eNB_l2_stats);
-	      }
+                        if (eNB_l2_stats) {
+                            len = dump_eNB_l2_stats (stats_buffer, 0);
+                            rewind (eNB_l2_stats);
+                            fwrite (stats_buffer, 1, len, eNB_l2_stats);
+                            fflush(eNB_l2_stats);
+                        }
 #endif
 #endif
-	    }
-	  }
-	    	    
-	  // Call ETHERNET emulation here
-	  //emu_transport (frame, last_slot, next_slot, direction, oai_emulation.info.frame_type, ethernet_flag);
+                    }
+                }
+
+                // Call ETHERNET emulation here
+                //emu_transport (frame, last_slot, next_slot, direction, oai_emulation.info.frame_type, ethernet_flag);
 
 #if defined(ENABLE_ITTI)
-	  log_set_instance_type (LOG_INSTANCE_UE);
+                log_set_instance_type (LOG_INSTANCE_UE);
 #endif
 
-	  if ((next_slot % 2) == 0)
-	  // if ((slot&1) == 0) 
-	    clear_UE_transport_info (oai_emulation.info.nb_ue_local);
-	  for (UE_inst = oai_emulation.info.first_ue_local;
-	       (UE_inst < (oai_emulation.info.first_ue_local + oai_emulation.info.nb_ue_local)); UE_inst++) {
-	    if (oai_emulation.info.cli_start_ue[UE_inst] != 0) {
+                if ((next_slot % 2) == 0)
+                    // if ((slot&1) == 0)
+                    clear_UE_transport_info (oai_emulation.info.nb_ue_local);
+                for (UE_inst = oai_emulation.info.first_ue_local;
+                         (UE_inst < (oai_emulation.info.first_ue_local + oai_emulation.info.nb_ue_local));
+                          UE_inst++) {
+                    if (oai_emulation.info.cli_start_ue[UE_inst] != 0) {
 #if defined(ENABLE_ITTI) && defined(ENABLE_USE_MME)
 
 #else
-	      if (frame >= (UE_inst * 20))  // activate UE only after 20*UE_id frames so that different UEs turn on separately
+                        if (frame >= (UE_inst * 20)) // activate UE only after 20*UE_id frames so that different UEs turn on separately
 #endif
-		{
-		  LOG_D(EMU, "PHY procedures UE %d for frame %d, slot %d (subframe TX %d, RX %d)\n",
-			UE_inst,
-			frame,
-			slot,
-			next_slot >> 1,
-			last_slot>>1);
-
-		  if (PHY_vars_UE_g[UE_inst][0]->UE_mode[0] != NOT_SYNCHED) {
-		    if (frame > 0) {
-		      PHY_vars_UE_g[UE_inst][0]->frame_rx = frame;
-		      PHY_vars_UE_g[UE_inst][0]->slot_rx = last_slot;
-		      PHY_vars_UE_g[UE_inst][0]->slot_tx = next_slot;
-		      if (next_slot > 1)
-			PHY_vars_UE_g[UE_inst][0]->frame_tx = frame;
-		      else
-			PHY_vars_UE_g[UE_inst][0]->frame_tx = frame+1;
+                                        {
+                            LOG_D(EMU,
+                                  "PHY procedures UE %d for frame %d, slot %d (subframe TX %d, RX %d)\n",
+                                  UE_inst, frame, slot, next_slot >> 1,
+                                  last_slot >> 1);
+
+                            if (PHY_vars_UE_g[UE_inst][0]->UE_mode[0]
+                                            != NOT_SYNCHED) {
+                                if (frame > 0) {
+                                    PHY_vars_UE_g[UE_inst][0]->frame_rx = frame;
+                                    PHY_vars_UE_g[UE_inst][0]->slot_rx =
+                                                    last_slot;
+                                    PHY_vars_UE_g[UE_inst][0]->slot_tx =
+                                                    next_slot;
+                                    if (next_slot > 1)
+                                        PHY_vars_UE_g[UE_inst][0]->frame_tx =
+                                                        frame;
+                                    else
+                                        PHY_vars_UE_g[UE_inst][0]->frame_tx =
+                                                        frame + 1;
 #ifdef OPENAIR2
-		      //Application
-		      update_otg_UE (UE_inst, oai_emulation.info.time_ms);
-
-		      //Access layer
-		      pdcp_run (frame, 0, UE_inst, 0);
+                                    //Application
+                                    update_otg_UE (UE_inst, oai_emulation.info.time_ms);
+
+                                    //Access layer
+                                    ctxt.enb_module_id = 0;
+                                    ctxt.ue_module_id  = UE_inst;
+                                    ctxt.frame         = frame;
+                                    ctxt.enb_flag      = ENB_FLAG_NO;
+                                    pdcp_run (&ctxt);
 #endif
-		      for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
-			phy_procedures_UE_lte (PHY_vars_UE_g[UE_inst][CC_id], 0, abstraction_flag, normal_txrx,
-					       no_relay, NULL);
-		      }
-		      ue_data[UE_inst]->tx_power_dBm = PHY_vars_UE_g[UE_inst][0]->tx_power_dBm;
-		    }
-		  }
-		  else {
-		    if (abstraction_flag == 1) {
-		      LOG_E(
-			    EMU,
-			    "sync not supported in abstraction mode (UE%d,mode%d)\n", UE_inst, PHY_vars_UE_g[UE_inst][0]->UE_mode[0]);
-		      exit (-1);
-		    }
-		    if ((frame > 0) && (last_slot == (LTE_SLOTS_PER_FRAME - 2))) {
-		      initial_sync (PHY_vars_UE_g[UE_inst][0], normal_txrx);
-
-		      /*
-			write_output("dlchan00.m","dlch00",&(PHY_vars_UE_g[0]->lte_ue_common_vars.dl_ch_estimates[0][0][0]),(6*(PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)),1,1);
-			if (PHY_vars_UE_g[0]->lte_frame_parms.nb_antennas_rx>1)
-			write_output("dlchan01.m","dlch01",&(PHY_vars_UE_g[0]->lte_ue_common_vars.dl_ch_estimates[0][1][0]),(6*(PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)),1,1);
-			write_output("dlchan10.m","dlch10",&(PHY_vars_UE_g[0]->lte_ue_common_vars.dl_ch_estimates[0][2][0]),(6*(PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)),1,1);
-			if (PHY_vars_UE_g[0]->lte_frame_parms.nb_antennas_rx>1)
-			write_output("dlchan11.m","dlch11",&(PHY_vars_UE_g[0]->lte_ue_common_vars.dl_ch_estimates[0][3][0]),(6*(PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)),1,1);
-			write_output("rxsig.m","rxs",PHY_vars_UE_g[0]->lte_ue_common_vars.rxdata[0],PHY_vars_UE_g[0]->lte_frame_parms.samples_per_tti*10,1,1);
-			write_output("rxsigF.m","rxsF",PHY_vars_UE_g[0]->lte_ue_common_vars.rxdataF[0],2*PHY_vars_UE_g[0]->lte_frame_parms.symbols_per_tti*PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size,2,1);
-			write_output("pbch_rxF_ext0.m","pbch_ext0",PHY_vars_UE_g[0]->lte_ue_pbch_vars[0]->rxdataF_ext[0],6*12*4,1,1);
-			write_output("pbch_rxF_comp0.m","pbch_comp0",PHY_vars_UE_g[0]->lte_ue_pbch_vars[0]->rxdataF_comp[0],6*12*4,1,1);
-			write_output("pbch_rxF_llr.m","pbch_llr",PHY_vars_UE_g[0]->lte_ue_pbch_vars[0]->llr,(frame_parms->Ncp==0) ? 1920 : 1728,1,4);
-		      */
-		    }
-		  }
+                                    for (CC_id = 0; CC_id < MAX_NUM_CCs;
+                                                    CC_id++) {
+                                        phy_procedures_UE_lte (
+                                                        PHY_vars_UE_g[UE_inst][CC_id],
+                                                        0, abstraction_flag,
+                                                        normal_txrx, no_relay,
+                                                        NULL);
+                                    }
+                                    ue_data[UE_inst]->tx_power_dBm =
+                                                    PHY_vars_UE_g[UE_inst][0]->tx_power_dBm;
+                                }
+                            } else {
+                                if (abstraction_flag == 1) {
+                                    LOG_E(EMU,
+                                          "sync not supported in abstraction mode (UE%d,mode%d)\n",
+                                          UE_inst,
+                                          PHY_vars_UE_g[UE_inst][0]->UE_mode[0]);
+                                    exit (-1);
+                                }
+                                if ((frame > 0)
+                                                && (last_slot
+                                                                == (LTE_SLOTS_PER_FRAME
+                                                                                - 2))) {
+                                    initial_sync (PHY_vars_UE_g[UE_inst][0],
+                                                  normal_txrx);
+
+                                    /*
+                                     write_output("dlchan00.m","dlch00",&(PHY_vars_UE_g[0]->lte_ue_common_vars.dl_ch_estimates[0][0][0]),(6*(PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)),1,1);
+                                     if (PHY_vars_UE_g[0]->lte_frame_parms.nb_antennas_rx>1)
+                                     write_output("dlchan01.m","dlch01",&(PHY_vars_UE_g[0]->lte_ue_common_vars.dl_ch_estimates[0][1][0]),(6*(PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)),1,1);
+                                     write_output("dlchan10.m","dlch10",&(PHY_vars_UE_g[0]->lte_ue_common_vars.dl_ch_estimates[0][2][0]),(6*(PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)),1,1);
+                                     if (PHY_vars_UE_g[0]->lte_frame_parms.nb_antennas_rx>1)
+                                     write_output("dlchan11.m","dlch11",&(PHY_vars_UE_g[0]->lte_ue_common_vars.dl_ch_estimates[0][3][0]),(6*(PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size)),1,1);
+                                     write_output("rxsig.m","rxs",PHY_vars_UE_g[0]->lte_ue_common_vars.rxdata[0],PHY_vars_UE_g[0]->lte_frame_parms.samples_per_tti*10,1,1);
+                                     write_output("rxsigF.m","rxsF",PHY_vars_UE_g[0]->lte_ue_common_vars.rxdataF[0],2*PHY_vars_UE_g[0]->lte_frame_parms.symbols_per_tti*PHY_vars_UE_g[0]->lte_frame_parms.ofdm_symbol_size,2,1);
+                                     write_output("pbch_rxF_ext0.m","pbch_ext0",PHY_vars_UE_g[0]->lte_ue_pbch_vars[0]->rxdataF_ext[0],6*12*4,1,1);
+                                     write_output("pbch_rxF_comp0.m","pbch_comp0",PHY_vars_UE_g[0]->lte_ue_pbch_vars[0]->rxdataF_comp[0],6*12*4,1,1);
+                                     write_output("pbch_rxF_llr.m","pbch_llr",PHY_vars_UE_g[0]->lte_ue_pbch_vars[0]->llr,(frame_parms->Ncp==0) ? 1920 : 1728,1,4);
+                                     */
+                                }
+                            }
 #ifdef PRINT_STATS
-		  if(last_slot==2 && frame%10==0) {
-		    if (UE_stats_th[UE_inst]) {
-		      fprintf(UE_stats_th[UE_inst],"%d %d\n",frame, PHY_vars_UE_g[UE_inst][0]->bitrate[0]/1000);
-		    }
-		  }
-		  if (UE_stats[UE_inst]) {
-		    len = dump_ue_stats (PHY_vars_UE_g[UE_inst][0], stats_buffer, 0, normal_txrx, 0);
-		    rewind (UE_stats[UE_inst]);
-		    fwrite (stats_buffer, 1, len, UE_stats[UE_inst]);
-		    fflush(UE_stats[UE_inst]);
-		  }
+                            if(last_slot==2 && frame%10==0) {
+                                if (UE_stats_th[UE_inst]) {
+                                    fprintf(UE_stats_th[UE_inst],"%d %d\n",frame, PHY_vars_UE_g[UE_inst][0]->bitrate[0]/1000);
+                                }
+                            }
+                            if (UE_stats[UE_inst]) {
+                                len = dump_ue_stats (PHY_vars_UE_g[UE_inst][0], stats_buffer, 0, normal_txrx, 0);
+                                rewind (UE_stats[UE_inst]);
+                                fwrite (stats_buffer, 1, len, UE_stats[UE_inst]);
+                                fflush(UE_stats[UE_inst]);
+                            }
 #endif
-		}
-	    }
-	  }	       
-    
+                        }
+                    }
+                }
+
 #ifdef Rel10
-	  for (RN_id=oai_emulation.info.first_rn_local;
-	       RN_id<oai_emulation.info.first_rn_local+oai_emulation.info.nb_rn_local;
-	       RN_id++) {
-	    // UE id and eNB id of the RN
-	    UE_inst= oai_emulation.info.first_ue_local+oai_emulation.info.nb_ue_local + RN_id;// NB_UE_INST + RN_id
-	    eNB_inst= oai_emulation.info.first_enb_local+oai_emulation.info.nb_enb_local + RN_id;// NB_eNB_INST + RN_id
-	    // currently only works in FDD
-	    if (oai_emulation.info.eMBMS_active_state == 4) {
-	      r_type = multicast_relay;
-	      //LOG_I(EMU,"Activating the multicast relaying\n");
-	    }
-	    else {
-	      LOG_E(EMU,"Not supported eMBMS option when relaying is enabled %d\n", r_type);
-	      exit(-1);
-	    }
-	    PHY_vars_RN_g[RN_id]->frame = frame;
-	    if ( oai_emulation.info.frame_type == 0) {
-	      // RN == UE
-	      if (frame>0) {
-		if (PHY_vars_UE_g[UE_inst][0]->UE_mode[0] != NOT_SYNCHED) {
-		  LOG_D(EMU,"[RN %d] PHY procedures UE %d for frame %d, slot %d (subframe TX %d, RX %d)\n",
-			RN_id, UE_inst, frame, slot, next_slot >> 1,last_slot>>1);
-		  PHY_vars_UE_g[UE_inst][0]->frame_rx = frame;
-		  PHY_vars_UE_g[UE_inst][0]->slot_rx =  last_slot;
-		  PHY_vars_UE_g[UE_inst][0]->slot_tx =  next_slot;
-		  if (next_slot>1) PHY_vars_UE_g[UE_inst][0]->frame_tx = frame;
-		  else PHY_vars_UE_g[UE_inst][0]->frame_tx = frame+1;
-		  phy_procedures_UE_lte (PHY_vars_UE_g[UE_inst][0], 0, abstraction_flag,normal_txrx,
-					 r_type, PHY_vars_RN_g[RN_id]);
-		}
-		else if (last_slot == (LTE_SLOTS_PER_FRAME-2)) {
-		  initial_sync(PHY_vars_UE_g[UE_inst][0],normal_txrx);
-		}
-	      }
-	      // RN == eNB
-	      LOG_D(EMU,"[RN %d] PHY procedures eNB %d for frame %d, slot %d (subframe TX %d, RX %d)\n",
-		    RN_id, eNB_inst, frame, slot, next_slot >> 1,last_slot>>1);
-	      phy_procedures_eNB_lte(slot>>1, PHY_vars_eNB_g[eNB_inst][0], abstraction_flag,
-				     r_type, PHY_vars_RN_g[RN_id]);
-	    }
-	    else {
-	      LOG_E(EMU,"TDD is not supported for multicast relaying %d\n", r_type);
-	      exit(-1);
-	    }
-	  }
+                for (RN_id=oai_emulation.info.first_rn_local;
+                                RN_id<oai_emulation.info.first_rn_local+oai_emulation.info.nb_rn_local;
+                                RN_id++) {
+                    // UE id and eNB id of the RN
+                    UE_inst= oai_emulation.info.first_ue_local+oai_emulation.info.nb_ue_local + RN_id;// NB_UE_INST + RN_id
+                    eNB_inst= oai_emulation.info.first_enb_local+oai_emulation.info.nb_enb_local + RN_id;// NB_eNB_INST + RN_id
+                    // currently only works in FDD
+                    if (oai_emulation.info.eMBMS_active_state == 4) {
+                        r_type = multicast_relay;
+                        //LOG_I(EMU,"Activating the multicast relaying\n");
+                    }
+                    else {
+                        LOG_E(EMU,"Not supported eMBMS option when relaying is enabled %d\n", r_type);
+                        exit(-1);
+                    }
+                    PHY_vars_RN_g[RN_id]->frame = frame;
+                    if ( oai_emulation.info.frame_type == 0) {
+                        // RN == UE
+                        if (frame>0) {
+                            if (PHY_vars_UE_g[UE_inst][0]->UE_mode[0] != NOT_SYNCHED) {
+                                LOG_D(EMU,"[RN %d] PHY procedures UE %d for frame %d, slot %d (subframe TX %d, RX %d)\n",
+                                                RN_id, UE_inst, frame, slot, next_slot >> 1,last_slot>>1);
+                                PHY_vars_UE_g[UE_inst][0]->frame_rx = frame;
+                                PHY_vars_UE_g[UE_inst][0]->slot_rx = last_slot;
+                                PHY_vars_UE_g[UE_inst][0]->slot_tx = next_slot;
+                                if (next_slot>1) PHY_vars_UE_g[UE_inst][0]->frame_tx = frame;
+                                else PHY_vars_UE_g[UE_inst][0]->frame_tx = frame+1;
+                                phy_procedures_UE_lte (PHY_vars_UE_g[UE_inst][0], 0, abstraction_flag,normal_txrx,
+                                                r_type, PHY_vars_RN_g[RN_id]);
+                            }
+                            else if (last_slot == (LTE_SLOTS_PER_FRAME-2)) {
+                                initial_sync(PHY_vars_UE_g[UE_inst][0],normal_txrx);
+                            }
+                        }
+                        // RN == eNB
+                        LOG_D(EMU,"[RN %d] PHY procedures eNB %d for frame %d, slot %d (subframe TX %d, RX %d)\n",
+                                        RN_id, eNB_inst, frame, slot, next_slot >> 1,last_slot>>1);
+                        phy_procedures_eNB_lte(slot>>1, PHY_vars_eNB_g[eNB_inst][0], abstraction_flag,
+                                        r_type, PHY_vars_RN_g[RN_id]);
+                    }
+                    else {
+                        LOG_E(EMU,"TDD is not supported for multicast relaying %d\n", r_type);
+                        exit(-1);
+                    }
+                }
 #endif
-	  emu_transport (frame, last_slot, next_slot, direction, oai_emulation.info.frame_type[0], ethernet_flag);
-	  if ((direction == SF_DL) || (frame_parms[0]->frame_type == FDD)) {
-	    // consider only sec id 0
-	    /*  for (eNB_id=0;eNB_id<NB_eNB_INST;eNB_id++) {
-		if (abstraction_flag == 0) {
-		do_OFDM_mod(PHY_vars_eNB_g[eNB_id]->lte_eNB_common_vars.txdataF[0],
-		PHY_vars_eNB_g[eNB_id]->lte_eNB_common_vars.txdata[0],
-		frame,next_slot,
-		frame_parms);
-		}
-		}*/
-	    start_meas(&dl_chan_stats);
-	    for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) 
-	      for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
+                emu_transport (frame, last_slot, next_slot, direction,
+                               oai_emulation.info.frame_type[0], ethernet_flag);
+                if ((direction == SF_DL)
+                                || (frame_parms[0]->frame_type == FDD)) {
+                    // consider only sec id 0
+                    /*  for (eNB_id=0;eNB_id<NB_eNB_INST;eNB_id++) {
+                     if (abstraction_flag == 0) {
+                     do_OFDM_mod(PHY_vars_eNB_g[eNB_id]->lte_eNB_common_vars.txdataF[0],
+                     PHY_vars_eNB_g[eNB_id]->lte_eNB_common_vars.txdata[0],
+                     frame,next_slot,
+                     frame_parms);
+                     }
+                     }*/
+                    start_meas (&dl_chan_stats);
+                    for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++)
+                        for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
 #warning figure out what to do with UE frame_parms during initial_sync
-		do_DL_sig (r_re0, r_im0, r_re, r_im, s_re, s_im, eNB2UE, enb_data, ue_data, next_slot, abstraction_flag,&PHY_vars_eNB_g[0][CC_id]->lte_frame_parms,UE_inst,CC_id);
-	      }
-	    stop_meas(&dl_chan_stats);
-	  }
-	  if ((direction == SF_UL) || (frame_parms[0]->frame_type == 0)) { //if ((subframe<2) || (subframe>4))
-	    start_meas(&ul_chan_stats);
-	    for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
+                            do_DL_sig (r_re0,
+                                       r_im0,
+                                       r_re,
+                                       r_im,
+                                       s_re,
+                                       s_im,
+                                       eNB2UE,
+                                       enb_data,
+                                       ue_data,
+                                       next_slot,
+                                       abstraction_flag,
+                                       &PHY_vars_eNB_g[0][CC_id]->lte_frame_parms,
+                                       UE_inst, CC_id);
+                        }
+                    stop_meas (&dl_chan_stats);
+                }
+                if ((direction == SF_UL) || (frame_parms[0]->frame_type == 0)) { //if ((subframe<2) || (subframe>4))
+                    start_meas (&ul_chan_stats);
+                    for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
 #warning figure out what to do with UE frame_parms during initial_sync
-	      do_UL_sig (r_re0, r_im0, r_re, r_im, s_re, s_im, UE2eNB, enb_data, ue_data, next_slot, abstraction_flag,&PHY_vars_eNB_g[0][CC_id]->lte_frame_parms, frame,CC_id); 
-	    }
-	    stop_meas(&ul_chan_stats);
-	    /*
-	      int ccc;
-	      fprintf(SINRpost,"SINRdb For eNB New Subframe : \n ");
-	      for(ccc = 0 ; ccc<301; ccc++)
-	      {
-	      fprintf(SINRpost,"_ %f ", SINRpost_eff[ccc]);
-	      }
-	      fprintf(SINRpost,"SINRdb For eNB : %f \n ", SINRpost_eff[ccc]);
-	    */
-	  }
-	  if ((direction == SF_S)) { //it must be a special subframe
-	    if (next_slot % 2 == 0) { //DL part
-	      /*  for (eNB_id=0;eNB_id<NB_eNB_INST;eNB_id++) {
-		  if (abstraction_flag == 0) {
-		  do_OFDM_mod(PHY_vars_eNB_g[eNB_id]->lte_eNB_common_vars.txdataF[0],
-		  PHY_vars_eNB_g[eNB_id]->lte_eNB_common_vars.txdata[0],
-		  frame,next_slot,
-		  frame_parms);
-		  }
-		  }*/ 
-	      start_meas(&dl_chan_stats);
-	      for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) 
-		for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
+                        do_UL_sig (r_re0, r_im0, r_re, r_im, s_re, s_im, UE2eNB,
+                                   enb_data, ue_data, next_slot,
+                                   abstraction_flag,
+                                   &PHY_vars_eNB_g[0][CC_id]->lte_frame_parms,
+                                   frame, CC_id);
+                    }
+                    stop_meas (&ul_chan_stats);
+                    /*
+                     int ccc;
+                     fprintf(SINRpost,"SINRdb For eNB New Subframe : \n ");
+                     for(ccc = 0 ; ccc<301; ccc++)
+                     {
+                     fprintf(SINRpost,"_ %f ", SINRpost_eff[ccc]);
+                     }
+                     fprintf(SINRpost,"SINRdb For eNB : %f \n ", SINRpost_eff[ccc]);
+                     */
+                }
+                if ((direction == SF_S)) { //it must be a special subframe
+                    if (next_slot % 2 == 0) { //DL part
+                        /*  for (eNB_id=0;eNB_id<NB_eNB_INST;eNB_id++) {
+                         if (abstraction_flag == 0) {
+                         do_OFDM_mod(PHY_vars_eNB_g[eNB_id]->lte_eNB_common_vars.txdataF[0],
+                         PHY_vars_eNB_g[eNB_id]->lte_eNB_common_vars.txdata[0],
+                         frame,next_slot,
+                         frame_parms);
+                         }
+                         }*/
+                        start_meas (&dl_chan_stats);
+                        for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++)
+                            for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
 #warning	check dimensions of r_reN,r_imN for multiple CCs
-		  do_DL_sig (r_re0, r_im0, r_re, r_im, s_re, s_im, eNB2UE, enb_data, ue_data, next_slot, abstraction_flag,&PHY_vars_eNB_g[0][CC_id]->lte_frame_parms, UE_inst,CC_id);
-		}
-	      stop_meas(&dl_chan_stats);
-	      /*
-		for (aarx=0;aarx<UE2eNB[1][0]->nb_rx;aarx++)
-		for (aatx=0;aatx<UE2eNB[1][0]->nb_tx;aatx++)
-		for (k=0;k<UE2eNB[1][0]->channel_length;k++)
-		printf("SB(%d,%d,%d)->(%f,%f)\n",k,aarx,aatx,UE2eNB[1][0]->ch[aarx+(aatx*UE2eNB[1][0]->nb_rx)][k].r,UE2eNB[1][0]->ch[aarx+(aatx*UE2eNB[1][0]->nb_rx)][k].i);
-	      */
-	    }
-	    else { // UL part
-	      start_meas(&ul_chan_stats);
-	      for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
+                                do_DL_sig (r_re0,
+                                           r_im0,
+                                           r_re,
+                                           r_im,
+                                           s_re,
+                                           s_im,
+                                           eNB2UE,
+                                           enb_data,
+                                           ue_data,
+                                           next_slot,
+                                           abstraction_flag,
+                                           &PHY_vars_eNB_g[0][CC_id]->lte_frame_parms,
+                                           UE_inst, CC_id);
+                            }
+                        stop_meas (&dl_chan_stats);
+                        /*
+                         for (aarx=0;aarx<UE2eNB[1][0]->nb_rx;aarx++)
+                         for (aatx=0;aatx<UE2eNB[1][0]->nb_tx;aatx++)
+                         for (k=0;k<UE2eNB[1][0]->channel_length;k++)
+                         printf("SB(%d,%d,%d)->(%f,%f)\n",k,aarx,aatx,UE2eNB[1][0]->ch[aarx+(aatx*UE2eNB[1][0]->nb_rx)][k].r,UE2eNB[1][0]->ch[aarx+(aatx*UE2eNB[1][0]->nb_rx)][k].i);
+                         */
+                    } else { // UL part
+                        start_meas (&ul_chan_stats);
+                        for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
 #warning	check dimensions of r_reN,r_imN for multiple CCs
-		do_UL_sig (r_re0, r_im0, r_re, r_im, s_re, s_im, UE2eNB, enb_data, ue_data, next_slot, abstraction_flag,&PHY_vars_eNB_g[0][CC_id]->lte_frame_parms, frame,CC_id);
-	      }
-	      stop_meas(&ul_chan_stats);
-
-	      /*        int ccc;
-			fprintf(SINRpost,"SINRdb For eNB New Subframe : \n ");
-			for(ccc = 0 ; ccc<301; ccc++)
-			{
-			fprintf(SINRpost,"_ %f ", SINRpost_eff[ccc]);
-			}
-			fprintf(SINRpost,"SINRdb For eNB : %f \n ", SINRpost_eff[ccc]);
-			}
-	      */
-	    }
-	  }
-	  if ((last_slot == 1) && (frame == 0) && (abstraction_flag == 0) && (oai_emulation.info.n_frames == 1)) {
-
-	    write_output ("dlchan0.m", "dlch0", &(PHY_vars_UE_g[0][0]->lte_ue_common_vars.dl_ch_estimates[0][0][0]),
-			  (6 * (PHY_vars_UE_g[0][0]->lte_frame_parms.ofdm_symbol_size)), 1, 1);
-	    write_output ("dlchan1.m", "dlch1", &(PHY_vars_UE_g[0][0]->lte_ue_common_vars.dl_ch_estimates[1][0][0]),
-			  (6 * (PHY_vars_UE_g[0][0]->lte_frame_parms.ofdm_symbol_size)), 1, 1);
-	    write_output ("dlchan2.m", "dlch2", &(PHY_vars_UE_g[0][0]->lte_ue_common_vars.dl_ch_estimates[2][0][0]),
-			  (6 * (PHY_vars_UE_g[0][0]->lte_frame_parms.ofdm_symbol_size)), 1, 1);
-	    write_output ("pbch_rxF_comp0.m", "pbch_comp0", PHY_vars_UE_g[0][0]->lte_ue_pbch_vars[0]->rxdataF_comp[0],
-			  6 * 12 * 4, 1, 1);
-	    write_output ("pbch_rxF_llr.m", "pbch_llr", PHY_vars_UE_g[0][0]->lte_ue_pbch_vars[0]->llr,
-			  (frame_parms[0]->Ncp == 0) ? 1920 : 1728, 1, 4);
-	  }
-	  /*
-	    if ((last_slot==1) && (frame==1)) {
-	    write_output("dlsch_rxF_comp0.m","dlsch0_rxF_comp0",PHY_vars_UE->lte_ue_pdsch_vars[eNB_id]->rxdataF_comp[0],300*(-(PHY_vars_UE->lte_frame_parms.Ncp*2)+14),1,1);
-	    write_output("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",PHY_vars_UE->lte_ue_pdcch_vars[eNB_id]->rxdataF_comp[0],4*300,1,1);
-	    }
-	  */
-	} // if Channel_Flag==0
-      if (slot%2==1)
-	stop_meas(&oaisim_stats_f);
-    }//end of slot
-
-    if ((frame >= 10) && (frame <= 11) && (abstraction_flag == 0)
+                            do_UL_sig (r_re0,
+                                       r_im0,
+                                       r_re,
+                                       r_im,
+                                       s_re,
+                                       s_im,
+                                       UE2eNB,
+                                       enb_data,
+                                       ue_data,
+                                       next_slot,
+                                       abstraction_flag,
+                                       &PHY_vars_eNB_g[0][CC_id]->lte_frame_parms,
+                                       frame, CC_id);
+                        }
+                        stop_meas (&ul_chan_stats);
+
+                        /*        int ccc;
+                         fprintf(SINRpost,"SINRdb For eNB New Subframe : \n ");
+                         for(ccc = 0 ; ccc<301; ccc++)
+                         {
+                         fprintf(SINRpost,"_ %f ", SINRpost_eff[ccc]);
+                         }
+                         fprintf(SINRpost,"SINRdb For eNB : %f \n ", SINRpost_eff[ccc]);
+                         }
+                         */
+                    }
+                }
+                if ((last_slot == 1) && (frame == 0) && (abstraction_flag == 0)
+                                && (oai_emulation.info.n_frames == 1)) {
+
+                    write_output ("dlchan0.m",
+                                  "dlch0",
+                                  &(PHY_vars_UE_g[0][0]->lte_ue_common_vars.dl_ch_estimates[0][0][0]),
+                                  (6
+                                                  * (PHY_vars_UE_g[0][0]->lte_frame_parms.ofdm_symbol_size)),
+                                  1, 1);
+                    write_output ("dlchan1.m",
+                                  "dlch1",
+                                  &(PHY_vars_UE_g[0][0]->lte_ue_common_vars.dl_ch_estimates[1][0][0]),
+                                  (6
+                                                  * (PHY_vars_UE_g[0][0]->lte_frame_parms.ofdm_symbol_size)),
+                                  1, 1);
+                    write_output ("dlchan2.m",
+                                  "dlch2",
+                                  &(PHY_vars_UE_g[0][0]->lte_ue_common_vars.dl_ch_estimates[2][0][0]),
+                                  (6
+                                                  * (PHY_vars_UE_g[0][0]->lte_frame_parms.ofdm_symbol_size)),
+                                  1, 1);
+                    write_output ("pbch_rxF_comp0.m",
+                                  "pbch_comp0",
+                                  PHY_vars_UE_g[0][0]->lte_ue_pbch_vars[0]->rxdataF_comp[0],
+                                  6 * 12 * 4, 1, 1);
+                    write_output ("pbch_rxF_llr.m", "pbch_llr",
+                                  PHY_vars_UE_g[0][0]->lte_ue_pbch_vars[0]->llr,
+                                  (frame_parms[0]->Ncp == 0) ? 1920 : 1728, 1,
+                                  4);
+                }
+                /*
+                 if ((last_slot==1) && (frame==1)) {
+                 write_output("dlsch_rxF_comp0.m","dlsch0_rxF_comp0",PHY_vars_UE->lte_ue_pdsch_vars[eNB_id]->rxdataF_comp[0],300*(-(PHY_vars_UE->lte_frame_parms.Ncp*2)+14),1,1);
+                 write_output("pdcch_rxF_comp0.m","pdcch0_rxF_comp0",PHY_vars_UE->lte_ue_pdcch_vars[eNB_id]->rxdataF_comp[0],4*300,1,1);
+                 }
+                 */
+            } // if Channel_Flag==0
+            if (slot % 2 == 1)
+                stop_meas (&oaisim_stats_f);
+        } //end of slot
+
+        if ((frame >= 10) && (frame <= 11) && (abstraction_flag == 0)
 #ifdef PROC
-	&&(Channel_Flag==0)
+                        &&(Channel_Flag==0)
 #endif
-	) {
-      sprintf (fname, "UEtxsig%d.m", frame);
-      sprintf (vname, "txs%d", frame);
-      write_output (fname, vname, PHY_vars_UE_g[0][0]->lte_ue_common_vars.txdata[0], 
-		    PHY_vars_UE_g[0][0]->lte_frame_parms.samples_per_tti*10,1,1);
-      sprintf (fname, "eNBtxsig%d.m", frame);
-      sprintf (vname, "txs%d", frame);
-      write_output (fname, vname, PHY_vars_eNB_g[0][0]->lte_eNB_common_vars.txdata[0][0], 
-		    PHY_vars_UE_g[0][0]->lte_frame_parms.samples_per_tti*10,1,1);
-      sprintf (fname, "eNBtxsigF%d.m", frame);
-      sprintf (vname, "txsF%d", frame);
-      write_output (fname, vname, PHY_vars_eNB_g[0][0]->lte_eNB_common_vars.txdataF[0][0],
-		    PHY_vars_eNB_g[0][0]->lte_frame_parms.symbols_per_tti * PHY_vars_eNB_g[0][0]->lte_frame_parms.ofdm_symbol_size,1,1);
-      sprintf (fname, "UErxsig%d.m", frame);
-      sprintf (vname, "rxs%d", frame);
-      write_output (fname, vname, PHY_vars_UE_g[0][0]->lte_ue_common_vars.rxdata[0], 
-		    PHY_vars_UE_g[0][0]->lte_frame_parms.samples_per_tti*10,1,1);
-      sprintf (fname, "eNBrxsig%d.m", frame);
-      sprintf (vname, "rxs%d", frame);
-      write_output (fname, vname, PHY_vars_eNB_g[0][0]->lte_eNB_common_vars.rxdata[0][0], 
-		    PHY_vars_UE_g[0][0]->lte_frame_parms.samples_per_tti*10,1,1);
-    }
-    
+                        ) {
+            sprintf (fname, "UEtxsig%d.m", frame);
+            sprintf (vname, "txs%d", frame);
+            write_output (fname,
+                          vname,
+                          PHY_vars_UE_g[0][0]->lte_ue_common_vars.txdata[0],
+                          PHY_vars_UE_g[0][0]->lte_frame_parms.samples_per_tti
+                                          * 10,
+                          1, 1);
+            sprintf (fname, "eNBtxsig%d.m", frame);
+            sprintf (vname, "txs%d", frame);
+            write_output (fname,
+                          vname,
+                          PHY_vars_eNB_g[0][0]->lte_eNB_common_vars.txdata[0][0],
+                          PHY_vars_UE_g[0][0]->lte_frame_parms.samples_per_tti
+                                          * 10,
+                          1, 1);
+            sprintf (fname, "eNBtxsigF%d.m", frame);
+            sprintf (vname, "txsF%d", frame);
+            write_output (fname,
+                          vname,
+                          PHY_vars_eNB_g[0][0]->lte_eNB_common_vars.txdataF[0][0],
+                          PHY_vars_eNB_g[0][0]->lte_frame_parms.symbols_per_tti
+                                          * PHY_vars_eNB_g[0][0]->lte_frame_parms.ofdm_symbol_size,
+                          1, 1);
+            sprintf (fname, "UErxsig%d.m", frame);
+            sprintf (vname, "rxs%d", frame);
+            write_output (fname,
+                          vname,
+                          PHY_vars_UE_g[0][0]->lte_ue_common_vars.rxdata[0],
+                          PHY_vars_UE_g[0][0]->lte_frame_parms.samples_per_tti
+                                          * 10,
+                          1, 1);
+            sprintf (fname, "eNBrxsig%d.m", frame);
+            sprintf (vname, "rxs%d", frame);
+            write_output (fname,
+                          vname,
+                          PHY_vars_eNB_g[0][0]->lte_eNB_common_vars.rxdata[0][0],
+                          PHY_vars_UE_g[0][0]->lte_frame_parms.samples_per_tti
+                                          * 10,
+                          1, 1);
+        }
+
 #ifdef XFORMS
-    eNB_inst = 0;
-    for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) {
-      phy_scope_UE(form_ue[UE_inst],
-		   PHY_vars_UE_g[UE_inst][0],
-		   eNB_inst,
-		   UE_inst,
-		   7);
-      
-      phy_scope_eNB(form_enb[UE_inst],
-		    PHY_vars_eNB_g[eNB_inst][0],
-		    UE_inst);
-      
-    }
+        eNB_inst = 0;
+        for (UE_inst = 0; UE_inst < NB_UE_INST; UE_inst++) {
+            phy_scope_UE(form_ue[UE_inst],
+                            PHY_vars_UE_g[UE_inst][0],
+                            eNB_inst,
+                            UE_inst,
+                            7);
+
+            phy_scope_eNB(form_enb[UE_inst],
+                            PHY_vars_eNB_g[eNB_inst][0],
+                            UE_inst);
+
+        }
 #endif
-    
+
 #ifdef SMBV
-    if ((frame == config_frames[0]) || (frame == config_frames[1]) || (frame == config_frames[2]) || (frame == config_frames[3])) {
-      smbv_frame_cnt++;
-    }
+        if ((frame == config_frames[0]) || (frame == config_frames[1]) || (frame == config_frames[2]) || (frame == config_frames[3])) {
+            smbv_frame_cnt++;
+        }
 #endif
- 
-  }
-  
+
+    }
+
     //end of frame
-      
-  stop_meas(&oaisim_stats);
+
+    stop_meas (&oaisim_stats);
 
 #if defined(ENABLE_ITTI)
-  itti_terminate_tasks(TASK_L2L1);
+    itti_terminate_tasks(TASK_L2L1);
 #endif
 
 #ifdef PRINT_STATS
-  for (UE_inst=0;UE_inst<NB_UE_INST;UE_inst++) {
-    if (UE_stats[UE_inst])
-      fclose (UE_stats[UE_inst]);
-    if(UE_stats_th[UE_inst])
-      fclose (UE_stats_th[UE_inst]);
-  }
-  for (eNB_inst=0;eNB_inst<NB_eNB_INST;eNB_inst++) {
-    if (eNB_stats[eNB_inst])
-      fclose (eNB_stats[eNB_inst]);
-  }
-  if (eNB_avg_thr)
+    for (UE_inst=0;UE_inst<NB_UE_INST;UE_inst++) {
+        if (UE_stats[UE_inst])
+        fclose (UE_stats[UE_inst]);
+        if(UE_stats_th[UE_inst])
+        fclose (UE_stats_th[UE_inst]);
+    }
+    for (eNB_inst=0;eNB_inst<NB_eNB_INST;eNB_inst++) {
+        if (eNB_stats[eNB_inst])
+        fclose (eNB_stats[eNB_inst]);
+    }
+    if (eNB_avg_thr)
     fclose (eNB_avg_thr);
-  if (eNB_l2_stats)
+    if (eNB_l2_stats)
     fclose (eNB_l2_stats);
-  
+
 #endif
-  
-  return NULL;
+
+    return NULL;
 }
-  
-  /*------------------------------------------------------------------------------*/
-  int main(int argc, char **argv) {
+
+/*------------------------------------------------------------------------------*/
+int
+main (int argc, char **argv) {
 
     int32_t i;
     // pointers signal buffers (s = transmit, r,r0 = receive)
@@ -1114,31 +1213,31 @@ void *l2l1_task(void *args_p) {
     pthread_t tid;
     int err;
     sigset_t sigblock;
-    sigemptyset(&sigblock);
-    sigaddset(&sigblock, SIGHUP);
-    sigaddset(&sigblock, SIGINT);
-    sigaddset(&sigblock, SIGTERM);
-    sigaddset(&sigblock, SIGQUIT);
+    sigemptyset (&sigblock);
+    sigaddset (&sigblock, SIGHUP);
+    sigaddset (&sigblock, SIGINT);
+    sigaddset (&sigblock, SIGTERM);
+    sigaddset (&sigblock, SIGQUIT);
     //sigaddset(&sigblock, SIGKILL);
- 
-    if ((err= pthread_sigmask(SIG_BLOCK, &sigblock, NULL)) != 0){
-      printf("SIG_BLOCK error\n");
-      return -1;
+
+    if ((err = pthread_sigmask (SIG_BLOCK, &sigblock, NULL)) != 0) {
+        printf ("SIG_BLOCK error\n");
+        return -1;
     }
-    if (pthread_create(&tid, NULL, sigh, NULL)) {
-      printf("Pthread for tracing Signals is not created!\n");
-      return -1;
+    if (pthread_create (&tid, NULL, sigh, NULL)) {
+        printf ("Pthread for tracing Signals is not created!\n");
+        return -1;
     } else {
-      printf("Pthread for tracing Signals is created!\n");
+        printf ("Pthread for tracing Signals is created!\n");
     }
 #endif 
     // configure oaisim with OCG
     oaisim_config (); // config OMG and OCG, OPT, OTG, OLG
 
     if (ue_connection_test == 1) {
-      snr_direction = -snr_step;
-      snr_dB = 20;
-      sinr_dB = -20;
+        snr_direction = -snr_step;
+        snr_dB = 20;
+        sinr_dB = -20;
     }
 
 #ifdef OPENAIR2
@@ -1166,430 +1265,529 @@ void *l2l1_task(void *args_p) {
     // add events to future event list: Currently not used
     //oai_emulation.info.oeh_enabled = 1;
     if (oai_emulation.info.oeh_enabled == 1)
-      schedule_events();
+        schedule_events ();
 
     // oai performance profiler is enabled 
     if (oai_emulation.info.opp_enabled == 1)
-      reset_opp_meas();
-  
+        reset_opp_meas ();
+
     init_time ();
 
     init_slot_isr ();
 
     t = clock ();
 
-    LOG_N(EMU, ">>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU initialization done <<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
+    LOG_N(EMU,
+          ">>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU initialization done <<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
 
 #if defined(ENABLE_ITTI)
     // Handle signals until all tasks are terminated
     if (create_tasks(oai_emulation.info.nb_enb_local, oai_emulation.info.nb_ue_local) >= 0) {
-      itti_wait_tasks_end();
+        itti_wait_tasks_end();
     } else {
-      exit(-1); // need a softer mode
+        exit(-1); // need a softer mode
     }
 #else
     if (oai_emulation.info.nb_enb_local > 0) {
-      eNB_app_task(NULL); // do nothing for the moment
+        eNB_app_task (NULL); // do nothing for the moment
     }
     l2l1_task (NULL);
 #endif
     t = clock () - t;
-    LOG_I (EMU,"Duration of the simulation: %f seconds\n", ((float) t) / CLOCKS_PER_SEC);
+    LOG_I(EMU, "Duration of the simulation: %f seconds\n",
+          ((float) t) / CLOCKS_PER_SEC);
 
     //  fclose(SINRpost);
-    LOG_N(EMU, ">>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU Ending <<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
+    LOG_N(EMU,
+          ">>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU Ending <<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
 
-
-    raise(SIGINT);
-    oai_shutdown();
+    raise (SIGINT);
+    oai_shutdown ();
 
     return (0);
-  }
-
-  void reset_opp_meas(void){
-    uint8_t eNB_id=0,UE_id=0;
- 
-    reset_meas(&oaisim_stats);
-    reset_meas(&oaisim_stats_f); // frame 
-  
+}
+
+void
+reset_opp_meas (void) {
+    uint8_t eNB_id = 0, UE_id = 0;
+
+    reset_meas (&oaisim_stats);
+    reset_meas (&oaisim_stats_f); // frame
+
     // init time stats here (including channel)
-    reset_meas(&dl_chan_stats);
-    reset_meas(&ul_chan_stats);
-  
-    for (UE_id=0; UE_id<NB_UE_INST; UE_id++) {
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->phy_proc);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->phy_proc_rx);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->phy_proc_tx);
-    
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->ofdm_demod_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->rx_dft_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_channel_estimation_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_freq_offset_estimation_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_decoding_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_rate_unmatching_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_turbo_decoding_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_deinterleaving_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_llr_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_unscrambling_stats);
-    
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_init_stats);    
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_alpha_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_beta_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_gamma_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_ext_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_intl1_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_intl2_stats);
-    
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->tx_prach);
-    
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->ofdm_mod_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_encoding_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_modulation_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_segmentation_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_rate_matching_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_turbo_encoding_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_interleaving_stats);
-      reset_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_multiplexing_stats);
-      /*
-       * L2 functions
-       */ 
-    
-      // UE MAC
-      reset_meas(&UE_mac_inst[UE_id].ue_scheduler); // total 
-      reset_meas(&UE_mac_inst[UE_id].tx_ulsch_sdu);  // inlcude rlc_data_req + mac header gen
-      reset_meas(&UE_mac_inst[UE_id].rx_dlsch_sdu); // include mac_rrc_data_ind or mac_rlc_status_ind+mac_rlc_data_ind and  mac header parser
-      reset_meas(&UE_mac_inst[UE_id].ue_query_mch); 
-      reset_meas(&UE_mac_inst[UE_id].rx_mch_sdu); // include rld_data_ind+ parse mch header 
-      reset_meas(&UE_mac_inst[UE_id].rx_si); // include rlc_data_ind + mac header parser
-
-      reset_meas(&UE_pdcp_stats[UE_id].pdcp_run);
-      reset_meas(&UE_pdcp_stats[UE_id].data_req);
-      reset_meas(&UE_pdcp_stats[UE_id].data_ind);
-      reset_meas(&UE_pdcp_stats[UE_id].apply_security);
-      reset_meas(&UE_pdcp_stats[UE_id].validate_security);
-      reset_meas(&UE_pdcp_stats[UE_id].pdcp_ip);
-      reset_meas(&UE_pdcp_stats[UE_id].ip_pdcp);
-    
-      
+    reset_meas (&dl_chan_stats);
+    reset_meas (&ul_chan_stats);
+
+    for (UE_id = 0; UE_id < NB_UE_INST; UE_id++) {
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc_rx);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc_tx);
+
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->ofdm_demod_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->rx_dft_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_channel_estimation_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_freq_offset_estimation_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_decoding_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_rate_unmatching_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_turbo_decoding_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_deinterleaving_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_llr_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_unscrambling_stats);
+
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_init_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_alpha_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_beta_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_gamma_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_ext_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_intl1_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_intl2_stats);
+
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->tx_prach);
+
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->ofdm_mod_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_encoding_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_modulation_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_segmentation_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_rate_matching_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_turbo_encoding_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_interleaving_stats);
+        reset_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_multiplexing_stats);
+        /*
+         * L2 functions
+         */
+
+        // UE MAC
+        reset_meas (&UE_mac_inst[UE_id].ue_scheduler); // total
+        reset_meas (&UE_mac_inst[UE_id].tx_ulsch_sdu); // inlcude rlc_data_req + mac header gen
+        reset_meas (&UE_mac_inst[UE_id].rx_dlsch_sdu); // include mac_rrc_data_ind or mac_rlc_status_ind+mac_rlc_data_ind and  mac header parser
+        reset_meas (&UE_mac_inst[UE_id].ue_query_mch);
+        reset_meas (&UE_mac_inst[UE_id].rx_mch_sdu); // include rld_data_ind+ parse mch header
+        reset_meas (&UE_mac_inst[UE_id].rx_si); // include rlc_data_ind + mac header parser
+
+        reset_meas (&UE_pdcp_stats[UE_id].pdcp_run);
+        reset_meas (&UE_pdcp_stats[UE_id].data_req);
+        reset_meas (&UE_pdcp_stats[UE_id].data_ind);
+        reset_meas (&UE_pdcp_stats[UE_id].apply_security);
+        reset_meas (&UE_pdcp_stats[UE_id].validate_security);
+        reset_meas (&UE_pdcp_stats[UE_id].pdcp_ip);
+        reset_meas (&UE_pdcp_stats[UE_id].ip_pdcp);
+
     }
-      for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
-      
-      for (UE_id=0; UE_id<NB_UE_INST; UE_id++) {
-	  reset_meas(&eNB2UE[eNB_id][UE_id][0]->random_channel);
-	  reset_meas(&eNB2UE[eNB_id][UE_id][0]->interp_time);
-	  reset_meas(&eNB2UE[eNB_id][UE_id][0]->interp_freq);
-	  reset_meas(&eNB2UE[eNB_id][UE_id][0]->convolution);
-	  reset_meas(&UE2eNB[UE_id][eNB_id][0]->random_channel);
-	  reset_meas(&UE2eNB[UE_id][eNB_id][0]->interp_time);
-	  reset_meas(&UE2eNB[UE_id][eNB_id][0]->interp_freq);
-	  reset_meas(&UE2eNB[UE_id][eNB_id][0]->convolution);
-      }
-
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->phy_proc);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->phy_proc_rx);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->phy_proc_tx);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->rx_prach);
-    
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ofdm_mod_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_encoding_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_modulation_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_scrambling_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_rate_matching_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_turbo_encoding_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_interleaving_stats);
-    
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ofdm_demod_stats);
-	//reset_meas(&PHY_vars_eNB_g[eNB_id]->rx_dft_stats);
-	//reset_meas(&PHY_vars_eNB_g[eNB_id]->ulsch_channel_estimation_stats);
-	//reset_meas(&PHY_vars_eNB_g[eNB_id]->ulsch_freq_offset_estimation_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_decoding_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_demodulation_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_rate_unmatching_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_turbo_decoding_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_deinterleaving_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_demultiplexing_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_llr_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_init_stats);    
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_alpha_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_beta_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_gamma_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_ext_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_intl1_stats);
-	reset_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_intl2_stats);
+    for (eNB_id = 0; eNB_id < NB_eNB_INST; eNB_id++) {
+
+        for (UE_id = 0; UE_id < NB_UE_INST; UE_id++) {
+            reset_meas (&eNB2UE[eNB_id][UE_id][0]->random_channel);
+            reset_meas (&eNB2UE[eNB_id][UE_id][0]->interp_time);
+            reset_meas (&eNB2UE[eNB_id][UE_id][0]->interp_freq);
+            reset_meas (&eNB2UE[eNB_id][UE_id][0]->convolution);
+            reset_meas (&UE2eNB[UE_id][eNB_id][0]->random_channel);
+            reset_meas (&UE2eNB[UE_id][eNB_id][0]->interp_time);
+            reset_meas (&UE2eNB[UE_id][eNB_id][0]->interp_freq);
+            reset_meas (&UE2eNB[UE_id][eNB_id][0]->convolution);
+        }
+
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->phy_proc);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->phy_proc_rx);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->phy_proc_tx);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->rx_prach);
+
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ofdm_mod_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_encoding_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_modulation_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_scrambling_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_rate_matching_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_turbo_encoding_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_interleaving_stats);
+
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ofdm_demod_stats);
+        //reset_meas(&PHY_vars_eNB_g[eNB_id]->rx_dft_stats);
+        //reset_meas(&PHY_vars_eNB_g[eNB_id]->ulsch_channel_estimation_stats);
+        //reset_meas(&PHY_vars_eNB_g[eNB_id]->ulsch_freq_offset_estimation_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_decoding_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_demodulation_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_rate_unmatching_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_turbo_decoding_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_deinterleaving_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_demultiplexing_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_llr_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_init_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_alpha_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_beta_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_gamma_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_ext_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_intl1_stats);
+        reset_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_intl2_stats);
 #ifdef LOCALIZATION
         reset_meas(&PHY_vars_eNB_g[eNB_id][0]->localization_stats);
 #endif  
-        
-	/* 
-	 * L2 functions 
-	 */
-	// eNB MAC
-	reset_meas(&eNB_mac_inst[eNB_id].eNB_scheduler); // total 
-	reset_meas(&eNB_mac_inst[eNB_id].schedule_si); // only schedule + tx
-	reset_meas(&eNB_mac_inst[eNB_id].schedule_ra); // only ra
-	reset_meas(&eNB_mac_inst[eNB_id].schedule_ulsch); // onlu ulsch
-	reset_meas(&eNB_mac_inst[eNB_id].fill_DLSCH_dci);// only dci
-	reset_meas(&eNB_mac_inst[eNB_id].schedule_dlsch_preprocessor); // include rlc_data_req + MAC header gen
-	reset_meas(&eNB_mac_inst[eNB_id].schedule_dlsch); // include rlc_data_req + MAC header gen + pre-processor
-	reset_meas(&eNB_mac_inst[eNB_id].schedule_mch); // only embms 
-	reset_meas(&eNB_mac_inst[eNB_id].rx_ulsch_sdu); // include rlc_data_ind + mac header parser
-     
-	reset_meas(&eNB_pdcp_stats[eNB_id].pdcp_run);
-	reset_meas(&eNB_pdcp_stats[eNB_id].data_req);
-	reset_meas(&eNB_pdcp_stats[eNB_id].data_ind);
-	reset_meas(&eNB_pdcp_stats[eNB_id].apply_security);
-	reset_meas(&eNB_pdcp_stats[eNB_id].validate_security);
-	reset_meas(&eNB_pdcp_stats[eNB_id].pdcp_ip);
-	reset_meas(&eNB_pdcp_stats[eNB_id].ip_pdcp);
-      
-      }
+
+        /*
+         * L2 functions
+         */
+        // eNB MAC
+        reset_meas (&eNB_mac_inst[eNB_id].eNB_scheduler); // total
+        reset_meas (&eNB_mac_inst[eNB_id].schedule_si); // only schedule + tx
+        reset_meas (&eNB_mac_inst[eNB_id].schedule_ra); // only ra
+        reset_meas (&eNB_mac_inst[eNB_id].schedule_ulsch); // onlu ulsch
+        reset_meas (&eNB_mac_inst[eNB_id].fill_DLSCH_dci); // only dci
+        reset_meas (&eNB_mac_inst[eNB_id].schedule_dlsch_preprocessor); // include rlc_data_req + MAC header gen
+        reset_meas (&eNB_mac_inst[eNB_id].schedule_dlsch); // include rlc_data_req + MAC header gen + pre-processor
+        reset_meas (&eNB_mac_inst[eNB_id].schedule_mch); // only embms
+        reset_meas (&eNB_mac_inst[eNB_id].rx_ulsch_sdu); // include rlc_data_ind + mac header parser
+
+        reset_meas (&eNB_pdcp_stats[eNB_id].pdcp_run);
+        reset_meas (&eNB_pdcp_stats[eNB_id].data_req);
+        reset_meas (&eNB_pdcp_stats[eNB_id].data_ind);
+        reset_meas (&eNB_pdcp_stats[eNB_id].apply_security);
+        reset_meas (&eNB_pdcp_stats[eNB_id].validate_security);
+        reset_meas (&eNB_pdcp_stats[eNB_id].pdcp_ip);
+        reset_meas (&eNB_pdcp_stats[eNB_id].ip_pdcp);
+
     }
+}
 
-  void print_opp_meas(void){
-  
-    uint8_t eNB_id=0,UE_id=0;
-
-    print_meas(&oaisim_stats,"[OAI][total_exec_time]", &oaisim_stats,&oaisim_stats);
-    print_meas(&oaisim_stats_f,"[OAI][SF_exec_time]", &oaisim_stats,&oaisim_stats_f);
-  
-    print_meas(&dl_chan_stats,"[DL][chan_stats]",&oaisim_stats,&oaisim_stats_f);
-    print_meas(&ul_chan_stats,"[UL][chan_stats]", &oaisim_stats,&oaisim_stats_f);
-  
-    for (UE_id=0; UE_id<NB_UE_INST;UE_id++) {
-      for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
-	print_meas(&eNB2UE[eNB_id][UE_id][0]->random_channel,"[DL][random_channel]",&oaisim_stats,&oaisim_stats_f);
-	print_meas(&eNB2UE[eNB_id][UE_id][0]->interp_time,"[DL][interp_time]",&oaisim_stats,&oaisim_stats_f);
-	print_meas(&eNB2UE[eNB_id][UE_id][0]->interp_freq,"[DL][interp_freq]",&oaisim_stats,&oaisim_stats_f);
-	print_meas(&eNB2UE[eNB_id][UE_id][0]->convolution,"[DL][convolution]",&oaisim_stats,&oaisim_stats_f);
-
-	print_meas(&UE2eNB[UE_id][eNB_id][0]->random_channel,"[UL][random_channel]",&oaisim_stats,&oaisim_stats_f);
-	print_meas(&UE2eNB[UE_id][eNB_id][0]->interp_time,"[UL][interp_time]",&oaisim_stats,&oaisim_stats_f);
-	print_meas(&UE2eNB[UE_id][eNB_id][0]->interp_freq,"[UL][interp_freq]",&oaisim_stats,&oaisim_stats_f);
-	print_meas(&UE2eNB[UE_id][eNB_id][0]->convolution,"[UL][convolution]",&oaisim_stats,&oaisim_stats_f);
-      }
+void
+print_opp_meas (void) {
+
+    uint8_t eNB_id = 0, UE_id = 0;
+
+    print_meas (&oaisim_stats, "[OAI][total_exec_time]", &oaisim_stats,
+                &oaisim_stats);
+    print_meas (&oaisim_stats_f, "[OAI][SF_exec_time]", &oaisim_stats,
+                &oaisim_stats_f);
+
+    print_meas (&dl_chan_stats, "[DL][chan_stats]", &oaisim_stats,
+                &oaisim_stats_f);
+    print_meas (&ul_chan_stats, "[UL][chan_stats]", &oaisim_stats,
+                &oaisim_stats_f);
+
+    for (UE_id = 0; UE_id < NB_UE_INST; UE_id++) {
+        for (eNB_id = 0; eNB_id < NB_eNB_INST; eNB_id++) {
+            print_meas (&eNB2UE[eNB_id][UE_id][0]->random_channel,
+                        "[DL][random_channel]", &oaisim_stats, &oaisim_stats_f);
+            print_meas (&eNB2UE[eNB_id][UE_id][0]->interp_time,
+                        "[DL][interp_time]", &oaisim_stats, &oaisim_stats_f);
+            print_meas (&eNB2UE[eNB_id][UE_id][0]->interp_freq,
+                        "[DL][interp_freq]", &oaisim_stats, &oaisim_stats_f);
+            print_meas (&eNB2UE[eNB_id][UE_id][0]->convolution,
+                        "[DL][convolution]", &oaisim_stats, &oaisim_stats_f);
+
+            print_meas (&UE2eNB[UE_id][eNB_id][0]->random_channel,
+                        "[UL][random_channel]", &oaisim_stats, &oaisim_stats_f);
+            print_meas (&UE2eNB[UE_id][eNB_id][0]->interp_time,
+                        "[UL][interp_time]", &oaisim_stats, &oaisim_stats_f);
+            print_meas (&UE2eNB[UE_id][eNB_id][0]->interp_freq,
+                        "[UL][interp_freq]", &oaisim_stats, &oaisim_stats_f);
+            print_meas (&UE2eNB[UE_id][eNB_id][0]->convolution,
+                        "[UL][convolution]", &oaisim_stats, &oaisim_stats_f);
+        }
     }
 
-    for (UE_id=0; UE_id<NB_UE_INST;UE_id++) {
-      print_meas(&PHY_vars_UE_g[UE_id][0]->phy_proc,"[UE][total_phy_proc]",&oaisim_stats,&oaisim_stats_f);
-    
-      print_meas(&PHY_vars_UE_g[UE_id][0]->phy_proc_rx,"[UE][total_phy_proc_rx]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->ofdm_demod_stats,"[UE][ofdm_demod]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->rx_dft_stats,"[UE][rx_dft]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_channel_estimation_stats,"[UE][channel_est]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_freq_offset_estimation_stats,"[UE][freq_offset]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_llr_stats,"[UE][llr]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_unscrambling_stats,"[UE][unscrambling]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_decoding_stats,"[UE][decoding]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_rate_unmatching_stats,"[UE][rate_unmatching]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_deinterleaving_stats,"[UE][deinterleaving]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_turbo_decoding_stats,"[UE][turbo_decoding]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_init_stats,"[UE][ |_tc_init]",&oaisim_stats,&oaisim_stats_f);    
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_alpha_stats,"[UE][ |_tc_alpha]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_beta_stats,"[UE][ |_tc_beta]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_gamma_stats,"[UE][ |_tc_gamma]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_ext_stats,"[UE][ |_tc_ext]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_intl1_stats,"[UE][ |_tc_intl1]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->dlsch_tc_intl2_stats,"[UE][ |_tc_intl2]",&oaisim_stats,&oaisim_stats_f);
-    
-      print_meas(&PHY_vars_UE_g[UE_id][0]->phy_proc_tx,"[UE][total_phy_proc_tx]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->ofdm_mod_stats,"[UE][ofdm_mod]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_modulation_stats,"[UE][modulation]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_encoding_stats,"[UE][encoding]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_segmentation_stats,"[UE][segmentation]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_rate_matching_stats,"[UE][rate_matching]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_turbo_encoding_stats,"[UE][turbo_encoding]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_interleaving_stats,"[UE][interleaving]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_UE_g[UE_id][0]->ulsch_multiplexing_stats,"[UE][multiplexing]",&oaisim_stats,&oaisim_stats_f);
+    for (UE_id = 0; UE_id < NB_UE_INST; UE_id++) {
+        print_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc, "[UE][total_phy_proc]",
+                    &oaisim_stats, &oaisim_stats_f);
+
+        print_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc_rx,
+                    "[UE][total_phy_proc_rx]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->ofdm_demod_stats,
+                    "[UE][ofdm_demod]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->rx_dft_stats, "[UE][rx_dft]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_channel_estimation_stats,
+                    "[UE][channel_est]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_freq_offset_estimation_stats,
+                    "[UE][freq_offset]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_llr_stats, "[UE][llr]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_unscrambling_stats,
+                    "[UE][unscrambling]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_decoding_stats,
+                    "[UE][decoding]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_rate_unmatching_stats,
+                    "[UE][rate_unmatching]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_deinterleaving_stats,
+                    "[UE][deinterleaving]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_turbo_decoding_stats,
+                    "[UE][turbo_decoding]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_init_stats,
+                    "[UE][ |_tc_init]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_alpha_stats,
+                    "[UE][ |_tc_alpha]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_beta_stats,
+                    "[UE][ |_tc_beta]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_gamma_stats,
+                    "[UE][ |_tc_gamma]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_ext_stats,
+                    "[UE][ |_tc_ext]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_intl1_stats,
+                    "[UE][ |_tc_intl1]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->dlsch_tc_intl2_stats,
+                    "[UE][ |_tc_intl2]", &oaisim_stats, &oaisim_stats_f);
+
+        print_meas (&PHY_vars_UE_g[UE_id][0]->phy_proc_tx,
+                    "[UE][total_phy_proc_tx]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->ofdm_mod_stats, "[UE][ofdm_mod]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_modulation_stats,
+                    "[UE][modulation]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_encoding_stats,
+                    "[UE][encoding]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_segmentation_stats,
+                    "[UE][segmentation]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_rate_matching_stats,
+                    "[UE][rate_matching]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_turbo_encoding_stats,
+                    "[UE][turbo_encoding]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_interleaving_stats,
+                    "[UE][interleaving]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_UE_g[UE_id][0]->ulsch_multiplexing_stats,
+                    "[UE][multiplexing]", &oaisim_stats, &oaisim_stats_f);
 
     }
-  
-    for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->phy_proc,"[eNB][total_phy_proc]",&oaisim_stats,&oaisim_stats_f);
-
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->phy_proc_tx,"[eNB][total_phy_proc_tx]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ofdm_mod_stats,"[eNB][ofdm_mod]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_modulation_stats,"[eNB][modulation]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_scrambling_stats,"[eNB][scrambling]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_encoding_stats,"[eNB][encoding]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_interleaving_stats,"[eNB][|_interleaving]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_rate_matching_stats,"[eNB][|_rate_matching]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->dlsch_turbo_encoding_stats,"[eNB][|_turbo_encoding]",&oaisim_stats,&oaisim_stats_f);
-    
-    
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->phy_proc_rx,"[eNB][total_phy_proc_rx]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ofdm_demod_stats,"[eNB][ofdm_demod]",&oaisim_stats,&oaisim_stats_f);
-      //print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_channel_estimation_stats,"[eNB][channel_est]");
-      //print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_freq_offset_estimation_stats,"[eNB][freq_offset]");
-      //print_meas(&PHY_vars_eNB_g[eNB_id][0]->rx_dft_stats,"[eNB][rx_dft]");
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_demodulation_stats,"[eNB][demodulation]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_decoding_stats,"[eNB][decoding]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_deinterleaving_stats,"[eNB][|_deinterleaving]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_demultiplexing_stats,"[eNB][|_demultiplexing]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_rate_unmatching_stats,"[eNB][|_rate_unmatching]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_turbo_decoding_stats,"[eNB][|_turbo_decoding]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_init_stats,"[eNB][ |_tc_init]",&oaisim_stats,&oaisim_stats_f);    
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_alpha_stats,"[eNB][ |_tc_alpha]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_beta_stats,"[eNB][ |_tc_beta]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_gamma_stats,"[eNB][ |_tc_gamma]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_ext_stats,"[eNB][ |_tc_ext]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_intl1_stats,"[eNB][ |_tc_intl1]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_intl2_stats,"[eNB][ |_tc_intl2]",&oaisim_stats,&oaisim_stats_f);
-    
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->rx_prach,"[eNB][rx_prach]",&oaisim_stats,&oaisim_stats_f);
-      
+
+    for (eNB_id = 0; eNB_id < NB_eNB_INST; eNB_id++) {
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->phy_proc,
+                    "[eNB][total_phy_proc]", &oaisim_stats, &oaisim_stats_f);
+
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->phy_proc_tx,
+                    "[eNB][total_phy_proc_tx]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ofdm_mod_stats,
+                    "[eNB][ofdm_mod]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_modulation_stats,
+                    "[eNB][modulation]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_scrambling_stats,
+                    "[eNB][scrambling]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_encoding_stats,
+                    "[eNB][encoding]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_interleaving_stats,
+                    "[eNB][|_interleaving]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_rate_matching_stats,
+                    "[eNB][|_rate_matching]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->dlsch_turbo_encoding_stats,
+                    "[eNB][|_turbo_encoding]", &oaisim_stats, &oaisim_stats_f);
+
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->phy_proc_rx,
+                    "[eNB][total_phy_proc_rx]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ofdm_demod_stats,
+                    "[eNB][ofdm_demod]", &oaisim_stats, &oaisim_stats_f);
+        //print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_channel_estimation_stats,"[eNB][channel_est]");
+        //print_meas(&PHY_vars_eNB_g[eNB_id][0]->ulsch_freq_offset_estimation_stats,"[eNB][freq_offset]");
+        //print_meas(&PHY_vars_eNB_g[eNB_id][0]->rx_dft_stats,"[eNB][rx_dft]");
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_demodulation_stats,
+                    "[eNB][demodulation]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_decoding_stats,
+                    "[eNB][decoding]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_deinterleaving_stats,
+                    "[eNB][|_deinterleaving]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_demultiplexing_stats,
+                    "[eNB][|_demultiplexing]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_rate_unmatching_stats,
+                    "[eNB][|_rate_unmatching]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_turbo_decoding_stats,
+                    "[eNB][|_turbo_decoding]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_init_stats,
+                    "[eNB][ |_tc_init]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_alpha_stats,
+                    "[eNB][ |_tc_alpha]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_beta_stats,
+                    "[eNB][ |_tc_beta]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_gamma_stats,
+                    "[eNB][ |_tc_gamma]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_ext_stats,
+                    "[eNB][ |_tc_ext]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_intl1_stats,
+                    "[eNB][ |_tc_intl1]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->ulsch_tc_intl2_stats,
+                    "[eNB][ |_tc_intl2]", &oaisim_stats, &oaisim_stats_f);
+
+        print_meas (&PHY_vars_eNB_g[eNB_id][0]->rx_prach, "[eNB][rx_prach]",
+                    &oaisim_stats, &oaisim_stats_f);
+
 #ifdef LOCALIZATION
-      print_meas(&PHY_vars_eNB_g[eNB_id][0]->localization_stats, "[eNB][LOCALIZATION]",&oaisim_stats,&oaisim_stats_f);
+        print_meas(&PHY_vars_eNB_g[eNB_id][0]->localization_stats, "[eNB][LOCALIZATION]",&oaisim_stats,&oaisim_stats_f);
 #endif  
     }
 
-    for (UE_id=0; UE_id<NB_UE_INST;UE_id++) {
-   
-      print_meas(&UE_mac_inst[UE_id].ue_scheduler,"[UE][mac_scheduler]",&oaisim_stats,&oaisim_stats_f); 
-      print_meas(&UE_mac_inst[UE_id].tx_ulsch_sdu,"[UE][tx_ulsch_sdu]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&UE_mac_inst[UE_id].rx_dlsch_sdu,"[UE][rx_dlsch_sdu]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&UE_mac_inst[UE_id].ue_query_mch,"[UE][query_MCH]",&oaisim_stats,&oaisim_stats_f); 
-      print_meas(&UE_mac_inst[UE_id].rx_mch_sdu,"[UE][rx_mch_sdu]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&UE_mac_inst[UE_id].rx_si,"[UE][rx_si]",&oaisim_stats,&oaisim_stats_f); 
-   
-      print_meas(&UE_pdcp_stats[UE_id].pdcp_run,"[UE][total_pdcp_run]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&UE_pdcp_stats[UE_id].data_req,"[UE][DL][pdcp_data_req]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&UE_pdcp_stats[UE_id].data_ind,"[UE][UL][pdcp_data_ind]",&oaisim_stats,&oaisim_stats_f);
-
-      print_meas(&UE_pdcp_stats[UE_id].apply_security,"[UE][DL][apply_security]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&UE_pdcp_stats[UE_id].validate_security,"[UE][UL][validate_security]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&UE_pdcp_stats[UE_id].ip_pdcp,"[UE][DL][ip_pdcp]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&UE_pdcp_stats[UE_id].pdcp_ip,"[UE][UL][pdcp_ip]",&oaisim_stats,&oaisim_stats_f);
-  
-    }
-  
-    for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
-   
-      print_meas(&eNB_mac_inst[eNB_id].eNB_scheduler,"[eNB][mac_scheduler]",&oaisim_stats,&oaisim_stats_f); 
-      print_meas(&eNB_mac_inst[eNB_id].schedule_si,"[eNB][DL][SI]",&oaisim_stats,&oaisim_stats_f); 
-      print_meas(&eNB_mac_inst[eNB_id].schedule_ra,"[eNB][DL][RA]",&oaisim_stats,&oaisim_stats_f); 
-      print_meas(&eNB_mac_inst[eNB_id].fill_DLSCH_dci,"[eNB][DL/UL][fill_DCI]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&eNB_mac_inst[eNB_id].schedule_dlsch_preprocessor,"[eNB][DL][preprocessor]",&oaisim_stats,&oaisim_stats_f); 
-      print_meas(&eNB_mac_inst[eNB_id].schedule_dlsch,"[eNB][DL][schedule_tx_dlsch]",&oaisim_stats,&oaisim_stats_f); 
-      print_meas(&eNB_mac_inst[eNB_id].schedule_mch,"[eNB][DL][mch]",&oaisim_stats,&oaisim_stats_f); 
-      print_meas(&eNB_mac_inst[eNB_id].schedule_ulsch,"[eNB][UL][ULSCH]",&oaisim_stats,&oaisim_stats_f); 
-      print_meas(&eNB_mac_inst[eNB_id].rx_ulsch_sdu,"[eNB][UL][rx_ulsch_sdu]",&oaisim_stats,&oaisim_stats_f); 
-
-      print_meas(&eNB_pdcp_stats[eNB_id].pdcp_run,"[eNB][pdcp_run]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&eNB_pdcp_stats[eNB_id].data_req,"[eNB][DL][pdcp_data_req]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&eNB_pdcp_stats[eNB_id].data_ind,"[eNB][UL][pdcp_data_ind]",&oaisim_stats,&oaisim_stats_f);
-
-      print_meas(&eNB_pdcp_stats[eNB_id].apply_security,"[eNB][DL][apply_security]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&eNB_pdcp_stats[eNB_id].validate_security,"[eNB][UL][validate_security]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&eNB_pdcp_stats[eNB_id].ip_pdcp,"[eNB][DL][ip_pdcp]",&oaisim_stats,&oaisim_stats_f);
-      print_meas(&eNB_pdcp_stats[eNB_id].pdcp_ip,"[eNB][UL][pdcp_ip]",&oaisim_stats,&oaisim_stats_f);
-  
+    for (UE_id = 0; UE_id < NB_UE_INST; UE_id++) {
+
+        print_meas (&UE_mac_inst[UE_id].ue_scheduler, "[UE][mac_scheduler]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&UE_mac_inst[UE_id].tx_ulsch_sdu, "[UE][tx_ulsch_sdu]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&UE_mac_inst[UE_id].rx_dlsch_sdu, "[UE][rx_dlsch_sdu]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&UE_mac_inst[UE_id].ue_query_mch, "[UE][query_MCH]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&UE_mac_inst[UE_id].rx_mch_sdu, "[UE][rx_mch_sdu]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&UE_mac_inst[UE_id].rx_si, "[UE][rx_si]", &oaisim_stats,
+                    &oaisim_stats_f);
+
+        print_meas (&UE_pdcp_stats[UE_id].pdcp_run, "[UE][total_pdcp_run]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&UE_pdcp_stats[UE_id].data_req, "[UE][DL][pdcp_data_req]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&UE_pdcp_stats[UE_id].data_ind, "[UE][UL][pdcp_data_ind]",
+                    &oaisim_stats, &oaisim_stats_f);
+
+        print_meas (&UE_pdcp_stats[UE_id].apply_security,
+                    "[UE][DL][apply_security]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&UE_pdcp_stats[UE_id].validate_security,
+                    "[UE][UL][validate_security]", &oaisim_stats,
+                    &oaisim_stats_f);
+        print_meas (&UE_pdcp_stats[UE_id].ip_pdcp, "[UE][DL][ip_pdcp]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&UE_pdcp_stats[UE_id].pdcp_ip, "[UE][UL][pdcp_ip]",
+                    &oaisim_stats, &oaisim_stats_f);
+
     }
-  
-  }
 
+    for (eNB_id = 0; eNB_id < NB_eNB_INST; eNB_id++) {
+
+        print_meas (&eNB_mac_inst[eNB_id].eNB_scheduler, "[eNB][mac_scheduler]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&eNB_mac_inst[eNB_id].schedule_si, "[eNB][DL][SI]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&eNB_mac_inst[eNB_id].schedule_ra, "[eNB][DL][RA]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&eNB_mac_inst[eNB_id].fill_DLSCH_dci,
+                    "[eNB][DL/UL][fill_DCI]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&eNB_mac_inst[eNB_id].schedule_dlsch_preprocessor,
+                    "[eNB][DL][preprocessor]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&eNB_mac_inst[eNB_id].schedule_dlsch,
+                    "[eNB][DL][schedule_tx_dlsch]", &oaisim_stats,
+                    &oaisim_stats_f);
+        print_meas (&eNB_mac_inst[eNB_id].schedule_mch, "[eNB][DL][mch]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&eNB_mac_inst[eNB_id].schedule_ulsch, "[eNB][UL][ULSCH]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&eNB_mac_inst[eNB_id].rx_ulsch_sdu,
+                    "[eNB][UL][rx_ulsch_sdu]", &oaisim_stats, &oaisim_stats_f);
+
+        print_meas (&eNB_pdcp_stats[eNB_id].pdcp_run, "[eNB][pdcp_run]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&eNB_pdcp_stats[eNB_id].data_req,
+                    "[eNB][DL][pdcp_data_req]", &oaisim_stats, &oaisim_stats_f);
+        print_meas (&eNB_pdcp_stats[eNB_id].data_ind,
+                    "[eNB][UL][pdcp_data_ind]", &oaisim_stats, &oaisim_stats_f);
+
+        print_meas (&eNB_pdcp_stats[eNB_id].apply_security,
+                    "[eNB][DL][apply_security]", &oaisim_stats,
+                    &oaisim_stats_f);
+        print_meas (&eNB_pdcp_stats[eNB_id].validate_security,
+                    "[eNB][UL][validate_security]", &oaisim_stats,
+                    &oaisim_stats_f);
+        print_meas (&eNB_pdcp_stats[eNB_id].ip_pdcp, "[eNB][DL][ip_pdcp]",
+                    &oaisim_stats, &oaisim_stats_f);
+        print_meas (&eNB_pdcp_stats[eNB_id].pdcp_ip, "[eNB][UL][pdcp_ip]",
+                    &oaisim_stats, &oaisim_stats_f);
+
+    }
 
+}
 
-  static void *sigh(void *arg) {
+static void *
+sigh (void *arg) {
 
     int signum;
     sigset_t sigcatch;
-    sigemptyset(&sigcatch);
-    sigaddset(&sigcatch, SIGHUP);
-    sigaddset(&sigcatch, SIGINT);
-    sigaddset(&sigcatch, SIGTERM);
-    sigaddset(&sigcatch, SIGQUIT);
-   
+    sigemptyset (&sigcatch);
+    sigaddset (&sigcatch, SIGHUP);
+    sigaddset (&sigcatch, SIGINT);
+    sigaddset (&sigcatch, SIGTERM);
+    sigaddset (&sigcatch, SIGQUIT);
+
     for (;;) {
-      sigwait(&sigcatch, &signum);
-      //sigwait(&sigblock, &signum);
-      switch (signum) {
-      case SIGHUP:
-      case SIGINT:
-      case SIGTERM:
-      case SIGQUIT:
-	fprintf(stderr,"received signal %d \n", signum);
-	// no need for mutx: when ITTI not used, this variable is only accessed by this function
-	l2l1_state = L2L1_TERMINATED;
-	break;
-      default:
-	fprintf(stderr,"Unexpected signal %d \n",signum);
-	exit(-1);
-	break;
-      }
+        sigwait (&sigcatch, &signum);
+        //sigwait(&sigblock, &signum);
+        switch (signum) {
+            case SIGHUP:
+            case SIGINT:
+            case SIGTERM:
+            case SIGQUIT:
+                fprintf (stderr, "received signal %d \n", signum);
+                // no need for mutx: when ITTI not used, this variable is only accessed by this function
+                l2l1_state = L2L1_TERMINATED;
+                break;
+            default:
+                fprintf (stderr, "Unexpected signal %d \n", signum);
+                exit (-1);
+                break;
+        }
     }
-    pthread_exit(NULL);
-  }
-
+    pthread_exit (NULL);
+}
 
-  void oai_shutdown(void) {
-    static int done=0;
+void
+oai_shutdown (void) {
+    static int done = 0;
     int i;
     char interfaceName[8];
-  
+
     if (done)
-      return;
+        return;
 
     free (otg_pdcp_buffer);
 
 #ifdef SMBV
     if (config_smbv) {
-      smbv_send_config (smbv_fname,smbv_ip);
+        smbv_send_config (smbv_fname,smbv_ip);
     }
 #endif
 
     //Perform KPI measurements
     if (oai_emulation.info.otg_enabled == 1)
-      kpi_gen ();
+        kpi_gen ();
 
     if (oai_emulation.info.opp_enabled == 1)
-      print_opp_meas();
-  
+        print_opp_meas ();
+
     // relase all rx state
     if (ethernet_flag == 1) {
-      emu_transport_release ();
+        emu_transport_release ();
     }
 
 #ifdef PROC
     if (abstraction_flag == 0 && Channel_Flag==0 && Process_Flag==0)
 #else
-      if (abstraction_flag == 0)
+    if (abstraction_flag == 0)
 #endif
-	{
-	  /*
-	    #ifdef IFFT_FPGA
-	    free(txdataF2[0]);
-	    free(txdataF2[1]);
-	    free(txdataF2);
-	    free(txdata[0]);
-	    free(txdata[1]);
-	    free(txdata);
-	    #endif
-	  */
-      
-	  for (i = 0; i < 2; i++) {
-	    free (s_re[i]);
-	    free (s_im[i]);
-	    free (r_re[i]);
-	    free (r_im[i]);
-	  }
-	  free (s_re);
-	  free (s_im);
-	  free (r_re);
-	  free (r_im);
-      
-	  lte_sync_time_free ();
-	}
-  
+                    {
+        /*
+         #ifdef IFFT_FPGA
+         free(txdataF2[0]);
+         free(txdataF2[1]);
+         free(txdataF2);
+         free(txdata[0]);
+         free(txdata[1]);
+         free(txdata);
+         #endif
+         */
+
+        for (i = 0; i < 2; i++) {
+            free (s_re[i]);
+            free (s_im[i]);
+            free (r_re[i]);
+            free (r_im[i]);
+        }
+        free (s_re);
+        free (s_im);
+        free (r_re);
+        free (r_im);
+
+        lte_sync_time_free ();
+    }
+
     // added for PHY abstraction
     if (oai_emulation.info.ocm_enabled == 1) {
-      for (eNB_inst = 0; eNB_inst < NUMBER_OF_eNB_MAX; eNB_inst++) {
-	free (enb_data[eNB_inst]);
-      }
-      for (UE_inst = 0; UE_inst < NUMBER_OF_UE_MAX; UE_inst++) {
-	free (ue_data[UE_inst]);
-      }
+        for (eNB_inst = 0; eNB_inst < NUMBER_OF_eNB_MAX; eNB_inst++) {
+            free (enb_data[eNB_inst]);
+        }
+        for (UE_inst = 0; UE_inst < NUMBER_OF_UE_MAX; UE_inst++) {
+            free (ue_data[UE_inst]);
+        }
     } //End of PHY abstraction changes
-  
+
 #ifdef OPENAIR2
     mac_top_cleanup ();
 #endif 
@@ -1597,38 +1795,40 @@ void *l2l1_task(void *args_p) {
     // stop OMG
     stop_mobility_generator (omg_param_list); //omg_param_list.mobility_type
 #ifdef OPENAIR2
-    if (oai_emulation.info.omv_enabled == 1)
-      omv_end (pfd[1], omv_data);
+                    if (oai_emulation.info.omv_enabled == 1)
+                    omv_end (pfd[1], omv_data);
 #endif
-    if ((oai_emulation.info.ocm_enabled == 1) && (ethernet_flag == 0) && (ShaF != NULL))
-      destroyMat (ShaF, map1, map2);
-  
+    if ((oai_emulation.info.ocm_enabled == 1) && (ethernet_flag == 0)
+                    && (ShaF != NULL))
+        destroyMat (ShaF, map1, map2);
+
     if ((oai_emulation.info.opt_enabled == 1))
-      terminate_opt ();
+        terminate_opt ();
 
     if (oai_emulation.info.cli_enabled)
-      cli_server_cleanup ();
+        cli_server_cleanup ();
 
     for (i = 0; i < NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX; i++)
-      if (oai_emulation.info.oai_ifup[i] == 1) {
-	sprintf (interfaceName, "oai%d", i);
-	bringInterfaceUp (interfaceName, 0);
-      }
-  
+        if (oai_emulation.info.oai_ifup[i] == 1) {
+            sprintf (interfaceName, "oai%d", i);
+            bringInterfaceUp (interfaceName, 0);
+        }
+
     log_thread_finalize ();
     logClean ();
     vcd_signal_dumper_close ();
-    done =1;
-  
-    LOG_N(EMU, ">>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU shutdown <<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
-  }
+    done = 1;
+
+    LOG_N(EMU,
+          ">>>>>>>>>>>>>>>>>>>>>>>>>>> OAIEMU shutdown <<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");
+}
 
-  eNB_MAC_INST* get_eNB_mac_inst(module_id_t module_idP)
-  {
+eNB_MAC_INST*
+get_eNB_mac_inst (module_id_t module_idP) {
     return (&eNB_mac_inst[module_idP]);
-  }
+}
 
-  OAI_Emulation* get_OAI_emulation()
-  {
+OAI_Emulation*
+get_OAI_emulation () {
     return &oai_emulation;
-  }
+}