From 2960d27a47dbec13fedf667101bcbfc0ac8b14d5 Mon Sep 17 00:00:00 2001
From: Khalid Ahmed <ahmedkd@iis.fraunhofer.de>
Date: Fri, 10 May 2019 15:37:20 +0200
Subject: [PATCH] enabling PUSCH UE side in RT

---
 executables/nr-ue.c                        | 7 ++++---
 executables/nr-uesoftmodem.c               | 1 +
 openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c | 9 ++++++++-
 3 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/executables/nr-ue.c b/executables/nr-ue.c
index de972d28f6..3127deeda7 100644
--- a/executables/nr-ue.c
+++ b/executables/nr-ue.c
@@ -421,7 +421,7 @@ void UE_processing(void *arg) {
   processSlotRX(UE, proc);
   //printf(">>> mac ended\n");
   // Prepare the future Tx data
-#if 0
+/*
 #ifndef NO_RAT_NR
 
   if (slot_select_nr(&UE->frame_parms, proc->frame_tx, proc->nr_tti_tx) & NR_UPLINK_SLOT)
@@ -429,11 +429,12 @@ void UE_processing(void *arg) {
   if ((subframe_select( &UE->frame_parms, proc->subframe_tx) == SF_UL) ||
       (UE->frame_parms.frame_type == FDD) )
 #endif
+*/
     if (UE->mode != loop_through_memory)
-      phy_procedures_nrUE_TX(UE,proc,0,0,UE->mode,no_relay);
+      phy_procedures_nrUE_TX(UE,proc,0,0);
 
   //phy_procedures_UE_TX(UE,proc,0,0,UE->mode,no_relay);
-#endif
+
 #if 0
 
   if ((subframe_select( &UE->frame_parms, proc->subframe_tx) == SF_S) &&
diff --git a/executables/nr-uesoftmodem.c b/executables/nr-uesoftmodem.c
index 9a4a0cdf70..b78913e1bd 100644
--- a/executables/nr-uesoftmodem.c
+++ b/executables/nr-uesoftmodem.c
@@ -777,6 +777,7 @@ int main( int argc, char **argv ) {
     PHY_vars_UE_g[0][CC_id]->rf_map.chain=CC_id+chain_offset;
 #if defined(OAI_USRP) || defined(OAI_ADRV9371_ZC706)
     PHY_vars_UE_g[0][CC_id]->hw_timing_advance = timing_advance;
+    PHY_vars_UE_g[0][CC_id]->timing_advance = timing_advance;
 #else
     PHY_vars_UE_g[0][CC_id]->hw_timing_advance = 160;
 #endif
diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
index 2b59f93160..3de108863e 100644
--- a/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
+++ b/openair1/PHY/NR_UE_TRANSPORT/nr_ulsch_ue.c
@@ -384,11 +384,18 @@ uint8_t nr_ue_pusch_common_procedures(PHY_VARS_NR_UE *UE,
   int tx_offset, ap;
   int32_t **txdata;
   int32_t **txdataF;
+  int timing_advance;
 
   /////////////////////////IFFT///////////////////////
   ///////////
 
-  tx_offset = slot*frame_parms->samples_per_slot;
+#if defined(EXMIMO) || defined(OAI_USRP) || defined(OAI_BLADERF) || defined(OAI_LMSSDR)  || defined(OAI_ADRV9371_ZC706)
+  timing_advance = UE->timing_advance;
+#else
+  timing_advance = 0;
+#endif
+
+  tx_offset = slot*frame_parms->samples_per_slot - timing_advance;
   txdata = UE->common_vars.txdata;
   txdataF = UE->common_vars.txdataF;
 
-- 
2.26.2