Commit 03393ddc authored by rmagueta's avatar rmagueta

Minor fixes for multiple antennas scenario

parent b3e5b83b
......@@ -196,8 +196,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
nr_init_csi_rs(gNB, cfg->cell_config.phy_cell_id.value);
gNB->nr_srs_info = (nr_srs_info_t *)malloc16_clear(sizeof(nr_srs_info_t));
gNB->nr_srs_info->srs_generated_signal = (int32_t*)malloc16_clear(NR_NB_SC_PER_RB*NR_MAX_NB_RB*sizeof(int32_t));
gNB->nr_srs_info->srs_received_signal = (int32_t*)malloc16_clear(NR_NB_SC_PER_RB*NR_MAX_NB_RB*sizeof(int32_t));
gNB->nr_srs_info->srs_generated_signal = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t));
generate_ul_reference_signal_sequences(SHRT_MAX);
......@@ -213,6 +212,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
common_vars->txdataF = (int32_t **)malloc16(Ptx*sizeof(int32_t*));
common_vars->rxdataF = (int32_t **)malloc16(Prx*sizeof(int32_t*));
common_vars->beam_id = (uint8_t **)malloc16(Ptx*sizeof(uint8_t*));
gNB->nr_srs_info->srs_received_signal = (int32_t **)malloc16(Prx*sizeof(int32_t*));
for (i=0;i<Ptx;i++){
common_vars->txdataF[i] = (int32_t*)malloc16_clear(fp->samples_per_frame_wCP*sizeof(int32_t)); // [hna] samples_per_frame without CP
......@@ -225,6 +225,7 @@ int phy_init_nr_gNB(PHY_VARS_gNB *gNB,
for (i=0;i<Prx;i++){
common_vars->rxdataF[i] = (int32_t*)malloc16_clear(fp->samples_per_frame_wCP*sizeof(int32_t));
common_vars->rxdata[i] = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t));
gNB->nr_srs_info->srs_received_signal[i] = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t));
}
common_vars->debugBuff = (int32_t*)malloc16_clear(fp->samples_per_frame*sizeof(int32_t)*100);
common_vars->debugBuff_sample_offset = 0;
......
......@@ -324,8 +324,11 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue,
srs_vars[gNB_id]->active = false;
ue->nr_srs_info = (nr_srs_info_t *)malloc16_clear(sizeof(nr_srs_info_t));
ue->nr_srs_info->srs_generated_signal = (int32_t*)malloc16_clear(NR_NB_SC_PER_RB*NR_MAX_NB_RB*sizeof(int32_t));
ue->nr_srs_info->srs_received_signal = (int32_t*)malloc16_clear(NR_NB_SC_PER_RB*NR_MAX_NB_RB*sizeof(int32_t));
ue->nr_srs_info->srs_generated_signal = (int32_t *) malloc16_clear( (2*(fp->samples_per_frame)+2048)*sizeof(int32_t) );
ue->nr_srs_info->srs_received_signal = (int32_t **)malloc16( fp->nb_antennas_rx*sizeof(int32_t *) );
for (i=0; i<fp->nb_antennas_rx; i++) {
ue->nr_srs_info->srs_received_signal[i] = (int32_t *) malloc16_clear( (2*(fp->samples_per_frame)+2048)*sizeof(int32_t) );
}
if (abstraction_flag == 0) {
for (th_id=0; th_id<RX_NB_TH_MAX; th_id++) {
......
......@@ -322,7 +322,7 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB,
int slot,
nfapi_nr_srs_pdu_t *srs_pdu,
nr_srs_info_t *nr_srs_info,
int32_t *srs_received_signal);
int32_t **srs_received_signal);
void init_prach_list(PHY_VARS_gNB *gNB);
void init_prach_ru_list(RU_t *ru);
......
......@@ -89,14 +89,14 @@ void nr_fill_srs(PHY_VARS_gNB *gNB,
}
int nr_get_srs_signal(PHY_VARS_gNB *gNB,
int frame,
int slot,
nfapi_nr_srs_pdu_t *srs_pdu,
nr_srs_info_t *nr_srs_info,
int32_t *srs_received_signal) {
int frame,
int slot,
nfapi_nr_srs_pdu_t *srs_pdu,
nr_srs_info_t *nr_srs_info,
int32_t **srs_received_signal) {
if(nr_srs_info->n_symbs==0) {
LOG_E(NR_PHY, "nr_srs_info was not generated yet!\n");
LOG_E(NR_PHY, "(%d.%d) nr_srs_info was not generated yet!\n", frame, slot);
return -1;
}
......@@ -109,19 +109,24 @@ int nr_get_srs_signal(PHY_VARS_gNB *gNB,
int32_t *rx_signal;
for (int ant = 0; ant < frame_parms->nb_antennas_rx; ant++) {
memset(srs_received_signal[ant], 0, frame_parms->samples_per_frame*sizeof(int32_t));
rx_signal = &rxdataF[ant][symbol_offset + frame_parms->first_carrier_offset];
for(int sc_idx = 0; sc_idx < nr_srs_info->n_symbs; sc_idx++) {
srs_received_signal[nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset] = rx_signal[nr_srs_info->subcarrier_idx[sc_idx]];
srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset] = rx_signal[nr_srs_info->subcarrier_idx[sc_idx]];
#ifdef SRS_DEBUG
if(nr_srs_info->subcarrier_idx[sc_idx]%12 == 0) {
LOG_I(NR_PHY,"::::::::::::: %i :::::::::::::\n", nr_srs_info->subcarrier_idx[sc_idx]/12);
}
LOG_I(NR_PHY,"(%i) \t%i\t%i\n",
nr_srs_info->subcarrier_idx[sc_idx],
srs_received_signal[nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset]&0xFFFF,
(srs_received_signal[nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset]>>16)&0xFFFF);
if(sc_idx == 0) {
LOG_I(NR_PHY,"________ Rx antenna %i ________\n", ant);
}
if(nr_srs_info->subcarrier_idx[sc_idx]%12 == 0) {
LOG_I(NR_PHY,"::::::::::::: %i :::::::::::::\n", nr_srs_info->subcarrier_idx[sc_idx]/12);
}
LOG_I(NR_PHY,"(%i) \t%i\t%i\n",
nr_srs_info->subcarrier_idx[sc_idx],
srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset]&0xFFFF,
(srs_received_signal[ant][nr_srs_info->subcarrier_idx[sc_idx] + frame_parms->first_carrier_offset]>>16)&0xFFFF);
#endif
}
}
......
......@@ -244,7 +244,7 @@ typedef struct {
uint16_t n_symbs;
uint16_t subcarrier_idx[6*NR_MAX_NB_RB];
int32_t *srs_generated_signal;
int32_t *srs_received_signal;
int32_t **srs_received_signal;
} nr_srs_info_t;
typedef struct NR_DL_FRAME_PARMS NR_DL_FRAME_PARMS;
......
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