Merge remote-tracking branch 'origin/fix-SNR-based-on-SRS' into integration_2024_w41
This commit is contained in:
@@ -724,7 +724,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
NR_gNB_ULSCH_t *ulsch_gNB = &gNB->ulsch[UE_id];
|
||||
|
||||
NR_Sched_Rsp_t *Sched_INFO = malloc(sizeof(*Sched_INFO));
|
||||
NR_Sched_Rsp_t *Sched_INFO = malloc16_clear(sizeof(*Sched_INFO));
|
||||
memset((void*)Sched_INFO,0,sizeof(*Sched_INFO));
|
||||
nfapi_nr_ul_tti_request_t *UL_tti_req = &Sched_INFO->UL_tti_req;
|
||||
Sched_INFO->sched_response_id = -1;
|
||||
@@ -937,6 +937,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
//---------------
|
||||
int ret = 1;
|
||||
int srs_ret = do_SRS;
|
||||
for (SNR = snr0; SNR <= snr1; SNR += snr_step) {
|
||||
|
||||
varArray_t *table_rx=initVarArray(1000,sizeof(double));
|
||||
@@ -972,6 +973,9 @@ int main(int argc, char *argv[])
|
||||
int max_pusch_delay = INT_MIN;
|
||||
int delay_pusch_est_count = 0;
|
||||
|
||||
int64_t sum_srs_snr = 0;
|
||||
int srs_snr_count = 0;
|
||||
|
||||
for (trial = 0; trial < n_trials; trial++) {
|
||||
|
||||
uint8_t round = 0;
|
||||
@@ -1071,6 +1075,7 @@ int main(int argc, char *argv[])
|
||||
srs_pdu->subcarrier_spacing = frame_parms->subcarrier_spacing;
|
||||
srs_pdu->num_ant_ports = n_tx == 4 ? 2 : n_tx == 2 ? 1 : 0;
|
||||
srs_pdu->sequence_id = 40;
|
||||
srs_pdu->time_start_position = frame_parms->symbols_per_slot - 1;
|
||||
srs_pdu->config_index = rrc_get_max_nr_csrs(srs_pdu->bwp_size, srs_pdu->bandwidth_index);
|
||||
srs_pdu->resource_type = NR_SRS_Resource__resourceType_PR_periodic;
|
||||
srs_pdu->t_srs = 1;
|
||||
@@ -1436,6 +1441,10 @@ int main(int argc, char *argv[])
|
||||
max_pusch_delay = max(ulsch_gNB->delay.est_delay, max_pusch_delay);
|
||||
delay_pusch_est_count++;
|
||||
|
||||
if (do_SRS == 1) {
|
||||
sum_srs_snr += gNB->srs->snr;
|
||||
srs_snr_count++;
|
||||
}
|
||||
} // trial loop
|
||||
|
||||
roundStats/=((float)n_trials);
|
||||
@@ -1471,8 +1480,14 @@ int main(int argc, char *argv[])
|
||||
|
||||
printf(") Avg round %.2f, Eff Rate %.4f bits/slot, Eff Throughput %.2f, TBS %u bits/slot\n", roundStats,effRate,effTP,TBS);
|
||||
|
||||
printf("DMRS-PUSCH delay estimation: min %i, max %i, average %f\n",
|
||||
min_pusch_delay >> 1, max_pusch_delay >> 1, (double)sum_pusch_delay / (2 * delay_pusch_est_count));
|
||||
double av_delay = (double)sum_pusch_delay / (2 * delay_pusch_est_count);
|
||||
printf("DMRS-PUSCH delay estimation: min %i, max %i, average %2.1f\n", min_pusch_delay >> 1, max_pusch_delay >> 1, av_delay);
|
||||
|
||||
if (do_SRS == 1) {
|
||||
float srs_snr_av = (float)sum_srs_snr / srs_snr_count;
|
||||
srs_ret = srs_snr_av >= 0.7 * SNR || srs_snr_av > 30 ? 0 : 1;
|
||||
printf("SNR based on SRS: %2.1f dB\n", srs_snr_av);
|
||||
}
|
||||
|
||||
printf("*****************************************\n");
|
||||
printf("\n");
|
||||
@@ -1519,7 +1534,7 @@ int main(int argc, char *argv[])
|
||||
if(n_trials==1)
|
||||
break;
|
||||
|
||||
if ((float)effTP >= eff_tp_check) {
|
||||
if (srs_ret == 0 && (float)effTP >= eff_tp_check) {
|
||||
printf("*************\n");
|
||||
printf("PUSCH test OK\n");
|
||||
printf("*************\n");
|
||||
|
||||
Reference in New Issue
Block a user