git-svn-id: http://svn.eurecom.fr/openair4G/trunk@5738 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -124,6 +124,8 @@ else # default is rel 8
|
||||
CFLAGS += -DRel8
|
||||
endif
|
||||
|
||||
CFLAGS += -DMAX_NUM_CCs=1
|
||||
|
||||
ifeq ($(RLC_STOP_ON_LOST_PDU), 1)
|
||||
CFLAGS += -DRLC_STOP_ON_LOST_PDU
|
||||
endif
|
||||
@@ -191,7 +193,6 @@ endif
|
||||
endif
|
||||
endif
|
||||
|
||||
CFLAGS += -DMAX_NUM_CCs=1
|
||||
include $(OPENAIR1_DIR)/PHY/Makefile.inc
|
||||
include $(OPENAIR1_DIR)/SCHED/Makefile.inc
|
||||
include $(OPENAIR2_DIR)/RRC/LITE/MESSAGES/Makefile.inc
|
||||
|
||||
@@ -71,71 +71,14 @@
|
||||
#include "oaisim.h"
|
||||
|
||||
#define RF
|
||||
//#define DEBUG_SIM
|
||||
#define DEBUG_SIM
|
||||
|
||||
int number_rb_ul;
|
||||
int first_rbUL ;
|
||||
|
||||
extern Signal_buffers_t *signal_buffers_g;
|
||||
|
||||
void do_OFDM_mod(mod_sym_t **txdataF, int32_t **txdata, uint32_t frame,uint16_t next_slot, LTE_DL_FRAME_PARMS *frame_parms) {
|
||||
|
||||
int aa, slot_offset, slot_offset_F;
|
||||
|
||||
slot_offset_F = (next_slot)*(frame_parms->ofdm_symbol_size)*((frame_parms->Ncp==1) ? 6 : 7);
|
||||
slot_offset = (next_slot)*(frame_parms->samples_per_tti>>1);
|
||||
|
||||
for (aa=0; aa<frame_parms->nb_antennas_tx; aa++) {
|
||||
if (is_pmch_subframe(frame,next_slot>>1,frame_parms)) {
|
||||
if ((next_slot%2)==0) {
|
||||
LOG_D(OCM,"Frame %d, subframe %d: Doing MBSFN modulation (slot_offset %d)\n",frame,next_slot>>1,slot_offset);
|
||||
PHY_ofdm_mod(&txdataF[aa][slot_offset_F], // input
|
||||
&txdata[aa][slot_offset], // output
|
||||
frame_parms->log2_symbol_size, // log2_fft_size
|
||||
12, // number of symbols
|
||||
frame_parms->ofdm_symbol_size>>2, // number of prefix samples
|
||||
frame_parms->twiddle_ifft, // IFFT twiddle factors
|
||||
frame_parms->rev, // bit-reversal permutation
|
||||
CYCLIC_PREFIX);
|
||||
|
||||
if (frame_parms->Ncp == EXTENDED)
|
||||
PHY_ofdm_mod(&txdataF[aa][slot_offset_F], // input
|
||||
&txdata[aa][slot_offset], // output
|
||||
frame_parms->log2_symbol_size, // log2_fft_size
|
||||
2, // number of symbols
|
||||
frame_parms->nb_prefix_samples, // number of prefix samples
|
||||
frame_parms->twiddle_ifft, // IFFT twiddle factors
|
||||
frame_parms->rev, // bit-reversal permutation
|
||||
CYCLIC_PREFIX);
|
||||
else {
|
||||
LOG_D(OCM,"Frame %d, subframe %d: Doing PDCCH modulation\n",frame,next_slot>>1);
|
||||
normal_prefix_mod(&txdataF[aa][slot_offset_F],
|
||||
&txdata[aa][slot_offset],
|
||||
2,
|
||||
frame_parms);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (frame_parms->Ncp == EXTENDED)
|
||||
PHY_ofdm_mod(&txdataF[aa][slot_offset_F], // input
|
||||
&txdata[aa][slot_offset], // output
|
||||
frame_parms->log2_symbol_size, // log2_fft_size
|
||||
6, // number of symbols
|
||||
frame_parms->nb_prefix_samples, // number of prefix samples
|
||||
frame_parms->twiddle_ifft, // IFFT twiddle factors
|
||||
frame_parms->rev, // bit-reversal permutation
|
||||
CYCLIC_PREFIX);
|
||||
else {
|
||||
normal_prefix_mod(&txdataF[aa][slot_offset_F],
|
||||
&txdata[aa][slot_offset],
|
||||
7,
|
||||
frame_parms);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void do_DL_sig(double **r_re0,double **r_im0,
|
||||
double **r_re,double **r_im,
|
||||
@@ -162,7 +105,8 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
uint8_t nb_antennas_rx = eNB2UE[0][0][CC_id]->nb_rx; // number of rx antennas at UE
|
||||
uint8_t nb_antennas_tx = eNB2UE[0][0][CC_id]->nb_tx; // number of tx antennas at eNB
|
||||
|
||||
int subframe_sched = ((next_slot>>1) == 0) ? 9 : ((next_slot>>1)-1);
|
||||
LTE_DL_FRAME_PARMS *fp;
|
||||
// int subframe_sched = ((next_slot>>1) == 0) ? 9 : ((next_slot>>1)-1);
|
||||
|
||||
|
||||
if (next_slot==0)
|
||||
@@ -176,6 +120,7 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
if (!hold_channel) {
|
||||
// calculate the random channel from each eNB
|
||||
for (eNB_id=0;eNB_id<NB_eNB_INST;eNB_id++) {
|
||||
|
||||
random_channel(eNB2UE[eNB_id][UE_id][CC_id],abstraction_flag);
|
||||
/*
|
||||
for (i=0;i<eNB2UE[eNB_id][UE_id]->nb_taps;i++)
|
||||
@@ -214,7 +159,7 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
eNB2UE[att_eNB_id][UE_id][CC_id]->channel_length)*eNB2UE[att_eNB_id][UE_id][CC_id]->channel_length;
|
||||
LOG_D(OCM,"Channel (CCid %d) eNB %d => UE %d : tx_power %d dBm, path_loss %f dB\n",
|
||||
CC_id,att_eNB_id,UE_id,
|
||||
PHY_vars_eNB_g[att_eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower,
|
||||
frame_parms->pdsch_config_common.referenceSignalPower,
|
||||
eNB2UE[att_eNB_id][UE_id][CC_id]->path_loss_dB);
|
||||
#endif
|
||||
|
||||
@@ -223,7 +168,7 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
channel_desc_t *desc1 = eNB2UE[att_eNB_id][UE_id][CC_id];
|
||||
int32_t **dl_channel_est = PHY_vars_UE_g[UE_id][CC_id]->lte_ue_common_vars.dl_ch_estimates[0];
|
||||
// double scale = pow(10.0,(enb_data[att_eNB_id]->tx_power_dBm + eNB2UE[att_eNB_id][UE_id]->path_loss_dB + (double) PHY_vars_UE_g[UE_id]->rx_total_gain_dB)/20.0);
|
||||
double scale = pow(10.0,(PHY_vars_eNB_g[att_eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower+eNB2UE[att_eNB_id][UE_id][CC_id]->path_loss_dB + (double) PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB)/20.0);
|
||||
double scale = pow(10.0,(frame_parms->pdsch_config_common.referenceSignalPower+eNB2UE[att_eNB_id][UE_id][CC_id]->path_loss_dB + (double) PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB)/20.0);
|
||||
//this factor is not really needed (it was actually wrong in the non abstraction mode)
|
||||
//scale = scale * sqrt(512.0/300.0); //TODO: make this variable for all BWs
|
||||
LOG_D(OCM,"scale =%lf (%d dB)\n",scale,(int) (20*log10(scale)));
|
||||
@@ -277,14 +222,7 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
Call do_OFDM_mod from phy_procedures_eNB_TX function
|
||||
*/
|
||||
|
||||
for (eNB_id=0;eNB_id<NB_eNB_INST;eNB_id++) {
|
||||
start_meas(&PHY_vars_eNB_g[eNB_id][CC_id]->ofdm_mod_stats);
|
||||
do_OFDM_mod(PHY_vars_eNB_g[eNB_id][CC_id]->lte_eNB_common_vars.txdataF[0],
|
||||
PHY_vars_eNB_g[eNB_id][CC_id]->lte_eNB_common_vars.txdata[0],
|
||||
PHY_vars_eNB_g[eNB_id][CC_id]->proc[subframe_sched].frame_tx,next_slot,
|
||||
&PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms);
|
||||
stop_meas(&PHY_vars_eNB_g[eNB_id][CC_id]->ofdm_mod_stats);
|
||||
}
|
||||
|
||||
|
||||
//for (UE_id=0;UE_id<NB_UE_INST;UE_id++) {
|
||||
// Compute RX signal for UE = UE_id
|
||||
@@ -309,7 +247,7 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
// if (((double)PHY_vars_UE_g[UE_id]->tx_power_dBm +
|
||||
// eNB2UE[eNB_id][UE_id]->path_loss_dB) <= -107.0)
|
||||
// break;
|
||||
frame_parms = &PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms;
|
||||
|
||||
txdata = PHY_vars_eNB_g[eNB_id][CC_id]->lte_eNB_common_vars.txdata[0];
|
||||
slot_offset = (next_slot)*(frame_parms->samples_per_tti>>1);
|
||||
slot_offset_meas = ((next_slot&1)==0) ? slot_offset : (slot_offset-(frame_parms->samples_per_tti>>1));
|
||||
@@ -323,12 +261,14 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
frame_parms->ofdm_symbol_size,
|
||||
14,
|
||||
// enb_data[eNB_id]->tx_power_dBm);
|
||||
PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower);
|
||||
frame_parms->pdsch_config_common.referenceSignalPower,
|
||||
frame_parms->N_RB_DL*12);
|
||||
|
||||
#ifdef DEBUG_SIM
|
||||
LOG_D(OCM,"[SIM][DL] eNB %d (CCid %d): tx_pwr %f dBm, for slot %d (subframe %d)\n",
|
||||
LOG_D(OCM,"[SIM][DL] eNB %d (CCid %d): tx_pwr %f dBm (target %f), for slot %d (subframe %d)\n",
|
||||
eNB_id,CC_id,
|
||||
10*log10(tx_pwr),
|
||||
frame_parms->pdsch_config_common.referenceSignalPower+10*log10(12.0*frame_parms->N_RB_DL),
|
||||
next_slot,
|
||||
next_slot>>1);
|
||||
#endif
|
||||
@@ -347,15 +287,16 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
printf("ch(%d,%d)[%d] : (%f,%f)\n",eNB_id,UE_id,i,eNB2UE[eNB_id][UE_id][CC_id]->ch[0][i].x,eNB2UE[eNB_id][UE_id][CC_id]->ch[0][i].y);
|
||||
#endif
|
||||
|
||||
LOG_D(OCM,"[SIM][DL] Channel eNB %d => UE %d (CCid %d): tx_power %f dBm, path_loss %f dB\n",
|
||||
LOG_D(OCM,"[SIM][DL] Channel eNB %d => UE %d (CCid %d): tx_power %f dBm/RE, path_loss %f dB\n",
|
||||
eNB_id,UE_id,CC_id,
|
||||
(double)PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower,
|
||||
(double)frame_parms->pdsch_config_common.referenceSignalPower,
|
||||
// enb_data[eNB_id]->tx_power_dBm,
|
||||
eNB2UE[eNB_id][UE_id][CC_id]->path_loss_dB);
|
||||
|
||||
#ifdef DEBUG_SIM
|
||||
rx_pwr = signal_energy_fp(r_re0,r_im0,nb_antennas_rx,512,0)*512.0/300.0;
|
||||
LOG_D(OCM,"[SIM][DL] UE %d : rx_pwr %f dBm for slot %d (subframe %d)\n",UE_id,10*log10(rx_pwr),next_slot,next_slot>>1);
|
||||
rx_pwr = signal_energy_fp(r_re0,r_im0,nb_antennas_rx,frame_parms->ofdm_symbol_size,0)*(double)frame_parms->ofdm_symbol_size/(12.0*frame_parms->N_RB_DL);
|
||||
LOG_D(OCM,"[SIM][DL] UE %d : rx_pwr %f dBm/RE (%f dBm RSSI)for slot %d (subframe %d)\n",UE_id,10*log10(rx_pwr/12.0/(double)frame_parms->N_RB_DL),10*log10(rx_pwr),next_slot,next_slot>>1);
|
||||
LOG_D(OCM,"[SIM][DL] UE %d : rx_pwr (noise) -132 dBm/RE (N0fs = %f dBm, N0B = %f dBm) for slot %d (subframe %d)\n",UE_id,10*log10(eNB2UE[eNB_id][UE_id][CC_id]->BW*1e6)+-174, 10*log10(eNB2UE[eNB_id][UE_id][CC_id]->BW*1e6*12*frame_parms->N_RB_DL/(double)frame_parms->ofdm_symbol_size)+-174, next_slot,next_slot>>1);
|
||||
#endif
|
||||
|
||||
if (eNB2UE[eNB_id][UE_id][CC_id]->first_run == 1)
|
||||
@@ -364,7 +305,7 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
|
||||
// RF model
|
||||
#ifdef DEBUG_SIM
|
||||
LOG_D(OCM,"[SIM][DL] UE %d (CCid %d): rx_gain %d dB for slot %d (subframe %d)\n",UE_id,CC_id,PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB,next_slot,next_slot>>1);
|
||||
LOG_D(OCM,"[SIM][DL] UE %d (CCid %d): rx_gain %d dB (-ADC %f) for slot %d (subframe %d)\n",UE_id,CC_id,PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB,PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB-66.227,next_slot,next_slot>>1);
|
||||
#endif
|
||||
/*
|
||||
rf_rx(r_re0,
|
||||
@@ -395,8 +336,8 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
(double)PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB - 66.227); // rx_gain (dB) (66.227 = 20*log10(pow2(11)) = gain from the adc that will be applied later)
|
||||
|
||||
#ifdef DEBUG_SIM
|
||||
rx_pwr = signal_energy_fp(r_re0,r_im0,nb_antennas_rx,frame_parms->ofdm_symbol_size,0)*512.0/300;
|
||||
LOG_D(OCM,"[SIM][DL] UE %d : ADC in (eNB %d) %f dB for slot %d (subframe %d)\n",
|
||||
rx_pwr = signal_energy_fp(r_re0,r_im0,nb_antennas_rx,frame_parms->ofdm_symbol_size,0);
|
||||
LOG_D(OCM,"[SIM][DL] UE %d : ADC in (eNB %d) %f dBm for slot %d (subframe %d)\n",
|
||||
UE_id,eNB_id,
|
||||
10*log10(rx_pwr),next_slot,next_slot>>1);
|
||||
#endif
|
||||
@@ -409,8 +350,8 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
|
||||
}
|
||||
#ifdef DEBUG_SIM
|
||||
rx_pwr = signal_energy_fp(r_re,r_im,nb_antennas_rx,frame_parms->ofdm_symbol_size,0)*512.0/300.0;
|
||||
LOG_D(OCM,"[SIM][DL] UE %d : ADC in %f dB for slot %d (subframe %d)\n",UE_id,10*log10(rx_pwr),next_slot,next_slot>>1);
|
||||
rx_pwr = signal_energy_fp(r_re,r_im,nb_antennas_rx,frame_parms->ofdm_symbol_size,0);
|
||||
LOG_D(OCM,"[SIM][DL] UE %d : ADC in %f dBm for slot %d (subframe %d)\n",UE_id,10*log10(rx_pwr),next_slot,next_slot>>1);
|
||||
#endif
|
||||
|
||||
rxdata = PHY_vars_UE_g[UE_id][CC_id]->lte_ue_common_vars.rxdata;
|
||||
@@ -426,7 +367,7 @@ void do_DL_sig(double **r_re0,double **r_im0,
|
||||
12);
|
||||
|
||||
#ifdef DEBUG_SIM
|
||||
rx_pwr2 = signal_energy(rxdata[0]+slot_offset,512)*512.0/300.0;
|
||||
rx_pwr2 = signal_energy(rxdata[0]+slot_offset,frame_parms->ofdm_symbol_size)*(frame_parms->ofdm_symbol_size/(12.0*frame_parms->N_RB_DL));
|
||||
LOG_D(OCM,"[SIM][DL] UE %d : rx_pwr (ADC out) %f dB (%d) for slot %d (subframe %d), writing to %p\n",UE_id, 10*log10((double)rx_pwr2),rx_pwr2,next_slot,next_slot>>1,rxdata);
|
||||
#else
|
||||
UNUSED_VARIABLE(rx_pwr2);
|
||||
@@ -541,7 +482,6 @@ if (abstraction_flag!=0) {
|
||||
for (UE_id=0;UE_id<NB_UE_INST;UE_id++){
|
||||
|
||||
txdata = PHY_vars_UE_g[UE_id][CC_id]->lte_ue_common_vars.txdata;
|
||||
frame_parms = &PHY_vars_UE_g[UE_id][CC_id]->lte_frame_parms;
|
||||
slot_offset = (next_slot)*(frame_parms->samples_per_tti>>1);
|
||||
slot_offset_meas = ((next_slot&1)==0) ? slot_offset : (slot_offset-(frame_parms->samples_per_tti>>1));
|
||||
|
||||
@@ -561,26 +501,34 @@ if (abstraction_flag!=0) {
|
||||
slot_offset_meas,
|
||||
frame_parms->ofdm_symbol_size,
|
||||
14,
|
||||
PHY_vars_UE_g[UE_id][CC_id]->tx_power_dBm);
|
||||
(double)PHY_vars_UE_g[UE_id][CC_id]->tx_power_dBm-10*log10((double)PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE),
|
||||
PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE); // This make the previous argument the total power
|
||||
//ue_data[UE_id]->tx_power_dBm);
|
||||
#ifdef DEBUG_SIM
|
||||
LOG_D(OCM,"[SIM][UL] UE %d tx_pwr %f dBm (target %d dBm) for slot %d (subframe %d, slot_offset %d, slot_offset_meas %d)\n",UE_id,10*log10(tx_pwr),PHY_vars_UE_g[UE_id]->tx_power_dBm,next_slot,next_slot>>1,slot_offset,slot_offset_meas);
|
||||
#endif
|
||||
//#ifdef DEBUG_SIM
|
||||
LOG_D(OCM,"[SIM][UL] UE %d tx_pwr %f dBm (target %d dBm, num_RE %d) for slot %d (subframe %d, slot_offset %d, slot_offset_meas %d)\n",
|
||||
UE_id,
|
||||
10*log10(tx_pwr),
|
||||
PHY_vars_UE_g[UE_id][CC_id]->tx_power_dBm,
|
||||
PHY_vars_UE_g[UE_id][CC_id]->tx_total_RE,
|
||||
next_slot,next_slot>>1,slot_offset,slot_offset_meas);
|
||||
//#endif
|
||||
|
||||
multipath_channel(UE2eNB[UE_id][eNB_id][CC_id],s_re,s_im,r_re0,r_im0,
|
||||
frame_parms->samples_per_tti>>1,hold_channel);
|
||||
|
||||
#ifdef DEBUG_SIM
|
||||
//#ifdef DEBUG_SIM
|
||||
rx_pwr = signal_energy_fp2(UE2eNB[UE_id][eNB_id][CC_id]->ch[0],
|
||||
UE2eNB[UE_id][eNB_id][CC_id]->channel_length)*UE2eNB[UE_id][eNB_id][CC_id]->channel_length;
|
||||
LOG_D(OCM,"[SIM][UL] slot %d Channel UE %d => eNB %d : %f dB (hold %d)\n",next_slot,UE_id,eNB_id,10*log10(rx_pwr),hold_channel);
|
||||
#endif
|
||||
LOG_D(OCM,"[SIM][UL] slot %d Channel UE %d => eNB %d : %f dB (hold %d,length %d, PL %f)\n",next_slot,UE_id,eNB_id,10*log10(rx_pwr),
|
||||
hold_channel,UE2eNB[UE_id][eNB_id][CC_id]->channel_length,
|
||||
UE2eNB[UE_id][eNB_id][CC_id]->path_loss_dB);
|
||||
//#endif
|
||||
|
||||
#ifdef DEBUG_SIM
|
||||
//#ifdef DEBUG_SIM
|
||||
rx_pwr = signal_energy_fp(r_re0,r_im0,nb_antennas_rx,frame_parms->samples_per_tti>>1,0);
|
||||
LOG_D(OCM,"[SIM][UL] eNB %d : rx_pwr %f dB (%f) for slot %d (subframe %d), sptti %d\n",
|
||||
LOG_D(OCM,"[SIM][UL] eNB %d : rx_pwr %f dBm (%f) for slot %d (subframe %d), sptti %d\n",
|
||||
eNB_id,10*log10(rx_pwr),rx_pwr,next_slot,next_slot>>1,frame_parms->samples_per_tti);
|
||||
#endif
|
||||
//#endif
|
||||
|
||||
|
||||
if (UE2eNB[UE_id][eNB_id][CC_id]->first_run == 1)
|
||||
|
||||
@@ -109,7 +109,7 @@ PHY_VARS_eNB* init_lte_eNB(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
LOG_D(PHY,"eNB %d : MCH %p\n",eNB_id,PHY_vars_eNB->dlsch_eNB_MCH);
|
||||
|
||||
|
||||
PHY_vars_eNB->rx_total_gain_eNB_dB=140;
|
||||
PHY_vars_eNB->rx_total_gain_eNB_dB=130;
|
||||
|
||||
for(i=0;i<NUMBER_OF_UE_MAX;i++)
|
||||
PHY_vars_eNB->mu_mimo_mode[i].dl_pow_off = 2;
|
||||
@@ -188,7 +188,7 @@ PHY_VARS_RN* init_lte_RN(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
}
|
||||
return (PHY_vars_RN);
|
||||
}
|
||||
void init_lte_vars(LTE_DL_FRAME_PARMS **frame_parms,
|
||||
void init_lte_vars(LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs],
|
||||
uint8_t frame_type,
|
||||
uint8_t tdd_config,
|
||||
uint8_t tdd_config_S,
|
||||
@@ -206,52 +206,57 @@ void init_lte_vars(LTE_DL_FRAME_PARMS **frame_parms,
|
||||
|
||||
LOG_I(PHY,"init lte parms: Nid_cell %d, Frame type %d, N_RB_DL %d\n",Nid_cell,frame_type,N_RB_DL);
|
||||
|
||||
*frame_parms = calloc(1, sizeof(LTE_DL_FRAME_PARMS));
|
||||
(*frame_parms)->frame_type = frame_type;
|
||||
(*frame_parms)->tdd_config = tdd_config;
|
||||
(*frame_parms)->tdd_config_S = tdd_config_S;
|
||||
(*frame_parms)->N_RB_DL = N_RB_DL;
|
||||
(*frame_parms)->N_RB_UL = (*frame_parms)->N_RB_DL;
|
||||
(*frame_parms)->phich_config_common.phich_resource = oneSixth;
|
||||
(*frame_parms)->phich_config_common.phich_duration = normal;
|
||||
(*frame_parms)->Ncp = extended_prefix_flag;
|
||||
(*frame_parms)->Nid_cell = Nid_cell;
|
||||
(*frame_parms)->nushift = (Nid_cell%6);
|
||||
(*frame_parms)->nb_antennas_tx = (transmission_mode == 1) ? 1 : 2;
|
||||
(*frame_parms)->nb_antennas_tx_eNB = (transmission_mode == 1) ? 1 : 2;
|
||||
(*frame_parms)->nb_antennas_rx = (transmission_mode == 1) ? 1 : 2;
|
||||
(*frame_parms)->mode1_flag = (transmission_mode == 1) ? 1 : 0;
|
||||
for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
|
||||
frame_parms[CC_id] = calloc(1, sizeof(LTE_DL_FRAME_PARMS));
|
||||
(frame_parms[CC_id])->frame_type = frame_type;
|
||||
(frame_parms[CC_id])->tdd_config = tdd_config;
|
||||
(frame_parms[CC_id])->tdd_config_S = tdd_config_S;
|
||||
(frame_parms[CC_id])->N_RB_DL = N_RB_DL;
|
||||
(frame_parms[CC_id])->N_RB_UL = (frame_parms[CC_id])->N_RB_DL;
|
||||
(frame_parms[CC_id])->phich_config_common.phich_resource = oneSixth;
|
||||
(frame_parms[CC_id])->phich_config_common.phich_duration = normal;
|
||||
(frame_parms[CC_id])->Ncp = extended_prefix_flag;
|
||||
(frame_parms[CC_id])->Nid_cell = Nid_cell;
|
||||
(frame_parms[CC_id])->nushift = (Nid_cell%6);
|
||||
(frame_parms[CC_id])->nb_antennas_tx = (transmission_mode == 1) ? 1 : 2;
|
||||
(frame_parms[CC_id])->nb_antennas_tx_eNB = (transmission_mode == 1) ? 1 : 2;
|
||||
(frame_parms[CC_id])->nb_antennas_rx = (transmission_mode == 1) ? 1 : 2;
|
||||
(frame_parms[CC_id])->mode1_flag = (transmission_mode == 1) ? 1 : 0;
|
||||
|
||||
init_frame_parms(frame_parms[CC_id],1);
|
||||
|
||||
(frame_parms[CC_id])->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift = 0;//n_DMRS1 set to 0
|
||||
(frame_parms[CC_id])->pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled = 1;
|
||||
(frame_parms[CC_id])->pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled = 0;
|
||||
(frame_parms[CC_id])->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH = 0;
|
||||
init_ul_hopping(frame_parms[CC_id]);
|
||||
}
|
||||
|
||||
init_frame_parms(*frame_parms,1);
|
||||
|
||||
(*frame_parms)->pusch_config_common.ul_ReferenceSignalsPUSCH.cyclicShift = 0;//n_DMRS1 set to 0
|
||||
(*frame_parms)->pusch_config_common.ul_ReferenceSignalsPUSCH.groupHoppingEnabled = 1;
|
||||
(*frame_parms)->pusch_config_common.ul_ReferenceSignalsPUSCH.sequenceHoppingEnabled = 0;
|
||||
(*frame_parms)->pusch_config_common.ul_ReferenceSignalsPUSCH.groupAssignmentPUSCH = 0;
|
||||
init_ul_hopping(*frame_parms);
|
||||
|
||||
phy_init_top(*frame_parms);
|
||||
|
||||
phy_init_lte_top(*frame_parms);
|
||||
|
||||
phy_init_top(frame_parms[0]);
|
||||
|
||||
phy_init_lte_top(frame_parms[0]);
|
||||
|
||||
PHY_vars_eNB_g = (PHY_VARS_eNB***)malloc(NB_eNB_INST*sizeof(PHY_VARS_eNB**));
|
||||
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++) {
|
||||
PHY_vars_eNB_g[eNB_id][CC_id] = init_lte_eNB(*frame_parms,eNB_id,Nid_cell,cooperation_flag,transmission_mode,abstraction_flag);
|
||||
PHY_vars_eNB_g[eNB_id][CC_id] = init_lte_eNB(frame_parms[CC_id],eNB_id,Nid_cell,cooperation_flag,transmission_mode,abstraction_flag);
|
||||
PHY_vars_eNB_g[eNB_id][CC_id]->Mod_id=eNB_id;
|
||||
PHY_vars_eNB_g[eNB_id][CC_id]->CC_id=CC_id;
|
||||
}
|
||||
}
|
||||
|
||||
(*frame_parms)->nb_antennas_tx = 1;
|
||||
(*frame_parms)->nb_antennas_rx = nb_antennas_rx;
|
||||
|
||||
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++) {
|
||||
PHY_vars_UE_g[UE_id][CC_id] = init_lte_UE(*frame_parms, UE_id,abstraction_flag,transmission_mode);
|
||||
(frame_parms[CC_id])->nb_antennas_tx = 1;
|
||||
(frame_parms[CC_id])->nb_antennas_rx = nb_antennas_rx;
|
||||
|
||||
|
||||
PHY_vars_UE_g[UE_id][CC_id] = init_lte_UE(frame_parms[CC_id], UE_id,abstraction_flag,transmission_mode);
|
||||
PHY_vars_UE_g[UE_id][CC_id]->Mod_id=UE_id;
|
||||
PHY_vars_UE_g[UE_id][CC_id]->CC_id=CC_id;
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ PHY_VARS_RN* init_lte_RN(LTE_DL_FRAME_PARMS *frame_parms,
|
||||
uint8_t RN_id,
|
||||
uint8_t eMBMS_active_state);
|
||||
|
||||
void init_lte_vars(LTE_DL_FRAME_PARMS **frame_parms,
|
||||
void init_lte_vars(LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs],
|
||||
uint8_t frame_type,
|
||||
uint8_t tdd_config,
|
||||
uint8_t tdd_config_S,
|
||||
|
||||
+983
-975
File diff suppressed because it is too large
Load Diff
+176
-168
@@ -197,158 +197,159 @@ mapping packet_gen_names[] =
|
||||
void init_oai_emulation(void) {
|
||||
|
||||
int i;
|
||||
int CC_id;
|
||||
|
||||
oai_emulation.environment_system_config.fading.large_scale.selected_option = "free_space";
|
||||
oai_emulation.environment_system_config.fading.free_space_model_parameters.pathloss_exponent = 3.00;
|
||||
oai_emulation.environment_system_config.fading.free_space_model_parameters.pathloss_0_dB = -100;
|
||||
oai_emulation.environment_system_config.fading.small_scale.selected_option = "AWGN";
|
||||
oai_emulation.environment_system_config.fading.ricean_8tap.rice_factor_dB = 0;
|
||||
oai_emulation.environment_system_config.fading.shadowing.decorrelation_distance_m = 0;
|
||||
oai_emulation.environment_system_config.fading.shadowing.variance_dB = 0;
|
||||
oai_emulation.environment_system_config.fading.shadowing.inter_site_correlation = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.number_of_sectors = 1;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.beam_width_dB = 1.13;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.alpha_rad[0] = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.alpha_rad[1] = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.alpha_rad[2] = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_gain_dBi = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.tx_power_dBm = 15;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.rx_noise_level_dB = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_orientation_degree[0] = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_orientation_degree[1] = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_orientation_degree[2] = 0;
|
||||
oai_emulation.environment_system_config.antenna.UE_antenna.antenna_gain_dBi = 0;
|
||||
oai_emulation.environment_system_config.antenna.UE_antenna.tx_power_dBm = 20;
|
||||
oai_emulation.environment_system_config.antenna.UE_antenna.rx_noise_level_dB = 0; // noise figure
|
||||
oai_emulation.environment_system_config.wall_penetration_loss_dB = 5;
|
||||
oai_emulation.environment_system_config.system_bandwidth_MB = 7.68;
|
||||
oai_emulation.environment_system_config.system_frequency_GHz = 1.9;
|
||||
|
||||
oai_emulation.topology_config.area.x_m = 1000;
|
||||
oai_emulation.topology_config.area.y_m = 1000;
|
||||
oai_emulation.topology_config.network_type.selected_option = "homogeneous";
|
||||
oai_emulation.topology_config.cell_type.selected_option = "macrocell";
|
||||
oai_emulation.topology_config.relay.number_of_relays = 0;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_mobility_type.selected_option = "STATIC";
|
||||
oai_emulation.environment_system_config.fading.large_scale.selected_option = "free_space";
|
||||
oai_emulation.environment_system_config.fading.free_space_model_parameters.pathloss_exponent = 3.00;
|
||||
oai_emulation.environment_system_config.fading.free_space_model_parameters.pathloss_0_dB = -100;
|
||||
oai_emulation.environment_system_config.fading.small_scale.selected_option = "AWGN";
|
||||
oai_emulation.environment_system_config.fading.ricean_8tap.rice_factor_dB = 0;
|
||||
oai_emulation.environment_system_config.fading.shadowing.decorrelation_distance_m = 0;
|
||||
oai_emulation.environment_system_config.fading.shadowing.variance_dB = 0;
|
||||
oai_emulation.environment_system_config.fading.shadowing.inter_site_correlation = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.number_of_sectors = 1;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.beam_width_dB = 1.13;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.alpha_rad[0] = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.alpha_rad[1] = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.alpha_rad[2] = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_gain_dBi = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.tx_power_dBm = 15;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.rx_noise_level_dB = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_orientation_degree[0] = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_orientation_degree[1] = 0;
|
||||
oai_emulation.environment_system_config.antenna.eNB_antenna.antenna_orientation_degree[2] = 0;
|
||||
oai_emulation.environment_system_config.antenna.UE_antenna.antenna_gain_dBi = 0;
|
||||
oai_emulation.environment_system_config.antenna.UE_antenna.tx_power_dBm = 20;
|
||||
oai_emulation.environment_system_config.antenna.UE_antenna.rx_noise_level_dB = 0; // noise figure
|
||||
oai_emulation.environment_system_config.wall_penetration_loss_dB = 5;
|
||||
oai_emulation.environment_system_config.system_bandwidth_MB = 7.68;
|
||||
oai_emulation.environment_system_config.system_frequency_GHz = 1.9;
|
||||
|
||||
oai_emulation.topology_config.area.x_m = 1000;
|
||||
oai_emulation.topology_config.area.y_m = 1000;
|
||||
oai_emulation.topology_config.network_type.selected_option = "homogeneous";
|
||||
oai_emulation.topology_config.cell_type.selected_option = "macrocell";
|
||||
oai_emulation.topology_config.relay.number_of_relays = 0;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_mobility_type.selected_option = "STATIC";
|
||||
oai_emulation.topology_config.mobility.UE_mobility.grid_walk.grid_map.selected_option="MAX_RWP_TYPES";
|
||||
//oai_emulation.topology_config.mobility.UE_mobility.grid_walk.grid_map.horizontal_grid = 1;
|
||||
//oai_emulation.topology_config.mobility.UE_mobility.grid_walk.grid_map.vertical_grid = 1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.grid_walk.grid_trip_type.selected_option = "random_destination";
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_initial_distribution.selected_option = "random";
|
||||
oai_emulation.topology_config.mobility.UE_mobility.random_UE_distribution.number_of_nodes = 1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.concentrated_UE_distribution.number_of_nodes = 1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.grid_UE_distribution.random_grid.number_of_nodes = 1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.grid_UE_distribution.border_grid.number_of_nodes = 1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.min_speed_mps = 0.1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.max_speed_mps = 20.0;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.min_sleep_ms = 0.1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.max_sleep_ms = 5.0;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.min_journey_time_ms = 0.1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.max_journey_time_ms = 10.0;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.eNB_mobility_type.selected_option = "STATIC";
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.eNB_initial_distribution.selected_option = "random";
|
||||
//oai_emulation.topology_config.mobility.UE_mobility.grid_walk.grid_map.horizontal_grid = 1;
|
||||
//oai_emulation.topology_config.mobility.UE_mobility.grid_walk.grid_map.vertical_grid = 1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.grid_walk.grid_trip_type.selected_option = "random_destination";
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_initial_distribution.selected_option = "random";
|
||||
oai_emulation.topology_config.mobility.UE_mobility.random_UE_distribution.number_of_nodes = 1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.concentrated_UE_distribution.number_of_nodes = 1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.grid_UE_distribution.random_grid.number_of_nodes = 1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.grid_UE_distribution.border_grid.number_of_nodes = 1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.min_speed_mps = 0.1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.max_speed_mps = 20.0;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.min_sleep_ms = 0.1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.max_sleep_ms = 5.0;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.min_journey_time_ms = 0.1;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.UE_moving_dynamics.max_journey_time_ms = 10.0;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.eNB_mobility_type.selected_option = "STATIC";
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.eNB_initial_distribution.selected_option = "random";
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.fixed_eNB_distribution.pos_x = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.fixed_eNB_distribution.pos_y = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.random_eNB_distribution.number_of_cells = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.hexagonal_eNB_distribution.number_of_cells = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.hexagonal_eNB_distribution.inter_eNB_distance_km = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.grid_eNB_distribution.number_of_grid_x = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.grid_eNB_distribution.number_of_grid_y = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.trace_config.trace_mobility_file = (char*) malloc(256);
|
||||
sprintf(oai_emulation.topology_config.mobility.eNB_mobility.trace_config.trace_mobility_file,"static_1enb.tr");
|
||||
oai_emulation.topology_config.mobility.UE_mobility.trace_config.trace_mobility_file = (char*) malloc(256);
|
||||
sprintf(oai_emulation.topology_config.mobility.UE_mobility.trace_config.trace_mobility_file,"static_2ues.tr");
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.command = (char*) malloc(20);
|
||||
sprintf(oai_emulation.topology_config.mobility.UE_mobility.sumo_config.command,"sumo");
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.file = (char*) malloc(256);
|
||||
sprintf(oai_emulation.topology_config.mobility.UE_mobility.sumo_config.file,"%s/UTIL/OMG/SUMO/SCENARIOS/scen.sumo.cfg",getenv("OPENAIR2_DIR"));
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.start=0;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.end=0;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.step=1; // 1000ms
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.hip = (char*) malloc(40);
|
||||
sprintf(oai_emulation.topology_config.mobility.UE_mobility.sumo_config.hip,"127.0.1.1");
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.hport = 8883;
|
||||
|
||||
oai_emulation.application_config.packet_gen_type = "substract_string";
|
||||
for (i = 0; i < NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX; i++) {
|
||||
oai_emulation.application_config.predefined_traffic.source_id[i] = "1:10";
|
||||
oai_emulation.application_config.predefined_traffic.application_type[i] = "no_predefined_traffic";
|
||||
oai_emulation.application_config.predefined_traffic.background[i] = "disable";
|
||||
oai_emulation.application_config.predefined_traffic.aggregation_level[i] = 1;
|
||||
oai_emulation.application_config.predefined_traffic.flow_start[i] = (i+1)*25;
|
||||
oai_emulation.application_config.predefined_traffic.flow_duration[i] = 0xffff;
|
||||
|
||||
oai_emulation.application_config.predefined_traffic.destination_id[i] = 0;
|
||||
|
||||
oai_emulation.application_config.customized_traffic.source_id[i] = "1";
|
||||
oai_emulation.application_config.customized_traffic.destination_id[i] = "2";
|
||||
oai_emulation.application_config.customized_traffic.transport_protocol[i] = "udp";
|
||||
oai_emulation.application_config.customized_traffic.background[i] = "disable";
|
||||
oai_emulation.application_config.customized_traffic.m2m[i] = "disable";
|
||||
oai_emulation.application_config.customized_traffic.ip_version[i] = "ipv4";
|
||||
oai_emulation.application_config.customized_traffic.aggregation_level[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.flow_start[i] = (i+1)*25;
|
||||
oai_emulation.application_config.customized_traffic.flow_duration[i] = 100;
|
||||
oai_emulation.application_config.customized_traffic.idt_dist[i] = "uniform";
|
||||
oai_emulation.application_config.customized_traffic.idt_min_ms[i] = 100;
|
||||
oai_emulation.application_config.customized_traffic.idt_max_ms[i] = 1000;
|
||||
oai_emulation.application_config.customized_traffic.idt_standard_deviation[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.idt_lambda[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.size_dist[i] = "uniform";
|
||||
oai_emulation.application_config.customized_traffic.size_min_byte[i] = 200;
|
||||
oai_emulation.application_config.customized_traffic.size_max_byte[i] = 500;
|
||||
oai_emulation.application_config.customized_traffic.size_standard_deviation[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.size_lambda[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.stream[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.destination_port[i] = 8080;
|
||||
oai_emulation.application_config.customized_traffic.prob_off_pu[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_off_ed[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_off_pe[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_pu_ed[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_pu_pe[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_ed_pe[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_ed_pu[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.holding_time_off_ed[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.holding_time_off_pu[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.holding_time_off_pe[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.holding_time_pe_off[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.pu_size_pkts[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.ed_size_pkts[i]= 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
oai_emulation.emulation_config.emulation_time_ms = 0;
|
||||
oai_emulation.emulation_config.curve = "disable";
|
||||
oai_emulation.emulation_config.background_stats = "disable";
|
||||
oai_emulation.emulation_config.performance_metrics.throughput = "disable";
|
||||
oai_emulation.emulation_config.performance_metrics.latency ="disable";
|
||||
oai_emulation.emulation_config.performance_metrics.loss_rate ="disable";
|
||||
oai_emulation.emulation_config.performance_metrics.owd_radio_access = "disable";
|
||||
oai_emulation.emulation_config.layer.phy = 0;
|
||||
oai_emulation.emulation_config.layer.mac = 0;
|
||||
oai_emulation.emulation_config.layer.rlc = 0;
|
||||
oai_emulation.emulation_config.layer.pdcp = 0;
|
||||
oai_emulation.emulation_config.layer.rrc = 0;
|
||||
oai_emulation.emulation_config.layer.omg = 0;
|
||||
oai_emulation.emulation_config.layer.otg = 0;
|
||||
oai_emulation.emulation_config.layer.emu = 1;
|
||||
|
||||
oai_emulation.emulation_config.log_emu.level = "debug";
|
||||
oai_emulation.emulation_config.log_emu.verbosity = "low";
|
||||
oai_emulation.emulation_config.log_emu.interval = 1;
|
||||
oai_emulation.emulation_config.packet_trace.enabled = 0;
|
||||
oai_emulation.emulation_config.seed.value = 0; // 0 means randomly generated by OAI
|
||||
|
||||
oai_emulation.info.ocg_ok = 0;
|
||||
|
||||
|
||||
// phy related params :
|
||||
oai_emulation.info.n_frames=0xffff; // number of frames simulated by default
|
||||
oai_emulation.info.n_frames_flag=0; // if set, then let the emulation goes to infinity
|
||||
|
||||
//status
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.random_eNB_distribution.number_of_cells = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.hexagonal_eNB_distribution.number_of_cells = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.hexagonal_eNB_distribution.inter_eNB_distance_km = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.grid_eNB_distribution.number_of_grid_x = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.grid_eNB_distribution.number_of_grid_y = 1;
|
||||
oai_emulation.topology_config.mobility.eNB_mobility.trace_config.trace_mobility_file = (char*) malloc(256);
|
||||
sprintf(oai_emulation.topology_config.mobility.eNB_mobility.trace_config.trace_mobility_file,"static_1enb.tr");
|
||||
oai_emulation.topology_config.mobility.UE_mobility.trace_config.trace_mobility_file = (char*) malloc(256);
|
||||
sprintf(oai_emulation.topology_config.mobility.UE_mobility.trace_config.trace_mobility_file,"static_2ues.tr");
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.command = (char*) malloc(20);
|
||||
sprintf(oai_emulation.topology_config.mobility.UE_mobility.sumo_config.command,"sumo");
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.file = (char*) malloc(256);
|
||||
sprintf(oai_emulation.topology_config.mobility.UE_mobility.sumo_config.file,"%s/UTIL/OMG/SUMO/SCENARIOS/scen.sumo.cfg",getenv("OPENAIR2_DIR"));
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.start=0;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.end=0;
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.step=1; // 1000ms
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.hip = (char*) malloc(40);
|
||||
sprintf(oai_emulation.topology_config.mobility.UE_mobility.sumo_config.hip,"127.0.1.1");
|
||||
oai_emulation.topology_config.mobility.UE_mobility.sumo_config.hport = 8883;
|
||||
|
||||
oai_emulation.application_config.packet_gen_type = "substract_string";
|
||||
for (i = 0; i < NUMBER_OF_eNB_MAX + NUMBER_OF_UE_MAX; i++) {
|
||||
oai_emulation.application_config.predefined_traffic.source_id[i] = "1:10";
|
||||
oai_emulation.application_config.predefined_traffic.application_type[i] = "no_predefined_traffic";
|
||||
oai_emulation.application_config.predefined_traffic.background[i] = "disable";
|
||||
oai_emulation.application_config.predefined_traffic.aggregation_level[i] = 1;
|
||||
oai_emulation.application_config.predefined_traffic.flow_start[i] = (i+1)*25;
|
||||
oai_emulation.application_config.predefined_traffic.flow_duration[i] = 0xffff;
|
||||
|
||||
oai_emulation.application_config.predefined_traffic.destination_id[i] = 0;
|
||||
|
||||
oai_emulation.application_config.customized_traffic.source_id[i] = "1";
|
||||
oai_emulation.application_config.customized_traffic.destination_id[i] = "2";
|
||||
oai_emulation.application_config.customized_traffic.transport_protocol[i] = "udp";
|
||||
oai_emulation.application_config.customized_traffic.background[i] = "disable";
|
||||
oai_emulation.application_config.customized_traffic.m2m[i] = "disable";
|
||||
oai_emulation.application_config.customized_traffic.ip_version[i] = "ipv4";
|
||||
oai_emulation.application_config.customized_traffic.aggregation_level[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.flow_start[i] = (i+1)*25;
|
||||
oai_emulation.application_config.customized_traffic.flow_duration[i] = 100;
|
||||
oai_emulation.application_config.customized_traffic.idt_dist[i] = "uniform";
|
||||
oai_emulation.application_config.customized_traffic.idt_min_ms[i] = 100;
|
||||
oai_emulation.application_config.customized_traffic.idt_max_ms[i] = 1000;
|
||||
oai_emulation.application_config.customized_traffic.idt_standard_deviation[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.idt_lambda[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.size_dist[i] = "uniform";
|
||||
oai_emulation.application_config.customized_traffic.size_min_byte[i] = 200;
|
||||
oai_emulation.application_config.customized_traffic.size_max_byte[i] = 500;
|
||||
oai_emulation.application_config.customized_traffic.size_standard_deviation[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.size_lambda[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.stream[i] = 1;
|
||||
oai_emulation.application_config.customized_traffic.destination_port[i] = 8080;
|
||||
oai_emulation.application_config.customized_traffic.prob_off_pu[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_off_ed[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_off_pe[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_pu_ed[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_pu_pe[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_ed_pe[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.prob_ed_pu[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.holding_time_off_ed[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.holding_time_off_pu[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.holding_time_off_pe[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.holding_time_pe_off[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.pu_size_pkts[i]= 0;
|
||||
oai_emulation.application_config.customized_traffic.ed_size_pkts[i]= 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
oai_emulation.emulation_config.emulation_time_ms = 0;
|
||||
oai_emulation.emulation_config.curve = "disable";
|
||||
oai_emulation.emulation_config.background_stats = "disable";
|
||||
oai_emulation.emulation_config.performance_metrics.throughput = "disable";
|
||||
oai_emulation.emulation_config.performance_metrics.latency ="disable";
|
||||
oai_emulation.emulation_config.performance_metrics.loss_rate ="disable";
|
||||
oai_emulation.emulation_config.performance_metrics.owd_radio_access = "disable";
|
||||
oai_emulation.emulation_config.layer.phy = 0;
|
||||
oai_emulation.emulation_config.layer.mac = 0;
|
||||
oai_emulation.emulation_config.layer.rlc = 0;
|
||||
oai_emulation.emulation_config.layer.pdcp = 0;
|
||||
oai_emulation.emulation_config.layer.rrc = 0;
|
||||
oai_emulation.emulation_config.layer.omg = 0;
|
||||
oai_emulation.emulation_config.layer.otg = 0;
|
||||
oai_emulation.emulation_config.layer.emu = 1;
|
||||
|
||||
oai_emulation.emulation_config.log_emu.level = "debug";
|
||||
oai_emulation.emulation_config.log_emu.verbosity = "low";
|
||||
oai_emulation.emulation_config.log_emu.interval = 1;
|
||||
oai_emulation.emulation_config.packet_trace.enabled = 0;
|
||||
oai_emulation.emulation_config.seed.value = 0; // 0 means randomly generated by OAI
|
||||
|
||||
oai_emulation.info.ocg_ok = 0;
|
||||
|
||||
|
||||
// phy related params :
|
||||
oai_emulation.info.n_frames=0xffff; // number of frames simulated by default
|
||||
oai_emulation.info.n_frames_flag=0; // if set, then let the emulation goes to infinity
|
||||
|
||||
//status
|
||||
oai_emulation.info.is_primary_master=0;
|
||||
oai_emulation.info.master_list=0;
|
||||
oai_emulation.info.nb_ue_remote=0;
|
||||
@@ -415,13 +416,15 @@ void init_oai_emulation(void) {
|
||||
oai_emulation.info.g_log_verbosity = 0x15;
|
||||
oai_emulation.info.g_log_verbosity_option = "medium";
|
||||
|
||||
oai_emulation.info.frame_type=TDD;
|
||||
oai_emulation.info.frame_type_name="TDD";
|
||||
oai_emulation.info.tdd_config=3;
|
||||
oai_emulation.info.tdd_config_S=0;
|
||||
oai_emulation.info.extended_prefix_flag=0;
|
||||
oai_emulation.info.N_RB_DL=25;
|
||||
oai_emulation.info.transmission_mode=2;
|
||||
for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
|
||||
oai_emulation.info.frame_type[CC_id]=TDD;
|
||||
oai_emulation.info.frame_type_name[CC_id]="TDD";
|
||||
oai_emulation.info.tdd_config[CC_id]=3;
|
||||
oai_emulation.info.tdd_config_S[CC_id]=0;
|
||||
oai_emulation.info.extended_prefix_flag[CC_id]=0;
|
||||
oai_emulation.info.N_RB_DL[CC_id]=25;
|
||||
oai_emulation.info.transmission_mode[CC_id]=2;
|
||||
}
|
||||
|
||||
oai_emulation.profile = "EURECOM";
|
||||
}
|
||||
@@ -431,6 +434,8 @@ void oaisim_config(void) {
|
||||
|
||||
// init log gen first
|
||||
//initialize the log generator
|
||||
|
||||
|
||||
logInit();
|
||||
|
||||
#if defined(ENABLE_ITTI)
|
||||
@@ -558,21 +563,24 @@ int olg_config(void) {
|
||||
|
||||
int ocg_config_env(void) {
|
||||
// int func related to channel desc from oaisim.c could be moved here
|
||||
int CC_id;
|
||||
|
||||
if (oai_emulation.info.ocg_enabled){
|
||||
oai_emulation.info.frame_type = map_str_to_int(frame_type_names, oai_emulation.info.frame_type_name);
|
||||
if (oai_emulation.info.frame_type == -1){
|
||||
LOG_E(EMU,"frame type incorrect %s, set it to TDD \n",oai_emulation.info.frame_type_name);
|
||||
oai_emulation.info.frame_type=TDD;
|
||||
}
|
||||
else
|
||||
LOG_I(EMU,"Frame type is %s \n",oai_emulation.info.frame_type_name);
|
||||
if (oai_emulation.info.frame_type == TDD ){
|
||||
if ((oai_emulation.info.tdd_config > 6) || (oai_emulation.info.tdd_config < 0)) {
|
||||
LOG_E(EMU,"TDD config %d out of range, set it to 3\n",oai_emulation.info.tdd_config);
|
||||
oai_emulation.info.tdd_config=3;
|
||||
} else
|
||||
LOG_I(EMU,"TDD config is set to \n",oai_emulation.info.tdd_config);
|
||||
for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
|
||||
oai_emulation.info.frame_type[CC_id] = map_str_to_int(frame_type_names, oai_emulation.info.frame_type_name[CC_id]);
|
||||
if (oai_emulation.info.frame_type[CC_id] == -1){
|
||||
LOG_E(EMU,"frame type incorrect %s, set it to TDD \n",oai_emulation.info.frame_type_name);
|
||||
oai_emulation.info.frame_type[CC_id]=TDD;
|
||||
}
|
||||
else
|
||||
LOG_I(EMU,"Frame type is %s \n",oai_emulation.info.frame_type_name);
|
||||
if (oai_emulation.info.frame_type[CC_id] == TDD ){
|
||||
if ((oai_emulation.info.tdd_config[CC_id] > 6) || (oai_emulation.info.tdd_config[CC_id] < 0)) {
|
||||
LOG_E(EMU,"TDD config %d out of range, set it to 3\n",oai_emulation.info.tdd_config[CC_id]);
|
||||
oai_emulation.info.tdd_config[CC_id]=3;
|
||||
} else
|
||||
LOG_I(EMU,"TDD config is set to \n",oai_emulation.info.tdd_config[CC_id]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
|
||||
@@ -106,7 +106,7 @@ uint8_t beta_ACK = 0;
|
||||
uint8_t beta_RI = 0;
|
||||
uint8_t beta_CQI = 2;
|
||||
uint8_t target_ul_mcs = 4;
|
||||
LTE_DL_FRAME_PARMS *frame_parms = NULL;
|
||||
LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
|
||||
int map1,map2;
|
||||
double **ShaF = NULL;
|
||||
// pointers signal buffers (s = transmit, r,r0 = receive)
|
||||
@@ -380,9 +380,9 @@ void get_simulation_options(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case 'C':
|
||||
oai_emulation.info.tdd_config = atoi (optarg);
|
||||
AssertFatal (oai_emulation.info.tdd_config <= TDD_Config__subframeAssignment_sa6, "Illegal tdd_config %d (should be 0-%d)!",
|
||||
oai_emulation.info.tdd_config, TDD_Config__subframeAssignment_sa6);
|
||||
oai_emulation.info.tdd_config[0] = atoi (optarg);
|
||||
AssertFatal (oai_emulation.info.tdd_config[0] <= TDD_Config__subframeAssignment_sa6, "Illegal tdd_config %d (should be 0-%d)!",
|
||||
oai_emulation.info.tdd_config[0], TDD_Config__subframeAssignment_sa6);
|
||||
break;
|
||||
|
||||
case 'D':
|
||||
@@ -390,7 +390,7 @@ void get_simulation_options(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
oai_emulation.info.extended_prefix_flag = 1;
|
||||
oai_emulation.info.extended_prefix_flag[0] = 1;
|
||||
break;
|
||||
|
||||
case 'E':
|
||||
@@ -404,7 +404,7 @@ void get_simulation_options(int argc, char *argv[]) {
|
||||
|
||||
case 'F': // set FDD
|
||||
printf("Setting Frame to FDD\n");
|
||||
oai_emulation.info.frame_type = 0;
|
||||
oai_emulation.info.frame_type[0] = 0;
|
||||
break;
|
||||
|
||||
case 'g':
|
||||
@@ -537,10 +537,10 @@ void get_simulation_options(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case 'R':
|
||||
oai_emulation.info.N_RB_DL = atoi (optarg);
|
||||
if ((oai_emulation.info.N_RB_DL != 6) && (oai_emulation.info.N_RB_DL != 15) && (oai_emulation.info.N_RB_DL != 25)
|
||||
&& (oai_emulation.info.N_RB_DL != 50) && (oai_emulation.info.N_RB_DL != 75) && (oai_emulation.info.N_RB_DL != 100)) {
|
||||
printf("Illegal N_RB_DL %d (should be one of 6,15,25,50,75,100)\n", oai_emulation.info.N_RB_DL);
|
||||
oai_emulation.info.N_RB_DL[0] = atoi (optarg);
|
||||
if ((oai_emulation.info.N_RB_DL[0] != 6) && (oai_emulation.info.N_RB_DL[0] != 15) && (oai_emulation.info.N_RB_DL[0] != 25)
|
||||
&& (oai_emulation.info.N_RB_DL[0] != 50) && (oai_emulation.info.N_RB_DL[0] != 75) && (oai_emulation.info.N_RB_DL[0] != 100)) {
|
||||
printf("Illegal N_RB_DL %d (should be one of 6,15,25,50,75,100)\n", oai_emulation.info.N_RB_DL[0]);
|
||||
exit (-1);
|
||||
}
|
||||
break;
|
||||
@@ -597,8 +597,8 @@ void get_simulation_options(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case 'x':
|
||||
oai_emulation.info.transmission_mode = atoi (optarg);
|
||||
if ((oai_emulation.info.transmission_mode != 1) && (oai_emulation.info.transmission_mode != 2) && (oai_emulation.info.transmission_mode != 5) && (oai_emulation.info.transmission_mode != 6)) {
|
||||
oai_emulation.info.transmission_mode[0] = atoi (optarg);
|
||||
if ((oai_emulation.info.transmission_mode[0] != 1) && (oai_emulation.info.transmission_mode[0] != 2) && (oai_emulation.info.transmission_mode[0] != 5) && (oai_emulation.info.transmission_mode[0] != 6)) {
|
||||
printf("Unsupported transmission mode %d\n",oai_emulation.info.transmission_mode);
|
||||
exit(-1);
|
||||
}
|
||||
@@ -656,10 +656,10 @@ void get_simulation_options(int argc, char *argv[]) {
|
||||
conf_config_file_name, oai_emulation.info.nb_enb_local, enb_properties->number);
|
||||
|
||||
/* Update some simulation parameters */
|
||||
oai_emulation.info.frame_type = enb_properties->properties[0]->frame_type;
|
||||
oai_emulation.info.tdd_config = enb_properties->properties[0]->tdd_config;
|
||||
oai_emulation.info.tdd_config_S = enb_properties->properties[0]->tdd_config_s;
|
||||
oai_emulation.info.extended_prefix_flag = enb_properties->properties[0]->prefix_type;
|
||||
oai_emulation.info.frame_type[0] = enb_properties->properties[0]->frame_type[0];
|
||||
oai_emulation.info.tdd_config[0] = enb_properties->properties[0]->tdd_config[0];
|
||||
oai_emulation.info.tdd_config_S[0] = enb_properties->properties[0]->tdd_config_s[0];
|
||||
oai_emulation.info.extended_prefix_flag[0] = enb_properties->properties[0]->prefix_type[0];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -775,8 +775,8 @@ void init_omv(void) {
|
||||
sprintf(z_area, "%f", 200.0 );
|
||||
sprintf(frames, "%d", oai_emulation.info.n_frames);
|
||||
sprintf(nb_antenna, "%d", 4);
|
||||
sprintf(frame_type, "%s", (oai_emulation.info.frame_type == 0) ? "FDD" : "TDD");
|
||||
sprintf(tdd_config, "%d", oai_emulation.info.tdd_config);
|
||||
sprintf(frame_type, "%s", (oai_emulation.info.frame_type[0] == 0) ? "FDD" : "TDD");
|
||||
sprintf(tdd_config, "%d", oai_emulation.info.tdd_config[0]);
|
||||
// execl is used to launch the visualisor
|
||||
execl(full_name,"OMV", fdstr, frames, num_enb, num_ue, x_area, y_area, z_area, nb_antenna, frame_type, tdd_config,NULL );
|
||||
perror( "error in execl the OMV" );
|
||||
@@ -808,7 +808,9 @@ void init_openair1(void) {
|
||||
int list_index;
|
||||
#endif
|
||||
// change the nb_connected_eNB
|
||||
init_lte_vars (&frame_parms, oai_emulation.info.frame_type, oai_emulation.info.tdd_config, oai_emulation.info.tdd_config_S,oai_emulation.info.extended_prefix_flag,oai_emulation.info.N_RB_DL, Nid_cell, cooperation_flag, oai_emulation.info.transmission_mode, abstraction_flag,nb_antennas_rx, oai_emulation.info.eMBMS_active_state);
|
||||
for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++) {
|
||||
init_lte_vars (&frame_parms[CC_id], oai_emulation.info.frame_type[CC_id], oai_emulation.info.tdd_config[CC_id], oai_emulation.info.tdd_config_S[CC_id],oai_emulation.info.extended_prefix_flag[CC_id],oai_emulation.info.N_RB_DL[CC_id], Nid_cell, cooperation_flag, oai_emulation.info.transmission_mode[CC_id], abstraction_flag,nb_antennas_rx, oai_emulation.info.eMBMS_active_state);
|
||||
}
|
||||
|
||||
for (eNB_id=0; eNB_id<NB_eNB_INST;eNB_id++){
|
||||
for (UE_id=0; UE_id<NB_UE_INST;UE_id++){
|
||||
@@ -816,12 +818,12 @@ void init_openair1(void) {
|
||||
PHY_vars_eNB_g[eNB_id][CC_id]->pusch_config_dedicated[UE_id].betaOffset_ACK_Index = beta_ACK;
|
||||
PHY_vars_eNB_g[eNB_id][CC_id]->pusch_config_dedicated[UE_id].betaOffset_RI_Index = beta_RI;
|
||||
PHY_vars_eNB_g[eNB_id][CC_id]->pusch_config_dedicated[UE_id].betaOffset_CQI_Index = beta_CQI;
|
||||
((PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms).pdsch_config_common).p_b = (frame_parms->nb_antennas_tx_eNB>1) ? 1 : 0; // rho_a = rhob
|
||||
((PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms).pdsch_config_common).p_b = (frame_parms[CC_id]->nb_antennas_tx_eNB>1) ? 1 : 0; // rho_a = rhob
|
||||
|
||||
PHY_vars_UE_g[UE_id][CC_id]->pusch_config_dedicated[eNB_id].betaOffset_ACK_Index = beta_ACK;
|
||||
PHY_vars_UE_g[UE_id][CC_id]->pusch_config_dedicated[eNB_id].betaOffset_RI_Index = beta_RI;
|
||||
PHY_vars_UE_g[UE_id][CC_id]->pusch_config_dedicated[eNB_id].betaOffset_CQI_Index = beta_CQI;
|
||||
((PHY_vars_UE_g[UE_id][CC_id]->lte_frame_parms).pdsch_config_common).p_b = (frame_parms->nb_antennas_tx_eNB>1) ? 1 : 0; // rho_a = rhob
|
||||
((PHY_vars_UE_g[UE_id][CC_id]->lte_frame_parms).pdsch_config_common).p_b = (frame_parms[CC_id]->nb_antennas_tx_eNB>1) ? 1 : 0; // rho_a = rhob
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -837,7 +839,7 @@ void init_openair1(void) {
|
||||
openair_daq_vars.tdd = 1;
|
||||
openair_daq_vars.rx_gain_mode = DAQ_AGC_ON;
|
||||
|
||||
openair_daq_vars.dlsch_transmission_mode = oai_emulation.info.transmission_mode;
|
||||
openair_daq_vars.dlsch_transmission_mode = oai_emulation.info.transmission_mode[0];
|
||||
|
||||
openair_daq_vars.target_ue_dl_mcs = target_dl_mcs;
|
||||
openair_daq_vars.target_ue_ul_mcs = target_ul_mcs;
|
||||
@@ -849,7 +851,7 @@ void init_openair1(void) {
|
||||
// init_ue_status();
|
||||
for (UE_id=0; UE_id<NB_UE_INST;UE_id++)
|
||||
for (CC_id=0;CC_id<MAX_NUM_CCs;CC_id++){
|
||||
PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB=130;
|
||||
PHY_vars_UE_g[UE_id][CC_id]->rx_total_gain_dB=160;
|
||||
// update UE_mode for each eNB_id not just 0
|
||||
if (abstraction_flag == 0)
|
||||
PHY_vars_UE_g[UE_id][CC_id]->UE_mode[0] = NOT_SYNCHED;
|
||||
@@ -903,7 +905,7 @@ void init_ocm(void) {
|
||||
module_id_t UE_id, eNB_id;
|
||||
int CC_id;
|
||||
/* Added for PHY abstraction */
|
||||
LOG_I(OCM,"Running with frame_type %d, Nid_cell %d, N_RB_DL %d, EP %d, mode %d, target dl_mcs %d, rate adaptation %d, nframes %d, abstraction %d, channel %s\n", oai_emulation.info.frame_type, Nid_cell, oai_emulation.info.N_RB_DL, oai_emulation.info.extended_prefix_flag, oai_emulation.info.transmission_mode,target_dl_mcs,rate_adaptation_flag,oai_emulation.info.n_frames,abstraction_flag,oai_emulation.environment_system_config.fading.small_scale.selected_option);
|
||||
LOG_I(OCM,"Running with frame_type %d, Nid_cell %d, N_RB_DL %d, EP %d, mode %d, target dl_mcs %d, rate adaptation %d, nframes %d, abstraction %d, channel %s\n", oai_emulation.info.frame_type[0], Nid_cell, oai_emulation.info.N_RB_DL[0], oai_emulation.info.extended_prefix_flag[0], oai_emulation.info.transmission_mode[0],target_dl_mcs,rate_adaptation_flag,oai_emulation.info.n_frames,abstraction_flag,oai_emulation.environment_system_config.fading.small_scale.selected_option);
|
||||
|
||||
if (abstraction_flag) {
|
||||
|
||||
@@ -943,7 +945,7 @@ void init_ocm(void) {
|
||||
}
|
||||
|
||||
if (abstraction_flag == 0)
|
||||
init_channel_vars (frame_parms, &s_re, &s_im, &r_re, &r_im, &r_re0, &r_im0);
|
||||
init_channel_vars (frame_parms[0], &s_re, &s_im, &r_re, &r_im, &r_re0, &r_im0);
|
||||
|
||||
// initialize channel descriptors
|
||||
for (eNB_id = 0; eNB_id < NB_eNB_INST; eNB_id++) {
|
||||
@@ -1081,14 +1083,14 @@ void update_ocm() {
|
||||
for (eNB_id = 0; eNB_id < NB_eNB_INST; eNB_id++) {
|
||||
for (UE_id = 0; UE_id < NB_UE_INST; UE_id++) {
|
||||
|
||||
//UE2eNB[UE_id][eNB_id]->path_loss_dB = -105 + snr_dB;
|
||||
//pathloss: -132.24 dBm/15kHz RE + target SNR - eNB TX power per RE
|
||||
if (eNB_id == (UE_id % NB_eNB_INST)) {
|
||||
eNB2UE[eNB_id][UE_id][CC_id]->path_loss_dB = -105 + snr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower;
|
||||
UE2eNB[UE_id][eNB_id][CC_id]->path_loss_dB = -105 + snr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower; //+20 to offset the difference in tx power of the UE wrt eNB
|
||||
eNB2UE[eNB_id][UE_id][CC_id]->path_loss_dB = -132.24 + snr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower;
|
||||
UE2eNB[UE_id][eNB_id][CC_id]->path_loss_dB = -132.24 + snr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower; //+20 to offset the difference in tx power of the UE wrt eNB
|
||||
}
|
||||
else {
|
||||
eNB2UE[eNB_id][UE_id][CC_id]->path_loss_dB = -105 + sinr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower;
|
||||
UE2eNB[UE_id][eNB_id][CC_id]->path_loss_dB = -105 + sinr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower;
|
||||
eNB2UE[eNB_id][UE_id][CC_id]->path_loss_dB = -132.24 + sinr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower;
|
||||
UE2eNB[UE_id][eNB_id][CC_id]->path_loss_dB = -132.24 + sinr_dB - PHY_vars_eNB_g[eNB_id][CC_id]->lte_frame_parms.pdsch_config_common.referenceSignalPower;
|
||||
}
|
||||
LOG_I(OCM,"Path loss from eNB %d to UE %d (CCid %d)=> %f dB (eNB TX %d)\n",eNB_id,UE_id,CC_id,
|
||||
eNB2UE[eNB_id][UE_id][CC_id]->path_loss_dB,
|
||||
|
||||
Reference in New Issue
Block a user