changes in oaisim to support RRU + fronthaul. minor bugs corrected in UE.
This commit is contained in:
@@ -1929,6 +1929,7 @@ add_executable(oaisim_nos1
|
|||||||
${OPENAIR_TARGETS}/SIMU/USER/oaisim_functions.c
|
${OPENAIR_TARGETS}/SIMU/USER/oaisim_functions.c
|
||||||
${OPENAIR_TARGETS}/SIMU/USER/event_handler.c
|
${OPENAIR_TARGETS}/SIMU/USER/event_handler.c
|
||||||
${OPENAIR_TARGETS}/SIMU/USER/oaisim.c
|
${OPENAIR_TARGETS}/SIMU/USER/oaisim.c
|
||||||
|
${OPENAIR_TARGETS}/ARCH/COMMON/common_lib.c
|
||||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||||
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
|
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
|
||||||
${OPENAIR_TARGETS}/COMMON/create_tasks.c
|
${OPENAIR_TARGETS}/COMMON/create_tasks.c
|
||||||
|
|||||||
@@ -645,6 +645,12 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1
|
|||||||
|
|
||||||
#else //normal case (simulation)
|
#else //normal case (simulation)
|
||||||
prach_start = subframe*ue->frame_parms.samples_per_tti-ue->N_TA_offset;
|
prach_start = subframe*ue->frame_parms.samples_per_tti-ue->N_TA_offset;
|
||||||
|
LOG_D(PHY,"[UE %d] prach_start %d, rx_offset %d, hw_timing_advance %d, N_TA_offset %d\n", ue->Mod_id,
|
||||||
|
prach_start,
|
||||||
|
ue->rx_offset,
|
||||||
|
ue->hw_timing_advance,
|
||||||
|
ue->N_TA_offset);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -1074,6 +1080,8 @@ int32_t generate_prach( PHY_VARS_UE *ue, uint8_t eNB_id, uint8_t subframe, uint1
|
|||||||
#ifdef PRACH_DEBUG
|
#ifdef PRACH_DEBUG
|
||||||
write_output("prach_txF0.m","prachtxF0",prachF,prach_len-Ncp,1,1);
|
write_output("prach_txF0.m","prachtxF0",prachF,prach_len-Ncp,1,1);
|
||||||
write_output("prach_tx0.m","prachtx0",prach+(Ncp<<1),prach_len-Ncp,1,1);
|
write_output("prach_tx0.m","prachtx0",prach+(Ncp<<1),prach_len-Ncp,1,1);
|
||||||
|
write_output("txsig.m","txs",(int16_t*)(&ue->common_vars.txdata[0][0]),2*ue->frame_parms.samples_per_tti,1,1);
|
||||||
|
exit(-1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return signal_energy( (int*)prach, 256 );
|
return signal_energy( (int*)prach, 256 );
|
||||||
@@ -1125,7 +1133,8 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
|||||||
int fft_size,log2_ifft_size;
|
int fft_size,log2_ifft_size;
|
||||||
uint8_t nb_ant_rx = 1; //eNB->frame_parms.nb_antennas_rx;
|
uint8_t nb_ant_rx = 1; //eNB->frame_parms.nb_antennas_rx;
|
||||||
|
|
||||||
// int en;
|
int en;
|
||||||
|
|
||||||
|
|
||||||
for (aa=0; aa<nb_ant_rx; aa++) {
|
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];
|
prach[aa] = (int16_t*)&eNB->common_vars.rxdata[0][aa][subframe*eNB->frame_parms.samples_per_tti-eNB->N_TA_offset];
|
||||||
@@ -1327,9 +1336,16 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
|||||||
/// **** send_IF4 of rxsigF to RCC **** ///
|
/// **** send_IF4 of rxsigF to RCC **** ///
|
||||||
send_IF4p5(eNB, eNB->proc.frame_prach, eNB->proc.subframe_prach, IF4p5_PRACH, k);
|
send_IF4p5(eNB, eNB->proc.frame_prach, eNB->proc.subframe_prach, IF4p5_PRACH, k);
|
||||||
|
|
||||||
// en = dB_fixed(signal_energy(&rxsigF[0][k],840));
|
/*
|
||||||
// if (en>60)
|
en = dB_fixed(signal_energy(&rxsigF[0][k],840));
|
||||||
// printf("PRACH: Frame %d, Subframe %d => %d dB\n",eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
|
printf("Sending PRACH, k %d,n_ra_prb %d, N_RB_UL %d, en %d\n",k,n_ra_prb,eNB->frame_parms.N_RB_UL,en);
|
||||||
|
if (en>60) {
|
||||||
|
printf("PRACH: Frame %d, Subframe %d => %d dB\n",eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
|
||||||
|
write_output("prach_rx0.m","prach_rx0",(int16_t*)&rxsigF[0][k],839,1,1);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
return;
|
return;
|
||||||
} else if (eNB->node_function == NGFI_RCC_IF4p5) {
|
} else if (eNB->node_function == NGFI_RCC_IF4p5) {
|
||||||
k = (12*n_ra_prb) - 6*eNB->frame_parms.N_RB_UL;
|
k = (12*n_ra_prb) - 6*eNB->frame_parms.N_RB_UL;
|
||||||
@@ -1347,10 +1363,15 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
|||||||
(&rxsigF[0][0]),
|
(&rxsigF[0][0]),
|
||||||
839*2*sizeof(int16_t));
|
839*2*sizeof(int16_t));
|
||||||
|
|
||||||
//en = dB_fixed(signal_energy(&rxsigF[0][k],840));
|
/*
|
||||||
// if (en>60)
|
en = dB_fixed(signal_energy(&rxsigF[0][k],840));
|
||||||
//printf("PRACH: Frame %d, Subframe %d => %d dB\n",eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
|
printf("Receiving PRACH, k %d,n_ra_prb %d, N_RB_UL %d, en %d\n",k,n_ra_prb,eNB->frame_parms.N_RB_UL,en);
|
||||||
|
if (en>60) {
|
||||||
|
printf("PRACH: Frame %d, Subframe %d => %d dB\n",eNB->proc.frame_rx,eNB->proc.subframe_rx,en);
|
||||||
|
write_output("prach_rx0.m","prach_rx0",(int16_t*)&rxsigF[0][k],839,1,1);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
// in case of RCC and prach received rx_thread wakes up prach
|
// in case of RCC and prach received rx_thread wakes up prach
|
||||||
@@ -1523,7 +1544,7 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
|||||||
|
|
||||||
#ifdef PRACH_DEBUG
|
#ifdef PRACH_DEBUG
|
||||||
|
|
||||||
// if (en>40) {
|
if (en>40) {
|
||||||
k = (12*n_ra_prb) - 6*eNB->frame_parms.N_RB_UL;
|
k = (12*n_ra_prb) - 6*eNB->frame_parms.N_RB_UL;
|
||||||
|
|
||||||
if (k<0)
|
if (k<0)
|
||||||
@@ -1537,7 +1558,7 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
|||||||
write_output("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
|
write_output("prach_rxF_comp0.m","prach_rxF_comp0",prachF,1024,1,1);
|
||||||
write_output("prach_ifft0.m","prach_t0",prach_ifft[0],1024,1,1);
|
write_output("prach_ifft0.m","prach_t0",prach_ifft[0],1024,1,1);
|
||||||
exit(-1);
|
exit(-1);
|
||||||
// }
|
}
|
||||||
#endif
|
#endif
|
||||||
} // new dft
|
} // new dft
|
||||||
|
|
||||||
@@ -1551,7 +1572,7 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
|||||||
for (aa=0; aa<nb_ant_rx; aa++) {
|
for (aa=0; aa<nb_ant_rx; aa++) {
|
||||||
lev += (int32_t)prach_ifft[aa][(preamble_shift2+i)<<1]*prach_ifft[aa][(preamble_shift2+i)<<1] + (int32_t)prach_ifft[aa][1+((preamble_shift2+i)<<1)]*prach_ifft[aa][1+((preamble_shift2+i)<<1)];
|
lev += (int32_t)prach_ifft[aa][(preamble_shift2+i)<<1]*prach_ifft[aa][(preamble_shift2+i)<<1] + (int32_t)prach_ifft[aa][1+((preamble_shift2+i)<<1)]*prach_ifft[aa][1+((preamble_shift2+i)<<1)];
|
||||||
}
|
}
|
||||||
|
|
||||||
levdB = dB_fixed_times10(lev);
|
levdB = dB_fixed_times10(lev);
|
||||||
|
|
||||||
if (levdB>preamble_energy_list[preamble_index] ) {
|
if (levdB>preamble_energy_list[preamble_index] ) {
|
||||||
@@ -1559,12 +1580,12 @@ void rx_prach(PHY_VARS_eNB *eNB,
|
|||||||
preamble_delay_list[preamble_index] = (i*fft_size)>>log2_ifft_size;
|
preamble_delay_list[preamble_index] = (i*fft_size)>>log2_ifft_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PRACH_DEBUG
|
#ifdef PRACH_DEBUG
|
||||||
LOG_D(PHY,"[RAPROC] Preamble %d => %d dB, %d (shift %d (%d), NCS2 %d(%d), Ncp %d)\n",preamble_index,preamble_energy_list[preamble_index],preamble_delay_list[preamble_index],preamble_shift2,
|
LOG_D(PHY,"[RAPROC] Preamble %d => %d dB, %d (shift %d (%d), NCS2 %d(%d), Ncp %d)\n",preamble_index,preamble_energy_list[preamble_index],preamble_delay_list[preamble_index],preamble_shift2,
|
||||||
preamble_shift, NCS2,NCS,Ncp);
|
preamble_shift, NCS2,NCS,Ncp);
|
||||||
#endif
|
|
||||||
// exit(-1);
|
// exit(-1);
|
||||||
|
#endif
|
||||||
|
|
||||||
}// preamble_index
|
}// preamble_index
|
||||||
|
|
||||||
stop_meas(&eNB->rx_prach);
|
stop_meas(&eNB->rx_prach);
|
||||||
|
|||||||
@@ -415,7 +415,7 @@ void ulsch_modulation(int32_t **txdataF,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (first_rb >25 ) {
|
if (first_rb > frame_parms->N_RB_UL) {
|
||||||
printf("ulsch_modulation.c: Frame %d, Subframe %d Illegal first_rb %d\n",frame,subframe,first_rb);
|
printf("ulsch_modulation.c: Frame %d, Subframe %d Illegal first_rb %d\n",frame,subframe,first_rb);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2017,7 +2017,7 @@ void prach_procedures(PHY_VARS_eNB *eNB) {
|
|||||||
eNB->UE_stats[(uint32_t)UE_id].UE_timing_offset = preamble_delay_list[preamble_max]&0x1FFF; //limit to 13 (=11+2) bits
|
eNB->UE_stats[(uint32_t)UE_id].UE_timing_offset = preamble_delay_list[preamble_max]&0x1FFF; //limit to 13 (=11+2) bits
|
||||||
|
|
||||||
eNB->UE_stats[(uint32_t)UE_id].sector = 0;
|
eNB->UE_stats[(uint32_t)UE_id].sector = 0;
|
||||||
LOG_D(PHY,"[eNB %d/%d][RAPROC] Frame %d, subframe %d Initiating RA procedure (UE_id %d) with preamble %d, energy %d.%d dB, delay %d\n",
|
LOG_I(PHY,"[eNB %d/%d][RAPROC] Frame %d, subframe %d Initiating RA procedure (UE_id %d) with preamble %d, energy %d.%d dB, delay %d\n",
|
||||||
eNB->Mod_id,
|
eNB->Mod_id,
|
||||||
eNB->CC_id,
|
eNB->CC_id,
|
||||||
frame,
|
frame,
|
||||||
@@ -2750,6 +2750,7 @@ void eNB_fep_full(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc_rxtx) {
|
|||||||
|
|
||||||
if (eNB->node_function == NGFI_RRU_IF4p5) {
|
if (eNB->node_function == NGFI_RRU_IF4p5) {
|
||||||
/// **** send_IF4 of rxdataF to RCC (no prach now) **** ///
|
/// **** send_IF4 of rxdataF to RCC (no prach now) **** ///
|
||||||
|
LOG_D(PHY,"send_IF4p5 (PULFFT): frame %d, subframe %d\n",proc_rxtx->frame_rx,proc_rxtx->subframe_rx);
|
||||||
send_IF4p5(eNB, proc_rxtx->frame_rx, proc_rxtx->subframe_rx, IF4p5_PULFFT, 0);
|
send_IF4p5(eNB, proc_rxtx->frame_rx, proc_rxtx->subframe_rx, IF4p5_PULFFT, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3070,12 +3071,15 @@ void phy_procedures_eNB_uespec_RX(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc,const
|
|||||||
LOG_D(PHY,"[eNB][PUSCH %d] Increasing to round %d\n",harq_pid,eNB->ulsch[i]->harq_processes[harq_pid]->round);
|
LOG_D(PHY,"[eNB][PUSCH %d] Increasing to round %d\n",harq_pid,eNB->ulsch[i]->harq_processes[harq_pid]->round);
|
||||||
|
|
||||||
if (eNB->ulsch[i]->Msg3_flag == 1) {
|
if (eNB->ulsch[i]->Msg3_flag == 1) {
|
||||||
|
|
||||||
LOG_D(PHY,"[eNB %d/%d][RAPROC] frame %d, subframe %d, UE %d: Error receiving ULSCH (Msg3), round %d/%d\n",
|
LOG_D(PHY,"[eNB %d/%d][RAPROC] frame %d, subframe %d, UE %d: Error receiving ULSCH (Msg3), round %d/%d\n",
|
||||||
eNB->Mod_id,
|
eNB->Mod_id,
|
||||||
eNB->CC_id,
|
eNB->CC_id,
|
||||||
frame,subframe, i,
|
frame,subframe, i,
|
||||||
eNB->ulsch[i]->harq_processes[harq_pid]->round-1,
|
eNB->ulsch[i]->harq_processes[harq_pid]->round-1,
|
||||||
fp->maxHARQ_Msg3Tx-1);
|
fp->maxHARQ_Msg3Tx-1);
|
||||||
|
/*dump_ulsch(eNB,proc,i);
|
||||||
|
exit(-1);*/
|
||||||
|
|
||||||
LOG_D(PHY,"[eNB %d][PUSCH %d] frame %d subframe %d RNTI %x RX power (%d,%d) RSSI (%d,%d) N0 (%d,%d) dB ACK (%d,%d), decoding iter %d\n",
|
LOG_D(PHY,"[eNB %d][PUSCH %d] frame %d subframe %d RNTI %x RX power (%d,%d) RSSI (%d,%d) N0 (%d,%d) dB ACK (%d,%d), decoding iter %d\n",
|
||||||
eNB->Mod_id,harq_pid,
|
eNB->Mod_id,harq_pid,
|
||||||
|
|||||||
@@ -2189,11 +2189,12 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
|
|||||||
subframe_tx,
|
subframe_tx,
|
||||||
ue->ulsch[eNB_id]->o_ACK);
|
ue->ulsch[eNB_id]->o_ACK);
|
||||||
|
|
||||||
reset_ack(&ue->frame_parms,
|
if (ue->dlsch_SI[eNB_id])
|
||||||
ue->dlsch_SI[eNB_id]->harq_ack,
|
reset_ack(&ue->frame_parms,
|
||||||
subframe_tx,
|
ue->dlsch_SI[eNB_id]->harq_ack,
|
||||||
ue->ulsch[eNB_id]->o_ACK);
|
subframe_tx,
|
||||||
|
ue->ulsch[eNB_id]->o_ACK);
|
||||||
|
|
||||||
|
|
||||||
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT);
|
VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PHY_PROCEDURES_UE_TX, VCD_FUNCTION_OUT);
|
||||||
stop_meas(&ue->phy_proc_tx);
|
stop_meas(&ue->phy_proc_tx);
|
||||||
@@ -2606,19 +2607,19 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
/*
|
|
||||||
LOG_E(PHY,"[UE %d] frame %d, subframe %d, Error decoding PBCH!\n",
|
LOG_E(PHY,"[UE %d] frame %d, subframe %d, Error decoding PBCH!\n",
|
||||||
ue->Mod_id,frame_rx, subframe_rx);
|
ue->Mod_id,frame_rx, subframe_rx);
|
||||||
|
/*
|
||||||
LOG_I(PHY,"[UE %d] rx_offset %d\n",ue->Mod_id,ue->rx_offset);
|
LOG_I(PHY,"[UE %d] rx_offset %d\n",ue->Mod_id,ue->rx_offset);
|
||||||
|
|
||||||
|
|
||||||
write_output("rxsig0.m","rxs0", ue->common_vars.rxdata[0],ue->frame_parms.samples_per_tti,1,1);
|
write_output("rxsig0.m","rxs0", ue->common_vars.rxdata[0],ue->frame_parms.samples_per_tti,1,1);
|
||||||
|
|
||||||
write_output("H00.m","h00",&(ue->common_vars.dl_ch_estimates[0][0][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1);
|
write_output("H00.m","h00",&(ue->common_vars.common_vars_rx_data_per_thread[0].dl_ch_estimates[0][0][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1);
|
||||||
write_output("H10.m","h10",&(ue->common_vars.dl_ch_estimates[0][2][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1);
|
write_output("H10.m","h10",&(ue->common_vars.common_vars_rx_data_per_thread[0].dl_ch_estimates[0][2][0]),((ue->frame_parms.Ncp==0)?7:6)*(ue->frame_parms.ofdm_symbol_size),1,1);
|
||||||
|
|
||||||
write_output("rxsigF0.m","rxsF0", ue->common_vars.rxdataF[0],8*ue->frame_parms.ofdm_symbol_size,1,1);
|
write_output("rxsigF0.m","rxsF0", ue->common_vars.common_vars_rx_data_per_thread[0].rxdataF[0],8*ue->frame_parms.ofdm_symbol_size,1,1);
|
||||||
write_output("PBCH_rxF0_ext.m","pbch0_ext",ue->pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1);
|
write_output("PBCH_rxF0_ext.m","pbch0_ext",ue->pbch_vars[0]->rxdataF_ext[0],12*4*6,1,1);
|
||||||
write_output("PBCH_rxF0_comp.m","pbch0_comp",ue->pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1);
|
write_output("PBCH_rxF0_comp.m","pbch0_comp",ue->pbch_vars[0]->rxdataF_comp[0],12*4*6,1,1);
|
||||||
write_output("PBCH_rxF_llr.m","pbch_llr",ue->pbch_vars[0]->llr,(ue->frame_parms.Ncp==0) ? 1920 : 1728,1,4);
|
write_output("PBCH_rxF_llr.m","pbch_llr",ue->pbch_vars[0]->llr,(ue->frame_parms.Ncp==0) ? 1920 : 1728,1,4);
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ unsigned short fill_rar(
|
|||||||
eNB_mac_inst[module_idP].common_channels[CC_id].RA_template[ra_idx].timing_offset /= 16; //T_A = N_TA/16, where N_TA should be on a 30.72Msps
|
eNB_mac_inst[module_idP].common_channels[CC_id].RA_template[ra_idx].timing_offset /= 16; //T_A = N_TA/16, where N_TA should be on a 30.72Msps
|
||||||
rar[0] = (uint8_t)(eNB_mac_inst[module_idP].common_channels[CC_id].RA_template[ra_idx].timing_offset>>(2+4)); // 7 MSBs of timing advance + divide by 4
|
rar[0] = (uint8_t)(eNB_mac_inst[module_idP].common_channels[CC_id].RA_template[ra_idx].timing_offset>>(2+4)); // 7 MSBs of timing advance + divide by 4
|
||||||
rar[1] = (uint8_t)(eNB_mac_inst[module_idP].common_channels[CC_id].RA_template[ra_idx].timing_offset<<(4-2))&0xf0; // 4 LSBs of timing advance + divide by 4
|
rar[1] = (uint8_t)(eNB_mac_inst[module_idP].common_channels[CC_id].RA_template[ra_idx].timing_offset<<(4-2))&0xf0; // 4 LSBs of timing advance + divide by 4
|
||||||
rballoc = mac_xface->computeRIV(N_RB_UL,1,1); // first PRB only for UL Grant
|
rballoc = mac_xface->computeRIV(N_RB_UL,26,1); // first PRB only for UL Grant
|
||||||
rar[1] |= (rballoc>>7)&7; // Hopping = 0 (bit 3), 3 MSBs of rballoc
|
rar[1] |= (rballoc>>7)&7; // Hopping = 0 (bit 3), 3 MSBs of rballoc
|
||||||
rar[2] = ((uint8_t)(rballoc&0xff))<<1; // 7 LSBs of rballoc
|
rar[2] = ((uint8_t)(rballoc&0xff))<<1; // 7 LSBs of rballoc
|
||||||
mcs = 10;
|
mcs = 10;
|
||||||
|
|||||||
@@ -3131,7 +3131,8 @@ static void dump_sib2( SystemInformationBlockType2_t *sib2 )
|
|||||||
sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_SubframeConfig );
|
sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_SubframeConfig );
|
||||||
LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.ackNackSRS_SimultaneousTransmission : %d\n",
|
LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.ackNackSRS_SimultaneousTransmission : %d\n",
|
||||||
sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.ackNackSRS_SimultaneousTransmission );
|
sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.ackNackSRS_SimultaneousTransmission );
|
||||||
LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts : %ld\n",
|
if (sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts)
|
||||||
|
LOG_I( RRC, "radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts : %ld\n",
|
||||||
/* TODO: check that it's okay to access [0] */
|
/* TODO: check that it's okay to access [0] */
|
||||||
sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts[0] );
|
sib2->radioResourceConfigCommon.soundingRS_UL_ConfigCommon.choice.setup.srs_MaxUpPts[0] );
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ eNBs =
|
|||||||
downlink_frequency = 2680000000L;
|
downlink_frequency = 2680000000L;
|
||||||
uplink_frequency_offset = -120000000;
|
uplink_frequency_offset = -120000000;
|
||||||
Nid_cell = 0;
|
Nid_cell = 0;
|
||||||
N_RB_DL = 25;
|
N_RB_DL = 50;
|
||||||
Nid_cell_mbsfn = 0;
|
Nid_cell_mbsfn = 0;
|
||||||
nb_antenna_ports = 1;
|
nb_antenna_ports = 1;
|
||||||
nb_antennas_tx = 1;
|
nb_antennas_tx = 1;
|
||||||
|
|||||||
@@ -0,0 +1,191 @@
|
|||||||
|
Active_eNBs = ( "eNB_Eurecom_LTEBox");
|
||||||
|
# Asn1_verbosity, choice in: none, info, annoying
|
||||||
|
Asn1_verbosity = "none";
|
||||||
|
|
||||||
|
eNBs =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
////////// Identification parameters:
|
||||||
|
eNB_ID = 0xe00;
|
||||||
|
|
||||||
|
cell_type = "CELL_MACRO_ENB";
|
||||||
|
|
||||||
|
eNB_name = "eNB_Eurecom_LTEBox";
|
||||||
|
|
||||||
|
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||||
|
tracking_area_code = "1";
|
||||||
|
|
||||||
|
mobile_country_code = "208";
|
||||||
|
|
||||||
|
mobile_network_code = "93";
|
||||||
|
|
||||||
|
////////// Physical parameters:
|
||||||
|
|
||||||
|
component_carriers = (
|
||||||
|
{
|
||||||
|
node_function = "NGFI_RCC_IF4p5";
|
||||||
|
node_timing = "synch_to_ext_device";
|
||||||
|
node_synch_ref = 0;
|
||||||
|
frame_type = "FDD";
|
||||||
|
tdd_config = 3;
|
||||||
|
tdd_config_s = 0;
|
||||||
|
prefix_type = "NORMAL";
|
||||||
|
eutra_band = 7;
|
||||||
|
downlink_frequency = 2685000000L;
|
||||||
|
uplink_frequency_offset = -120000000;
|
||||||
|
Nid_cell = 0;
|
||||||
|
N_RB_DL = 25;
|
||||||
|
Nid_cell_mbsfn = 0;
|
||||||
|
nb_antenna_ports = 1;
|
||||||
|
nb_antennas_tx = 1;
|
||||||
|
nb_antennas_rx = 1;
|
||||||
|
tx_gain = 90;
|
||||||
|
rx_gain = 125;
|
||||||
|
prach_root = 0;
|
||||||
|
prach_config_index = 0;
|
||||||
|
prach_high_speed = "DISABLE";
|
||||||
|
prach_zero_correlation = 1;
|
||||||
|
prach_freq_offset = 2;
|
||||||
|
pucch_delta_shift = 1;
|
||||||
|
pucch_nRB_CQI = 1;
|
||||||
|
pucch_nCS_AN = 0;
|
||||||
|
pucch_n1_AN = 32;
|
||||||
|
pdsch_referenceSignalPower = -29;
|
||||||
|
pdsch_p_b = 0;
|
||||||
|
pusch_n_SB = 1;
|
||||||
|
pusch_enable64QAM = "DISABLE";
|
||||||
|
pusch_hoppingMode = "interSubFrame";
|
||||||
|
pusch_hoppingOffset = 0;
|
||||||
|
pusch_groupHoppingEnabled = "ENABLE";
|
||||||
|
pusch_groupAssignment = 0;
|
||||||
|
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||||
|
pusch_nDMRS1 = 1;
|
||||||
|
phich_duration = "NORMAL";
|
||||||
|
phich_resource = "ONESIXTH";
|
||||||
|
srs_enable = "DISABLE";
|
||||||
|
/* srs_BandwidthConfig =;
|
||||||
|
srs_SubframeConfig =;
|
||||||
|
srs_ackNackST =;
|
||||||
|
srs_MaxUpPts =;*/
|
||||||
|
|
||||||
|
pusch_p0_Nominal = -96;
|
||||||
|
pusch_alpha = "AL1";
|
||||||
|
pucch_p0_Nominal = -104;
|
||||||
|
msg3_delta_Preamble = 6;
|
||||||
|
pucch_deltaF_Format1 = "deltaF2";
|
||||||
|
pucch_deltaF_Format1b = "deltaF3";
|
||||||
|
pucch_deltaF_Format2 = "deltaF0";
|
||||||
|
pucch_deltaF_Format2a = "deltaF0";
|
||||||
|
pucch_deltaF_Format2b = "deltaF0";
|
||||||
|
|
||||||
|
rach_numberOfRA_Preambles = 64;
|
||||||
|
rach_preamblesGroupAConfig = "DISABLE";
|
||||||
|
/*
|
||||||
|
rach_sizeOfRA_PreamblesGroupA = ;
|
||||||
|
rach_messageSizeGroupA = ;
|
||||||
|
rach_messagePowerOffsetGroupB = ;
|
||||||
|
*/
|
||||||
|
rach_powerRampingStep = 4;
|
||||||
|
rach_preambleInitialReceivedTargetPower = -108;
|
||||||
|
rach_preambleTransMax = 10;
|
||||||
|
rach_raResponseWindowSize = 10;
|
||||||
|
rach_macContentionResolutionTimer = 48;
|
||||||
|
rach_maxHARQ_Msg3Tx = 4;
|
||||||
|
|
||||||
|
pcch_default_PagingCycle = 128;
|
||||||
|
pcch_nB = "oneT";
|
||||||
|
bcch_modificationPeriodCoeff = 2;
|
||||||
|
ue_TimersAndConstants_t300 = 1000;
|
||||||
|
ue_TimersAndConstants_t301 = 1000;
|
||||||
|
ue_TimersAndConstants_t310 = 1000;
|
||||||
|
ue_TimersAndConstants_t311 = 10000;
|
||||||
|
ue_TimersAndConstants_n310 = 20;
|
||||||
|
ue_TimersAndConstants_n311 = 1;
|
||||||
|
ue_TransmissionMode = 1;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
srb1_parameters :
|
||||||
|
{
|
||||||
|
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
||||||
|
timer_poll_retransmit = 80;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
|
||||||
|
timer_reordering = 35;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
|
||||||
|
timer_status_prohibit = 0;
|
||||||
|
|
||||||
|
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
|
||||||
|
poll_pdu = 4;
|
||||||
|
|
||||||
|
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
|
||||||
|
poll_byte = 99999;
|
||||||
|
|
||||||
|
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
|
||||||
|
max_retx_threshold = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------- SCTP definitions
|
||||||
|
SCTP :
|
||||||
|
{
|
||||||
|
# Number of streams to use in input/output
|
||||||
|
SCTP_INSTREAMS = 2;
|
||||||
|
SCTP_OUTSTREAMS = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
////////// MME parameters:
|
||||||
|
mme_ip_address = ( { ipv4 = "127.0.0.3";
|
||||||
|
ipv6 = "192:168:30::17";
|
||||||
|
active = "yes";
|
||||||
|
preference = "ipv4";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
NETWORK_INTERFACES :
|
||||||
|
{
|
||||||
|
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24";
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1U = "lo";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.5/24";
|
||||||
|
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
|
};
|
||||||
|
|
||||||
|
rrh_gw_config = (
|
||||||
|
{
|
||||||
|
local_if_name = "lo";
|
||||||
|
remote_address = "127.0.0.1";
|
||||||
|
local_address = "127.0.0.2";
|
||||||
|
local_port = 50000; #for raw option local port must be the same to remote
|
||||||
|
remote_port = 50000;
|
||||||
|
rrh_gw_active = "yes";
|
||||||
|
tr_preference = "udp_if4p5";
|
||||||
|
rf_preference = "usrp_b200";
|
||||||
|
iq_txshift = 4;
|
||||||
|
tx_sample_advance = 80;
|
||||||
|
tx_scheduling_advance = 9;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
log_config :
|
||||||
|
{
|
||||||
|
global_log_level ="info";
|
||||||
|
global_log_verbosity ="medium";
|
||||||
|
hw_log_level ="info";
|
||||||
|
hw_log_verbosity ="medium";
|
||||||
|
phy_log_level ="info";
|
||||||
|
phy_log_verbosity ="medium";
|
||||||
|
mac_log_level ="info";
|
||||||
|
mac_log_verbosity ="high";
|
||||||
|
rlc_log_level ="info";
|
||||||
|
rlc_log_verbosity ="medium";
|
||||||
|
pdcp_log_level ="info";
|
||||||
|
pdcp_log_verbosity ="medium";
|
||||||
|
rrc_log_level ="info";
|
||||||
|
rrc_log_verbosity ="medium";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
@@ -0,0 +1,191 @@
|
|||||||
|
Active_eNBs = ( "eNB_Eurecom_LTEBox");
|
||||||
|
# Asn1_verbosity, choice in: none, info, annoying
|
||||||
|
Asn1_verbosity = "none";
|
||||||
|
|
||||||
|
eNBs =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
////////// Identification parameters:
|
||||||
|
eNB_ID = 0xe00;
|
||||||
|
|
||||||
|
cell_type = "CELL_MACRO_ENB";
|
||||||
|
|
||||||
|
eNB_name = "eNB_Eurecom_LTEBox";
|
||||||
|
|
||||||
|
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||||
|
tracking_area_code = "1";
|
||||||
|
|
||||||
|
mobile_country_code = "208";
|
||||||
|
|
||||||
|
mobile_network_code = "93";
|
||||||
|
|
||||||
|
////////// Physical parameters:
|
||||||
|
|
||||||
|
component_carriers = (
|
||||||
|
{
|
||||||
|
node_function = "NGFI_RCC_IF4p5";
|
||||||
|
node_timing = "synch_to_ext_device";
|
||||||
|
node_synch_ref = 0;
|
||||||
|
frame_type = "FDD";
|
||||||
|
tdd_config = 3;
|
||||||
|
tdd_config_s = 0;
|
||||||
|
prefix_type = "NORMAL";
|
||||||
|
eutra_band = 7;
|
||||||
|
downlink_frequency = 2685000000L;
|
||||||
|
uplink_frequency_offset = -120000000;
|
||||||
|
Nid_cell = 0;
|
||||||
|
N_RB_DL = 50;
|
||||||
|
Nid_cell_mbsfn = 0;
|
||||||
|
nb_antenna_ports = 1;
|
||||||
|
nb_antennas_tx = 1;
|
||||||
|
nb_antennas_rx = 1;
|
||||||
|
tx_gain = 90;
|
||||||
|
rx_gain = 125;
|
||||||
|
prach_root = 0;
|
||||||
|
prach_config_index = 0;
|
||||||
|
prach_high_speed = "DISABLE";
|
||||||
|
prach_zero_correlation = 1;
|
||||||
|
prach_freq_offset = 2;
|
||||||
|
pucch_delta_shift = 1;
|
||||||
|
pucch_nRB_CQI = 1;
|
||||||
|
pucch_nCS_AN = 0;
|
||||||
|
pucch_n1_AN = 32;
|
||||||
|
pdsch_referenceSignalPower = -27;
|
||||||
|
pdsch_p_b = 0;
|
||||||
|
pusch_n_SB = 1;
|
||||||
|
pusch_enable64QAM = "DISABLE";
|
||||||
|
pusch_hoppingMode = "interSubFrame";
|
||||||
|
pusch_hoppingOffset = 0;
|
||||||
|
pusch_groupHoppingEnabled = "ENABLE";
|
||||||
|
pusch_groupAssignment = 0;
|
||||||
|
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||||
|
pusch_nDMRS1 = 1;
|
||||||
|
phich_duration = "NORMAL";
|
||||||
|
phich_resource = "ONESIXTH";
|
||||||
|
srs_enable = "DISABLE";
|
||||||
|
/* srs_BandwidthConfig =;
|
||||||
|
srs_SubframeConfig =;
|
||||||
|
srs_ackNackST =;
|
||||||
|
srs_MaxUpPts =;*/
|
||||||
|
|
||||||
|
pusch_p0_Nominal = -96;
|
||||||
|
pusch_alpha = "AL1";
|
||||||
|
pucch_p0_Nominal = -104;
|
||||||
|
msg3_delta_Preamble = 6;
|
||||||
|
pucch_deltaF_Format1 = "deltaF2";
|
||||||
|
pucch_deltaF_Format1b = "deltaF3";
|
||||||
|
pucch_deltaF_Format2 = "deltaF0";
|
||||||
|
pucch_deltaF_Format2a = "deltaF0";
|
||||||
|
pucch_deltaF_Format2b = "deltaF0";
|
||||||
|
|
||||||
|
rach_numberOfRA_Preambles = 64;
|
||||||
|
rach_preamblesGroupAConfig = "DISABLE";
|
||||||
|
/*
|
||||||
|
rach_sizeOfRA_PreamblesGroupA = ;
|
||||||
|
rach_messageSizeGroupA = ;
|
||||||
|
rach_messagePowerOffsetGroupB = ;
|
||||||
|
*/
|
||||||
|
rach_powerRampingStep = 4;
|
||||||
|
rach_preambleInitialReceivedTargetPower = -108;
|
||||||
|
rach_preambleTransMax = 10;
|
||||||
|
rach_raResponseWindowSize = 10;
|
||||||
|
rach_macContentionResolutionTimer = 48;
|
||||||
|
rach_maxHARQ_Msg3Tx = 4;
|
||||||
|
|
||||||
|
pcch_default_PagingCycle = 128;
|
||||||
|
pcch_nB = "oneT";
|
||||||
|
bcch_modificationPeriodCoeff = 2;
|
||||||
|
ue_TimersAndConstants_t300 = 1000;
|
||||||
|
ue_TimersAndConstants_t301 = 1000;
|
||||||
|
ue_TimersAndConstants_t310 = 1000;
|
||||||
|
ue_TimersAndConstants_t311 = 10000;
|
||||||
|
ue_TimersAndConstants_n310 = 20;
|
||||||
|
ue_TimersAndConstants_n311 = 1;
|
||||||
|
ue_TransmissionMode = 1;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
srb1_parameters :
|
||||||
|
{
|
||||||
|
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
||||||
|
timer_poll_retransmit = 80;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
|
||||||
|
timer_reordering = 35;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
|
||||||
|
timer_status_prohibit = 0;
|
||||||
|
|
||||||
|
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
|
||||||
|
poll_pdu = 4;
|
||||||
|
|
||||||
|
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
|
||||||
|
poll_byte = 99999;
|
||||||
|
|
||||||
|
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
|
||||||
|
max_retx_threshold = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------- SCTP definitions
|
||||||
|
SCTP :
|
||||||
|
{
|
||||||
|
# Number of streams to use in input/output
|
||||||
|
SCTP_INSTREAMS = 2;
|
||||||
|
SCTP_OUTSTREAMS = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
////////// MME parameters:
|
||||||
|
mme_ip_address = ( { ipv4 = "127.0.0.3";
|
||||||
|
ipv6 = "192:168:30::17";
|
||||||
|
active = "yes";
|
||||||
|
preference = "ipv4";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
NETWORK_INTERFACES :
|
||||||
|
{
|
||||||
|
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24";
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1U = "lo";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.5/24";
|
||||||
|
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
|
};
|
||||||
|
|
||||||
|
rrh_gw_config = (
|
||||||
|
{
|
||||||
|
local_if_name = "lo";
|
||||||
|
remote_address = "127.0.0.1";
|
||||||
|
local_address = "127.0.0.2";
|
||||||
|
local_port = 50000; #for raw option local port must be the same to remote
|
||||||
|
remote_port = 50000;
|
||||||
|
rrh_gw_active = "yes";
|
||||||
|
tr_preference = "udp_if4p5";
|
||||||
|
rf_preference = "usrp_b200";
|
||||||
|
iq_txshift = 4;
|
||||||
|
tx_sample_advance = 80;
|
||||||
|
tx_scheduling_advance = 9;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
log_config :
|
||||||
|
{
|
||||||
|
global_log_level ="info";
|
||||||
|
global_log_verbosity ="medium";
|
||||||
|
hw_log_level ="info";
|
||||||
|
hw_log_verbosity ="medium";
|
||||||
|
phy_log_level ="info";
|
||||||
|
phy_log_verbosity ="medium";
|
||||||
|
mac_log_level ="info";
|
||||||
|
mac_log_verbosity ="high";
|
||||||
|
rlc_log_level ="info";
|
||||||
|
rlc_log_verbosity ="medium";
|
||||||
|
pdcp_log_level ="info";
|
||||||
|
pdcp_log_verbosity ="medium";
|
||||||
|
rrc_log_level ="info";
|
||||||
|
rrc_log_verbosity ="medium";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
@@ -0,0 +1,193 @@
|
|||||||
|
Active_eNBs = ( "eNB_Eurecom_LTEBox");
|
||||||
|
# Asn1_verbosity, choice in: none, info, annoying
|
||||||
|
Asn1_verbosity = "none";
|
||||||
|
|
||||||
|
eNBs =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
////////// Identification parameters:
|
||||||
|
eNB_ID = 0xe00;
|
||||||
|
|
||||||
|
cell_type = "CELL_MACRO_ENB";
|
||||||
|
|
||||||
|
eNB_name = "eNB_Eurecom_LTEBox";
|
||||||
|
|
||||||
|
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||||
|
tracking_area_code = "1";
|
||||||
|
|
||||||
|
mobile_country_code = "208";
|
||||||
|
|
||||||
|
mobile_network_code = "93";
|
||||||
|
|
||||||
|
////////// Physical parameters:
|
||||||
|
|
||||||
|
component_carriers = (
|
||||||
|
{
|
||||||
|
node_function = "NGFI_RRU_IF4p5";
|
||||||
|
node_timing = "synch_to_ext_device";
|
||||||
|
node_synch_ref = 0;
|
||||||
|
frame_type = "FDD";
|
||||||
|
tdd_config = 3;
|
||||||
|
tdd_config_s = 0;
|
||||||
|
prefix_type = "NORMAL";
|
||||||
|
eutra_band = 7;
|
||||||
|
downlink_frequency = 2685000000L;
|
||||||
|
uplink_frequency_offset = -120000000;
|
||||||
|
Nid_cell = 0;
|
||||||
|
N_RB_DL = 25;
|
||||||
|
Nid_cell_mbsfn = 0;
|
||||||
|
nb_antenna_ports = 1;
|
||||||
|
nb_antennas_tx = 1;
|
||||||
|
nb_antennas_rx = 1;
|
||||||
|
tx_gain = 90;
|
||||||
|
rx_gain = 120;
|
||||||
|
prach_root = 0;
|
||||||
|
prach_config_index = 0;
|
||||||
|
prach_high_speed = "DISABLE";
|
||||||
|
prach_zero_correlation = 1;
|
||||||
|
prach_freq_offset = 2;
|
||||||
|
pucch_delta_shift = 1;
|
||||||
|
pucch_nRB_CQI = 1;
|
||||||
|
pucch_nCS_AN = 0;
|
||||||
|
pucch_n1_AN = 32;
|
||||||
|
pdsch_referenceSignalPower = -29;
|
||||||
|
pdsch_p_b = 0;
|
||||||
|
pusch_n_SB = 1;
|
||||||
|
pusch_enable64QAM = "DISABLE";
|
||||||
|
pusch_hoppingMode = "interSubFrame";
|
||||||
|
pusch_hoppingOffset = 0;
|
||||||
|
pusch_groupHoppingEnabled = "ENABLE";
|
||||||
|
pusch_groupAssignment = 0;
|
||||||
|
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||||
|
pusch_nDMRS1 = 1;
|
||||||
|
phich_duration = "NORMAL";
|
||||||
|
phich_resource = "ONESIXTH";
|
||||||
|
srs_enable = "DISABLE";
|
||||||
|
/* srs_BandwidthConfig =;
|
||||||
|
srs_SubframeConfig =;
|
||||||
|
srs_ackNackST =;
|
||||||
|
srs_MaxUpPts =;*/
|
||||||
|
|
||||||
|
pusch_p0_Nominal = -95;
|
||||||
|
pusch_alpha = "AL1";
|
||||||
|
pucch_p0_Nominal = -104;
|
||||||
|
msg3_delta_Preamble = 6;
|
||||||
|
pucch_deltaF_Format1 = "deltaF2";
|
||||||
|
pucch_deltaF_Format1b = "deltaF3";
|
||||||
|
pucch_deltaF_Format2 = "deltaF0";
|
||||||
|
pucch_deltaF_Format2a = "deltaF0";
|
||||||
|
pucch_deltaF_Format2b = "deltaF0";
|
||||||
|
|
||||||
|
rach_numberOfRA_Preambles = 64;
|
||||||
|
rach_preamblesGroupAConfig = "DISABLE";
|
||||||
|
/*
|
||||||
|
rach_sizeOfRA_PreamblesGroupA = ;
|
||||||
|
rach_messageSizeGroupA = ;
|
||||||
|
rach_messagePowerOffsetGroupB = ;
|
||||||
|
*/
|
||||||
|
rach_powerRampingStep = 4;
|
||||||
|
rach_preambleInitialReceivedTargetPower = -104;
|
||||||
|
rach_preambleTransMax = 10;
|
||||||
|
rach_raResponseWindowSize = 10;
|
||||||
|
rach_macContentionResolutionTimer = 48;
|
||||||
|
rach_maxHARQ_Msg3Tx = 4;
|
||||||
|
|
||||||
|
pcch_default_PagingCycle = 128;
|
||||||
|
pcch_nB = "oneT";
|
||||||
|
bcch_modificationPeriodCoeff = 2;
|
||||||
|
ue_TimersAndConstants_t300 = 1000;
|
||||||
|
ue_TimersAndConstants_t301 = 1000;
|
||||||
|
ue_TimersAndConstants_t310 = 1000;
|
||||||
|
ue_TimersAndConstants_t311 = 10000;
|
||||||
|
ue_TimersAndConstants_n310 = 20;
|
||||||
|
ue_TimersAndConstants_n311 = 1;
|
||||||
|
|
||||||
|
ue_TransmissionMode = 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
srb1_parameters :
|
||||||
|
{
|
||||||
|
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
||||||
|
timer_poll_retransmit = 80;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
|
||||||
|
timer_reordering = 35;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
|
||||||
|
timer_status_prohibit = 0;
|
||||||
|
|
||||||
|
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
|
||||||
|
poll_pdu = 4;
|
||||||
|
|
||||||
|
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
|
||||||
|
poll_byte = 99999;
|
||||||
|
|
||||||
|
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
|
||||||
|
max_retx_threshold = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------- SCTP definitions
|
||||||
|
SCTP :
|
||||||
|
{
|
||||||
|
# Number of streams to use in input/output
|
||||||
|
SCTP_INSTREAMS = 2;
|
||||||
|
SCTP_OUTSTREAMS = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
////////// MME parameters:
|
||||||
|
mme_ip_address = ( { ipv4 = "192.168.12.11";
|
||||||
|
ipv6 = "192:168:30::17";
|
||||||
|
active = "yes";
|
||||||
|
preference = "ipv4";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
NETWORK_INTERFACES :
|
||||||
|
{
|
||||||
|
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1_MME = "eth3";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.215/24";
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1U = "eth3";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.215/24";
|
||||||
|
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
|
};
|
||||||
|
|
||||||
|
rrh_gw_config = (
|
||||||
|
{
|
||||||
|
local_if_name = "lo";
|
||||||
|
remote_address = "127.0.0.2";
|
||||||
|
local_address = "127.0.0.1";
|
||||||
|
local_port = 50000; #for raw option local port must be the same to remote
|
||||||
|
remote_port = 50000;
|
||||||
|
rrh_gw_active = "yes";
|
||||||
|
tr_preference = "udp_if4p5";
|
||||||
|
rf_preference = "usrp_b200";
|
||||||
|
iq_txshift = 4;
|
||||||
|
tx_sample_advance = 80;
|
||||||
|
tx_scheduling_advance = 9;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
log_config :
|
||||||
|
{
|
||||||
|
global_log_level ="info";
|
||||||
|
global_log_verbosity ="medium";
|
||||||
|
hw_log_level ="info";
|
||||||
|
hw_log_verbosity ="medium";
|
||||||
|
phy_log_level ="info";
|
||||||
|
phy_log_verbosity ="medium";
|
||||||
|
mac_log_level ="info";
|
||||||
|
mac_log_verbosity ="high";
|
||||||
|
rlc_log_level ="info";
|
||||||
|
rlc_log_verbosity ="medium";
|
||||||
|
pdcp_log_level ="info";
|
||||||
|
pdcp_log_verbosity ="medium";
|
||||||
|
rrc_log_level ="info";
|
||||||
|
rrc_log_verbosity ="medium";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
@@ -0,0 +1,193 @@
|
|||||||
|
Active_eNBs = ( "eNB_Eurecom_LTEBox");
|
||||||
|
# Asn1_verbosity, choice in: none, info, annoying
|
||||||
|
Asn1_verbosity = "none";
|
||||||
|
|
||||||
|
eNBs =
|
||||||
|
(
|
||||||
|
{
|
||||||
|
////////// Identification parameters:
|
||||||
|
eNB_ID = 0xe00;
|
||||||
|
|
||||||
|
cell_type = "CELL_MACRO_ENB";
|
||||||
|
|
||||||
|
eNB_name = "eNB_Eurecom_LTEBox";
|
||||||
|
|
||||||
|
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||||
|
tracking_area_code = "1";
|
||||||
|
|
||||||
|
mobile_country_code = "208";
|
||||||
|
|
||||||
|
mobile_network_code = "93";
|
||||||
|
|
||||||
|
////////// Physical parameters:
|
||||||
|
|
||||||
|
component_carriers = (
|
||||||
|
{
|
||||||
|
node_function = "NGFI_RRU_IF4p5";
|
||||||
|
node_timing = "synch_to_ext_device";
|
||||||
|
node_synch_ref = 0;
|
||||||
|
frame_type = "FDD";
|
||||||
|
tdd_config = 3;
|
||||||
|
tdd_config_s = 0;
|
||||||
|
prefix_type = "NORMAL";
|
||||||
|
eutra_band = 7;
|
||||||
|
downlink_frequency = 2685000000L;
|
||||||
|
uplink_frequency_offset = -120000000;
|
||||||
|
Nid_cell = 0;
|
||||||
|
N_RB_DL = 50;
|
||||||
|
Nid_cell_mbsfn = 0;
|
||||||
|
nb_antenna_ports = 1;
|
||||||
|
nb_antennas_tx = 1;
|
||||||
|
nb_antennas_rx = 1;
|
||||||
|
tx_gain = 90;
|
||||||
|
rx_gain = 120;
|
||||||
|
prach_root = 0;
|
||||||
|
prach_config_index = 0;
|
||||||
|
prach_high_speed = "DISABLE";
|
||||||
|
prach_zero_correlation = 1;
|
||||||
|
prach_freq_offset = 2;
|
||||||
|
pucch_delta_shift = 1;
|
||||||
|
pucch_nRB_CQI = 1;
|
||||||
|
pucch_nCS_AN = 0;
|
||||||
|
pucch_n1_AN = 32;
|
||||||
|
pdsch_referenceSignalPower = -27;
|
||||||
|
pdsch_p_b = 0;
|
||||||
|
pusch_n_SB = 1;
|
||||||
|
pusch_enable64QAM = "DISABLE";
|
||||||
|
pusch_hoppingMode = "interSubFrame";
|
||||||
|
pusch_hoppingOffset = 0;
|
||||||
|
pusch_groupHoppingEnabled = "ENABLE";
|
||||||
|
pusch_groupAssignment = 0;
|
||||||
|
pusch_sequenceHoppingEnabled = "DISABLE";
|
||||||
|
pusch_nDMRS1 = 1;
|
||||||
|
phich_duration = "NORMAL";
|
||||||
|
phich_resource = "ONESIXTH";
|
||||||
|
srs_enable = "DISABLE";
|
||||||
|
/* srs_BandwidthConfig =;
|
||||||
|
srs_SubframeConfig =;
|
||||||
|
srs_ackNackST =;
|
||||||
|
srs_MaxUpPts =;*/
|
||||||
|
|
||||||
|
pusch_p0_Nominal = -95;
|
||||||
|
pusch_alpha = "AL1";
|
||||||
|
pucch_p0_Nominal = -104;
|
||||||
|
msg3_delta_Preamble = 6;
|
||||||
|
pucch_deltaF_Format1 = "deltaF2";
|
||||||
|
pucch_deltaF_Format1b = "deltaF3";
|
||||||
|
pucch_deltaF_Format2 = "deltaF0";
|
||||||
|
pucch_deltaF_Format2a = "deltaF0";
|
||||||
|
pucch_deltaF_Format2b = "deltaF0";
|
||||||
|
|
||||||
|
rach_numberOfRA_Preambles = 64;
|
||||||
|
rach_preamblesGroupAConfig = "DISABLE";
|
||||||
|
/*
|
||||||
|
rach_sizeOfRA_PreamblesGroupA = ;
|
||||||
|
rach_messageSizeGroupA = ;
|
||||||
|
rach_messagePowerOffsetGroupB = ;
|
||||||
|
*/
|
||||||
|
rach_powerRampingStep = 4;
|
||||||
|
rach_preambleInitialReceivedTargetPower = -104;
|
||||||
|
rach_preambleTransMax = 10;
|
||||||
|
rach_raResponseWindowSize = 10;
|
||||||
|
rach_macContentionResolutionTimer = 48;
|
||||||
|
rach_maxHARQ_Msg3Tx = 4;
|
||||||
|
|
||||||
|
pcch_default_PagingCycle = 128;
|
||||||
|
pcch_nB = "oneT";
|
||||||
|
bcch_modificationPeriodCoeff = 2;
|
||||||
|
ue_TimersAndConstants_t300 = 1000;
|
||||||
|
ue_TimersAndConstants_t301 = 1000;
|
||||||
|
ue_TimersAndConstants_t310 = 1000;
|
||||||
|
ue_TimersAndConstants_t311 = 10000;
|
||||||
|
ue_TimersAndConstants_n310 = 20;
|
||||||
|
ue_TimersAndConstants_n311 = 1;
|
||||||
|
|
||||||
|
ue_TransmissionMode = 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
srb1_parameters :
|
||||||
|
{
|
||||||
|
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
|
||||||
|
timer_poll_retransmit = 80;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200]
|
||||||
|
timer_reordering = 35;
|
||||||
|
|
||||||
|
# timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500]
|
||||||
|
timer_status_prohibit = 0;
|
||||||
|
|
||||||
|
# poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)]
|
||||||
|
poll_pdu = 4;
|
||||||
|
|
||||||
|
# poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)]
|
||||||
|
poll_byte = 99999;
|
||||||
|
|
||||||
|
# max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32]
|
||||||
|
max_retx_threshold = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------- SCTP definitions
|
||||||
|
SCTP :
|
||||||
|
{
|
||||||
|
# Number of streams to use in input/output
|
||||||
|
SCTP_INSTREAMS = 2;
|
||||||
|
SCTP_OUTSTREAMS = 2;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
////////// MME parameters:
|
||||||
|
mme_ip_address = ( { ipv4 = "192.168.12.11";
|
||||||
|
ipv6 = "192:168:30::17";
|
||||||
|
active = "yes";
|
||||||
|
preference = "ipv4";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
NETWORK_INTERFACES :
|
||||||
|
{
|
||||||
|
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1_MME = "eth3";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.215/24";
|
||||||
|
ENB_INTERFACE_NAME_FOR_S1U = "eth3";
|
||||||
|
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.215/24";
|
||||||
|
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
|
};
|
||||||
|
|
||||||
|
rrh_gw_config = (
|
||||||
|
{
|
||||||
|
local_if_name = "lo";
|
||||||
|
remote_address = "127.0.0.2";
|
||||||
|
local_address = "127.0.0.1";
|
||||||
|
local_port = 50000; #for raw option local port must be the same to remote
|
||||||
|
remote_port = 50000;
|
||||||
|
rrh_gw_active = "yes";
|
||||||
|
tr_preference = "udp_if4p5";
|
||||||
|
rf_preference = "usrp_b200";
|
||||||
|
iq_txshift = 4;
|
||||||
|
tx_sample_advance = 80;
|
||||||
|
tx_scheduling_advance = 9;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
log_config :
|
||||||
|
{
|
||||||
|
global_log_level ="info";
|
||||||
|
global_log_verbosity ="medium";
|
||||||
|
hw_log_level ="info";
|
||||||
|
hw_log_verbosity ="medium";
|
||||||
|
phy_log_level ="info";
|
||||||
|
phy_log_verbosity ="medium";
|
||||||
|
mac_log_level ="info";
|
||||||
|
mac_log_verbosity ="high";
|
||||||
|
rlc_log_level ="info";
|
||||||
|
rlc_log_verbosity ="medium";
|
||||||
|
pdcp_log_level ="info";
|
||||||
|
pdcp_log_verbosity ="medium";
|
||||||
|
rrc_log_level ="info";
|
||||||
|
rrc_log_verbosity ="medium";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
@@ -2076,10 +2076,12 @@ void init_eNB(eNB_func_t node_function[], eNB_timing_t node_timing[],int nb_inst
|
|||||||
eNB->start_rf = start_rf;
|
eNB->start_rf = start_rf;
|
||||||
eNB->start_if = NULL;
|
eNB->start_if = NULL;
|
||||||
eNB->fh_asynch = NULL;
|
eNB->fh_asynch = NULL;
|
||||||
ret = openair0_device_load(&eNB->rfdevice, &openair0_cfg[CC_id]);
|
if (oaisim_flag == 0) {
|
||||||
if (ret<0) {
|
ret = openair0_device_load(&eNB->rfdevice, &openair0_cfg[CC_id]);
|
||||||
printf("Exiting, cannot initialize rf device\n");
|
if (ret<0) {
|
||||||
exit(-1);
|
printf("Exiting, cannot initialize rf device\n");
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
eNB->rfdevice.host_type = BBU_HOST;
|
eNB->rfdevice.host_type = BBU_HOST;
|
||||||
eNB->ifdevice.host_type = BBU_HOST;
|
eNB->ifdevice.host_type = BBU_HOST;
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ extern int netlink_init(void);
|
|||||||
|
|
||||||
// In lte-enb.c
|
// In lte-enb.c
|
||||||
extern int setup_eNB_buffers(PHY_VARS_eNB **phy_vars_eNB, openair0_config_t *openair0_cfg);
|
extern int setup_eNB_buffers(PHY_VARS_eNB **phy_vars_eNB, openair0_config_t *openair0_cfg);
|
||||||
extern void init_eNB(eNB_func_t *, eNB_timing_t *,int),eth_params_t *,int,int);
|
extern void init_eNB(eNB_func_t *, eNB_timing_t *,int,eth_params_t *,int,int);
|
||||||
extern void stop_eNB(int);
|
extern void stop_eNB(int);
|
||||||
extern void kill_eNB_proc(void);
|
extern void kill_eNB_proc(void);
|
||||||
|
|
||||||
|
|||||||
+20
-18
@@ -1169,7 +1169,7 @@ void *UE_thread(void *arg) {
|
|||||||
|
|
||||||
rxs = UE->rfdevice.trx_read_func(&UE->rfdevice,
|
rxs = UE->rfdevice.trx_read_func(&UE->rfdevice,
|
||||||
×tamp1,
|
×tamp1,
|
||||||
rxp,
|
rxp,
|
||||||
UE->frame_parms.nb_prefix_samples0 - rx_off_diff,
|
UE->frame_parms.nb_prefix_samples0 - rx_off_diff,
|
||||||
UE->frame_parms.nb_antennas_rx);
|
UE->frame_parms.nb_antennas_rx);
|
||||||
|
|
||||||
@@ -1262,26 +1262,28 @@ void *UE_thread(void *arg) {
|
|||||||
}
|
}
|
||||||
}// for sf=0..10
|
}// for sf=0..10
|
||||||
|
|
||||||
uint8_t proc_select = 9&1;
|
uint8_t proc_select = 9&1;
|
||||||
UE_rxtx_proc_t *proc = &UE->proc.proc_rxtx[proc_select];
|
UE_rxtx_proc_t *proc = &UE->proc.proc_rxtx[proc_select];
|
||||||
|
|
||||||
if ((UE->rx_offset<(5*UE->frame_parms.samples_per_tti)) &&
|
if (UE->no_timing_correction == 0) {
|
||||||
(UE->rx_offset > 0) &&
|
if ((UE->rx_offset<(5*UE->frame_parms.samples_per_tti)) &&
|
||||||
(rx_correction_timer == 0)) {
|
(UE->rx_offset > 0) &&
|
||||||
rx_off_diff = -1 ;
|
(rx_correction_timer == 0)) {
|
||||||
LOG_D(PHY,"AbsSubframe %d.%d UE->rx_offset %d > %d, diff %d\n",proc->frame_rx,proc->subframe_rx,UE->rx_offset,0,rx_off_diff);
|
rx_off_diff = -1 ;
|
||||||
rx_correction_timer = 5;
|
LOG_D(PHY,"AbsSubframe %d.%d UE->rx_offset %d > %d, diff %d\n",proc->frame_rx,proc->subframe_rx,UE->rx_offset,0,rx_off_diff);
|
||||||
} else if ((UE->rx_offset>(5*UE->frame_parms.samples_per_tti)) &&
|
rx_correction_timer = 5;
|
||||||
(UE->rx_offset < ((10*UE->frame_parms.samples_per_tti))) &&
|
} else if ((UE->rx_offset>(5*UE->frame_parms.samples_per_tti)) &&
|
||||||
(rx_correction_timer == 0)) { // moving to the left so drop rx_off_diff samples
|
(UE->rx_offset < ((10*UE->frame_parms.samples_per_tti))) &&
|
||||||
rx_off_diff = 1;
|
(rx_correction_timer == 0)) { // moving to the left so drop rx_off_diff samples
|
||||||
LOG_D(PHY,"AbsSubframe %d.%d UE->rx_offset %d < %d, diff %d\n",proc->frame_rx,proc->subframe_rx,UE->rx_offset,10*UE->frame_parms.samples_per_tti,rx_off_diff);
|
rx_off_diff = 1;
|
||||||
|
LOG_D(PHY,"AbsSubframe %d.%d UE->rx_offset %d < %d, diff %d\n",proc->frame_rx,proc->subframe_rx,UE->rx_offset,10*UE->frame_parms.samples_per_tti,rx_off_diff);
|
||||||
|
|
||||||
|
rx_correction_timer = 5;
|
||||||
|
}
|
||||||
|
|
||||||
rx_correction_timer = 5;
|
if (rx_correction_timer>0)
|
||||||
|
rx_correction_timer--;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rx_correction_timer>0)
|
|
||||||
rx_correction_timer--;
|
|
||||||
} // start_rx_stream==1
|
} // start_rx_stream==1
|
||||||
} // UE->is_synchronized==1
|
} // UE->is_synchronized==1
|
||||||
|
|
||||||
|
|||||||
@@ -557,7 +557,7 @@ void do_UL_sig(channel_desc_t *UE2eNB[NUMBER_OF_UE_MAX][NUMBER_OF_eNB_MAX][MAX_N
|
|||||||
|
|
||||||
#ifdef DEBUG_SIM
|
#ifdef DEBUG_SIM
|
||||||
rx_pwr2 = signal_energy(rxdata[0]+sf_offset,frame_parms->samples_per_tti)*(double)frame_parms->ofdm_symbol_size/(12.0*frame_parms->N_RB_DL);
|
rx_pwr2 = signal_energy(rxdata[0]+sf_offset,frame_parms->samples_per_tti)*(double)frame_parms->ofdm_symbol_size/(12.0*frame_parms->N_RB_DL);
|
||||||
LOG_D(OCM,"[SIM][UL] eNB %d rx_pwr (ADC out) %f dB (%d) for subframe %d\n",eNB_id,10*log10((double)rx_pwr2),rx_pwr2,subframe);
|
LOG_D(OCM,"[SIM][UL] eNB %d rx_pwr (ADC out) %f dB (%d) for subframe %d (offset %d)\n",eNB_id,10*log10((double)rx_pwr2),rx_pwr2,subframe,sf_offset);
|
||||||
#else
|
#else
|
||||||
UNUSED_VARIABLE(tx_pwr);
|
UNUSED_VARIABLE(tx_pwr);
|
||||||
UNUSED_VARIABLE(rx_pwr);
|
UNUSED_VARIABLE(rx_pwr);
|
||||||
|
|||||||
@@ -574,7 +574,8 @@ l2l1_task (void *args_p)
|
|||||||
itti_mark_task_ready (TASK_L2L1);
|
itti_mark_task_ready (TASK_L2L1);
|
||||||
LOG_I(EMU, "TASK_L2L1 is READY\n");
|
LOG_I(EMU, "TASK_L2L1 is READY\n");
|
||||||
|
|
||||||
if (oai_emulation.info.nb_enb_local > 0) {
|
if ((oai_emulation.info.nb_enb_local > 0) &&
|
||||||
|
(oai_emulation.info.node_function[0] < NGFI_RAU_IF4p5)) {
|
||||||
/* Wait for the initialize message */
|
/* Wait for the initialize message */
|
||||||
do {
|
do {
|
||||||
if (message_p != NULL) {
|
if (message_p != NULL) {
|
||||||
@@ -706,6 +707,8 @@ l2l1_task (void *args_p)
|
|||||||
update_ocm ();
|
update_ocm ();
|
||||||
|
|
||||||
for (sf = 0; sf < 10; sf++) {
|
for (sf = 0; sf < 10; sf++) {
|
||||||
|
LOG_D(EMU,"************************* Subframe %d\n",sf);
|
||||||
|
|
||||||
start_meas (&oaisim_stats_f);
|
start_meas (&oaisim_stats_f);
|
||||||
|
|
||||||
wait_for_slot_isr ();
|
wait_for_slot_isr ();
|
||||||
@@ -742,7 +745,7 @@ l2l1_task (void *args_p)
|
|||||||
(subframe_UE_mask_local == ((1<<NB_UE_INST)-1)))
|
(subframe_UE_mask_local == ((1<<NB_UE_INST)-1)))
|
||||||
all_done=1;
|
all_done=1;
|
||||||
else
|
else
|
||||||
usleep(500);
|
usleep(1500);
|
||||||
}
|
}
|
||||||
|
|
||||||
//clear subframe masks for next round
|
//clear subframe masks for next round
|
||||||
@@ -1001,7 +1004,8 @@ l2l1_task (void *args_p)
|
|||||||
do_DL_sig (r_re0,
|
do_DL_sig (r_re0,
|
||||||
r_im0,
|
r_im0,
|
||||||
r_re,
|
r_re,
|
||||||
r_im,
|
r_im,n
|
||||||
|
|
||||||
s_re,
|
s_re,
|
||||||
s_im,
|
s_im,
|
||||||
eNB2UE,
|
eNB2UE,
|
||||||
@@ -1074,7 +1078,7 @@ l2l1_task (void *args_p)
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
if ((frame >= 10) && (frame <= 11) && (abstraction_flag == 0)
|
if ((frame >= 10) && (frame <= 11) && (abstraction_flag == 0)
|
||||||
#ifdef PROC
|
#ifdef PROC
|
||||||
&&(Channel_Flag==0)
|
&&(Channel_Flag==0)
|
||||||
@@ -1121,6 +1125,7 @@ l2l1_task (void *args_p)
|
|||||||
* 10,
|
* 10,
|
||||||
1, 1);
|
1, 1);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
//#ifdef XFORMS
|
//#ifdef XFORMS
|
||||||
if (xforms==1) {
|
if (xforms==1) {
|
||||||
|
|||||||
@@ -831,6 +831,7 @@ void get_simulation_options(int argc, char *argv[])
|
|||||||
oai_emulation.info.node_timing[0] = enb_properties->properties[0]->cc_node_timing[0];
|
oai_emulation.info.node_timing[0] = enb_properties->properties[0]->cc_node_timing[0];
|
||||||
downlink_frequency[0][0] = enb_properties->properties[0]->downlink_frequency[0];
|
downlink_frequency[0][0] = enb_properties->properties[0]->downlink_frequency[0];
|
||||||
uplink_frequency_offset[0][0] = enb_properties->properties[0]->uplink_frequency_offset[0];
|
uplink_frequency_offset[0][0] = enb_properties->properties[0]->uplink_frequency_offset[0];
|
||||||
|
oai_emulation.info.N_RB_DL[0] = enb_properties->properties[0]->N_RB_DL[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
free(conf_config_file_name);
|
free(conf_config_file_name);
|
||||||
@@ -1042,7 +1043,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
|
|||||||
|
|
||||||
*ptimestamp = last_eNB_rx_timestamp[eNB_id][CC_id];
|
*ptimestamp = last_eNB_rx_timestamp[eNB_id][CC_id];
|
||||||
|
|
||||||
LOG_D(PHY,"eNB_trx_read nsamps %d TS(%llu,%llu) => subframe %d\n",nsamps,
|
LOG_D(EMU,"eNB_trx_read nsamps %d TS(%llu,%llu) => subframe %d\n",nsamps,
|
||||||
(unsigned long long)current_eNB_rx_timestamp[eNB_id][CC_id],
|
(unsigned long long)current_eNB_rx_timestamp[eNB_id][CC_id],
|
||||||
(unsigned long long)last_eNB_rx_timestamp[eNB_id][CC_id],
|
(unsigned long long)last_eNB_rx_timestamp[eNB_id][CC_id],
|
||||||
(*ptimestamp/PHY_vars_eNB_g[eNB_id][CC_id]->frame_parms.samples_per_tti)%10);
|
(*ptimestamp/PHY_vars_eNB_g[eNB_id][CC_id]->frame_parms.samples_per_tti)%10);
|
||||||
@@ -1051,7 +1052,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
|
|||||||
while (sample_count<nsamps) {
|
while (sample_count<nsamps) {
|
||||||
while (current_eNB_rx_timestamp[eNB_id][CC_id]<
|
while (current_eNB_rx_timestamp[eNB_id][CC_id]<
|
||||||
(nsamps+last_eNB_rx_timestamp[eNB_id][CC_id])) {
|
(nsamps+last_eNB_rx_timestamp[eNB_id][CC_id])) {
|
||||||
LOG_D(EMU,"eNB: current TS %llu, last TS %llu, sleeping\n",current_eNB_rx_timestamp[eNB_id][CC_id],last_eNB_rx_timestamp[eNB_id][CC_id]);
|
// LOG_D(EMU,"eNB: current TS %llu, last TS %llu, sleeping\n",current_eNB_rx_timestamp[eNB_id][CC_id],last_eNB_rx_timestamp[eNB_id][CC_id]);
|
||||||
usleep(500);
|
usleep(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1061,7 +1062,7 @@ int eNB_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void *
|
|||||||
pthread_mutex_unlock(&subframe_mutex);
|
pthread_mutex_unlock(&subframe_mutex);
|
||||||
|
|
||||||
subframe = (last_eNB_rx_timestamp[eNB_id][CC_id]/PHY_vars_eNB_g[eNB_id][CC_id]->frame_parms.samples_per_tti)%10;
|
subframe = (last_eNB_rx_timestamp[eNB_id][CC_id]/PHY_vars_eNB_g[eNB_id][CC_id]->frame_parms.samples_per_tti)%10;
|
||||||
LOG_D(PHY,"eNB_trx_read generating UL subframe %d (Ts %llu, current TS %llu)\n",
|
LOG_D(EMU,"eNB_trx_read generating UL subframe %d (Ts %llu, current TS %llu)\n",
|
||||||
subframe,(unsigned long long)*ptimestamp,
|
subframe,(unsigned long long)*ptimestamp,
|
||||||
(unsigned long long)current_eNB_rx_timestamp[eNB_id][CC_id]);
|
(unsigned long long)current_eNB_rx_timestamp[eNB_id][CC_id]);
|
||||||
|
|
||||||
@@ -1107,12 +1108,12 @@ int UE_trx_read(openair0_device *device, openair0_timestamp *ptimestamp, void **
|
|||||||
while (sample_count<nsamps) {
|
while (sample_count<nsamps) {
|
||||||
while (current_UE_rx_timestamp[UE_id][CC_id] <
|
while (current_UE_rx_timestamp[UE_id][CC_id] <
|
||||||
(last_UE_rx_timestamp[UE_id][CC_id]+read_size)) {
|
(last_UE_rx_timestamp[UE_id][CC_id]+read_size)) {
|
||||||
LOG_D(EMU,"UE_trx_read : current TS %d, last TS %d, sleeping\n",current_UE_rx_timestamp[UE_id][CC_id],last_UE_rx_timestamp[UE_id][CC_id]);
|
//LOG_D(EMU,"UE_trx_read : current TS %d, last TS %d, sleeping\n",current_UE_rx_timestamp[UE_id][CC_id],last_UE_rx_timestamp[UE_id][CC_id]);
|
||||||
|
|
||||||
usleep(500);
|
usleep(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_D(EMU,"UE_trx_read : current TS %d, last TS %d, sleeping\n",current_UE_rx_timestamp[UE_id][CC_id],last_UE_rx_timestamp[UE_id][CC_id]);
|
// LOG_D(EMU,"UE_trx_read : current TS %d, last TS %d, sleeping\n",current_UE_rx_timestamp[UE_id][CC_id],last_UE_rx_timestamp[UE_id][CC_id]);
|
||||||
|
|
||||||
// tell top-level we are busy
|
// tell top-level we are busy
|
||||||
pthread_mutex_lock(&subframe_mutex);
|
pthread_mutex_lock(&subframe_mutex);
|
||||||
@@ -1291,7 +1292,7 @@ void init_openair1(void)
|
|||||||
oai_emulation.info.tdd_config_S[CC_id],
|
oai_emulation.info.tdd_config_S[CC_id],
|
||||||
oai_emulation.info.extended_prefix_flag[CC_id],
|
oai_emulation.info.extended_prefix_flag[CC_id],
|
||||||
oai_emulation.info.N_RB_DL[CC_id],
|
oai_emulation.info.N_RB_DL[CC_id],
|
||||||
Nid_cell,
|
enb_properties->properties[0]->Nid_cell[CC_id],
|
||||||
cooperation_flag,
|
cooperation_flag,
|
||||||
enb_properties->properties[0]->nb_antenna_ports[CC_id],
|
enb_properties->properties[0]->nb_antenna_ports[CC_id],
|
||||||
abstraction_flag,
|
abstraction_flag,
|
||||||
@@ -1299,6 +1300,11 @@ void init_openair1(void)
|
|||||||
enb_properties->properties[0]->nb_antennas_tx[CC_id],
|
enb_properties->properties[0]->nb_antennas_tx[CC_id],
|
||||||
nb_antennas_rx_ue,
|
nb_antennas_rx_ue,
|
||||||
oai_emulation.info.eMBMS_active_state);
|
oai_emulation.info.eMBMS_active_state);
|
||||||
|
|
||||||
|
// This is for IF4p5 RRU, gets done by RRC configuration of eNB
|
||||||
|
PHY_vars_eNB_g[eNB_id][CC_id]->frame_parms.prach_config_common.prach_ConfigInfo.prach_ConfigIndex = enb_properties->properties[0]->prach_config_index[CC_id];
|
||||||
|
PHY_vars_eNB_g[eNB_id][CC_id]->frame_parms.prach_config_common.prach_ConfigInfo.prach_FreqOffset = enb_properties->properties[0]->prach_freq_offset[CC_id];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
|
for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user