diff --git a/openair1/PHY/LTE_TRANSPORT/prach.c b/openair1/PHY/LTE_TRANSPORT/prach.c index 15c7bda04561a4e5fa199ada878bad03d11fb6c4..0f806e2ea1e7bd38fed9619f9db1d9f1c0d40e69 100644 --- a/openair1/PHY/LTE_TRANSPORT/prach.c +++ b/openair1/PHY/LTE_TRANSPORT/prach.c @@ -1272,9 +1272,10 @@ void rx_prach(PHY_VARS_eNB *eNB, //send prachF to RCC return; } - else if (eNB->node_function == NGFI_RCC_IF4) { + // in case of RCC and prach received rx_thread wakes up prach + //else if (eNB->node_function == NGFI_RCC_IF4) { //wait for prachF from RRU and continue with PRACH processing - } + //} diff --git a/openair1/SCHED/phy_procedures_lte_eNb.c b/openair1/SCHED/phy_procedures_lte_eNb.c index c0165bc2e6cd78df133e31a69824dec2122f15b3..785001e8f44e6526e30276ddb161adca885b59b6 100755 --- a/openair1/SCHED/phy_procedures_lte_eNb.c +++ b/openair1/SCHED/phy_procedures_lte_eNb.c @@ -2498,7 +2498,7 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl eNB_proc_t *proc = &eNB->proc; int subframe = proc->subframe_rx; int frame = proc->frame_rx; - + int symbol_number, symbol_mask, symbol_mask_full, prach_rx; if (subframe==9) { subframe=0; @@ -2577,10 +2577,30 @@ void phy_procedures_eNB_common_RX(PHY_VARS_eNB *eNB,const uint8_t abstraction_fl } else if (eNB->node_function == NGFI_RCC_IF4) { // => acquisition from RRU (IF4) - // get frame/subframe information from IF4 interface - - //recv_IF4(eNB,subframe<<1); - //recv_IF4(eNB,1+(subframe<<1)); + // get frame/subframe information from IF4 interface + // timed loop (200 us) + + symbol_mask = 0; + symbol_mask_full = (1<<fp->symbols_per_tti)-1; + if (is_prach_subframe(fp,frame,subframe)>0) + prach_rx = 0; + else + prach_rx = 1; + + do { + recv_IF4(eNB, proc, &packet_type, &symbol_number); + if (is_prach_subframe(fp,frame,subframe)>0 && packet_type == PRACH) { + // wake up prach_rx + prach_rx = 1; + } + if (packet_type == PULFFT) + symbol_mask = symbol_mask | (1<<symbol_number); + + } while( (symbol_mask != symbol_mask_full) || (prach_rx == 0)); + + + //recv_IF4(eNB,subframe<<1); + //recv_IF4(eNB,1+(subframe<<1)); // Tobi aka mr monaco: ETH