Commit 36311386 authored by lfarizav's avatar lfarizav

PBCH detection and SIB1, SIB2 messages in multiple RRUs

parent 90ffa51f
......@@ -34,7 +34,7 @@
void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
PHY_VARS_UE *ue,
unsigned char eNB_id,
uint8_t subframe,
uint8_t subframe,
unsigned char clear,
short coef)
{
......@@ -101,11 +101,11 @@ void lte_adjust_synch(LTE_DL_FRAME_PARMS *frame_parms,
if (ue->mac_enabled==1) {
LOG_I(PHY,"[UE%d] Sending synch status to higher layers\n",ue->Mod_id);
//mac_resynch();
mac_xface->dl_phy_sync_success(ue->Mod_id,ue->proc.proc_rxtx[0].frame_rx,ue->common_vars.eNb_id,1);//ue->common_vars.eNb_id);
ue->UE_mode[eNB_id] = PRACH;
mac_xface->dl_phy_sync_success(ue->Mod_id,ue->proc.proc_rxtx[0].frame_rx,0,1);//ue->common_vars.eNb_id);
ue->UE_mode[0] = PRACH;
}
else {
ue->UE_mode[eNB_id] = PUSCH;
ue->UE_mode[0] = PUSCH;
}
}
......
......@@ -475,7 +475,7 @@ int lte_sync_time(int **rxdata, ///rx data in time domain
}
}
//*eNB_id = sync_source;
*eNB_id = sync_source;
LOG_D(PHY,"[UE] lte_sync_time: Sync source = %d, Peak found at pos %d, val = %d (%d dB)\n",sync_source,peak_pos,peak_val,dB_fixed(peak_val)/2);
......
......@@ -422,7 +422,7 @@ void ue_rrc_measurements(PHY_VARS_UE *ue,
//printf("after ue->measurements.rssi %d\n",ue->measurements.rssi);
//((200*ue->measurements.rsrq[eNB_offset]) + ((1024-200)*100*ue->measurements.rsrp[eNB_offset]*ue->frame_parms.N_RB_DL/ue->measurements.rssi))>>10;
} else { // Do abstraction of RSRP and RSRQ
ue->measurements.rssi = ue->measurements.rx_power_avg[ue->common_vars.eNb_id];
ue->measurements.rssi = ue->measurements.rx_power_avg[0];
// dummay value for the moment
ue->measurements.rsrp[eNB_offset] = -93 ;
ue->measurements.rsrq[eNB_offset] = 3;
......@@ -489,14 +489,6 @@ void ue_rrc_measurements_freq(PHY_VARS_UE *ue,
//printf("before ue->measurements.rssi %d\n",ue->measurements.rssi);
//printf("[UE %d] ue->current_thread_id[%d] %d, subframe %d\n",ue->Mod_id,subframe,ue->current_thread_id[subframe], subframe);
//printf("previous_thread_id %d\n",previous_thread_id);
/*if (ue->Mod_id==0 && ue->common_vars.eNb_id==0)
write_output("rxsigF00.m","rxF00", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],10*ue->frame_parms.ofdm_symbol_size*ue->frame_parms.symbols_per_tti,1,16);
else if (ue->Mod_id==0 && ue->common_vars.eNb_id==1)
write_output("rxsigF10.m","rxF10", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],10*ue->frame_parms.ofdm_symbol_size*ue->frame_parms.symbols_per_tti,1,16);
else if (ue->Mod_id==1 && ue->common_vars.eNb_id==1)
write_output("rxsigF11.m","rxF11", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],10*ue->frame_parms.ofdm_symbol_size*ue->frame_parms.symbols_per_tti,1,16);
else if (ue->Mod_id==1 && ue->common_vars.eNb_id==0)
write_output("rxsigF01.m","rxF01", ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].rxdataF[0],10*ue->frame_parms.ofdm_symbol_size*ue->frame_parms.symbols_per_tti,1,16);*/
for (eNB_offset = 0; eNB_offset<1+ue->measurements.n_adj_cells; eNB_offset++) {
printf("ue_rrc_measurements_freq: UE%d, eNB_offset %d,n_adj_cells %d, ofdm_symbol_size %d, symbols_per_tti %d\n",ue->Mod_id,eNB_offset,ue->measurements.n_adj_cells,ue->frame_parms.ofdm_symbol_size,ue->frame_parms.symbols_per_tti);
......@@ -732,7 +724,7 @@ void ue_rrc_measurements_freq(PHY_VARS_UE *ue,
//printf("after ue->measurements.rssi %d\n",ue->measurements.rssi);
//((200*ue->measurements.rsrq[eNB_offset]) + ((1024-200)*100*ue->measurements.rsrp[eNB_offset]*ue->frame_parms.N_RB_DL/ue->measurements.rssi))>>10;
} else { // Do abstraction of RSRP and RSRQ
ue->measurements.rssi = ue->measurements.rx_power_avg[ue->common_vars.eNb_id];
ue->measurements.rssi = ue->measurements.rx_power_avg[0];
// dummay value for the moment
ue->measurements.rsrp[eNB_offset] = -93 ;
ue->measurements.rsrq[eNB_offset] = 3;
......@@ -829,7 +821,7 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
}
// signal measurements
for (eNB_id=0; eNB_id<ue->n_connected_eNB; eNB_id++) {
for (eNB_id=0; eNB_id<1/*ue->n_connected_eNB*/; eNB_id++) {
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
for (aatx=0; aatx<frame_parms->nb_antenna_ports_eNB; aatx++) {
ue->measurements.rx_spatial_power[eNB_id][aatx][aarx] =
......@@ -861,8 +853,7 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
} //eNB_id
eNB_id=0;
for (eNB_id = 0; eNB_id < ue->n_connected_eNB; eNB_id++){
if (ue->transmission_mode[eNB_id]==4 || ue->transmission_mode[eNB_id]==3){
if (ue->transmission_mode[eNB_id]==4 || ue->transmission_mode[eNB_id]==3){
if (rank_adaptation == 1)
rank_tm3_tm4 = rank_estimation_tm3_tm4(&ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][4],
&ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][2][4],
......@@ -874,7 +865,6 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
#ifdef DEBUG_RANK_EST
printf("rank tm3 or tm4 %d\n", rank_tm3_tm4);
#endif
}
if (ue->transmission_mode[eNB_id]!=4 && ue->transmission_mode[eNB_id]!=3)
ue->measurements.rank[eNB_id] = 0;
......@@ -886,7 +876,7 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
// filter to remove jitter
if (ue->init_averaging == 0) {
for (eNB_id = 0; eNB_id < ue->n_connected_eNB; eNB_id++)
for (eNB_id = 0; eNB_id < 1/*ue->n_connected_eNB*/; eNB_id++)
ue->measurements.rx_power_avg[eNB_id] = (int)
(((k1*((long long int)(ue->measurements.rx_power_avg[eNB_id]))) +
(k2*((long long int)(ue->measurements.rx_power_tot[eNB_id]))))>>10);
......@@ -897,14 +887,14 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
(((k1*((long long int) (ue->measurements.n0_power_avg))) +
(k2*((long long int) (ue->measurements.n0_power_tot))))>>10);
} else {
for (eNB_id = 0; eNB_id < ue->n_connected_eNB; eNB_id++)
for (eNB_id = 0; eNB_id < 1/*ue->n_connected_eNB*/; eNB_id++)
ue->measurements.rx_power_avg[eNB_id] = ue->measurements.rx_power_tot[eNB_id];
ue->measurements.n0_power_avg = ue->measurements.n0_power_tot;
ue->init_averaging = 0;
}
//printf("[UE %d] UE %d connected to eNB %d\n",ue->Mod_id,ue->n_connected_eNB,eNB_id);
for (eNB_id = 0; eNB_id < ue->n_connected_eNB; eNB_id++) {
for (eNB_id = 0; eNB_id < 1/*ue->n_connected_eNB*/; eNB_id++) {
ue->measurements.rx_power_avg_dB[eNB_id] = dB_fixed( ue->measurements.rx_power_avg[eNB_id]);
ue->measurements.wideband_cqi_tot[eNB_id] = dB_fixed2(ue->measurements.rx_power_tot[eNB_id],ue->measurements.n0_power_tot);
ue->measurements.wideband_cqi_avg[eNB_id] = dB_fixed2(ue->measurements.rx_power_avg[eNB_id],ue->measurements.n0_power_avg);
......@@ -923,7 +913,7 @@ void lte_ue_measurements(PHY_VARS_UE *ue,
ue->measurements.n0_power_avg_dB = dB_fixed( ue->measurements.n0_power_avg);
for (eNB_id = 0; eNB_id < ue->n_connected_eNB; eNB_id++) {
for (eNB_id = 0; eNB_id < 1/*ue->n_connected_eNB*/; eNB_id++) {
if (frame_parms->mode1_flag==0) {
// cqi/pmi information
......@@ -1203,7 +1193,7 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
// signal measurements
printf("lte_ue_measurements_freq: ue->n_connected_eNB %d\n",ue->n_connected_eNB);
for (eNB_id=0; eNB_id<ue->n_connected_eNB; eNB_id++) {
for (eNB_id=0; eNB_id<1/*ue->n_connected_eNB*/; eNB_id++) {
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
for (aatx=0; aatx<frame_parms->nb_antenna_ports_eNB; aatx++) {
ue->measurements.rx_spatial_power[eNB_id][aatx][aarx] =
......@@ -1235,8 +1225,7 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
} //eNB_id
eNB_id=0;
for (eNB_id = 0; eNB_id < ue->n_connected_eNB; eNB_id++){
if (ue->transmission_mode[eNB_id]==4 || ue->transmission_mode[eNB_id]==3){
if (ue->transmission_mode[eNB_id]==4 || ue->transmission_mode[eNB_id]==3){
if (rank_adaptation == 1)
rank_tm3_tm4 = rank_estimation_tm3_tm4(&ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][0][4],
&ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id][2][4],
......@@ -1248,7 +1237,6 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
#ifdef DEBUG_RANK_EST
printf("rank tm3 or tm4 %d\n", rank_tm3_tm4);
#endif
}
if (ue->transmission_mode[eNB_id]!=4 && ue->transmission_mode[eNB_id]!=3)
ue->measurements.rank[eNB_id] = 0;
......@@ -1259,7 +1247,7 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
}
// filter to remove jitter
if (ue->init_averaging == 0) {
for (eNB_id = 0; eNB_id < ue->n_connected_eNB; eNB_id++)
for (eNB_id = 0; eNB_id < 1/*ue->n_connected_eNB*/; eNB_id++)
ue->measurements.rx_power_avg[eNB_id] = (int)
(((k1*((long long int)(ue->measurements.rx_power_avg[eNB_id]))) +
(k2*((long long int)(ue->measurements.rx_power_tot[eNB_id]))))>>10);
......@@ -1270,14 +1258,14 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
(((k1*((long long int) (ue->measurements.n0_power_avg))) +
(k2*((long long int) (ue->measurements.n0_power_tot))))>>10);
} else {
for (eNB_id = 0; eNB_id < ue->n_connected_eNB; eNB_id++)
for (eNB_id = 0; eNB_id < 1/*ue->n_connected_eNB*/; eNB_id++)
ue->measurements.rx_power_avg[eNB_id] = ue->measurements.rx_power_tot[eNB_id];
ue->measurements.n0_power_avg = ue->measurements.n0_power_tot;
ue->init_averaging = 0;
}
//printf("[UE %d] UE %d connected to eNB %d\n",ue->Mod_id,ue->n_connected_eNB,eNB_id);
for (eNB_id = 0; eNB_id < ue->n_connected_eNB; eNB_id++) {
for (eNB_id = 0; eNB_id < 1/*ue->n_connected_eNB*/; eNB_id++) {
ue->measurements.rx_power_avg_dB[eNB_id] = dB_fixed( ue->measurements.rx_power_avg[eNB_id]);
ue->measurements.wideband_cqi_tot[eNB_id] = dB_fixed2(ue->measurements.rx_power_tot[eNB_id],ue->measurements.n0_power_tot);
ue->measurements.wideband_cqi_avg[eNB_id] = dB_fixed2(ue->measurements.rx_power_avg[eNB_id],ue->measurements.n0_power_avg);
......@@ -1296,7 +1284,7 @@ void lte_ue_measurements_freq(PHY_VARS_UE *ue,
ue->measurements.n0_power_avg_dB = dB_fixed( ue->measurements.n0_power_avg);
for (eNB_id = 0; eNB_id < ue->n_connected_eNB; eNB_id++) {
for (eNB_id = 0; eNB_id < 1/*ue->n_connected_eNB*/; eNB_id++) {
if (frame_parms->mode1_flag==0) {
// cqi/pmi information
......
......@@ -4134,7 +4134,7 @@ uint16_t dci_decoding_procedure(PHY_VARS_UE *ue,
//printf("[dci]4 dci_cnt %d, CCEmap0 %x\n",dci_cnt,CCEmap0);
}
if (ue->UE_mode[eNB_id] <= PRACH)
if (ue->UE_mode[0] <= PRACH)
return(dci_cnt);
if (ue->prach_resources[eNB_id])
......
This diff is collapsed.
......@@ -409,7 +409,7 @@ int slot_fep_freq(PHY_VARS_UE *ue,
#if UE_TIMING_TRACE
start_meas(&ue->dlsch_channel_estimation_stats);
#endif
lte_dl_channel_estimation_freq(ue,eNB_id,0,
lte_dl_channel_estimation_freq(ue,0,0,
Ns,
aa,
l,
......@@ -419,7 +419,7 @@ int slot_fep_freq(PHY_VARS_UE *ue,
#endif
for (i=0; i<ue->measurements.n_adj_cells; i++) {
lte_dl_channel_estimation_freq(ue,eNB_id,i+1,
lte_dl_channel_estimation_freq(ue,0,i+1,
Ns,
aa,
l,
......@@ -440,7 +440,7 @@ int slot_fep_freq(PHY_VARS_UE *ue,
start_meas(&ue->dlsch_freq_offset_estimation_stats);
#endif
lte_est_freq_offset(common_vars->common_vars_rx_data_per_thread[current_thread_id[Ns>>1]].dl_ch_estimates[eNB_id],
lte_est_freq_offset(common_vars->common_vars_rx_data_per_thread[current_thread_id[Ns>>1]].dl_ch_estimates[0],
frame_parms,
l,
&common_vars->freq_offset,
......
......@@ -575,16 +575,16 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form,
rxsig_t = (int16_t**) phy_vars_ue->common_vars.common_vars_rx_data_per_thread[subframe&0x1].rxdataF;
else
rxsig_t = (int16_t**) phy_vars_ue->common_vars.rxdata;
chest_t = (int16_t**) phy_vars_ue->common_vars.common_vars_rx_data_per_thread[phy_vars_ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id];
chest_f = (int16_t**) phy_vars_ue->common_vars.common_vars_rx_data_per_thread[phy_vars_ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id];
pbch_llr = (int8_t*) phy_vars_ue->pbch_vars[eNB_id]->llr;
pbch_comp = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->rxdataF_comp[0];
pdcch_llr = (int8_t*) phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->llr;
pdcch_comp = (int16_t*) phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp[0];
pdsch_llr = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->llr[0]; // stream 0
chest_t = (int16_t**) phy_vars_ue->common_vars.common_vars_rx_data_per_thread[phy_vars_ue->current_thread_id[subframe]].dl_ch_estimates_time[0];
chest_f = (int16_t**) phy_vars_ue->common_vars.common_vars_rx_data_per_thread[phy_vars_ue->current_thread_id[subframe]].dl_ch_estimates[0];
pbch_llr = (int8_t*) phy_vars_ue->pbch_vars[0]->llr;
pbch_comp = (int16_t*) phy_vars_ue->pbch_vars[0]->rxdataF_comp[0];
pdcch_llr = (int8_t*) phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][0]->llr;
pdcch_comp = (int16_t*) phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][0]->rxdataF_comp[0];
pdsch_llr = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][0]->llr[0]; // stream 0
// pdsch_llr = (int16_t*) phy_vars_ue->lte_ue_pdsch_vars_SI[eNB_id]->llr[0]; // stream 0
pdsch_comp = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp0[0];
pdsch_mag = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->dl_ch_mag0[0];
pdsch_comp = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][0]->rxdataF_comp0[0];
pdsch_mag = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][0]->dl_ch_mag0[0];
//printf("FRAME_LENGTH_COMPLEX_SAMPLES is %d\n",FRAME_LENGTH_COMPLEX_SAMPLES);
// Received signal in time domain of receive antenna 0
if (rxsig_t != NULL) {
......
......@@ -717,6 +717,7 @@ lte_subframe_t subframe_select(LTE_DL_FRAME_PARMS *frame_parms,unsigned char sub
{
// if FDD return dummy value
//printf("subframe_select: frame_type %s \n",(frame_parms->frame_type == FDD)?"FDD":"TDD");
if (frame_parms->frame_type == FDD)
return(SF_DL);
......
......@@ -2457,7 +2457,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
}
}
if (ue->UE_mode[eNB_id] != PRACH) {
if (ue->UE_mode[0] != PRACH) {
// check cell srs subframe and ue srs subframe. This has an impact on pusch encoding
isSubframeSRS = is_srs_occasion_common(&ue->frame_parms,proc->frame_tx,proc->subframe_tx);
......@@ -2467,7 +2467,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
}
if (ue->UE_mode[eNB_id] == PUSCH) {
if (ue->UE_mode[0] == PUSCH) {
// check if we need to use PUCCH 1a/1b
ue_pucch_procedures(ue,proc,eNB_id,abstraction_flag);
// check if we need to use SRS
......@@ -2539,7 +2539,7 @@ void phy_procedures_UE_TX(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,ui
} // mode != PRACH
if ((ue->UE_mode[eNB_id] == PRACH) &&
if ((ue->UE_mode[0] == PRACH) &&
(ue->frame_parms.prach_config_common.prach_Config_enabled==1)) {
// check if we have PRACH opportunity
......@@ -2715,7 +2715,7 @@ void ue_measurement_procedures(
#ifndef OAI_USRP
#ifndef OAI_BLADERF
#ifndef OAI_LMSSDR
phy_adjust_gain (ue,dB_fixed(ue->measurements.rssi),ue->common_vars.eNb_id);
phy_adjust_gain (ue,dB_fixed(ue->measurements.rssi),0);
//printf("phy_adjust_gain phy_proc_ue\n");
#endif
#endif
......@@ -2782,7 +2782,7 @@ void phy_procedures_emos_UE_RX(PHY_VARS_UE *ue,uint8_t last_slot,uint8_t eNB_id)
if (last_slot==0) {
emos_dump_UE.timestamp = rt_get_time_ns();
emos_dump_UE.frame_rx = proc->frame_rx;
emos_dump_UE.UE_mode = ue->UE_mode[eNB_id];
emos_dump_UE.UE_mode = ue->UE_mode[0];
emos_dump_UE.mimo_mode = ue->transmission_mode[eNB_id];
emos_dump_UE.freq_offset = ue->common_vars.freq_offset;
emos_dump_UE.timing_advance = ue->timing_advance;
......@@ -2840,9 +2840,9 @@ void restart_phy(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uint8_t eNB_id,uint8_t ab
// first_run = 1;
if (abstraction_flag ==0 ) {
ue->UE_mode[eNB_id] = NOT_SYNCHED;
ue->UE_mode[0] = NOT_SYNCHED;
} else {
ue->UE_mode[eNB_id] = PRACH;
ue->UE_mode[0] = PRACH;
ue->prach_resources[eNB_id]=NULL;
}
......@@ -2983,9 +2983,9 @@ void ue_pbch_procedures(uint8_t eNB_id,PHY_VARS_UE *ue,UE_rxtx_proc_t *proc, uin
frame_tx += pbch_phase;
if (ue->mac_enabled==1) {
printf("[UE%d] if mac_enabled? then dl_phy_sync_success. UE_mode %s\n",ue->Mod_id,ue->UE_mode[eNB_id]==NOT_SYNCHED?"NOT_SYNCHED":ue->UE_mode[eNB_id]==NOT_SYNCHED?"SYNCHED":"OTHER CHOICE");
printf("[UE%d] if mac_enabled? then dl_phy_sync_success. UE_mode %s\n",ue->Mod_id,ue->UE_mode[0]==NOT_SYNCHED?"NOT_SYNCHED":ue->UE_mode[0]==NOT_SYNCHED?"SYNCHED":"OTHER CHOICE");
mac_xface->dl_phy_sync_success(ue->Mod_id,frame_rx,eNB_id,
ue->UE_mode[eNB_id]==NOT_SYNCHED ? 1 : 0);
ue->UE_mode[0]==NOT_SYNCHED ? 1 : 0);
}
#ifdef EMOS
......@@ -3822,11 +3822,11 @@ void process_rar(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, int eNB_id, runmode_t mo
LOG_D(PHY,"[UE %d][RAPROC] Frame %d subframe %d Received RAR mode %d\n",
ue->Mod_id,
frame_rx,
subframe_rx, ue->UE_mode[eNB_id]);
subframe_rx, ue->UE_mode[0]);
if (ue->mac_enabled == 1) {
if ((ue->UE_mode[eNB_id] != PUSCH) &&
if ((ue->UE_mode[0] != PUSCH) &&
(ue->prach_resources[eNB_id]->Msg3!=NULL)) {
LOG_D(PHY,"[UE %d][RAPROC] Frame %d subframe %d Invoking MAC for RAR (current preamble %d)\n",
ue->Mod_id,frame_rx,
......@@ -3880,7 +3880,7 @@ void process_rar(PHY_VARS_UE *ue, UE_rxtx_proc_t *proc, int eNB_id, runmode_t mo
ue->ulsch_Msg3_subframe[eNB_id]);
ue->ulsch[eNB_id]->harq_processes[harq_pid]->round = 0;
ue->UE_mode[eNB_id] = RA_RESPONSE;
ue->UE_mode[0] = RA_RESPONSE;
// ue->Msg3_timer[eNB_id] = 10;
ue->ulsch[eNB_id]->power_offset = 6;
ue->ulsch_no_allocation_counter[eNB_id] = 0;
......@@ -4447,7 +4447,7 @@ void *UE_thread_slot1_dl_processing(void *arg) {
if ( (subframe_rx == 0) && (ue->decode_MIB == 1))
{
ue_pbch_procedures(ue->common_vars.eNb_id,ue,proc,0);
ue_pbch_procedures(0,ue,proc,0);
}
proc->chan_est_slot1_available = 1;
......@@ -5690,7 +5690,7 @@ void phy_procedures_UE_lte(PHY_VARS_UE *ue,UE_rxtx_proc_t *proc,uint8_t eNB_id,u
int slot;
if (ue->mac_enabled == 0) {
ue->UE_mode[eNB_id]=PUSCH;
ue->UE_mode[0]=PUSCH;
}
......
......@@ -4444,7 +4444,7 @@ NAS_KENB_REFRESH_REQ,NAS_CELL_SELECTION_REQ,RRC_STATE_INACTIVE,RRC_STATE_IDLE,RR
if (rrc_get_state(ue_mod_id) == RRC_STATE_INACTIVE) {
// have a look at MAC/main.c void dl_phy_sync_success(...)
printf("openair_rrc_ue_init: UE %d\n",ue_mod_id);
openair_rrc_ue_init(ue_mod_id,PHY_vars_UE_g[ue_mod_id][0]->common_vars.eNb_id);
openair_rrc_ue_init(ue_mod_id,0/*PHY_vars_UE_g[ue_mod_id][0]->common_vars.eNb_id*/);
}
/* Save cell selection criterion */
......
......@@ -221,7 +221,7 @@ eNBs =
eutra_band = 7;
downlink_frequency = 2685000000L;
uplink_frequency_offset = -120000000;
Nid_cell = 0;
Nid_cell = 1;
N_RB_DL = 25;
Nid_cell_mbsfn = 0;
nb_antenna_ports = 1;
......
......@@ -848,7 +848,7 @@ static void *UE_thread_rxn_txnp4(void *arg) {
proc->frame_tx,
proc->subframe_tx,
subframe_select(&UE->frame_parms,proc->subframe_tx),
UE->common_vars.eNb_id,
0,
0/*FIXME CC_id*/);
if ( ret != CONNECTION_OK) {
char *txt;
......@@ -878,13 +878,13 @@ static void *UE_thread_rxn_txnp4(void *arg) {
if ((subframe_select( &UE->frame_parms, proc->subframe_tx) == SF_UL) ||
(UE->frame_parms.frame_type == FDD) )
if (UE->mode != loop_through_memory)
phy_procedures_UE_TX(UE,proc,UE->common_vars.eNb_id,0,UE->mode,no_relay);
phy_procedures_UE_TX(UE,proc,0,0,UE->mode,no_relay);
if ((subframe_select( &UE->frame_parms, proc->subframe_tx) == SF_S) &&
(UE->frame_parms.frame_type == TDD))
if (UE->mode != loop_through_memory)
phy_procedures_UE_S_TX(UE,UE->common_vars.eNb_id,0,no_relay);
phy_procedures_UE_S_TX(UE,0,0,no_relay);
updateTimes(current, &t3, 10000, "Delay to process sub-frame (case 3)");
if (pthread_mutex_lock(&proc->mutex_rxtx) != 0) {
......
......@@ -51,8 +51,8 @@ PHY_VARS_eNB* init_lte_eNB(LTE_DL_FRAME_PARMS *frame_parms,
PHY_vars_eNB->Mod_id=eNB_id;
PHY_vars_eNB->cooperation_flag=0;//cooperation_flag;
memcpy(&(PHY_vars_eNB->frame_parms), frame_parms, sizeof(LTE_DL_FRAME_PARMS));
PHY_vars_eNB->frame_parms.Nid_cell = Nid_cell;
PHY_vars_eNB->frame_parms.nushift = PHY_vars_eNB->frame_parms.Nid_cell%6;
//PHY_vars_eNB->frame_parms.Nid_cell = Nid_cell;
//PHY_vars_eNB->frame_parms.nushift = PHY_vars_eNB->frame_parms.Nid_cell%6;
phy_init_lte_eNB(PHY_vars_eNB,0,abstraction_flag);
LOG_I(PHY,"init eNB: Node Function %d\n",node_function);
......
......@@ -1462,7 +1462,7 @@ void init_openair1(void)
for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++) {
PHY_vars_eNB_g[eNB_id] = (PHY_VARS_eNB**) malloc(MAX_NUM_CCs*sizeof(PHY_VARS_eNB*));
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
LOG_I(PHY,"init lte parms: Nid_cell %d, Frame type %d, N_RB_DL %d, nushift %d\n",enb_properties->properties[eNB_id]->Nid_cell[CC_id],oai_emulation.info.frame_type[CC_id],oai_emulation.info.N_RB_DL[CC_id],((enb_properties->properties[eNB_id]->Nid_cell[CC_id])%6));
LOG_I(PHY,"init lte parms: Nid_cell %d, Frame type %s, N_RB_DL %d, nushift %d\n",enb_properties->properties[eNB_id]->Nid_cell[CC_id],(oai_emulation.info.frame_type[CC_id]== FDD)?"FDD":"TDD",oai_emulation.info.N_RB_DL[CC_id],((enb_properties->properties[eNB_id]->Nid_cell[CC_id])%6));
frame_parms[CC_id] = calloc(1, sizeof(LTE_DL_FRAME_PARMS));
(frame_parms[CC_id])->frame_type = oai_emulation.info.frame_type[CC_id];
(frame_parms[CC_id])->tdd_config = oai_emulation.info.tdd_config_S[CC_id];
......@@ -1492,13 +1492,14 @@ void init_openair1(void)
PHY_vars_eNB_g[eNB_id][CC_id]->Mod_id=eNB_id;
PHY_vars_eNB_g[eNB_id][CC_id]->CC_id=CC_id;
}
}
}
PHY_vars_UE_g = (PHY_VARS_UE***)malloc(NB_UE_INST*sizeof(PHY_VARS_UE**));
for (UE_id=0; UE_id<NB_UE_INST; UE_id++) {
PHY_vars_UE_g[UE_id] = (PHY_VARS_UE**) malloc(MAX_NUM_CCs*sizeof(PHY_VARS_UE*));
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
(frame_parms[CC_id])->nb_antennas_tx = 1;
(frame_parms[CC_id])->nb_antennas_rx = nb_antennas_rx_ue;
(frame_parms[CC_id])->frame_type = oai_emulation.info.frame_type[CC_id];
PHY_vars_UE_g[UE_id][CC_id] = init_lte_UE(frame_parms[CC_id], UE_id,abstraction_flag);
PHY_vars_UE_g[UE_id][CC_id]->Mod_id=UE_id;
PHY_vars_UE_g[UE_id][CC_id]->CC_id=CC_id;
......@@ -1524,6 +1525,7 @@ void init_openair1(void)
enb_properties->properties[eNB_id]->nb_antennas_tx[CC_id],
nb_antennas_rx_ue,
oai_emulation.info.eMBMS_active_state);*/
for (CC_id=0; CC_id<MAX_NUM_CCs; CC_id++) {
for (eNB_id=0;eNB_id<enb_properties->number;eNB_id++) {
// This is for IF4p5 RRU, gets done by RRC configuration of eNB
......@@ -1547,12 +1549,12 @@ void init_openair1(void)
}
}
}
printf ("AFTER init: MAX_NUM_CCs %d, Nid_cell %d frame_type %d,tdd_config %d\n",
for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++)
printf ("AFTER init: MAX_NUM_CCs %d, Nid_cell %d frame_type %d,tdd_config %d\n",
MAX_NUM_CCs,
PHY_vars_eNB_g[0][0]->frame_parms.Nid_cell,
PHY_vars_eNB_g[0][0]->frame_parms.frame_type,
PHY_vars_eNB_g[0][0]->frame_parms.tdd_config);
PHY_vars_eNB_g[eNB_id][0]->frame_parms.Nid_cell,
PHY_vars_eNB_g[eNB_id][0]->frame_parms.frame_type,
PHY_vars_eNB_g[eNB_id][0]->frame_parms.tdd_config);
number_of_cards = 1;
......@@ -1627,11 +1629,11 @@ void init_openair1(void)
// update UE_mode for each eNB_id not just 0
for (eNB_id=0; eNB_id<NB_eNB_INST; eNB_id++){
if (abstraction_flag == 0) {
if (phy_test==0) PHY_vars_UE_g[UE_id][CC_id]->UE_mode[eNB_id] = NOT_SYNCHED;
else PHY_vars_UE_g[UE_id][CC_id]->UE_mode[eNB_id] = PUSCH;
if (phy_test==0) PHY_vars_UE_g[UE_id][CC_id]->UE_mode[0] = NOT_SYNCHED;
else PHY_vars_UE_g[UE_id][CC_id]->UE_mode[0] = PUSCH;
} else {
// 0 is the index of the connected eNB
PHY_vars_UE_g[UE_id][CC_id]->UE_mode[eNB_id] = PRACH;
PHY_vars_UE_g[UE_id][CC_id]->UE_mode[0] = PRACH;
}
}
if (phy_test==1)
......@@ -1647,7 +1649,7 @@ void init_openair1(void)
}
PHY_vars_UE_g[UE_id][CC_id]->current_dlsch_cqi[eNB_id] = 10;
LOG_I(EMU, "UE %d mode is initialized to %d\n", UE_id, PHY_vars_UE_g[UE_id][CC_id]->UE_mode[eNB_id] );
LOG_I(EMU, "eNB_id %d, UE %d, CC %d, mode is initialized to %d\n", eNB_id, UE_id, CC_id, PHY_vars_UE_g[UE_id][CC_id]->UE_mode[0] );
}
#if ENABLE_RAL
PHY_vars_UE_g[UE_id][CC_id]->ral_thresholds_timed = hashtable_create (64, NULL, NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment