From 06c4b91b61ead3637be02c38bccf7babe47af437 Mon Sep 17 00:00:00 2001
From: Xiwen JIANG <xiwen.jiang@eureocm.fr>
Date: Thu, 17 Mar 2016 10:28:06 +0100
Subject: [PATCH] move beamforming function to PHY/MODULATION folder

---
 cmake_targets/CMakeLists.txt                  |  2 +-
 openair1/PHY/LTE_TRANSPORT/proto.h            | 35 -------------------
 .../beamforming.c                             |  8 ++---
 openair1/PHY/MODULATION/defs.h                | 34 ++++++++++++++++++
 openair1/SIMULATION/LTE_PHY/dlsim.c           |  8 ++---
 5 files changed, 43 insertions(+), 44 deletions(-)
 rename openair1/PHY/{LTE_TRANSPORT => MODULATION}/beamforming.c (98%)

diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt
index 5a679cdf4a..7981ea1023 100644
--- a/cmake_targets/CMakeLists.txt
+++ b/cmake_targets/CMakeLists.txt
@@ -868,12 +868,12 @@ set(PHY_SRC
   ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/rar_tools.c
   ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/print_stats.c
   ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/initial_sync.c
-  ${OPENAIR1_DIR}/PHY/LTE_TRANSPORT/beamforming.c
   ${OPENAIR1_DIR}/PHY/MODULATION/ofdm_mod.c
   ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep.c
   ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_mbsfn.c
   ${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_ul.c
   ${OPENAIR1_DIR}/PHY/MODULATION/ul_7_5_kHz.c
+  ${OPENAIR1_DIR}/PHY/MODULATION/beamforming.c
   ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/freq_equalization.c
   ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_time.c
   ${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_sync_timefreq.c
diff --git a/openair1/PHY/LTE_TRANSPORT/proto.h b/openair1/PHY/LTE_TRANSPORT/proto.h
index 416bff82c4..35de21c7b8 100644
--- a/openair1/PHY/LTE_TRANSPORT/proto.h
+++ b/openair1/PHY/LTE_TRANSPORT/proto.h
@@ -336,41 +336,6 @@ int32_t generate_pbch(LTE_eNB_PBCH *eNB_pbch,
 
 int32_t generate_pbch_emul(PHY_VARS_eNB *phy_vars_eNB,uint8_t *pbch_pdu);
 
-
-/** \brief This function performs UE specific beamforming especially for
- * transmission mode TM7-10
-    @param txdataF Table of pointers for frequency-domain TX signals
-    @param txdataF_BF Table of pointers for frequency-domain TX signals
-after beamforming
-    @param frame_parms Frame descriptor structure
-    @param ue_spec_bf_weights UE specific beamforming weights applied on
-each antenna element and each carrier
-    @param slot Slot number
-    @param symbol Symbol index on which to act*/
-int ue_spec_beamforming(int32_t **txdataF,
-	                int32_t **txdataF_BF,
-                        LTE_DL_FRAME_PARMS *frame_parms,
-	                int32_t ***ue_spec_bf_weights,
-                        int slot,
-                        int symbol);
-
-/** \brief This function performs cell specific beamforming for common
- * data
-    @param txdataF Table of pointers for frequency-domain TX signals
-    @param txdataF_BF Table of pointers for frequency-domain TX signals
-    @param frame_parms Frame descriptor structure
-after beamforming
-    @param cell_spec_bf_weights Common beamforming weights applied on each
-antenna element and each carrier
-    @param slot Slot number
-    @param symbol Symbol index on which to act*/
-int cell_spec_beamforming(int32_t **txdataF,
-	                  int32_t **txdataF_BF,
-                          LTE_DL_FRAME_PARMS *frame_parms,
-	                  int32_t ***cell_spec_bf_weights,
-                          int slot,
-                          int symbol);
-
 /** \brief This function computes the LLRs for ML (max-logsum approximation) dual-stream QPSK/QPSK reception.
     @param stream0_in Input from channel compensated (MR combined) stream 0
     @param stream1_in Input from channel compensated (MR combined) stream 1
diff --git a/openair1/PHY/LTE_TRANSPORT/beamforming.c b/openair1/PHY/MODULATION/beamforming.c
similarity index 98%
rename from openair1/PHY/LTE_TRANSPORT/beamforming.c
rename to openair1/PHY/MODULATION/beamforming.c
index 7a2b75d74e..867ba0d53d 100644
--- a/openair1/PHY/LTE_TRANSPORT/beamforming.c
+++ b/openair1/PHY/MODULATION/beamforming.c
@@ -27,13 +27,13 @@ Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 069
 
  *******************************************************************************/
 
-/*! \file PHY/LTE_TRANSPORT/beamforming.c
+/*! \file PHY/MODULATION/beamforming.c
  * \brief 
- * \author R. Knopp, F. Kaltenberger, X. JIANG
- * \date 2015
+ * \author X. JIANG, F. Kaltenberger, R. KNOPP
+ * \date 2016
  * \version 0.1
  * \company Eurecom
- * \email: knopp@eurecom.fr,florian.kaltenberger@eurecom.fr,xiwen.jiang@eurecom.fr
+ * \email: xiwen.jiang@eurecom.fr,florian.kaltenberger@eurecom.fr,raymond.knopp@eurecom.fr
  * \note
  * \warning
  */
diff --git a/openair1/PHY/MODULATION/defs.h b/openair1/PHY/MODULATION/defs.h
index 6005d6d49a..fec65b8679 100644
--- a/openair1/PHY/MODULATION/defs.h
+++ b/openair1/PHY/MODULATION/defs.h
@@ -99,6 +99,40 @@ void remove_625_Hz(PHY_VARS_eNB *phy_vars_eNB,int16_t *prach);
 
 void apply_625_Hz(PHY_VARS_UE *phy_vars_ue,int16_t *prach);
 
+/** \brief This function performs UE specific beamforming especially for
+ * transmission mode TM7-10
+    @param txdataF Table of pointers for frequency-domain TX signals
+    @param txdataF_BF Table of pointers for frequency-domain TX signals
+after beamforming
+    @param frame_parms Frame descriptor structure
+    @param ue_spec_bf_weights UE specific beamforming weights applied on
+each antenna element and each carrier
+    @param slot Slot number
+    @param symbol Symbol index on which to act*/
+int ue_spec_beamforming(int32_t **txdataF,
+	                int32_t **txdataF_BF,
+                        LTE_DL_FRAME_PARMS *frame_parms,
+	                int32_t ***ue_spec_bf_weights,
+                        int slot,
+                        int symbol);
+
+/** \brief This function performs cell specific beamforming for common
+ * data
+    @param txdataF Table of pointers for frequency-domain TX signals
+    @param txdataF_BF Table of pointers for frequency-domain TX signals
+    @param frame_parms Frame descriptor structure
+after beamforming
+    @param cell_spec_bf_weights Common beamforming weights applied on each
+antenna element and each carrier
+    @param slot Slot number
+    @param symbol Symbol index on which to act*/
+int cell_spec_beamforming(int32_t **txdataF,
+	                  int32_t **txdataF_BF,
+                          LTE_DL_FRAME_PARMS *frame_parms,
+	                  int32_t ***cell_spec_bf_weights,
+                          int slot,
+                          int symbol);
+
 #endif
 /** @}*/
 #endif
diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c
index ba7d02b340..beb90006ae 100644
--- a/openair1/SIMULATION/LTE_PHY/dlsim.c
+++ b/openair1/SIMULATION/LTE_PHY/dlsim.c
@@ -134,12 +134,12 @@ void do_OFDM_mod_l(LTE_eNB_COMMON *eNB_common_vars, int eNB_id, uint16_t next_sl
   
     //printf("do_OFDM_mod_l, slot=%d, l=%d, NUMBER_OF_OFDM_CARRIERS=%d,OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES=%d\n",next_slot, l,NUMBER_OF_OFDM_CARRIERS,OFDM_SYMBOL_SIZE_COMPLEX_SAMPLES);
     if (l<num_pdcch_symbols && next_slot&1 == 0)
-      cell_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->cell_spec_bf_weights,next_slot,l);
+      cell_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->cell_spec_bf_weights[eNB_id],next_slot,l);
     else
       if (transmission_mode<7)
-        cell_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->cell_spec_bf_weights,next_slot,l);
+        cell_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->cell_spec_bf_weights[eNB_id],next_slot,l);
       else 
-        ue_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->ue_spec_bf_weights,next_slot,l);
+        ue_spec_beamforming(txdataF,txdataF_BF,frame_parms,eNB_common_vars->ue_spec_bf_weights[eNB_id],next_slot,l);
 
     for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
 
@@ -1026,7 +1026,7 @@ int main(int argc, char **argv)
              for (re=0;re<frame_parms->ofdm_symbol_size;re++) {
                if (n_tx_phy==1 || n_tx_phy==2)
                  ue_spec_bf_weights[aa][re] = 0x00007fff;
-               else if (n_tx_phy==4)
+               else if (n_tx_phy==4 || n_tx_phy==8)
                  ue_spec_bf_weights[aa][re] = 0x00007fff>>1;
                else if (n_tx_phy==16)
                  ue_spec_bf_weights[aa][re] = 0x00007fff>>2;
-- 
2.26.2