// printf("trx_read <- USRP TS %lu (offset %d sf %d, f %d, first_rx %d)\n", proc->timestamp_rx,eNB->ts_offset,proc->subframe_rx,proc->frame_rx,proc->first_rx);
LOG_D(PHY,"Running eNB prach procedures\n");
prach_procedures(eNB
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
,0
#endif
);
if(proc->first_rx==0){
if(proc->subframe_rx!=*subframe){
LOG_E(PHY,"rx_rf: Received Timestamp (%"PRId64") doesn't correspond to the time we think it is (proc->subframe_rx %d, subframe %d)\n",proc->timestamp_rx,proc->subframe_rx,*subframe);
LOG_E(PHY,"rx_rf: Received Timestamp (%"PRId64") doesn't correspond to the time we think it is (proc->frame_rx %d frame %d, frame_offset %d, f2 %d)\n",proc->timestamp_rx,proc->frame_rx,*frame,
proc->frame_offset,f2);
exit_fun("Exiting");
}
}else{
proc->first_rx--;
*frame=proc->frame_rx;
*subframe=proc->subframe_rx;
}
#if (LTE_RRC_VERSION >= MAKE_VERSION(14, 0, 0))
/*!
* \brief The prach receive thread of eNB for BL/CE UEs.
* \param param is a \ref eNB_proc_t structure which contains the info what to process.
* \returns a pointer to an int. The storage is not on the heap and must not be freed.
LOG_E(PHY,"rx_fh_if5: Received Timestamp doesn't correspond to the time we think it is (proc->subframe_rx %d, subframe %d)\n",proc->subframe_rx,*subframe);
exit_fun("Exiting");
>>>>>>>ae0494b0bc431bf664e300b0b5a10f348d6b6757
}
if(oai_exit)break;
// wake up thread for PRACH RX
if(pthread_mutex_lock(&proc->mutex_prach_br)!=0){
LOG_E(PHY,"[eNB] ERROR pthread_mutex_lock for eNB PRACH thread %d (IC %d)\n",proc->thread_index,proc->instance_cnt_prach_br);
exit_fun("error locking mutex_prach");
return;
}
LOG_D(PHY,"Running eNB prach procedures for BL/CE UEs\n");