Commit 48cb2510 authored by Robert Schmidt's avatar Robert Schmidt

Merge remote-tracking branch 'origin/NR_SR_fixes' into integration_2022_wk17

parents 5dc87bdc 9327e991
...@@ -290,7 +290,7 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB, ...@@ -290,7 +290,7 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
xr[aa][l][n].i = (int32_t)x_re[l][n] * r[n].i - (int32_t)x_im[l][n] * r[n].r; xr[aa][l][n].i = (int32_t)x_re[l][n] * r[n].i - (int32_t)x_im[l][n] * r[n].r;
#ifdef DEBUG_NR_PUCCH_RX #ifdef DEBUG_NR_PUCCH_RX
printf("x (%d,%d), r%d.%d (%d,%d), xr (%lld,%lld)\n", printf("x (%d,%d), r%d.%d (%d,%d), xr (%lld,%lld)\n",
x_re[l][n],x_im[l][n],l2,re_offset[l],r[n].r,r[n].i,xr[aa][l][n].r,xr[aa][l][n].i); x_re[l][n],x_im[l][n],l2,re_offset[l],r[n].r,r[n].i,xr[aa][l][n].r,xr[aa][l][n].i);
#endif #endif
} }
} }
...@@ -417,11 +417,12 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB, ...@@ -417,11 +417,12 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
if (pucch_pdu->bit_len_harq==0) { if (pucch_pdu->bit_len_harq==0) {
uci_pdu->harq = NULL; uci_pdu->harq = NULL;
uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr)); uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr));
uci_pdu->sr->sr_confidence_level = no_conf; uci_pdu->sr->sr_confidence_level = SNRtimes10 < uci_stats->pucch0_thres;
uci_stats->pucch0_sr_trials++; uci_stats->pucch0_sr_trials++;
if (xrtmag_dBtimes10>(10*gNB->measurements.n0_power_tot_dB)) { if (xrtmag_dBtimes10>(10*max_n0+100)) {
uci_pdu->sr->sr_indication = 1; uci_pdu->sr->sr_indication = 1;
uci_stats->pucch0_positive_SR++; uci_stats->pucch0_positive_SR++;
LOG_D(PHY,"PUCCH0 got positive SR. Cumulative number of positive SR %d\n", uci_stats->pucch0_positive_SR);
} else { } else {
uci_pdu->sr->sr_indication = 0; uci_pdu->sr->sr_indication = 0;
} }
...@@ -442,7 +443,10 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB, ...@@ -442,7 +443,10 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr)); uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr));
uci_pdu->sr->sr_indication = (index>1); uci_pdu->sr->sr_indication = (index>1);
uci_pdu->sr->sr_confidence_level = no_conf; uci_pdu->sr->sr_confidence_level = no_conf;
uci_stats->pucch0_positive_SR++; if(uci_pdu->sr->sr_indication == 1 && uci_pdu->sr->sr_confidence_level == 0) {
uci_stats->pucch0_positive_SR++;
LOG_D(PHY,"PUCCH0 got positive SR. Cumulative number of positive SR %d\n", uci_stats->pucch0_positive_SR);
}
} }
uci_stats->pucch01_trials++; uci_stats->pucch01_trials++;
} }
...@@ -466,6 +470,10 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB, ...@@ -466,6 +470,10 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr)); uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr));
uci_pdu->sr->sr_indication = (index>3) ? 1 : 0; uci_pdu->sr->sr_indication = (index>3) ? 1 : 0;
uci_pdu->sr->sr_confidence_level = no_conf; uci_pdu->sr->sr_confidence_level = no_conf;
if(uci_pdu->sr->sr_indication == 1 && uci_pdu->sr->sr_confidence_level == 0) {
uci_stats->pucch0_positive_SR++;
LOG_D(PHY,"PUCCH0 got positive SR. Cumulative number of positive SR %d\n", uci_stats->pucch0_positive_SR);
}
} }
} }
} }
...@@ -1674,7 +1682,8 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB, ...@@ -1674,7 +1682,8 @@ void nr_decode_pucch2(PHY_VARS_gNB *gNB,
LOG_D(PHY,"metric %d dB\n",corr_dB); LOG_D(PHY,"metric %d dB\n",corr_dB);
} }
// estimate CQI for MAC (from antenna port 0 only) // estimate CQI for MAC (from antenna port 0 only)
// TODO this computation is wrong -> to be ignored at MAC for now
int SNRtimes10 = dB_fixed_times10(signal_energy_nodc(&rxdataF[0][soffset+(l2*frame_parms->ofdm_symbol_size)+re_offset[0]], int SNRtimes10 = dB_fixed_times10(signal_energy_nodc(&rxdataF[0][soffset+(l2*frame_parms->ofdm_symbol_size)+re_offset[0]],
12*pucch_pdu->prb_size)) - 12*pucch_pdu->prb_size)) -
(10*gNB->measurements.n0_power_tot_dB); (10*gNB->measurements.n0_power_tot_dB);
......
...@@ -658,8 +658,6 @@ typedef struct { ...@@ -658,8 +658,6 @@ typedef struct {
unsigned int n0_power_tot; unsigned int n0_power_tot;
//! estimated avg noise power (dB) //! estimated avg noise power (dB)
unsigned int n0_power_tot_dB; unsigned int n0_power_tot_dB;
//! estimated avg noise power (dB)
int n0_power_tot_dBm;
//! estimated avg noise power per RB per RX ant (lin) //! estimated avg noise power per RB per RX ant (lin)
unsigned int n0_subband_power[MAX_NUM_RU_PER_gNB][275]; unsigned int n0_subband_power[MAX_NUM_RU_PER_gNB][275];
//! estimated avg noise power per RB per RX ant (dB) //! estimated avg noise power per RB per RX ant (dB)
......
...@@ -1494,10 +1494,11 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id, ...@@ -1494,10 +1494,11 @@ void handle_nr_uci_pucch_2_3_4(module_id_t mod_id,
NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id]; NR_UE_sched_ctrl_t *sched_ctrl = &UE_info->UE_sched_ctrl[UE_id];
// tpc (power control) // tpc (power control)
sched_ctrl->tpc1 = nr_get_tpc(RC.nrmac[mod_id]->pucch_target_snrx10, // TODO PUCCH2 SNR computation is not correct -> ignore the following
uci_234->ul_cqi, //sched_ctrl->tpc1 = nr_get_tpc(RC.nrmac[mod_id]->pucch_target_snrx10,
30); // uci_234->ul_cqi,
sched_ctrl->pucch_snrx10 = uci_234->ul_cqi * 5 - 640; // 30);
//sched_ctrl->pucch_snrx10 = uci_234->ul_cqi * 5 - 640;
if ((uci_234->pduBitmap >> 1) & 0x01) { if ((uci_234->pduBitmap >> 1) & 0x01) {
// iterate over received harq bits // iterate over received harq bits
......
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