if(DL_BWP->pdsch_HARQ_ACK_Codebook&&*DL_BWP->pdsch_HARQ_ACK_Codebook==NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic){// FIXME in case of more than one serving cell
cg->physicalCellGroupConfig->pdsch_HARQ_ACK_Codebook==NR_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic){// FIXME in case of more than one serving cell
if(pdsch_config)pdsch_config->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition=NULL;// For PDSCH with mapping type A, the UE shall assume dmrs-AdditionalPosition='pos2'
if(pdsch_config)pdsch_config->dmrs_DownlinkForPDSCH_MappingTypeA->choice.setup->dmrs_AdditionalPosition=NULL;// For PDSCH with mapping type A, the UE shall assume dmrs-AdditionalPosition='pos2'
LOG_W(MAC,"[%d.%d] pucch_resource_indicator value %d is out of bounds. Possibly due to false DCI. Ignoring DCI!\n",frame,slot,dci->pucch_resource_indicator);
LOG_W(MAC,"[%d.%d] pucch_resource_indicator value %d is out of bounds. Possibly due to false DCI. Ignoring DCI!\n",frame,slot,dci->pucch_resource_indicator);
AssertFatal(feedback_ti>=DURATION_RX_TO_TX,"PDSCH to HARQ feedback time (%d) cannot be less than DURATION_RX_TO_TX (%d). Min feedback time set in config file (min_rxtxtime).\n",
AssertFatal(feedback_ti>=DURATION_RX_TO_TX,"PDSCH to HARQ feedback time (%d) cannot be less than DURATION_RX_TO_TX (%d). Min feedback time set in config file (min_rxtxtime).\n",
AssertFatal(sched_slot<slots_per_frame,"sched_slot was calculated incorrect %d\n",sched_slot);
AssertFatal(sched_slot<slots_per_frame,"sched_slot was calculated incorrect %d\n",sched_slot);
LOG_D(PHY,"HARQ pid %d is active for %d.%d (dl_slot %d, feedback_to_ul %d, is_common %d\n",
LOG_D(PHY,"HARQ pid %d is active for %d.%d (dl_slot %d, feedback_to_ul %d\n",dl_harq_pid,sched_frame,sched_slot,current_harq->dl_slot,current_harq->feedback_to_ul);
"Slot offset K2 (%ld) cannot be less than DURATION_RX_TO_TX (%d). Please set min_rxtxtime at least to %d in gNB config file or gNBs.[0].min_rxtxtime=%d via command line.\n",
@@ -1599,9 +1438,12 @@ int nr_ue_pusch_scheduler(NR_UE_MAC_INST_t *mac,
...
@@ -1599,9 +1438,12 @@ int nr_ue_pusch_scheduler(NR_UE_MAC_INST_t *mac,
break;
break;
}
}
AssertFatal((k2+delta)>=DURATION_RX_TO_TX,
AssertFatal((k2+delta)>=DURATION_RX_TO_TX,
"Slot offset (%d) for Msg3 cannot be less than DURATION_RX_TO_TX (%d)\n",
"Slot offset (%ld) for Msg3 cannot be less than DURATION_RX_TO_TX (%d). Please set min_rxtxtime at least to %d in gNB config file or gNBs.[0].min_rxtxtime=%d via command line.\n",
@@ -1612,10 +1454,8 @@ int nr_ue_pusch_scheduler(NR_UE_MAC_INST_t *mac,
...
@@ -1612,10 +1454,8 @@ int nr_ue_pusch_scheduler(NR_UE_MAC_INST_t *mac,
}else{
}else{
// Get slot offset K2 which will be used to calculate TX slot
k2=get_k2(mac,tda_id);
if(k2<0){// This can happen when a false DCI is received
if(k2<0){// This can happen when a false DCI is received
LOG_W(PHY,"%d.%d. Received k2 %d, tda_id %d\n",current_frame,current_slot,k2,tda_id);
LOG_W(PHY,"%d.%d. Received k2 %ld\n",current_frame,current_slot,k2);
return-1;
return-1;
}
}
...
@@ -1625,10 +1465,9 @@ int nr_ue_pusch_scheduler(NR_UE_MAC_INST_t *mac,
...
@@ -1625,10 +1465,9 @@ int nr_ue_pusch_scheduler(NR_UE_MAC_INST_t *mac,
}
}
LOG_D(NR_MAC,"In %s: currently at [%d.%d] UL transmission in [%d.%d] (k2 %d delta %d)\n",__FUNCTION__,current_frame,current_slot,*frame_tx,*slot_tx,k2,delta);
LOG_D(NR_MAC,"[%04d.%02d] UL transmission in [%04d.%02d] (k2 %ld delta %d)\n",current_frame,current_slot,*frame_tx,*slot_tx,k2,delta);
return0;
return0;
}
}
// Build the list of all the valid RACH occasions in the maximum association pattern period according to the PRACH config
// Build the list of all the valid RACH occasions in the maximum association pattern period according to the PRACH config
AssertFatal((tda_info.startSymbolIndex+tda_info.nrOfSymbols)<14,"SIB1 TDA %d would cause overlap with CSI-RS. Please select a different SIB1 TDA.\n",time_domain_allocation);
AssertFatal((startSymbolIndex+nrOfSymbols)<14,"SIB1 TDA %d would cause overlap with CSI-RS. Please select a different SIB1 TDA.\n",time_domain_allocation);