From 8cff5fcf3ba1eefc218c4b599c81e37a59f007e7 Mon Sep 17 00:00:00 2001
From: Aikaterini <aikaterini.trilyraki@eurecom.fr>
Date: Mon, 8 Feb 2016 13:56:51 +0100
Subject: [PATCH]  1)remove option 'M' 2) tx shift value is set in device
 libraries  3) check for tx processing launching updated wrt alcatel
 suggestions

---
 targets/RT/USER/lte-softmodem.c | 65 +++++++--------------------------
 1 file changed, 13 insertions(+), 52 deletions(-)

diff --git a/targets/RT/USER/lte-softmodem.c b/targets/RT/USER/lte-softmodem.c
index 698882b38a..10f467874a 100644
--- a/targets/RT/USER/lte-softmodem.c
+++ b/targets/RT/USER/lte-softmodem.c
@@ -329,15 +329,6 @@ time_stats_t softmodem_stats_rx_sf[10]; // total rx time
 void reset_opp_meas(void);
 void print_opp_meas(void);
 int transmission_mode=1;
-/*
-   FT: not a very clean way of managing the rescale of iqs in rx path, but this is done in
-  openair1/PHY/MODULATION/ul_7_5_kHz.c which doesn't have access to config parameters
-  to re-worked later.....
-  RX_IQRESCALELEN is setup in device libraries for all non expressmimo targets and acessed as an
-  external variable in ul_7_5_kHz.c. For expressmimo it is a macro (openair1/PHY/defs.h) 
-  Regarding the value of this variable or macro: 18 is for 15 bits iqs, 15 is used for USRP, EXMIMO
-*/
-//int rxrescale; 
 
 int16_t           glog_level         = LOG_INFO;
 int16_t           glog_verbosity     = LOG_MED;
@@ -482,7 +473,6 @@ void help (void) {
   printf("  -h provides this help message!\n");
   printf("  -K Generate ITTI analyzser logs (similar to wireshark logs but with more details)\n");
   printf("  -m Set the maximum downlink MCS\n");
-  printf("  -M Specify whether RF head is local or remote,valid options: (1: local , 2:remote)  \n");
   printf("  -O eNB configuration file (located in targets/PROJECTS/GENERIC-LTE-EPC/CONF\n");
   printf("  -q Enable processing timing measurement of lte softmodem on per subframe basis \n");
   printf("  -r Set the PRB, valid values: 6, 25, 50, 100  \n");    
@@ -1000,29 +990,12 @@ void do_OFDM_mod_rt(int subframe,PHY_VARS_eNB *phy_vars_eNB)
         if (tx_offset>=(LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*phy_vars_eNB->lte_frame_parms.samples_per_tti))
           tx_offset -= LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*phy_vars_eNB->lte_frame_parms.samples_per_tti;
 
-	// ((short*)&phy_vars_eNB->lte_eNB_common_vars.txdata[0][aa][tx_offset])[0] = ((short*)dummy_tx_b)[2*i]<<openair0_cfg[0].iq_txshift ;
-
-	//	((short*)&phy_vars_eNB->lte_eNB_common_vars.txdata[0][aa][tx_offset])[1] = ((short*)dummy_tx_b)[2*i+1]<<openair0_cfg[0].iq_txshift;
-
-
-
-        ((short*)&phy_vars_eNB->lte_eNB_common_vars.txdata[0][aa][tx_offset])[0]=
-#ifdef EXMIMO
-          ((short*)dummy_tx_b)[2*i]<<4;
-#elif OAI_BLADERF
-	((short*)dummy_tx_b)[2*i];
-#else
-          ((short*)dummy_tx_b)[2*i]<<4;
-#endif
-	  ((short*)&phy_vars_eNB->lte_eNB_common_vars.txdata[0][aa][tx_offset])[1]=
-#ifdef EXMIMO
-	    ((short*)dummy_tx_b)[2*i+1]<<4;
-#elif OAI_BLADERF
-	  ((short*)dummy_tx_b)[2*i+1];
-#else
-	  ((short*)dummy_tx_b)[2*i+1]<<4;
-#endif
+	((short*)&phy_vars_eNB->lte_eNB_common_vars.txdata[0][aa][tx_offset])[0] = ((short*)dummy_tx_b)[2*i]<<openair0_cfg[0].iq_txshift;
+	
+	((short*)&phy_vars_eNB->lte_eNB_common_vars.txdata[0][aa][tx_offset])[1] = ((short*)dummy_tx_b)[2*i+1]<<openair0_cfg[0].iq_txshift;
 
+	printf("dddddddddddddddddddddd%d\n\n\n\n",openair0_cfg[0].iq_txshift);
+  
      }
      // if S-subframe switch to RX in second subframe
      if (subframe_select(&phy_vars_eNB->lte_frame_parms,subframe) == SF_S) {
@@ -1921,14 +1894,16 @@ static void* eNB_thread( void* arg )
       // USRP_DEBUG is active
       rt_sleep_ns(1000000);
 #endif
-      /* FT configurable tx lauch delay (in slots )*/
+      /* FT configurable tx lauch delay (in slots): txlaunch_wait, txlaunch_wait_slotcount is device specific and 
+	 set in the corresponding library (with txlaunch_wait=1 and txlaunch_wait_slotcount=1 the check is as it previously was) */
+      /* old check:
+	 if ((frame>50) &&
+	 (tx_launched == 0) &&
+	 (rx_pos >= (((2*hw_subframe)+1)*PHY_vars_eNB_g[0][0]->lte_frame_parms.samples_per_tti>>1))) {*/
       if ( (frame>50) && (tx_launched == 0) &&
 	   ((openair0_cfg[card].txlaunch_wait == 0) ||
 	    ((openair0_cfg[card].txlaunch_wait == 1) &&
-	    (rx_pos >= (((2*hw_subframe)+openair0_cfg[card].txlaunch_wait_slotcount)*PHY_vars_eNB_g[0][0]->lte_frame_parms.samples_per_tti>>1))))) { 
-      /* if ((frame>50) &&
-	  (tx_launched == 0) &&
-          (rx_pos >= (((2*hw_subframe)+1)*PHY_vars_eNB_g[0][0]->lte_frame_parms.samples_per_tti>>1))) {*/
+	     (rx_pos >= (((2*hw_subframe)+openair0_cfg[card].txlaunch_wait_slotcount)*PHY_vars_eNB_g[0][0]->lte_frame_parms.samples_per_tti>>1))))) { 
 	
         tx_launched = 1;
 
@@ -2222,12 +2197,7 @@ static void get_options (int argc, char **argv)
 
    case LONG_OPTION_DUMP_FRAME:
      mode = rx_dump_frame;
-     break;
-
-    case 'M':
-      local_remote_radio=atoi(optarg);
-      break;
-
+     break;   
     case 'A':
       timing_advance = atoi (optarg);
       break;
@@ -3001,11 +2971,6 @@ int main( int argc, char **argv )
 
   for (card=0; card<MAX_CARDS; card++) {
 
-#ifdef EXMIMO
-/* FT: for all other devices the iq_txshift value is setup in the device library */
-       openair0_cfg[card].iq_txshift=4;
-#endif
-
     if(frame_parms[0]->N_RB_DL == 100) {
       if (frame_parms[0]->threequarter_fs) {
 	openair0_cfg[card].sample_rate=23.04e6;
@@ -3151,10 +3116,6 @@ int main( int argc, char **argv )
     }
   }   
   
-  //for EXMIMO
-  //openair0_cfg[0].iq_rxrescale=15;  /* default value if build with EXMIMO */
-  //rxrescale=openair0_cfg[0].iq_rxrescale; /* see comments near RX_IQRESCALELEN definition */
-  
   printf("Done\n");
 
   mac_xface = malloc(sizeof(MAC_xface));
-- 
GitLab