From a0e193c5e8473314495502d7c852eb3d4be24594 Mon Sep 17 00:00:00 2001
From: Raymond Knopp <raymond.knopp@eurecom.fr>
Date: Sun, 27 May 2018 05:27:58 +0200
Subject: [PATCH] fixing conflicts

---
 targets/RT/USER/lte-ru.c | 253 ---------------------------------------
 1 file changed, 253 deletions(-)

diff --git a/targets/RT/USER/lte-ru.c b/targets/RT/USER/lte-ru.c
index 300ba3414a..c9d13a8960 100644
--- a/targets/RT/USER/lte-ru.c
+++ b/targets/RT/USER/lte-ru.c
@@ -1574,265 +1574,12 @@ static void* ru_stats_thread(void* param) {
   return(NULL);
 }
 
-static void* ru_thread_tx( void* param ) {
-  RU_t *ru         = (RU_t*)param;
-  RU_proc_t *proc  = &ru->proc;
-  cpu_set_t cpuset;
-  CPU_ZERO(&cpuset);
-
-
-  thread_top_init("ru_thread_tx",1,400000,500000,500000);
-
-  //CPU_SET(5, &cpuset);
-  //pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
-  //wait_sync("ru_thread_tx");
-
-  wait_on_condition(&proc->mutex_FH1,&proc->cond_FH1,&proc->instance_cnt_FH1,"ru_thread_tx");
-
-  printf( "ru_thread_tx ready\n");
-  while (!oai_exit) {
-
-    VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME(VCD_SIGNAL_DUMPER_VARIABLES_CPUID_RU_THREAD_TX,sched_getcpu());
-    if (oai_exit) break;
-
-
-        LOG_D(PHY,"ru_thread_tx: Waiting for TX processing\n");
-        // wait until eNBs are finished subframe RX n and TX n+4
-    wait_on_condition(&proc->mutex_eNBs,&proc->cond_eNBs,&proc->instance_cnt_eNBs,"ru_thread_tx");
-    if (oai_exit) break;
-
-    // do TX front-end processing if needed (precoding and/or IDFTs)
-    if (ru->feptx_prec) ru->feptx_prec(ru);
-
-    // do OFDM if needed
-    if ((ru->fh_north_asynch_in == NULL) && (ru->feptx_ofdm)) ru->feptx_ofdm(ru);
-    if(!emulate_rf){
-      // do outgoing fronthaul (south) if needed
-      if ((ru->fh_north_asynch_in == NULL) && (ru->fh_south_out)) ru->fh_south_out(ru);
-
-      if (ru->fh_north_out) ru->fh_north_out(ru);
-        }
-    release_thread(&proc->mutex_eNBs,&proc->instance_cnt_eNBs,"ru_thread_tx");
-
-    pthread_mutex_lock( &proc->mutex_eNBs );
-    proc->ru_tx_ready++;
-    // the thread can now be woken up
-    if (pthread_cond_signal(&proc->cond_eNBs) != 0) {
-      LOG_E( PHY, "[eNB] ERROR pthread_cond_signal for eNB TXnp4 thread\n");
-      exit_fun( "ERROR pthread_cond_signal" );
-    }
-    pthread_mutex_unlock( &proc->mutex_eNBs );
-  }
-  release_thread(&proc->mutex_FH1,&proc->instance_cnt_FH1,"ru_thread_tx");
-  return 0;
-}
-
-
 
 
 
 
-static void* ru_thread( void* param ) {
 
 
-  RU_t               *ru      = (RU_t*)param;
-  RU_proc_t          *proc    = &ru->proc;
-  LTE_DL_FRAME_PARMS *fp      = &ru->frame_parms;
-  int                subframe =9;
-  int                frame    =1023; 
-  int			resynch_done = 0;
-  PHY_VARS_eNB **eNB_list = ru->eNB_list;
-  PHY_VARS_eNB *eNB=eNB_list[0];
-  eNB_proc_t *eNBproc = &eNB->proc;
-  int ret;
-
-  // set default return value
-  thread_top_init("ru_thread",0,870000,1000000,1000000);
-
-  LOG_I(PHY,"Starting RU %d (%s,%s),\n",ru->idx,eNB_functions[ru->function],eNB_timing[ru->if_timing]);
-
-  if (ru->has_ctrl_prt == 0){
-        // There is no control port: start everything here
-        
-	if (ru->if_south == LOCAL_RF){
-        	fill_rf_config(ru,ru->rf_config_file);
-      		init_frame_parms(&ru->frame_parms,1);
-        	ru->frame_parms.nb_antennas_rx = ru->nb_rx;
-        	phy_init_RU(ru);
-
-
-		ret = openair0_device_load(&ru->rfdevice,&ru->openair0_cfg);
-                
-		if (setup_RU_buffers(ru)!=0) {
-                  printf("Exiting, cannot initialize RU Buffers\n");
-                  exit(-1);
-                }
-		pthread_mutex_lock(&RC.ru_mutex);
-                RC.ru_mask &= ~(1<<ru->idx);
-                pthread_cond_signal(&RC.ru_cond);
-                pthread_mutex_unlock(&RC.ru_mutex);
-        }
-	pthread_mutex_lock(&RC.ru_mutex);
-        RC.ru_mask &= ~(1<<ru->idx);
-        pthread_cond_signal(&RC.ru_cond);
-        pthread_mutex_unlock(&RC.ru_mutex);
-
-	ru->state = RU_RUN;
-
-  }
-
-	
-  while (!oai_exit) {
-  
-    if (ru->if_south != LOCAL_RF && ru->is_slave==1) ru->wait_cnt = 100;
-    else                          ru->wait_cnt = 0;
-
-    // wait to be woken up
-    if (ru->function!=eNodeB_3GPP && ru->has_ctrl_prt == 1) {
-      if (wait_on_condition(&ru->proc.mutex_ru,&ru->proc.cond_ru_thread,&ru->proc.instance_cnt_ru,"ru_thread")<0) break;
-    }
-    else wait_sync("ru_thread");
-    
-    if (ru->is_slave == 0) AssertFatal(ru->state == RU_RUN,"ru-%d state = %s != RU_RUN\n",ru->idx,ru_states[ru->state]);
-    else if (ru->is_slave == 1) AssertFatal(ru->state == RU_SYNC || ru->state == RU_RUN,"ru %d state = %s != RU_SYNC or RU_RUN\n",ru->idx,ru_states[ru->state]);  
-    // Start RF device if any
-    if (ru->start_rf) {
-      if (ru->start_rf(ru) != 0)
-	LOG_E(HW,"Could not start the RF device\n");
-      else LOG_I(PHY,"RU %d rf device ready\n",ru->idx);
-    }
-    else LOG_D(PHY,"RU %d no rf device\n",ru->idx);
-    
-    
-    // if an asnych_rxtx thread exists
-    // wakeup the thread because the devices are ready at this point
-    
-    LOG_D(PHY,"Locking asynch mutex\n"); 
-    if ((ru->fh_south_asynch_in)||(ru->fh_north_asynch_in)) {
-      pthread_mutex_lock(&proc->mutex_asynch_rxtx);
-      proc->instance_cnt_asynch_rxtx=0;
-      pthread_mutex_unlock(&proc->mutex_asynch_rxtx);
-      pthread_cond_signal(&proc->cond_asynch_rxtx);
-    }
-    else LOG_D(PHY,"RU %d no asynch_south interface\n",ru->idx);
-    
-    // if this is a slave RRU, try to synchronize on the DL frequency
-    if ((ru->is_slave == 1) && (ru->if_south == LOCAL_RF)) do_ru_synch(ru);
-    
-    
-    LOG_D(PHY,"Starting steady-state operation\n");
-    // This is a forever while loop, it loops over subframes which are scheduled by incoming samples from HW devices
-    while (ru->state == RU_RUN) {
-      
-      // these are local subframe/frame counters to check that we are in synch with the fronthaul timing.
-      // They are set on the first rx/tx in the underly FH routines.
-      if (subframe==9) { 
-	subframe=0;
-	frame++;
-	frame&=1023;
-      } else {
-	subframe++;
-      }      
-      
-      
-      // synchronization on input FH interface, acquire signals/data and block
-      if (ru->stop_rf && ru->cmd == STOP_RU) {
-	ru->stop_rf(ru);
-	ru->state = RU_IDLE;
-	ru->cmd   = EMPTY;
-	LOG_I(PHY,"RU %d rf device stopped\n",ru->idx);
-	break;
-      }
-      else if (ru->cmd == STOP_RU) {
-	ru->state = RU_IDLE;
-	ru->cmd   = EMPTY;
-	LOG_I(PHY,"RU %d stopped\n",ru->idx);
-	break;
-      }
-      if (oai_exit == 1) break;
-      
-      if (ru->fh_south_in && ru->state == RU_RUN ) ru->fh_south_in(ru,&frame,&subframe);
-      else AssertFatal(1==0, "No fronthaul interface at south port");
-      
-      if (ru->wait_cnt > 0) {
-	
-	ru->wait_cnt--;
-        
-	
-	LOG_I(PHY,"RU thread %d, frame %d, subframe %d, wait_cnt %d \n",ru->idx, frame, subframe, ru->wait_cnt);
-	
-	if (ru->if_south!=LOCAL_RF && ru->wait_cnt <=20 && subframe == 5 && frame != RC.ru[0]->proc.frame_rx && resynch_done == 0) {
-	  // Send RRU_frame adjust
-	  RRU_CONFIG_msg_t rru_config_msg;
-	  rru_config_msg.type = RRU_frame_resynch;
-	  rru_config_msg.len  = sizeof(RRU_CONFIG_msg_t); // TODO: set to correct msg len
-	  ((uint16_t*)&rru_config_msg.msg[0])[0] = RC.ru[0]->proc.frame_rx;
-	  ru->cmd=WAIT_RESYNCH;
-	  LOG_D(PHY,"Sending Frame Resynch %d to RRU %d\n", RC.ru[0]->proc.frame_rx,ru->idx);
-	  AssertFatal((ru->ifdevice.trx_ctlsend_func(&ru->ifdevice,&rru_config_msg,rru_config_msg.len)!=-1),"Failed to send msg to RAU\n");
-	  resynch_done=1;
-	}
-	wakeup_eNBs(ru);
-      }
-      
-      else {
-	
-        LOG_D(PHY,"RU thread %d, frame %d, subframe %d \n",
-              ru->idx,frame,subframe);
-	
-        if ((ru->do_prach>0) && (is_prach_subframe(fp, proc->frame_rx, proc->subframe_rx)==1)) {
-	  LOG_D(PHY,"Waking up prach for %d.%d\n",proc->frame_rx,proc->subframe_rx);
-  	  wakeup_prach_ru(ru);
-        }
-#ifdef Rel14
-        else if ((ru->do_prach>0) && (is_prach_subframe(fp, proc->frame_rx, proc->subframe_rx)>1)) {
-	  wakeup_prach_ru_br(ru);
-        }
-#endif
-	
-        // adjust for timing offset between RU
-        if (ru->idx!=0) proc->frame_tx = (proc->frame_tx+proc->frame_offset)&1023;
-	
-        // At this point, all information for subframe has been received on FH interface
-        // If this proc is to provide synchronization, do so
-        wakeup_slaves(proc);
-	
-        // do RX front-end processing (frequency-shift, dft) if needed
-        if (ru->feprx) ru->feprx(ru);
-
-        // wakeup all eNB processes waiting for this RU
-        if (ru->num_eNB>0) wakeup_eNBs(ru);
-
-        // wait until eNBs are finished subframe RX n and TX n+4
-        wait_on_condition(&proc->mutex_eNBs,&proc->cond_eNBs,&proc->instance_cnt_eNBs,"ru_thread");
-
-
-        // do TX front-end processing if needed (precoding and/or IDFTs)
-        if (ru->feptx_prec) ru->feptx_prec(ru);
-	   
-        // do OFDM if needed
-        if ((ru->fh_north_asynch_in == NULL) && (ru->feptx_ofdm)) ru->feptx_ofdm(ru);
-        // do outgoing fronthaul (south) if needed
-        if ((ru->fh_north_asynch_in == NULL) && (ru->fh_south_out)) ru->fh_south_out(ru);
-	 
-        if (ru->fh_north_out) ru->fh_north_out(ru);
-      }
-    }
-    
-  } // while !oai_exit
-  
-  
-  printf( "Exiting ru_thread \n");
-  
-  if (ru->stop_rf != NULL) {
-    if (ru->stop_rf(ru) != 0)
-      LOG_E(HW,"Could not stop the RF device\n");
-    else LOG_I(PHY,"RU %d rf device stopped\n",ru->idx);
-  }
-  
-  return NULL;
-
-}
 
 
 // This thread run the initial synchronization like a UE
-- 
2.26.2