From 18812a59627a663891edb7897cfccdb6d793796b Mon Sep 17 00:00:00 2001
From: Raymond Knopp <raymond.knopp@eurecom.fr>
Date: Fri, 20 Jun 2014 09:21:54 +0000
Subject: [PATCH] git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5415
 818b1a75-f10b-46b9-bf7c-635c3b92a50f

---
 openair1/PHY/defs.h                     | 11 ++++++++++-
 openair1/SCHED/defs.h                   |  2 ++
 openair1/SCHED/phy_procedures_lte_eNb.c | 23 ++++++++++-------------
 openair1/SIMULATION/LTE_PHY/Makefile    |  2 +-
 4 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/openair1/PHY/defs.h b/openair1/PHY/defs.h
index 4ac5b6f867..b3f62ebfc9 100755
--- a/openair1/PHY/defs.h
+++ b/openair1/PHY/defs.h
@@ -151,7 +151,7 @@
 //#include "PHY/LTE_ESTIMATION/defs.h"
 
 #include "PHY/LTE_TRANSPORT/defs.h"
-
+#include <pthread.h>
 
 #define NUM_DCI_MAX 32
 
@@ -178,10 +178,19 @@ enum transmission_access_mode{
   }ral_threshold_phy_t;
 #endif
 
+typedef struct {
+  uint8_t instance_cnt;
+  pthread_t pthread;
+  pthread_cond_t cond;
+  pthread_mutex_t mutex;
+  uint8_t subframe;
+} eNB_proc_t;
+
 /// Top-level PHY Data Structure for eNB 
 typedef struct PHY_VARS_eNB_s{
   /// Module ID indicator for this instance
   module_id_t               Mod_id;
+  eNB_proc_t       proc[10];
   uint8_t                   local_flag;
   uint32_t         rx_total_gain_eNB_dB;
   frame_t              frame;
diff --git a/openair1/SCHED/defs.h b/openair1/SCHED/defs.h
index 0b09f42358..c0671e5f37 100644
--- a/openair1/SCHED/defs.h
+++ b/openair1/SCHED/defs.h
@@ -9,6 +9,7 @@
 
 #include "PHY/defs.h"
 
+
 enum THREAD_INDEX { OPENAIR_THREAD_INDEX = 0,
 		    TOP_LEVEL_SCHEDULER_THREAD_INDEX,
                     DLC_SCHED_THREAD_INDEX,
@@ -57,6 +58,7 @@ enum openair_SYNCH_STATUS {
 #define DAQ_AGC_OFF 0
 
 
+
 typedef struct {
   boolean_t  is_eNB;
   uint8_t    mode;
diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c
index 02c5a0ab28..87f37d59d1 100755
--- a/openair1/SCHED/phy_procedures_lte_eNb.c
+++ b/openair1/SCHED/phy_procedures_lte_eNb.c
@@ -1010,6 +1010,8 @@ void phy_eNB_lte_check_measurement_thresholds(instance_t instanceP, ral_threshol
 #   endif
 #endif
 
+
+
 void phy_procedures_eNB_TX(unsigned char next_slot,PHY_VARS_eNB *phy_vars_eNB,uint8_t abstraction_flag,
 			   relaying_type_t r_type,PHY_VARS_RN *phy_vars_rn) {
   uint8_t *pbch_pdu=&phy_vars_eNB->pbch_pdu[0];
@@ -1062,14 +1064,8 @@ void phy_procedures_eNB_TX(unsigned char next_slot,PHY_VARS_eNB *phy_vars_eNB,ui
       if (next_slot%2 == 0) {
 	for (aa=0; aa<phy_vars_eNB->lte_frame_parms.nb_antennas_tx_eNB;aa++) {
 	 
-#ifdef IFFT_FPGA
-	  memset(&phy_vars_eNB->lte_eNB_common_vars.txdataF[sect_id][aa][next_slot*(phy_vars_eNB->lte_frame_parms.N_RB_DL*12)*(phy_vars_eNB->lte_frame_parms.symbols_per_tti>>1)],
-		 0,(phy_vars_eNB->lte_frame_parms.N_RB_DL*12)*(phy_vars_eNB->lte_frame_parms.symbols_per_tti)*sizeof(mod_sym_t));
-#else
 	  memset(&phy_vars_eNB->lte_eNB_common_vars.txdataF[sect_id][aa][next_slot*phy_vars_eNB->lte_frame_parms.ofdm_symbol_size*(phy_vars_eNB->lte_frame_parms.symbols_per_tti>>1)],
 		 0,phy_vars_eNB->lte_frame_parms.ofdm_symbol_size*(phy_vars_eNB->lte_frame_parms.symbols_per_tti)*sizeof(mod_sym_t));
-
-#endif
 	}
       }
     }
@@ -1149,9 +1145,10 @@ void phy_procedures_eNB_TX(unsigned char next_slot,PHY_VARS_eNB *phy_vars_eNB,ui
     }
     
     else {
-	vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_RS_TX,1);
+
 	
 	if (abstraction_flag==0){
+	  vcd_signal_dumper_dump_function_by_name(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_ENB_RS_TX,1);
 	  generate_pilots_slot(phy_vars_eNB,
 			       phy_vars_eNB->lte_eNB_common_vars.txdataF[sect_id],
 			       AMP,
@@ -3820,22 +3817,22 @@ void phy_procedures_eNB_lte(unsigned char last_slot, unsigned char next_slot,PHY
 #endif
 
   if ((((phy_vars_eNB->lte_frame_parms.frame_type == TDD)&&(subframe_select(&phy_vars_eNB->lte_frame_parms,next_slot>>1)==SF_DL))||
-      (phy_vars_eNB->lte_frame_parms.frame_type == FDD)) && ((next_slot&1)==0)) {
+      (phy_vars_eNB->lte_frame_parms.frame_type == FDD)) && ((next_slot&1)==1)) {
 #ifdef Rel10 
-    if (phy_procedures_RN_eNB_TX(last_slot, next_slot, r_type) != 0 ) 
+    if (phy_procedures_RN_eNB_TX(last_slot, (next_slot+1)%20, r_type) != 0 ) 
 #endif 
-      phy_procedures_eNB_TX(next_slot,phy_vars_eNB,abstraction_flag,r_type,phy_vars_rn);
+      phy_procedures_eNB_TX((next_slot+1)%20,phy_vars_eNB,abstraction_flag,r_type,phy_vars_rn);
   }
   if ((((phy_vars_eNB->lte_frame_parms.frame_type == TDD )&&(subframe_select(&phy_vars_eNB->lte_frame_parms,last_slot>>1)==SF_UL)) ||
       (phy_vars_eNB->lte_frame_parms.frame_type == FDD)) && ((last_slot&1)==1)){
     phy_procedures_eNB_RX(last_slot,phy_vars_eNB,abstraction_flag,r_type);
   }
   if ((subframe_select(&phy_vars_eNB->lte_frame_parms,next_slot>>1)==SF_S) &&
-      ((next_slot&1)==0)) {
+      ((next_slot&1)==1)) {
 #ifdef Rel10 
-    if (phy_procedures_RN_eNB_TX(last_slot, next_slot, r_type) != 0 )
+    if (phy_procedures_RN_eNB_TX(last_slot, (next_slot+1)%20, r_type) != 0 )
 #endif 
-      phy_procedures_eNB_TX(next_slot,phy_vars_eNB,abstraction_flag,r_type,phy_vars_rn);
+      phy_procedures_eNB_TX((next_slot+1)%20,phy_vars_eNB,abstraction_flag,r_type,phy_vars_rn);
   }
   if ((subframe_select(&phy_vars_eNB->lte_frame_parms,last_slot>>1)==SF_S) &&
       ((last_slot&1)==0)){
diff --git a/openair1/SIMULATION/LTE_PHY/Makefile b/openair1/SIMULATION/LTE_PHY/Makefile
index f525d2dd1f..93141911e4 100644
--- a/openair1/SIMULATION/LTE_PHY/Makefile
+++ b/openair1/SIMULATION/LTE_PHY/Makefile
@@ -10,7 +10,7 @@ OPENAIR1_TOP = $(OPENAIR1_DIR)
 OPENAIR2_TOP = $(OPENAIR2_DIR)
 OPENAIR3 = $(OPENAIR3_DIR)
 
-CFLAGS = -g -O2 -Wno-strict-aliasing -rdynamic -Wall -DPHYSIM -DNODE_RG -DUSER_MODE -DNB_ANTENNAS_RX=2 -DNB_ANTENNAS_TXRX=2 -DNB_ANTENNAS_TX=2 -DPHY_CONTEXT=1 $(CPUFLAGS) -DMALLOC_CHECK_=1 -DENABLE_VCD_FIFO # -Wno-packed-bitfield-compat
+CFLAGS = -g -O3 -Wno-strict-aliasing -rdynamic -Wall -DPHYSIM -DNODE_RG -DUSER_MODE -DNB_ANTENNAS_RX=2 -DNB_ANTENNAS_TXRX=2 -DNB_ANTENNAS_TX=2 -DPHY_CONTEXT=1 $(CPUFLAGS) -DMALLOC_CHECK_=1 -DENABLE_VCD_FIFO # -Wno-packed-bitfield-compat
 
 
 # DCI Debug
-- 
2.26.2