fix for harq value in fapi indication according to scf
This commit is contained in:
@@ -427,8 +427,8 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
|||||||
uci_pdu->harq->num_harq = 1;
|
uci_pdu->harq->num_harq = 1;
|
||||||
uci_pdu->harq->harq_confidence_level = no_conf ? 1 : 0;
|
uci_pdu->harq->harq_confidence_level = no_conf ? 1 : 0;
|
||||||
uci_pdu->harq->harq_list = (nfapi_nr_harq_t*)malloc(1);
|
uci_pdu->harq->harq_list = (nfapi_nr_harq_t*)malloc(1);
|
||||||
uci_pdu->harq->harq_list[0].harq_value = index&0x01;
|
uci_pdu->harq->harq_list[0].harq_value = !(index&0x01);
|
||||||
LOG_D(PHY, "[DLSCH/PDSCH/PUCCH] %d.%d HARQ value %d with confidence level (0 is good, 1 is bad) %d xrt_mag %d xrt_mag_next %d n0 %d (%d,%d) pucch0_thres %d, cqi %d, SNRtimes10 %d, energy %f, sync_pos %d\n",
|
LOG_I(PHY, "[DLSCH/PDSCH/PUCCH] %d.%d HARQ value %d (0 pass, 1 fail) with confidence level %d (0 is good, 1 is bad) xrt_mag %d xrt_mag_next %d n0 %d (%d,%d) pucch0_thres %d, cqi %d, SNRtimes10 %d, energy %f, sync_pos %d\n",
|
||||||
frame,slot,uci_pdu->harq->harq_list[0].harq_value,uci_pdu->harq->harq_confidence_level,xrtmag_dBtimes10,xrtmag_next_dBtimes10,max_n0,uci_stats->pucch0_n00,uci_stats->pucch0_n01,uci_stats->pucch0_thres,cqi,SNRtimes10,10*log10((double)sigenergy),gNB->ulsch_stats[0].sync_pos);
|
frame,slot,uci_pdu->harq->harq_list[0].harq_value,uci_pdu->harq->harq_confidence_level,xrtmag_dBtimes10,xrtmag_next_dBtimes10,max_n0,uci_stats->pucch0_n00,uci_stats->pucch0_n01,uci_stats->pucch0_thres,cqi,SNRtimes10,10*log10((double)sigenergy),gNB->ulsch_stats[0].sync_pos);
|
||||||
if (pucch_pdu->sr_flag == 1) {
|
if (pucch_pdu->sr_flag == 1) {
|
||||||
uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr));
|
uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr));
|
||||||
@@ -443,9 +443,9 @@ void nr_decode_pucch0(PHY_VARS_gNB *gNB,
|
|||||||
uci_pdu->harq->num_harq = 2;
|
uci_pdu->harq->num_harq = 2;
|
||||||
uci_pdu->harq->harq_confidence_level = (no_conf) ? 1 : 0;
|
uci_pdu->harq->harq_confidence_level = (no_conf) ? 1 : 0;
|
||||||
uci_pdu->harq->harq_list = (nfapi_nr_harq_t*)malloc(2);
|
uci_pdu->harq->harq_list = (nfapi_nr_harq_t*)malloc(2);
|
||||||
uci_pdu->harq->harq_list[1].harq_value = index&0x01;
|
uci_pdu->harq->harq_list[1].harq_value = !(index&0x01);
|
||||||
uci_pdu->harq->harq_list[0].harq_value = (index>>1)&0x01;
|
uci_pdu->harq->harq_list[0].harq_value = !((index>>1)&0x01);
|
||||||
LOG_D(PHY, "[DLSCH/PDSCH/PUCCH] %d.%d HARQ values %d and %d with confidence level (0 is good, 1 is bad) %d, xrt_mag %d xrt_mag_next %d n0 %d (%d,%d) pucch0_thres %d, cqi %d, SNRtimes10 %d,sync_pos %d\n",
|
LOG_D(PHY, "[DLSCH/PDSCH/PUCCH] %d.%d HARQ values %d (0 pass, 1 fail) and %d with confidence level %d (0 is good, 1 is bad), xrt_mag %d xrt_mag_next %d n0 %d (%d,%d) pucch0_thres %d, cqi %d, SNRtimes10 %d,sync_pos %d\n",
|
||||||
frame,slot,uci_pdu->harq->harq_list[1].harq_value,uci_pdu->harq->harq_list[0].harq_value,uci_pdu->harq->harq_confidence_level,xrtmag_dBtimes10,xrtmag_next_dBtimes10,max_n0,uci_stats->pucch0_n00,uci_stats->pucch0_n01,uci_stats->pucch0_thres,cqi,SNRtimes10,gNB->ulsch_stats[0].sync_pos);
|
frame,slot,uci_pdu->harq->harq_list[1].harq_value,uci_pdu->harq->harq_list[0].harq_value,uci_pdu->harq->harq_confidence_level,xrtmag_dBtimes10,xrtmag_next_dBtimes10,max_n0,uci_stats->pucch0_n00,uci_stats->pucch0_n01,uci_stats->pucch0_thres,cqi,SNRtimes10,gNB->ulsch_stats[0].sync_pos);
|
||||||
if (pucch_pdu->sr_flag == 1) {
|
if (pucch_pdu->sr_flag == 1) {
|
||||||
uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr));
|
uci_pdu->sr = calloc(1,sizeof(*uci_pdu->sr));
|
||||||
|
|||||||
@@ -664,11 +664,11 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
if(nr_bit>0){
|
if(nr_bit>0){
|
||||||
if (nr_bit==1 && do_DTX == 0)
|
if (nr_bit==1 && do_DTX == 0)
|
||||||
ack_nack_errors+=(actual_payload^uci_pdu.harq->harq_list[0].harq_value);
|
ack_nack_errors+=(actual_payload^(!uci_pdu.harq->harq_list[0].harq_value));
|
||||||
else if (do_DTX == 0)
|
else if (do_DTX == 0)
|
||||||
ack_nack_errors+=(((actual_payload&1)^uci_pdu.harq->harq_list[0].harq_value)+((actual_payload>>1)^uci_pdu.harq->harq_list[1].harq_value));
|
ack_nack_errors+=(((actual_payload&1)^(!uci_pdu.harq->harq_list[0].harq_value))+((actual_payload>>1)^(!uci_pdu.harq->harq_list[1].harq_value)));
|
||||||
else if ((uci_pdu.harq->harq_confidence_level == 0 && uci_pdu.harq->harq_list[0].harq_value == 1) ||
|
else if ((uci_pdu.harq->harq_confidence_level == 0 && uci_pdu.harq->harq_list[0].harq_value == 0) ||
|
||||||
(uci_pdu.harq->harq_confidence_level == 0 && nr_bit == 2 && uci_pdu.harq->harq_list[1].harq_value==1))
|
(uci_pdu.harq->harq_confidence_level == 0 && nr_bit == 2 && uci_pdu.harq->harq_list[1].harq_value== 0))
|
||||||
ack_nack_errors++;
|
ack_nack_errors++;
|
||||||
free(uci_pdu.harq->harq_list);
|
free(uci_pdu.harq->harq_list);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1095,7 +1095,7 @@ void handle_nr_uci_pucch_0_1(module_id_t mod_id,
|
|||||||
DevAssert(harq->is_waiting);
|
DevAssert(harq->is_waiting);
|
||||||
const int8_t pid = sched_ctrl->feedback_dl_harq.head;
|
const int8_t pid = sched_ctrl->feedback_dl_harq.head;
|
||||||
remove_front_nr_list(&sched_ctrl->feedback_dl_harq);
|
remove_front_nr_list(&sched_ctrl->feedback_dl_harq);
|
||||||
handle_dl_harq(mod_id, UE_id, pid, harq_value == 1 && harq_confidence == 0);
|
handle_dl_harq(mod_id, UE_id, pid, harq_value == 0 && harq_confidence == 0);
|
||||||
if (harq_confidence == 1) UE_info->mac_stats[UE_id].pucch0_DTX++;
|
if (harq_confidence == 1) UE_info->mac_stats[UE_id].pucch0_DTX++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user