Added switching delay requirements
This commit is contained in:
@@ -1178,21 +1178,23 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
||||
const double N_TA_max = Ta_max * bw_scaling * tc_factor;
|
||||
|
||||
NR_UE_MAC_INST_t *mac = get_mac_inst(0);
|
||||
NR_BWP_Id_t ul_bwp = mac->UL_BWP_Id;
|
||||
NR_BWP_Id_t dl_bwp = mac->DL_BWP_Id;
|
||||
|
||||
NR_PUSCH_TimeDomainResourceAllocationList_t *pusch_TimeDomainAllocationList = NULL;
|
||||
if (mac->ULbwp[0] &&
|
||||
mac->ULbwp[0]->bwp_Dedicated &&
|
||||
mac->ULbwp[0]->bwp_Dedicated->pusch_Config &&
|
||||
mac->ULbwp[0]->bwp_Dedicated->pusch_Config->choice.setup &&
|
||||
mac->ULbwp[0]->bwp_Dedicated->pusch_Config->choice.setup->pusch_TimeDomainAllocationList) {
|
||||
pusch_TimeDomainAllocationList = mac->ULbwp[0]->bwp_Dedicated->pusch_Config->choice.setup->pusch_TimeDomainAllocationList->choice.setup;
|
||||
if (mac->ULbwp[ul_bwp] &&
|
||||
mac->ULbwp[ul_bwp]->bwp_Dedicated &&
|
||||
mac->ULbwp[ul_bwp]->bwp_Dedicated->pusch_Config &&
|
||||
mac->ULbwp[ul_bwp]->bwp_Dedicated->pusch_Config->choice.setup &&
|
||||
mac->ULbwp[ul_bwp]->bwp_Dedicated->pusch_Config->choice.setup->pusch_TimeDomainAllocationList) {
|
||||
pusch_TimeDomainAllocationList = mac->ULbwp[ul_bwp]->bwp_Dedicated->pusch_Config->choice.setup->pusch_TimeDomainAllocationList->choice.setup;
|
||||
}
|
||||
else if (mac->ULbwp[0] &&
|
||||
mac->ULbwp[0]->bwp_Common &&
|
||||
mac->ULbwp[0]->bwp_Common->pusch_ConfigCommon &&
|
||||
mac->ULbwp[0]->bwp_Common->pusch_ConfigCommon->choice.setup &&
|
||||
mac->ULbwp[0]->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList) {
|
||||
pusch_TimeDomainAllocationList = mac->ULbwp[0]->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList;
|
||||
else if (mac->ULbwp[ul_bwp] &&
|
||||
mac->ULbwp[ul_bwp]->bwp_Common &&
|
||||
mac->ULbwp[ul_bwp]->bwp_Common->pusch_ConfigCommon &&
|
||||
mac->ULbwp[ul_bwp]->bwp_Common->pusch_ConfigCommon->choice.setup &&
|
||||
mac->ULbwp[ul_bwp]->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList) {
|
||||
pusch_TimeDomainAllocationList = mac->ULbwp[ul_bwp]->bwp_Common->pusch_ConfigCommon->choice.setup->pusch_TimeDomainAllocationList;
|
||||
}
|
||||
else if (mac->scc_SIB &&
|
||||
mac->scc_SIB->uplinkConfigCommon &&
|
||||
@@ -1203,12 +1205,12 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
||||
}
|
||||
long mapping_type_ul = pusch_TimeDomainAllocationList ? pusch_TimeDomainAllocationList->list.array[0]->mappingType : NR_PUSCH_TimeDomainResourceAllocation__mappingType_typeA;
|
||||
|
||||
NR_PDSCH_Config_t *pdsch_Config = (mac->DLbwp[0] && mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup) ? mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup : NULL;
|
||||
NR_PDSCH_Config_t *pdsch_Config = (mac->DLbwp[dl_bwp] && mac->DLbwp[dl_bwp]->bwp_Dedicated->pdsch_Config->choice.setup) ? mac->DLbwp[dl_bwp]->bwp_Dedicated->pdsch_Config->choice.setup : NULL;
|
||||
NR_PDSCH_TimeDomainResourceAllocationList_t *pdsch_TimeDomainAllocationList = NULL;
|
||||
if (mac->DLbwp[0] && mac->DLbwp[0]->bwp_Dedicated->pdsch_Config->choice.setup->pdsch_TimeDomainAllocationList)
|
||||
if (mac->DLbwp[dl_bwp] && mac->DLbwp[dl_bwp]->bwp_Dedicated->pdsch_Config->choice.setup->pdsch_TimeDomainAllocationList)
|
||||
pdsch_TimeDomainAllocationList = pdsch_Config->pdsch_TimeDomainAllocationList->choice.setup;
|
||||
else if (mac->DLbwp[0] && mac->DLbwp[0]->bwp_Common->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList)
|
||||
pdsch_TimeDomainAllocationList = mac->DLbwp[0]->bwp_Common->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList;
|
||||
else if (mac->DLbwp[dl_bwp] && mac->DLbwp[dl_bwp]->bwp_Common->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList)
|
||||
pdsch_TimeDomainAllocationList = mac->DLbwp[dl_bwp]->bwp_Common->pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList;
|
||||
else if (mac->scc_SIB && mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.pdsch_ConfigCommon->choice.setup)
|
||||
pdsch_TimeDomainAllocationList = mac->scc_SIB->downlinkConfigCommon.initialDownlinkBWP.pdsch_ConfigCommon->choice.setup->pdsch_TimeDomainAllocationList;
|
||||
long mapping_type_dl = pdsch_TimeDomainAllocationList ? pdsch_TimeDomainAllocationList->list.array[0]->mappingType : NR_PDSCH_TimeDomainResourceAllocation__mappingType_typeA;
|
||||
@@ -1262,7 +1264,7 @@ void nr_ue_dlsch_procedures(PHY_VARS_NR_UE *ue,
|
||||
d_2_1 = 1;
|
||||
|
||||
/* d_2_2 */
|
||||
const double d_2_2 = 0.0; // set to 0 because there is only 1 BWP: TODO this should corresponds to the switching time as defined in TS 38.133
|
||||
const double d_2_2 = pusch_d_2_2_timing_capability_1[numerology][1];
|
||||
|
||||
/* N_t_1 time duration in msec of N_1 symbols corresponding to a PDSCH reception time
|
||||
// N_t_2 time duration in msec of N_2 symbols corresponding to a PUSCH preparation time */
|
||||
|
||||
@@ -106,4 +106,36 @@ float pusch_N_2_timing_capability_2[3][2] = {
|
||||
{ 0, 5 },
|
||||
{ 1, 5.5 },
|
||||
{ 2, 11 },
|
||||
};
|
||||
};
|
||||
|
||||
/* TS 38.133 Table 8.6.2-1: BWP switch delay capability 1
|
||||
// corresponding to the PUSCH preparation time d_2_2 [slots]
|
||||
// where mu corresponds to the one of {mu_DL, mu_UL}
|
||||
// resulting with the largest T_proc_2
|
||||
// where mu_DL is the SCS with which the PDCCH
|
||||
// carrying the DCI scheduling the PUSCH was transmitted
|
||||
// mu_UL is the SCS of the UL channel with which PUSCH to be transmitted
|
||||
*/
|
||||
float pusch_d_2_2_timing_capability_1[4][2] = {
|
||||
/* mu d_2_2 */
|
||||
{ 0, 1 },
|
||||
{ 1, 2 },
|
||||
{ 2, 3 },
|
||||
{ 3, 6 },
|
||||
};
|
||||
|
||||
/* TS 38.133 Table 8.6.2-1: BWP switch delay capability 2
|
||||
// corresponding to the PUSCH preparation time d_2_2 [slots]
|
||||
// where mu corresponds to the one of {mu_DL, mu_UL}
|
||||
// resulting with the largest T_proc_2
|
||||
// where mu_DL is the SCS with which the PDCCH
|
||||
// carrying the DCI scheduling the PUSCH was transmitted
|
||||
// mu_UL is the SCS of the UL channel with which PUSCH to be transmitted
|
||||
*/
|
||||
float pusch_d_2_2_timing_capability_2[4][2] = {
|
||||
/* mu d_2_2 */
|
||||
{ 0, 3 },
|
||||
{ 1, 5 },
|
||||
{ 2, 9 },
|
||||
{ 3, 18 },
|
||||
};
|
||||
|
||||
@@ -351,8 +351,6 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
|
||||
protocol_ctxt_t ctxt={0};
|
||||
PROTOCOL_CTXT_SET_BY_MODULE_ID(&ctxt, module_idP, ENB_FLAG_YES, NOT_A_RNTI, frame, slot,module_idP);
|
||||
|
||||
const int bwp_id = 1;
|
||||
|
||||
gNB_MAC_INST *gNB = RC.nrmac[module_idP];
|
||||
NR_COMMON_channels_t *cc = gNB->common_channels;
|
||||
NR_ServingCellConfigCommon_t *scc = cc->ServingCellConfigCommon;
|
||||
|
||||
Reference in New Issue
Block a user