bug fixes in channel simulation routines for multi-UE
This commit is contained in:
@@ -281,9 +281,12 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
|
|||||||
frame_parms->nb_antenna_ports_eNB = 2;
|
frame_parms->nb_antenna_ports_eNB = 2;
|
||||||
|
|
||||||
init_frame_parms(frame_parms,1);
|
init_frame_parms(frame_parms,1);
|
||||||
/*
|
|
||||||
write_output("rxdata0.m","rxd0",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
|
/*
|
||||||
exit(-1);
|
if (ue->Mod_id == 1) {
|
||||||
|
write_output("rxdata0.m","rxd0",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
*/
|
*/
|
||||||
sync_pos = lte_sync_time(ue->common_vars.rxdata,
|
sync_pos = lte_sync_time(ue->common_vars.rxdata,
|
||||||
frame_parms,
|
frame_parms,
|
||||||
@@ -333,6 +336,7 @@ int initial_sync(PHY_VARS_UE *ue, runmode_t mode)
|
|||||||
#ifdef DEBUG_INITIAL_SYNCH
|
#ifdef DEBUG_INITIAL_SYNCH
|
||||||
LOG_I(PHY,"FDD Normal prefix: SSS error condition: sync_pos %d, sync_pos_slot %d\n", sync_pos, sync_pos_slot);
|
LOG_I(PHY,"FDD Normal prefix: SSS error condition: sync_pos %d, sync_pos_slot %d\n", sync_pos, sync_pos_slot);
|
||||||
#endif
|
#endif
|
||||||
|
write_output("rxdata.m","rxd",ue->common_vars.rxdata[0],10*frame_parms->samples_per_tti,1,1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -859,7 +859,8 @@ void pdcp_update_stats(const protocol_ctxt_t* const ctxt_pP){
|
|||||||
for (pdcp_uid=0; pdcp_uid< NUMBER_OF_UE_MAX;pdcp_uid++){
|
for (pdcp_uid=0; pdcp_uid< NUMBER_OF_UE_MAX;pdcp_uid++){
|
||||||
//printf("frame %d and subframe %d \n", pdcp_enb[ctxt_pP->module_id].frame, pdcp_enb[ctxt_pP->module_id].subframe);
|
//printf("frame %d and subframe %d \n", pdcp_enb[ctxt_pP->module_id].frame, pdcp_enb[ctxt_pP->module_id].subframe);
|
||||||
// tx stats
|
// tx stats
|
||||||
if (pdcp_enb[ctxt_pP->module_id].sfn % Pdcp_stats_tx_window_ms[ctxt_pP->module_id][pdcp_uid] == 0){
|
if (Pdcp_stats_tx_window_ms[ctxt_pP->module_id][pdcp_uid] > 0 &&
|
||||||
|
pdcp_enb[ctxt_pP->module_id].sfn % Pdcp_stats_tx_window_ms[ctxt_pP->module_id][pdcp_uid] == 0){
|
||||||
// unit: bit/s
|
// unit: bit/s
|
||||||
Pdcp_stats_tx_throughput_w[ctxt_pP->module_id][pdcp_uid][rb_id]=Pdcp_stats_tx_bytes_tmp_w[ctxt_pP->module_id][pdcp_uid][rb_id]*8;
|
Pdcp_stats_tx_throughput_w[ctxt_pP->module_id][pdcp_uid][rb_id]=Pdcp_stats_tx_bytes_tmp_w[ctxt_pP->module_id][pdcp_uid][rb_id]*8;
|
||||||
Pdcp_stats_tx_w[ctxt_pP->module_id][pdcp_uid][rb_id]= Pdcp_stats_tx_tmp_w[ctxt_pP->module_id][pdcp_uid][rb_id];
|
Pdcp_stats_tx_w[ctxt_pP->module_id][pdcp_uid][rb_id]= Pdcp_stats_tx_tmp_w[ctxt_pP->module_id][pdcp_uid][rb_id];
|
||||||
@@ -875,7 +876,8 @@ void pdcp_update_stats(const protocol_ctxt_t* const ctxt_pP){
|
|||||||
Pdcp_stats_tx_aiat_tmp_w[ctxt_pP->module_id][pdcp_uid][rb_id]=0;
|
Pdcp_stats_tx_aiat_tmp_w[ctxt_pP->module_id][pdcp_uid][rb_id]=0;
|
||||||
|
|
||||||
}
|
}
|
||||||
if (pdcp_enb[ctxt_pP->module_id].sfn % Pdcp_stats_rx_window_ms[ctxt_pP->module_id][pdcp_uid] == 0){
|
if (Pdcp_stats_rx_window_ms[ctxt_pP->module_id][pdcp_uid] > 0 &&
|
||||||
|
pdcp_enb[ctxt_pP->module_id].sfn % Pdcp_stats_rx_window_ms[ctxt_pP->module_id][pdcp_uid] == 0){
|
||||||
// rx stats
|
// rx stats
|
||||||
Pdcp_stats_rx_goodput_w[ctxt_pP->module_id][pdcp_uid][rb_id]=Pdcp_stats_rx_bytes_tmp_w[ctxt_pP->module_id][pdcp_uid][rb_id]*8;
|
Pdcp_stats_rx_goodput_w[ctxt_pP->module_id][pdcp_uid][rb_id]=Pdcp_stats_rx_bytes_tmp_w[ctxt_pP->module_id][pdcp_uid][rb_id]*8;
|
||||||
Pdcp_stats_rx_w[ctxt_pP->module_id][pdcp_uid][rb_id]= Pdcp_stats_rx_tmp_w[ctxt_pP->module_id][pdcp_uid][rb_id];
|
Pdcp_stats_rx_w[ctxt_pP->module_id][pdcp_uid][rb_id]= Pdcp_stats_rx_tmp_w[ctxt_pP->module_id][pdcp_uid][rb_id];
|
||||||
|
|||||||
@@ -60,7 +60,11 @@
|
|||||||
#include "oaisim.h"
|
#include "oaisim.h"
|
||||||
|
|
||||||
#define RF
|
#define RF
|
||||||
//#define DEBUG_SIM
|
#define DEBUG_SIM
|
||||||
|
/*
|
||||||
|
#undef LOG_D
|
||||||
|
#define LOG_D(A,B,C...) printf(B,C)
|
||||||
|
*/
|
||||||
|
|
||||||
int number_rb_ul;
|
int number_rb_ul;
|
||||||
int first_rbUL ;
|
int first_rbUL ;
|
||||||
@@ -231,7 +235,6 @@ void do_DL_sig(channel_desc_t *RU2UE[NUMBER_OF_RU_MAX][NUMBER_OF_UE_MAX][MAX_NUM
|
|||||||
pthread_mutex_lock(&RU_output_mutex[UE_id]);
|
pthread_mutex_lock(&RU_output_mutex[UE_id]);
|
||||||
|
|
||||||
if (RU_output_mask[UE_id] == 0) { // This is the first eNodeB for this UE, clear the buffer
|
if (RU_output_mask[UE_id] == 0) { // This is the first eNodeB for this UE, clear the buffer
|
||||||
|
|
||||||
for (aa=0; aa<nb_antennas_rx; aa++) {
|
for (aa=0; aa<nb_antennas_rx; aa++) {
|
||||||
memset((void*)r_re_DL[UE_id][aa],0,(RC.ru[0]->frame_parms.samples_per_tti)*sizeof(double));
|
memset((void*)r_re_DL[UE_id][aa],0,(RC.ru[0]->frame_parms.samples_per_tti)*sizeof(double));
|
||||||
memset((void*)r_im_DL[UE_id][aa],0,(RC.ru[0]->frame_parms.samples_per_tti)*sizeof(double));
|
memset((void*)r_im_DL[UE_id][aa],0,(RC.ru[0]->frame_parms.samples_per_tti)*sizeof(double));
|
||||||
@@ -375,6 +378,7 @@ void do_DL_sig(channel_desc_t *RU2UE[NUMBER_OF_RU_MAX][NUMBER_OF_UE_MAX][MAX_NUM
|
|||||||
10*log10(rx_pwr),subframe);
|
10*log10(rx_pwr),subframe);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
pthread_mutex_lock(&RU_output_mutex[UE_id]);
|
pthread_mutex_lock(&RU_output_mutex[UE_id]);
|
||||||
for (i=0; i<frame_parms->samples_per_tti; i++) {
|
for (i=0; i<frame_parms->samples_per_tti; i++) {
|
||||||
for (aa=0; aa<nb_antennas_rx; aa++) {
|
for (aa=0; aa<nb_antennas_rx; aa++) {
|
||||||
@@ -388,8 +392,8 @@ void do_DL_sig(channel_desc_t *RU2UE[NUMBER_OF_RU_MAX][NUMBER_OF_UE_MAX][MAX_NUM
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
double *r_re_p[2] = {r_re_DL[ru_id][0],r_re_DL[ru_id][1]};
|
double *r_re_p[2] = {r_re_DL[UE_id][0],r_re_DL[UE_id][1]};
|
||||||
double *r_im_p[2] = {r_im_DL[ru_id][0],r_im_DL[ru_id][1]};
|
double *r_im_p[2] = {r_im_DL[UE_id][0],r_im_DL[UE_id][1]};
|
||||||
|
|
||||||
#ifdef DEBUG_SIM
|
#ifdef DEBUG_SIM
|
||||||
rx_pwr = signal_energy_fp(r_re_p,r_im_p,nb_antennas_rx,length<length_meas?length:length_meas,0)/(12.0*frame_parms->N_RB_DL);
|
rx_pwr = signal_energy_fp(r_re_p,r_im_p,nb_antennas_rx,length<length_meas?length:length_meas,0)/(12.0*frame_parms->N_RB_DL);
|
||||||
|
|||||||
Reference in New Issue
Block a user