Commit 508b67e5 authored by francescomani's avatar francescomani

limiting SR periodicity according to scs

parent da193d1b
...@@ -735,7 +735,7 @@ void fill_initial_SpCellConfig(int uid, ...@@ -735,7 +735,7 @@ void fill_initial_SpCellConfig(int uid,
initialUplinkBWP->srs_Config = calloc(1,sizeof(*initialUplinkBWP->srs_Config)); initialUplinkBWP->srs_Config = calloc(1,sizeof(*initialUplinkBWP->srs_Config));
config_srs(scc, initialUplinkBWP->srs_Config, NULL, curr_bwp, uid, 0, maxMIMO_Layers, 0); config_srs(scc, initialUplinkBWP->srs_Config, NULL, curr_bwp, uid, 0, maxMIMO_Layers, 0);
scheduling_request_config(scc, pucch_Config); scheduling_request_config(scc, pucch_Config, scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.subcarrierSpacing);
set_dl_DataToUL_ACK(pucch_Config, configuration->minRXTXTIME, scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.subcarrierSpacing); set_dl_DataToUL_ACK(pucch_Config, configuration->minRXTXTIME, scc->uplinkConfigCommon->initialUplinkBWP->genericParameters.subcarrierSpacing);
......
...@@ -883,7 +883,7 @@ void set_pucch_power_config(NR_PUCCH_Config_t *pucch_Config, int do_csirs) { ...@@ -883,7 +883,7 @@ void set_pucch_power_config(NR_PUCCH_Config_t *pucch_Config, int do_csirs) {
asn1cSeqAdd(&pucch_Config->spatialRelationInfoToAddModList->list,pucchspatial); asn1cSeqAdd(&pucch_Config->spatialRelationInfoToAddModList->list,pucchspatial);
} }
static void set_SR_periodandoffset(NR_SchedulingRequestResourceConfig_t *schedulingRequestResourceConfig, const NR_ServingCellConfigCommon_t *scc) static void set_SR_periodandoffset(NR_SchedulingRequestResourceConfig_t *schedulingRequestResourceConfig, const NR_ServingCellConfigCommon_t *scc, int scs)
{ {
const NR_TDD_UL_DL_Pattern_t *tdd = scc->tdd_UL_DL_ConfigurationCommon ? &scc->tdd_UL_DL_ConfigurationCommon->pattern1 : NULL; const NR_TDD_UL_DL_Pattern_t *tdd = scc->tdd_UL_DL_ConfigurationCommon ? &scc->tdd_UL_DL_ConfigurationCommon->pattern1 : NULL;
int sr_slot = 1; // in FDD SR in slot 1 int sr_slot = 1; // in FDD SR in slot 1
...@@ -892,43 +892,46 @@ static void set_SR_periodandoffset(NR_SchedulingRequestResourceConfig_t *schedul ...@@ -892,43 +892,46 @@ static void set_SR_periodandoffset(NR_SchedulingRequestResourceConfig_t *schedul
schedulingRequestResourceConfig->periodicityAndOffset = calloc(1,sizeof(*schedulingRequestResourceConfig->periodicityAndOffset)); schedulingRequestResourceConfig->periodicityAndOffset = calloc(1,sizeof(*schedulingRequestResourceConfig->periodicityAndOffset));
if(sr_slot<10){ if(sr_slot < 10 && scs < NR_SubcarrierSpacing_kHz60){
schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl10; schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl10;
schedulingRequestResourceConfig->periodicityAndOffset->choice.sl10 = sr_slot; schedulingRequestResourceConfig->periodicityAndOffset->choice.sl10 = sr_slot;
return; return;
} }
if(sr_slot<20){ else if(sr_slot < 20 && scs < NR_SubcarrierSpacing_kHz120){
schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl20; schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl20;
schedulingRequestResourceConfig->periodicityAndOffset->choice.sl20 = sr_slot; schedulingRequestResourceConfig->periodicityAndOffset->choice.sl20 = sr_slot;
return; return;
} }
if(sr_slot<40){ else if(sr_slot < 40){
schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl40; schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl40;
schedulingRequestResourceConfig->periodicityAndOffset->choice.sl40 = sr_slot; schedulingRequestResourceConfig->periodicityAndOffset->choice.sl40 = sr_slot;
return; return;
} }
if(sr_slot<80){ else if(sr_slot < 80 || scs == NR_SubcarrierSpacing_kHz15){
schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl80; schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl80;
schedulingRequestResourceConfig->periodicityAndOffset->choice.sl80 = sr_slot; schedulingRequestResourceConfig->periodicityAndOffset->choice.sl80 = sr_slot;
return; return;
} }
if(sr_slot<160){ else if(sr_slot < 160 || scs == NR_SubcarrierSpacing_kHz30){
schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl160; schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl160;
schedulingRequestResourceConfig->periodicityAndOffset->choice.sl160 = sr_slot; schedulingRequestResourceConfig->periodicityAndOffset->choice.sl160 = sr_slot;
return; return;
} }
if(sr_slot<320){ else if(sr_slot < 320 || NR_SubcarrierSpacing_kHz60){
schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl320; schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl320;
schedulingRequestResourceConfig->periodicityAndOffset->choice.sl320 = sr_slot; schedulingRequestResourceConfig->periodicityAndOffset->choice.sl320 = sr_slot;
return; return;
} }
schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl640; else {
schedulingRequestResourceConfig->periodicityAndOffset->choice.sl640 = sr_slot; schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl640;
schedulingRequestResourceConfig->periodicityAndOffset->choice.sl640 = sr_slot;
}
} }
void scheduling_request_config(const NR_ServingCellConfigCommon_t *scc, void scheduling_request_config(const NR_ServingCellConfigCommon_t *scc,
NR_PUCCH_Config_t *pucch_Config) { NR_PUCCH_Config_t *pucch_Config,
int scs)
{
// format with <=2 bits in pucch resource set 0 // format with <=2 bits in pucch resource set 0
NR_PUCCH_ResourceSet_t *pucchresset = pucch_Config->resourceSetToAddModList->list.array[0]; NR_PUCCH_ResourceSet_t *pucchresset = pucch_Config->resourceSetToAddModList->list.array[0];
// assigning the 1st pucch resource in the set to scheduling request // assigning the 1st pucch resource in the set to scheduling request
...@@ -939,7 +942,7 @@ void scheduling_request_config(const NR_ServingCellConfigCommon_t *scc, ...@@ -939,7 +942,7 @@ void scheduling_request_config(const NR_ServingCellConfigCommon_t *scc,
schedulingRequestResourceConfig->schedulingRequestResourceId = 1; schedulingRequestResourceConfig->schedulingRequestResourceId = 1;
schedulingRequestResourceConfig->schedulingRequestID = 0; schedulingRequestResourceConfig->schedulingRequestID = 0;
set_SR_periodandoffset(schedulingRequestResourceConfig, scc); set_SR_periodandoffset(schedulingRequestResourceConfig, scc, scs);
schedulingRequestResourceConfig->resource = calloc(1,sizeof(*schedulingRequestResourceConfig->resource)); schedulingRequestResourceConfig->resource = calloc(1,sizeof(*schedulingRequestResourceConfig->resource));
*schedulingRequestResourceConfig->resource = *pucchressetid; *schedulingRequestResourceConfig->resource = *pucchressetid;
...@@ -1250,7 +1253,7 @@ void config_uplinkBWP(NR_BWP_Uplink_t *ubwp, ...@@ -1250,7 +1253,7 @@ void config_uplinkBWP(NR_BWP_Uplink_t *ubwp,
config_pucch_resset0(pucch_Config, uid, curr_bwp, uecap); config_pucch_resset0(pucch_Config, uid, curr_bwp, uecap);
config_pucch_resset1(pucch_Config, uecap); config_pucch_resset1(pucch_Config, uecap);
set_pucch_power_config(pucch_Config, configuration->do_CSIRS); set_pucch_power_config(pucch_Config, configuration->do_CSIRS);
scheduling_request_config(scc, pucch_Config); scheduling_request_config(scc, pucch_Config, ubwp->bwp_Common->genericParameters.subcarrierSpacing);
set_dl_DataToUL_ACK(pucch_Config, configuration->minRXTXTIME, ubwp->bwp_Common->genericParameters.subcarrierSpacing); set_dl_DataToUL_ACK(pucch_Config, configuration->minRXTXTIME, ubwp->bwp_Common->genericParameters.subcarrierSpacing);
NR_PUSCH_Config_t *pusch_Config = NULL; NR_PUSCH_Config_t *pusch_Config = NULL;
......
...@@ -53,7 +53,8 @@ void config_pucch_resset1(NR_PUCCH_Config_t *pucch_Config, NR_UE_NR_Capability_t ...@@ -53,7 +53,8 @@ void config_pucch_resset1(NR_PUCCH_Config_t *pucch_Config, NR_UE_NR_Capability_t
void set_dl_DataToUL_ACK(NR_PUCCH_Config_t *pucch_Config, int min_feedback_time, NR_SubcarrierSpacing_t subcarrierSpacing); void set_dl_DataToUL_ACK(NR_PUCCH_Config_t *pucch_Config, int min_feedback_time, NR_SubcarrierSpacing_t subcarrierSpacing);
void set_pucch_power_config(NR_PUCCH_Config_t *pucch_Config, int do_csirs); void set_pucch_power_config(NR_PUCCH_Config_t *pucch_Config, int do_csirs);
void scheduling_request_config(const NR_ServingCellConfigCommon_t *scc, void scheduling_request_config(const NR_ServingCellConfigCommon_t *scc,
NR_PUCCH_Config_t *pucch_Config); NR_PUCCH_Config_t *pucch_Config,
int scs);
void config_rsrp_meas_report(NR_CSI_MeasConfig_t *csi_MeasConfig, const NR_ServingCellConfigCommon_t *servingcellconfigcommon, NR_PUCCH_CSI_Resource_t *pucchcsires, int do_csi, int rep_id, int uid); void config_rsrp_meas_report(NR_CSI_MeasConfig_t *csi_MeasConfig, const NR_ServingCellConfigCommon_t *servingcellconfigcommon, NR_PUCCH_CSI_Resource_t *pucchcsires, int do_csi, int rep_id, int uid);
void config_csi_meas_report(NR_CSI_MeasConfig_t *csi_MeasConfig, void config_csi_meas_report(NR_CSI_MeasConfig_t *csi_MeasConfig,
const NR_ServingCellConfigCommon_t *servingcellconfigcommon, const NR_ServingCellConfigCommon_t *servingcellconfigcommon,
......
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