Applied clang formatting
This commit is contained in:
committed by
francescomani
parent
4f9aa86510
commit
f64179039e
@@ -58,16 +58,13 @@ void peak_estimator(int32_t *buffer, int32_t buf_len, int32_t *peak_idx, int32_t
|
||||
max_idx = k;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Check for detection threshold
|
||||
LOG_D(PHY,"PRS ToA estimator: max_val %d, mean_val %d, max_idx %d\n", max_val, mean_val, max_idx);
|
||||
if((mean_val !=0) && (max_val/mean_val > 10))
|
||||
{
|
||||
LOG_D(PHY, "PRS ToA estimator: max_val %d, mean_val %d, max_idx %d\n", max_val, mean_val, max_idx);
|
||||
if ((mean_val != 0) && (max_val / mean_val > 10)) {
|
||||
*peak_val = max_val;
|
||||
*peak_idx = max_idx;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
*peak_val = 0;
|
||||
*peak_idx = 0;
|
||||
}
|
||||
@@ -106,9 +103,9 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
int16_t *ch_tmp = (int16_t *)ch_tmp_buf;
|
||||
int16_t scale_factor = (1.0f/(float)(prs_cfg->NumPRSSymbols))*(1<<15);
|
||||
int16_t num_pilots = (12/prs_cfg->CombSize)*prs_cfg->NumRB;
|
||||
int16_t first_half = frame_params->ofdm_symbol_size - frame_params->first_carrier_offset;
|
||||
int16_t second_half = (prs_cfg->NumRB*12) - first_half;
|
||||
int16_t start_offset = NR_PRS_IDFT_OVERSAMP_FACTOR*frame_params->ofdm_symbol_size - first_half;
|
||||
int16_t first_half = frame_params->ofdm_symbol_size - frame_params->first_carrier_offset;
|
||||
int16_t second_half = (prs_cfg->NumRB * 12) - first_half;
|
||||
int16_t start_offset = NR_PRS_IDFT_OVERSAMP_FACTOR * frame_params->ofdm_symbol_size - first_half;
|
||||
LOG_D(PHY, "start_offset %d, first_half %d, second_half %d\n", start_offset, first_half, second_half);
|
||||
|
||||
int16_t k_prime_table[K_PRIME_TABLE_ROW_SIZE][K_PRIME_TABLE_COL_SIZE] = PRS_K_PRIME_TABLE;
|
||||
@@ -142,10 +139,11 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
for (rxAnt=0; rxAnt < frame_params->nb_antennas_rx; rxAnt++)
|
||||
{
|
||||
// reset variables
|
||||
snr = 0; rsrp = 0;
|
||||
|
||||
snr = 0;
|
||||
rsrp = 0;
|
||||
|
||||
// calculate RE offset
|
||||
k = (prs_cfg->REOffset+k_prime) % prs_cfg->CombSize + prs_cfg->RBOffset*12 + frame_params->first_carrier_offset;
|
||||
k = (prs_cfg->REOffset + k_prime) % prs_cfg->CombSize + prs_cfg->RBOffset * 12 + frame_params->first_carrier_offset;
|
||||
|
||||
// Channel estimation and interpolation
|
||||
pil = (int16_t *)&mod_prs[0];
|
||||
@@ -187,8 +185,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
ch_tmp,
|
||||
8);
|
||||
|
||||
//SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t*)rxF));
|
||||
// SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t *)rxF));
|
||||
noiseFig[0] = rxF[0] - (int16_t)(((int32_t)ch[0]*pil[0] - (int32_t)ch[1]*pil[1])>>15);
|
||||
noiseFig[1] = rxF[1] - (int16_t)(((int32_t)ch[1]*pil[0] + (int32_t)ch[0]*pil[1])>>15);
|
||||
snr += 10*log10(squaredMod(*(c16_t*)rxF) - squaredMod(*(c16_t*)noiseFig)) - 10*log10(squaredMod(*(c16_t*)noiseFig));
|
||||
@@ -218,9 +216,9 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
ch_tmp,
|
||||
8);
|
||||
}
|
||||
|
||||
//SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t*)rxF));
|
||||
|
||||
// SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t *)rxF));
|
||||
noiseFig[0] = rxF[0] - (int16_t)(((int32_t)ch[0]*pil[0] - (int32_t)ch[1]*pil[1])>>15);
|
||||
noiseFig[1] = rxF[1] - (int16_t)(((int32_t)ch[1]*pil[0] + (int32_t)ch[0]*pil[1])>>15);
|
||||
snr += 10*log10(squaredMod(*(c16_t*)rxF) - squaredMod(*(c16_t*)noiseFig)) - 10*log10(squaredMod(*(c16_t*)noiseFig));
|
||||
@@ -247,9 +245,9 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
ch_tmp,
|
||||
8);
|
||||
}
|
||||
|
||||
//SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t*)rxF));
|
||||
|
||||
// SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t *)rxF));
|
||||
noiseFig[0] = rxF[0] - (int16_t)(((int32_t)ch[0]*pil[0] - (int32_t)ch[1]*pil[1])>>15);
|
||||
noiseFig[1] = rxF[1] - (int16_t)(((int32_t)ch[1]*pil[0] + (int32_t)ch[0]*pil[1])>>15);
|
||||
snr += 10*log10(squaredMod(*((c16_t*)rxF)) - squaredMod(*((c16_t*)noiseFig))) - 10*log10(squaredMod(*((c16_t*)noiseFig)));
|
||||
@@ -270,13 +268,23 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
ch_tmp,
|
||||
8);
|
||||
|
||||
//SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t*)rxF));
|
||||
noiseFig[0] = rxF[0] - (int16_t)(((int32_t)ch[0]*pil[0] - (int32_t)ch[1]*pil[1])>>15);
|
||||
noiseFig[1] = rxF[1] - (int16_t)(((int32_t)ch[1]*pil[0] + (int32_t)ch[0]*pil[1])>>15);
|
||||
snr += 10*log10(squaredMod(*((c16_t*)rxF)) - squaredMod(*((c16_t*)noiseFig))) - 10*log10(squaredMod(*((c16_t*)noiseFig)));
|
||||
// SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t *)rxF));
|
||||
noiseFig[0] = rxF[0] - (int16_t)(((int32_t)ch[0] * pil[0] - (int32_t)ch[1] * pil[1]) >> 15);
|
||||
noiseFig[1] = rxF[1] - (int16_t)(((int32_t)ch[1] * pil[0] + (int32_t)ch[0] * pil[1]) >> 15);
|
||||
snr += 10 * log10(squaredMod(*((c16_t *)rxF)) - squaredMod(*((c16_t *)noiseFig))) - 10 * log10(squaredMod(*((c16_t *)noiseFig)));
|
||||
#ifdef DEBUG_PRS_PRINTS
|
||||
printf("[Rx %d] pilot %3d, SNR %+2d dB: rxF - > (%+3d, %+3d) addr %p ch -> (%+3d, %+3d), pil -> (%+d, %+d) \n", rxAnt, num_pilots-1, snr/num_pilots, rxF[0],rxF[1],&rxF[0],ch[0],ch[1],pil[0],pil[1]);
|
||||
printf("[Rx %d] pilot %3d, SNR %+2d dB: rxF - > (%+3d, %+3d) addr %p ch -> (%+3d, %+3d), pil -> (%+d, %+d) \n",
|
||||
rxAnt,
|
||||
num_pilots - 1,
|
||||
snr / num_pilots,
|
||||
rxF[0],
|
||||
rxF[1],
|
||||
&rxF[0],
|
||||
ch[0],
|
||||
ch[1],
|
||||
pil[0],
|
||||
pil[1]);
|
||||
#endif
|
||||
}
|
||||
else if(prs_cfg->CombSize == 4)
|
||||
@@ -332,9 +340,9 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
ch,
|
||||
ch_tmp,
|
||||
16);
|
||||
|
||||
//SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t*)rxF));
|
||||
|
||||
// SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t *)rxF));
|
||||
noiseFig[0] = rxF[0] - (int16_t)(((int32_t)ch[0]*pil[0] - (int32_t)ch[1]*pil[1])>>15);
|
||||
noiseFig[1] = rxF[1] - (int16_t)(((int32_t)ch[1]*pil[0] + (int32_t)ch[0]*pil[1])>>15);
|
||||
snr += 10*log10(squaredMod(*((c16_t*)rxF)) - squaredMod(*((c16_t*)noiseFig))) - 10*log10(squaredMod(*((c16_t*)noiseFig)));
|
||||
@@ -352,8 +360,8 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
ch_tmp,
|
||||
16);
|
||||
|
||||
//SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t*)rxF));
|
||||
// SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t *)rxF));
|
||||
noiseFig[0] = rxF[0] - (int16_t)(((int32_t)ch[0]*pil[0] - (int32_t)ch[1]*pil[1])>>15);
|
||||
noiseFig[1] = rxF[1] - (int16_t)(((int32_t)ch[1]*pil[0] + (int32_t)ch[0]*pil[1])>>15);
|
||||
snr += 10*log10(squaredMod(*((c16_t*)rxF)) - squaredMod(*((c16_t*)noiseFig))) - 10*log10(squaredMod(*((c16_t*)noiseFig)));
|
||||
@@ -374,9 +382,9 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
ch,
|
||||
ch_tmp,
|
||||
16);
|
||||
|
||||
//SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t*)rxF));
|
||||
|
||||
// SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t *)rxF));
|
||||
noiseFig[0] = rxF[0] - (int16_t)(((int32_t)ch[0]*pil[0] - (int32_t)ch[1]*pil[1])>>15);
|
||||
noiseFig[1] = rxF[1] - (int16_t)(((int32_t)ch[1]*pil[0] + (int32_t)ch[0]*pil[1])>>15);
|
||||
snr += 10*log10(squaredMod(*((c16_t*)rxF)) - squaredMod(*((c16_t*)noiseFig))) - 10*log10(squaredMod(*((c16_t*)noiseFig)));
|
||||
@@ -396,9 +404,9 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
ch,
|
||||
ch_tmp,
|
||||
16);
|
||||
|
||||
//SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t*)rxF));
|
||||
|
||||
// SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t *)rxF));
|
||||
noiseFig[0] = rxF[0] - (int16_t)(((int32_t)ch[0]*pil[0] - (int32_t)ch[1]*pil[1])>>15);
|
||||
noiseFig[1] = rxF[1] - (int16_t)(((int32_t)ch[1]*pil[0] + (int32_t)ch[0]*pil[1])>>15);
|
||||
snr += 10*log10(squaredMod(*((c16_t*)rxF)) - squaredMod(*((c16_t*)noiseFig))) - 10*log10(squaredMod(*((c16_t*)noiseFig)));
|
||||
@@ -415,9 +423,9 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
ch,
|
||||
ch_tmp,
|
||||
16);
|
||||
|
||||
//SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t*)rxF));
|
||||
|
||||
// SNR & RSRP estimation
|
||||
rsrp += squaredMod(*((c16_t *)rxF));
|
||||
noiseFig[0] = rxF[0] - (int16_t)(((int32_t)ch[0]*pil[0] - (int32_t)ch[1]*pil[1])>>15);
|
||||
noiseFig[1] = rxF[1] - (int16_t)(((int32_t)ch[1]*pil[0] + (int32_t)ch[0]*pil[1])>>15);
|
||||
snr += 10*log10(squaredMod(*((c16_t*)rxF)) - squaredMod(*((c16_t*)noiseFig))) - 10*log10(squaredMod(*((c16_t*)noiseFig)));
|
||||
@@ -429,10 +437,10 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
{
|
||||
AssertFatal((prs_cfg->CombSize == 2)||(prs_cfg->CombSize == 4), "[%s] DL PRS CombSize other than 2 and 4 are NOT supported currently. Exiting!!!", __FUNCTION__);
|
||||
}
|
||||
|
||||
|
||||
// average out the SNR and RSRP computed
|
||||
prs_meas[rxAnt]->snr = snr/(float)num_pilots;
|
||||
prs_meas[rxAnt]->rsrp = rsrp/(float)num_pilots;
|
||||
prs_meas[rxAnt]->snr = snr / (float)num_pilots;
|
||||
prs_meas[rxAnt]->rsrp = rsrp / (float)num_pilots;
|
||||
|
||||
//reset channel pointer
|
||||
ch_tmp = (int16_t*)ch_tmp_buf;
|
||||
@@ -463,9 +471,9 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
|
||||
// Place PRS channel estimates in FFT shifted format
|
||||
if(first_half > 0)
|
||||
memcpy((int16_t *)&chF_interpol[rxAnt][start_offset], &ch_tmp[0], first_half*sizeof(int32_t));
|
||||
memcpy((int16_t *)&chF_interpol[rxAnt][start_offset], &ch_tmp[0], first_half * sizeof(int32_t));
|
||||
if(second_half > 0)
|
||||
memcpy((int16_t *)&chF_interpol[rxAnt][0], &ch_tmp[first_half<<1], second_half*sizeof(int32_t));
|
||||
memcpy((int16_t *)&chF_interpol[rxAnt][0], &ch_tmp[first_half << 1], second_half * sizeof(int32_t));
|
||||
|
||||
// Time domain IMPULSE response
|
||||
idft_size_idx_t idftsizeidx;
|
||||
@@ -549,32 +557,36 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
(int16_t *)&chT_interpol[rxAnt][0],1);
|
||||
|
||||
// peak estimator
|
||||
mean_val = squaredMod(((c16_t*)ch_tmp)[(prs_cfg->NumRB*12)>>1]);
|
||||
peak_estimator(&chT_interpol[rxAnt][0],
|
||||
NR_PRS_IDFT_OVERSAMP_FACTOR*frame_params->ofdm_symbol_size,
|
||||
&prs_toa,
|
||||
&ch_pwr,
|
||||
mean_val);
|
||||
mean_val = squaredMod(((c16_t *)ch_tmp)[(prs_cfg->NumRB * 12) >> 1]);
|
||||
peak_estimator(&chT_interpol[rxAnt][0], NR_PRS_IDFT_OVERSAMP_FACTOR * frame_params->ofdm_symbol_size, &prs_toa, &ch_pwr, mean_val);
|
||||
|
||||
// adjusting the rx_gains for channel peak power
|
||||
ch_pwr_dbm = 10*log10(ch_pwr)+30
|
||||
- 10*log10(pow(2,30)) - ((int)openair0_cfg[0].rx_gain[0]
|
||||
- (int)openair0_cfg[0].rx_gain_offset[0]) - dB_fixed(frame_params->ofdm_symbol_size);
|
||||
|
||||
prs_meas[rxAnt]->rsrp_dBm = 10*log10(prs_meas[rxAnt]->rsrp) + 30
|
||||
- 10*log10(pow(2,30)) - ((int)openair0_cfg[0].rx_gain[0]
|
||||
- (int)openair0_cfg[0].rx_gain_offset[0]) - dB_fixed(ue->frame_parms.ofdm_symbol_size);
|
||||
|
||||
ch_pwr_dbm = 10 * log10(ch_pwr) + 30 - 10 * log10(pow(2, 30)) - ((int)openair0_cfg[0].rx_gain[0] - (int)openair0_cfg[0].rx_gain_offset[0]) - dB_fixed(frame_params->ofdm_symbol_size);
|
||||
|
||||
prs_meas[rxAnt]->rsrp_dBm =
|
||||
10 * log10(prs_meas[rxAnt]->rsrp) + 30 - 10 * log10(pow(2, 30)) - ((int)openair0_cfg[0].rx_gain[0] - (int)openair0_cfg[0].rx_gain_offset[0]) - dB_fixed(ue->frame_parms.ofdm_symbol_size);
|
||||
|
||||
//prs measurements
|
||||
prs_meas[rxAnt]->gNB_id = gNB_id;
|
||||
prs_meas[rxAnt]->sfn = proc->frame_rx;
|
||||
prs_meas[rxAnt]->slot = proc->nr_slot_rx;
|
||||
prs_meas[rxAnt]->rxAnt_idx = rxAnt;
|
||||
prs_meas[rxAnt]->dl_aoa = rsc_id;
|
||||
prs_meas[rxAnt]->dl_toa = prs_toa/(float)NR_PRS_IDFT_OVERSAMP_FACTOR;
|
||||
if ((frame_params->ofdm_symbol_size - prs_meas[rxAnt]->dl_toa) < frame_params->ofdm_symbol_size/2)
|
||||
prs_meas[rxAnt]->dl_toa -= (frame_params->ofdm_symbol_size);
|
||||
LOG_I(PHY, "[gNB %d][rsc %d][Rx %d][sfn %d][slot %d] DL PRS ToA ==> %.1f / %d samples, peak channel power %.1f dBm, SNR %+.1f dB, rsrp %+.1f dBm\n", gNB_id, rsc_id, rxAnt, proc->frame_rx, proc->nr_slot_rx, prs_meas[rxAnt]->dl_toa, frame_params->ofdm_symbol_size, ch_pwr_dbm, prs_meas[rxAnt]->snr, prs_meas[rxAnt]->rsrp_dBm);
|
||||
prs_meas[rxAnt]->dl_toa = prs_toa / (float)NR_PRS_IDFT_OVERSAMP_FACTOR;
|
||||
if ((frame_params->ofdm_symbol_size - prs_meas[rxAnt]->dl_toa) < frame_params->ofdm_symbol_size / 2)
|
||||
prs_meas[rxAnt]->dl_toa -= (frame_params->ofdm_symbol_size);
|
||||
LOG_I(PHY,
|
||||
"[gNB %d][rsc %d][Rx %d][sfn %d][slot %d] DL PRS ToA ==> %.1f / %d samples, peak channel power %.1f dBm, SNR %+.1f dB, rsrp %+.1f dBm\n",
|
||||
gNB_id,
|
||||
rsc_id,
|
||||
rxAnt,
|
||||
proc->frame_rx,
|
||||
proc->nr_slot_rx,
|
||||
prs_meas[rxAnt]->dl_toa,
|
||||
frame_params->ofdm_symbol_size,
|
||||
ch_pwr_dbm,
|
||||
prs_meas[rxAnt]->snr,
|
||||
prs_meas[rxAnt]->rsrp_dBm);
|
||||
|
||||
#ifdef DEBUG_PRS_CHEST
|
||||
sprintf(filename, "%s%i%s", "PRSpilot_", rxAnt, ".m");
|
||||
@@ -595,13 +607,21 @@ int nr_prs_channel_estimation(uint8_t gNB_id,
|
||||
T_INT(proc->frame_rx), T_INT(proc->nr_slot_rx),
|
||||
T_INT(rxAnt), T_BUFFER(&rxdataF[rxAnt][0], frame_params->samples_per_slot_wCP*sizeof(int32_t)));
|
||||
|
||||
T(T_UE_PHY_DL_CHANNEL_ESTIMATE_FREQ, T_INT(gNB_id), T_INT(rsc_id),
|
||||
T_INT(proc->frame_rx), T_INT(proc->nr_slot_rx),
|
||||
T_INT(rxAnt), T_BUFFER(&chF_interpol[rxAnt][0], NR_PRS_IDFT_OVERSAMP_FACTOR*frame_params->ofdm_symbol_size*sizeof(int32_t)));
|
||||
T(T_UE_PHY_DL_CHANNEL_ESTIMATE_FREQ,
|
||||
T_INT(gNB_id),
|
||||
T_INT(rsc_id),
|
||||
T_INT(proc->frame_rx),
|
||||
T_INT(proc->nr_slot_rx),
|
||||
T_INT(rxAnt),
|
||||
T_BUFFER(&chF_interpol[rxAnt][0], NR_PRS_IDFT_OVERSAMP_FACTOR * frame_params->ofdm_symbol_size * sizeof(int32_t)));
|
||||
|
||||
T(T_UE_PHY_DL_CHANNEL_ESTIMATE, T_INT(gNB_id), T_INT(rsc_id),
|
||||
T_INT(proc->frame_rx), T_INT(proc->nr_slot_rx),
|
||||
T_INT(rxAnt), T_BUFFER(&chT_interpol[rxAnt][0], NR_PRS_IDFT_OVERSAMP_FACTOR*frame_params->ofdm_symbol_size*sizeof(int32_t)));
|
||||
T(T_UE_PHY_DL_CHANNEL_ESTIMATE,
|
||||
T_INT(gNB_id),
|
||||
T_INT(rsc_id),
|
||||
T_INT(proc->frame_rx),
|
||||
T_INT(proc->nr_slot_rx),
|
||||
T_INT(rxAnt),
|
||||
T_BUFFER(&chT_interpol[rxAnt][0], NR_PRS_IDFT_OVERSAMP_FACTOR * frame_params->ofdm_symbol_size * sizeof(int32_t)));
|
||||
}
|
||||
|
||||
return(0);
|
||||
|
||||
@@ -187,7 +187,7 @@ int nr_pbch_detection(UE_nr_rxtx_proc_t * proc, PHY_VARS_NR_UE *ue, int pbch_ini
|
||||
|
||||
|
||||
#ifdef DEBUG_INITIAL_SYNCH
|
||||
LOG_I(PHY,"[UE%d] Initial sync: pbch decoded sucessfully, ssb index %d\n",ue->Mod_id, frame_parms->ssb_index);
|
||||
LOG_I(PHY, "[UE%d] Initial sync: pbch decoded sucessfully, ssb index %d\n", ue->Mod_id, frame_parms->ssb_index);
|
||||
#endif
|
||||
return(0);
|
||||
} else {
|
||||
|
||||
@@ -289,11 +289,11 @@ typedef struct {
|
||||
int32_t sfn;
|
||||
int8_t slot;
|
||||
int8_t rxAnt_idx;
|
||||
float dl_toa;
|
||||
float dl_toa;
|
||||
int32_t dl_aoa;
|
||||
float snr;
|
||||
float rsrp;
|
||||
float rsrp_dBm;
|
||||
float snr;
|
||||
float rsrp;
|
||||
float rsrp_dBm;
|
||||
int32_t reserved;
|
||||
} prs_meas_t;
|
||||
|
||||
|
||||
@@ -943,13 +943,7 @@ void pbch_pdcch_processing(PHY_VARS_NR_UE *ue,
|
||||
(j%fp->symbols_per_slot),
|
||||
rxdataF);
|
||||
}
|
||||
nr_prs_channel_estimation(gNB_id,
|
||||
rsc_id,
|
||||
i,
|
||||
ue,
|
||||
proc,
|
||||
fp,
|
||||
rxdataF);
|
||||
nr_prs_channel_estimation(gNB_id, rsc_id, i, ue, proc, fp, rxdataF);
|
||||
}
|
||||
} // for i
|
||||
} // for rsc_id
|
||||
|
||||
Reference in New Issue
Block a user