From 12f1cb9c7ceb53c9b4f2a9c50427a9d2a66b7a04 Mon Sep 17 00:00:00 2001
From: Florian Kaltenberger <florian.kaltenberger@eurecom.fr>
Date: Fri, 18 Nov 2016 16:23:01 +0100
Subject: [PATCH] fixing original dlsim from develop

---
 cmake_targets/CMakeLists.txt            |  3 ++-
 openair1/PHY/MODULATION/defs.h          |  2 +-
 openair1/PHY/MODULATION/ofdm_mod.c      |  2 +-
 openair1/SIMULATION/LTE_PHY/dlsim.c     | 32 ++++++++++++++++---------
 openair1/SIMULATION/LTE_PHY/dlsim_tm7.c |  4 ++--
 targets/RT/USER/lte-enb.c               |  4 ++--
 6 files changed, 29 insertions(+), 18 deletions(-)

diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index 0619d4af7f..3f3b4f2fbe 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -1840,7 +1840,7 @@ target_link_libraries (oaisim_nos1 ${T_LIB})
 # Unitary tests for each piece of L1: example, mbmssim is MBMS L1 simulator
 #####################################
 
-foreach(myExe dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim)
+foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim)
   add_executable(${myExe}
     ${OPENAIR_BIN_DIR}/messages_xml.h
     ${OPENAIR1_DIR}/SIMULATION/LTE_PHY/${myExe}.c
@@ -1920,6 +1920,7 @@ if (${T_TRACER})
   add_dependencies(rrh_gw generate_T)
   add_dependencies(oaisim generate_T)
   add_dependencies(oaisim_nos1 generate_T)
+  add_dependencies(dlsim generate_T)
   add_dependencies(dlsim_tm7 generate_T)
   add_dependencies(ulsim generate_T)
   add_dependencies(pbchsim generate_T)
diff --git a/openair1/PHY/MODULATION/defs.h b/openair1/PHY/MODULATION/defs.h
index ce73d0461d..289b1edd43 100644
--- a/openair1/PHY/MODULATION/defs.h
+++ b/openair1/PHY/MODULATION/defs.h
@@ -82,7 +82,7 @@ void normal_prefix_mod(int32_t *txdataF,int32_t *txdata,uint8_t nsymb,LTE_DL_FRA
 
 void do_OFDM_mod(int32_t **txdataF, int32_t **txdata, uint32_t frame,uint16_t next_slot, LTE_DL_FRAME_PARMS *frame_parms);
 
-void do_OFDM_mod_l(LTE_eNB_COMMON *eNB_common_vars, int eNB_id, uint16_t next_slot, LTE_DL_FRAME_PARMS *frame_parms);
+void do_OFDM_mod_symbol(LTE_eNB_COMMON *eNB_common_vars, int eNB_id, uint16_t next_slot, LTE_DL_FRAME_PARMS *frame_parms);
 
 void remove_7_5_kHz(PHY_VARS_eNB *phy_vars_eNB,uint8_t subframe);
 
diff --git a/openair1/PHY/MODULATION/ofdm_mod.c b/openair1/PHY/MODULATION/ofdm_mod.c
index 6a4e72180b..2fd7fd88a3 100644
--- a/openair1/PHY/MODULATION/ofdm_mod.c
+++ b/openair1/PHY/MODULATION/ofdm_mod.c
@@ -285,7 +285,7 @@ void do_OFDM_mod(int32_t **txdataF, int32_t **txdata, uint32_t frame,uint16_t ne
 }
 
 // OFDM modulation for each symbol
-void do_OFDM_mod_l(LTE_eNB_COMMON *eNB_common_vars, int eNB_id, uint16_t next_slot, LTE_DL_FRAME_PARMS *frame_parms)
+void do_OFDM_mod_symbol(LTE_eNB_COMMON *eNB_common_vars, int eNB_id, uint16_t next_slot, LTE_DL_FRAME_PARMS *frame_parms)
 {
 
   int aa, l, slot_offset;
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c
index 40faf1049f..2e9a04def3 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim.c
@@ -403,7 +403,8 @@ void fill_DCI(PHY_VARS_eNB *eNB,
                                              SI_RNTI,
                                              0,
                                              P_RNTI,
-                                             eNB->UE_stats[0].DL_pmi_single);
+                                             eNB->UE_stats[0].DL_pmi_single,
+					     transmission_mode>=7?transmission_mode:0);
 
           *num_dci = *num_dci+1;
           *num_ue_spec_dci = *num_ue_spec_dci+1;
@@ -543,7 +544,8 @@ void fill_DCI(PHY_VARS_eNB *eNB,
                                              SI_RNTI,
                                              0,
                                              P_RNTI,
-                                             eNB->UE_stats[0].DL_pmi_single);
+                                             eNB->UE_stats[0].DL_pmi_single,
+					     transmission_mode>=7?transmission_mode:0);
 
           *num_common_dci=*num_common_dci+1;
           *num_dci = *num_dci + 1;
@@ -710,7 +712,8 @@ void fill_DCI(PHY_VARS_eNB *eNB,
                                              SI_RNTI,
                                              0,
                                              P_RNTI,
-                                             eNB->UE_stats[0].DL_pmi_single);
+                                             eNB->UE_stats[0].DL_pmi_single,
+					     transmission_mode>=7?transmission_mode:0);
 
           *num_dci = *num_dci + 1;
           *num_ue_spec_dci = *num_ue_spec_dci + 1;
@@ -850,7 +853,8 @@ void fill_DCI(PHY_VARS_eNB *eNB,
                                              SI_RNTI,
                                              0,
                                              P_RNTI,
-                                             eNB->UE_stats[0].DL_pmi_single);
+                                             eNB->UE_stats[0].DL_pmi_single,
+					     transmission_mode>=7?transmission_mode:0);
 
           *num_common_dci = *num_common_dci + 1;
           *num_dci = *num_dci + 1;
@@ -1018,7 +1022,8 @@ void fill_DCI(PHY_VARS_eNB *eNB,
                                              SI_RNTI,
                                              0,
                                              P_RNTI,
-                                             eNB->UE_stats[0].DL_pmi_single);
+                                             eNB->UE_stats[0].DL_pmi_single,
+					     transmission_mode>=7?transmission_mode:0);
 
           *num_dci = *num_dci + 1;
           *num_ue_spec_dci = *num_ue_spec_dci + 1;
@@ -1158,7 +1163,8 @@ void fill_DCI(PHY_VARS_eNB *eNB,
                                              SI_RNTI,
                                              0,
                                              P_RNTI,
-                                             eNB->UE_stats[0].DL_pmi_single);
+                                             eNB->UE_stats[0].DL_pmi_single,
+					     transmission_mode>=7?transmission_mode:0);
 
           *num_common_dci = *num_common_dci + 1;
           *num_dci = *num_dci + 1;
@@ -1187,7 +1193,8 @@ void fill_DCI(PHY_VARS_eNB *eNB,
                                            SI_RNTI,
                                            0,
                                            P_RNTI,
-                                           eNB->UE_stats[k].DL_pmi_single);
+                                           eNB->UE_stats[k].DL_pmi_single,
+					   transmission_mode>=7?transmission_mode:0);
 
         dump_dci(&eNB->frame_parms,&dci_alloc[*num_dci]);
         *num_ue_spec_dci = *num_ue_spec_dci + 1;
@@ -1762,7 +1769,8 @@ int main(int argc, char **argv)
     printf("dual_stream_UE=%d\n", dual_stream_UE);
   }
 
-  lte_param_init(n_tx,
+  lte_param_init(transmission_mode==1?1:2,
+		 n_tx,
 		 n_rx,
 		 transmission_mode,
 		 extended_prefix_flag,
@@ -2042,7 +2050,7 @@ int main(int argc, char **argv)
   for (k=0; k<n_users; k++) {
     // Create transport channel structures for 2 transport blocks (MIMO)
     for (i=0; i<2; i++) {
-      eNB->dlsch[k][i] = new_eNB_dlsch(Kmimo,8,Nsoft,N_RB_DL,0);
+      eNB->dlsch[k][i] = new_eNB_dlsch(Kmimo,8,Nsoft,N_RB_DL,0,&eNB->frame_parms);
 
       if (!eNB->dlsch[k][i]) {
         printf("Can't get eNB dlsch structures\n");
@@ -2065,7 +2073,7 @@ int main(int argc, char **argv)
   }
 
   // structure for SIC at UE
-  UE->dlsch_eNB[0] = new_eNB_dlsch(Kmimo,8,Nsoft,N_RB_DL,0);
+  UE->dlsch_eNB[0] = new_eNB_dlsch(Kmimo,8,Nsoft,N_RB_DL,0,&eNB->frame_parms);
 
   if (DLSCH_alloc_pdu2_1E[0].tpmi == 5) {
 
@@ -2159,7 +2167,9 @@ int main(int argc, char **argv)
                                   get_Qm(eNB->dlsch[0][0]->harq_processes[0]->mcs),
                                   eNB->dlsch[0][0]->harq_processes[0]->Nl,
                                   num_pdcch_symbols,
-                                  0,subframe);
+                                  0,
+				  subframe,
+				  transmission_mode>=7?transmission_mode:0);
 
   uncoded_ber_bit = (short*) malloc(sizeof(short)*coded_bits_per_codeword);
   printf("uncoded_ber_bit=%p\n",uncoded_ber_bit);
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c b/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
index 691287171f..0d5dcd63ce 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim_tm7.c
@@ -2830,12 +2830,12 @@ PMI_FEEDBACK:
  	      } 
 
 */
-            do_OFDM_mod_l(&eNB->common_vars,
+            do_OFDM_mod_symbol(&eNB->common_vars,
                           eNB_id,
                           (subframe*2),
                           &eNB->frame_parms);
 
-            do_OFDM_mod_l(&eNB->common_vars,
+            do_OFDM_mod_symbol(&eNB->common_vars,
                           eNB_id,
                           (subframe*2)+1,
                           &eNB->frame_parms);
diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c
index 7d50da5ddc..af06979efd 100644
--- a/targets/RT/USER/lte-enb.c
+++ b/targets/RT/USER/lte-enb.c
@@ -295,14 +295,14 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB)
 
     VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_ENB_OFDM_MODULATION,1);
 
-    do_OFDM_mod_l(&phy_vars_eNB->lte_eNB_common_vars,
+    do_OFDM_mod_symbol(&phy_vars_eNB->lte_eNB_common_vars,
                   0,
                   subframe<<1,
                   &phy_vars_eNB->lte_frame_parms);
  
     // if S-subframe generate first slot only 
     if (subframe_select(&phy_vars_eNB->lte_frame_parms,subframe) == SF_DL) {
-      do_OFDM_mod_l(&phy_vars_eNB->lte_eNB_common_vars,
+      do_OFDM_mod_symbol(&phy_vars_eNB->lte_eNB_common_vars,
                     0,
                     1+(subframe<<1),
                     &phy_vars_eNB->lte_frame_parms);
-- 
2.26.2