diff --git a/openair1/PHY/LTE_TRANSPORT/if4_tools.c b/openair1/PHY/LTE_TRANSPORT/if4_tools.c index 572bcd73b70413d4962d5d124bf3e69a6fc31144..d492af16a713c3b1141f279aaec38024627e0162 100644 --- a/openair1/PHY/LTE_TRANSPORT/if4_tools.c +++ b/openair1/PHY/LTE_TRANSPORT/if4_tools.c @@ -96,7 +96,7 @@ void send_IF4(PHY_VARS_eNB *eNB, int frame, int subframe, uint16_t packet_type, } else if (packet_type == IF4_PULFFT) { db_fulllength = 12*fp->N_RB_UL; db_halflength = (db_fulllength)>>1; - slotoffsetF = (subframe)*(fp->ofdm_symbol_size)*((fp->Ncp==1) ? 12 : 14) + 1; + slotoffsetF = 1; blockoffsetF = slotoffsetF + fp->ofdm_symbol_size - db_halflength - 1; IF4_header_t *ul_header = (IF4_header_t *)(tx_buffer + MAC_HEADER_SIZE_BYTES); @@ -212,7 +212,7 @@ void recv_IF4(PHY_VARS_eNB *eNB, int *frame, int *subframe, uint16_t *packet_typ } else if (*packet_type == IF4_PULFFT) { *symbol_number = ((packet_header->frame_status)>>26)&0x000f; - slotoffsetF = (*symbol_number)*(fp->ofdm_symbol_size) + (*subframe)*(fp->ofdm_symbol_size)*((fp->Ncp==1) ? 12 : 14) + 1; + slotoffsetF = (*symbol_number)*(fp->ofdm_symbol_size) + 1; blockoffsetF = slotoffsetF + fp->ofdm_symbol_size - db_halflength - 1; for (element_id=0; element_id<db_halflength; element_id++) { diff --git a/openair1/PHY/LTE_TRANSPORT/prach.c b/openair1/PHY/LTE_TRANSPORT/prach.c index 752aee11cd5ea3b6de936b4f93e0137607026a36..471b572a5642f1a32836b589e6d8093b05f5f602 100644 --- a/openair1/PHY/LTE_TRANSPORT/prach.c +++ b/openair1/PHY/LTE_TRANSPORT/prach.c @@ -1104,12 +1104,7 @@ void rx_prach(PHY_VARS_eNB *eNB, for (aa=0; aa<nb_ant_rx; aa++) { prach[aa] = (int16_t*)&eNB->common_vars.rxdata[0][aa][subframe*eNB->frame_parms.samples_per_tti-eNB->N_TA_offset]; } - - int energy = dB_fixed(signal_energy(prach[0], eNB->frame_parms.samples_per_tti)); - //if (energy >= 45) { - // printf("prach subframe energy %d\n",energy); - //} - + // First compute physical root sequence if (restricted_set == 0) { if (Ncs_config>15) { @@ -1290,13 +1285,6 @@ void rx_prach(PHY_VARS_eNB *eNB, send_IF4(eNB, eNB->proc.frame_rx, eNB->proc.subframe_rx, IF4_PRACH, k); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_SEND_IF4, 0 ); - energy = dB_fixed(signal_energy(&rxsigF[0][k], 839)); - if (energy >=45) { - printf("<frame %d> prach freq-domain energy %d\n",eNB->proc.frame_rx, energy); - //write_output("beforecomp.m","rxF",&rxsigF[0][k],839*2,1,0); - //exit(1); - } - return; } else if (eNB->node_function == NGFI_RCC_IF4) { k = (12*n_ra_prb) - 6*eNB->frame_parms.N_RB_UL; @@ -1313,13 +1301,6 @@ void rx_prach(PHY_VARS_eNB *eNB, memmove((&rxsigF[0][k]), (&rxsigF[0][0]), 839*2*sizeof(int16_t)); - - energy = dB_fixed(signal_energy(&rxsigF[0][k], 839)); - if (energy >=45) { - printf("<frame %d> prach freq-domain energy %d\n",eNB->proc.frame_rx, energy); - //write_output("aftercomp.m","rxF",&rxsigF[0][k],839*2,1,0); - //exit(1); - } } // in case of RCC and prach received rx_thread wakes up prach diff --git a/openair1/PHY/TOOLS/lte_dfts.c b/openair1/PHY/TOOLS/lte_dfts.c index 4fc332704bae044eab5a2d38372f1c2f2381bafd..00e1b0b5cef1f313e58305a66bb0ba71c968cba8 100644 --- a/openair1/PHY/TOOLS/lte_dfts.c +++ b/openair1/PHY/TOOLS/lte_dfts.c @@ -6817,7 +6817,7 @@ void dft60(int16_t *x,int16_t *y,unsigned char scale) for (i=0; i<60; i++) { y128[i] = mulhi_int16(y128[i],norm128); - printf("y[%d] = (%d,%d)\n",i,((int16_t*)&y128[i])[0],((int16_t*)&y128[i])[1]); +// printf("y[%d] = (%d,%d)\n",i,((int16_t*)&y128[i])[0],((int16_t*)&y128[i])[1]); } } diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf index 5a6a9a462bdeabd1fde804c0788cc52f7366c427..8ae0ddeb06809dd05ce73ae73c79a19f06fefb84 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.bladerfx40.conf @@ -23,6 +23,9 @@ eNBs = component_carriers = ( { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; frame_type = "FDD"; tdd_config = 3; tdd_config_s = 0; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf index f1160e78ca43cfc91050d0e278e467e96baeca1a..7bf097875d955dcf3326c780caed93eb44d4fbda 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.exmimo2.conf @@ -23,6 +23,9 @@ eNBs = component_carriers = ( { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; frame_type = "FDD"; tdd_config = 3; tdd_config_s = 0; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.lmssdr.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.lmssdr.conf index 47e2179d18a264782163ec0ecae9ceceddb6a495..a407aaecf1f4f36f2982b2607a2dd576311217de 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.lmssdr.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.lmssdr.conf @@ -23,6 +23,9 @@ eNBs = component_carriers = ( { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; frame_type = "FDD"; tdd_config = 3; tdd_config_s = 0; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf index c73c4ef80914e3cf182ea6cbc37ceb6c4458d5ba..7ec2264444d9f5422c7a50b6e95c2fd2b2c49a5c 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.conf @@ -17,7 +17,7 @@ eNBs = mobile_country_code = "208"; - mobile_network_code = "93"; + mobile_network_code = "92"; ////////// Physical parameters: @@ -34,7 +34,7 @@ eNBs = downlink_frequency = 2660000000L; uplink_frequency_offset = -120000000; Nid_cell = 0; - N_RB_DL = 25; + N_RB_DL = 50; Nid_cell_mbsfn = 0; nb_antennas_tx = 1; nb_antennas_rx = 1; @@ -133,7 +133,7 @@ eNBs = }; ////////// MME parameters: - mme_ip_address = ( { ipv4 = "127.0.0.3"; + mme_ip_address = ( { ipv4 = "192.168.12.26"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -142,11 +142,11 @@ eNBs = NETWORK_INTERFACES : { - ENB_INTERFACE_NAME_FOR_S1_MME = "lo"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24"; + ENB_INTERFACE_NAME_FOR_S1_MME = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.147/24"; - ENB_INTERFACE_NAME_FOR_S1U = "lo"; - ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24"; + ENB_INTERFACE_NAME_FOR_S1U = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.147/24"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 }; diff --git a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpx310.conf b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpx310.conf index d4b88383e249fac091e2e8bbb6ecfe779398e191..65f58fe33f7911b4be4d2ab396ec34bfa1e5c3ff 100644 --- a/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpx310.conf +++ b/targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpx310.conf @@ -22,6 +22,9 @@ eNBs = component_carriers = ( { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; frame_type = "FDD"; tdd_config = 3; tdd_config_s = 0; diff --git a/targets/RT/USER/lte-enb.c b/targets/RT/USER/lte-enb.c index 93795c72209cec9bd3296d387d1941518e52ef2e..0d9002d8498dc773724fddc42746d30d4ab72fb8 100644 --- a/targets/RT/USER/lte-enb.c +++ b/targets/RT/USER/lte-enb.c @@ -302,6 +302,7 @@ static void* eNB_thread_rxtx( void* param ) { uint16_t packet_type; uint32_t symbol_number=0; + uint32_t symbol_mask, symbol_mask_full; uint8_t seqno=0; @@ -503,10 +504,16 @@ static void* eNB_thread_rxtx( void* param ) { } } else if (PHY_vars_eNB_g[0][proc->CC_id]->node_function == NGFI_RRU_IF4) { /// **** recv_IF4 of txdataF from RCC **** /// + symbol_number = 0; + symbol_mask = 0; + symbol_mask_full = (1<<PHY_vars_eNB_g[0][proc->CC_id]->frame_parms.symbols_per_tti)-1; + VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 1 ); do { recv_IF4(PHY_vars_eNB_g[0][proc->CC_id], &proc->frame_tx, &proc->subframe_tx, &packet_type, &symbol_number); - } while (symbol_number < PHY_vars_eNB_g[0][proc->CC_id]->frame_parms.symbols_per_tti-1); + symbol_mask = symbol_mask | (1<<symbol_number); + + } while (symbol_mask != symbol_mask_full); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 0 ); @@ -812,13 +819,12 @@ static void* eNB_thread_asynch_rx( void* param ) { VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 0 ); if (packet_type == IF4_PULFFT) { - symbol_mask = symbol_mask | (1<<symbol_number); - + symbol_mask = symbol_mask | (1<<symbol_number); + prach_rx = (is_prach_subframe(fp, proc->frame_rx, proc->subframe_rx)>0) ? 1 : 0; } else if (packet_type == IF4_PRACH) { - // wake up thread for PRACH RX - prach_rx = 1; + prach_rx = 0; } - } while( (symbol_mask != symbol_mask_full) && (prach_rx == 0)); + } while( (symbol_mask != symbol_mask_full) || (prach_rx == 1)); if (proc->first_rx == 0) { if (subframe_rx < proc->subframe_rx+2){ @@ -977,7 +983,7 @@ static void* eNB_thread_FH( void* param ) { pthread_mutex_unlock(&sync_mutex); - printf( "got sync (eNB_thread FH)\n" ); + printf( "got sync (eNB_thread_FH)\n" ); #if defined(ENABLE_ITTI) wait_system_ready ("Waiting for eNB application to be ready %s\r", &start_eNB); @@ -1129,32 +1135,33 @@ static void* eNB_thread_FH( void* param ) { symbol_mask = 0; symbol_mask_full = (1<<fp->symbols_per_tti)-1; prach_rx = 0; - + do { // Blocking, we need a timeout on this !!!!!!!!!!!!!!!!!!!!!!! VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 1 ); recv_IF4(eNB, &proc->frame_rx, &proc->subframe_rx, &packet_type, &symbol_number); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_RECV_IF4, 0 ); if (packet_type == IF4_PULFFT) { - symbol_mask = symbol_mask | (1<<symbol_number); - + symbol_mask = symbol_mask | (1<<symbol_number); + prach_rx = (is_prach_subframe(fp, proc->frame_rx, proc->subframe_rx)>0) ? 1 : 0; } else if (packet_type == IF4_PRACH) { - // wake up thread for PRACH RX - prach_rx = 1; - } - } while( (symbol_mask != symbol_mask_full) && (prach_rx == 0)); + prach_rx = 0; + } + } while( (symbol_mask != symbol_mask_full) || (prach_rx == 1)); if (proc->first_rx == 0) { if (proc->subframe_rx != subframe){ LOG_E(PHY,"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"); + exit_fun("Exiting"); } if (proc->frame_rx != frame) { LOG_E(PHY,"Received Timestamp doesn't correspond to the time we think it is (proc->frame_rx %d frame %d)\n",proc->frame_rx,frame); - //exit_fun("Exiting"); + exit_fun("Exiting"); } } else { proc->first_rx = 0; + frame = proc->frame_rx; + subframe = proc->subframe_rx; } VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TS, proc->timestamp_rx&0xffffffff );