function to configure SR
This commit is contained in:
@@ -2271,11 +2271,9 @@ int8_t nr_ue_get_SR(module_id_t module_idP, frame_t frameP, slot_t slot){
|
|||||||
// start the sr-prohibittimer : rel 9 and above
|
// start the sr-prohibittimer : rel 9 and above
|
||||||
if (mac->scheduling_info.sr_ProhibitTimer > 0) { // timer configured
|
if (mac->scheduling_info.sr_ProhibitTimer > 0) { // timer configured
|
||||||
mac->scheduling_info.sr_ProhibitTimer--;
|
mac->scheduling_info.sr_ProhibitTimer--;
|
||||||
mac->scheduling_info.
|
mac->scheduling_info.sr_ProhibitTimer_Running = 1;
|
||||||
sr_ProhibitTimer_Running = 1;
|
|
||||||
} else {
|
} else {
|
||||||
mac->scheduling_info.
|
mac->scheduling_info.sr_ProhibitTimer_Running = 0;
|
||||||
sr_ProhibitTimer_Running = 0;
|
|
||||||
}
|
}
|
||||||
//mac->ul_active =1;
|
//mac->ul_active =1;
|
||||||
return (1); //instruct phy to signal SR
|
return (1); //instruct phy to signal SR
|
||||||
|
|||||||
@@ -977,9 +977,11 @@ uint8_t do_RRCReject(uint8_t Mod_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void fill_initial_SpCellConfig(int uid,
|
void fill_initial_SpCellConfig(int uid,
|
||||||
NR_SpCellConfig_t *SpCellConfig,
|
NR_CellGroupConfig_t *cellGroupConfig,
|
||||||
NR_ServingCellConfigCommon_t *scc,
|
NR_ServingCellConfigCommon_t *scc,
|
||||||
rrc_gNB_carrier_data_t *carrier) {
|
rrc_gNB_carrier_data_t *carrier) {
|
||||||
|
|
||||||
|
NR_SpCellConfig_t *SpCellConfig = cellGroupConfig->spCellConfig;
|
||||||
int curr_bwp = NRRIV2BW(scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.locationAndBandwidth,MAX_BWP_SIZE);
|
int curr_bwp = NRRIV2BW(scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.locationAndBandwidth,MAX_BWP_SIZE);
|
||||||
SpCellConfig->servCellIndex = NULL;
|
SpCellConfig->servCellIndex = NULL;
|
||||||
SpCellConfig->reconfigurationWithSync = NULL;
|
SpCellConfig->reconfigurationWithSync = NULL;
|
||||||
@@ -1127,27 +1129,7 @@ void fill_initial_SpCellConfig(int uid,
|
|||||||
srs_res0->spatialRelationInfo->referenceSignal.choice.csi_RS_Index=0;
|
srs_res0->spatialRelationInfo->referenceSignal.choice.csi_RS_Index=0;
|
||||||
ASN_SEQUENCE_ADD(&srs_Config->srs_ResourceToAddModList->list,srs_res0);
|
ASN_SEQUENCE_ADD(&srs_Config->srs_ResourceToAddModList->list,srs_res0);
|
||||||
|
|
||||||
// configure Scheduling request
|
schedulingrequest_config(cellGroupConfig->mac_CellGroupConfig, pucch_Config);
|
||||||
// 40 slot period
|
|
||||||
pucch_Config->schedulingRequestResourceToAddModList = calloc(1,sizeof(*pucch_Config->schedulingRequestResourceToAddModList));
|
|
||||||
NR_SchedulingRequestResourceConfig_t *schedulingRequestResourceConfig = calloc(1,sizeof(*schedulingRequestResourceConfig));
|
|
||||||
schedulingRequestResourceConfig->schedulingRequestResourceId = 1;
|
|
||||||
schedulingRequestResourceConfig->schedulingRequestID= 0;
|
|
||||||
schedulingRequestResourceConfig->periodicityAndOffset = calloc(1,sizeof(*schedulingRequestResourceConfig->periodicityAndOffset));
|
|
||||||
schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl40;
|
|
||||||
// note: make sure that there is no issue here. Later choose the RNTI accordingly.
|
|
||||||
// Here we would be limited to 3 UEs on this resource (1 1/2 Frames 30 kHz SCS, 5 ms TDD periodicity => slots 7,8,9).
|
|
||||||
// This should be a temporary resource until the first RRCReconfiguration gives new pucch resources.
|
|
||||||
// Check for above configuration and exit for now if it is not the case
|
|
||||||
AssertFatal(scc->downlinkConfigCommon->initialDownlinkBWP->genericParameters.subcarrierSpacing==NR_SubcarrierSpacing_kHz30,
|
|
||||||
"SCS != 30kHz\n");
|
|
||||||
AssertFatal(scc->tdd_UL_DL_ConfigurationCommon->pattern1.dl_UL_TransmissionPeriodicity==NR_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms5,
|
|
||||||
"TDD period != 5ms : %ld\n",scc->tdd_UL_DL_ConfigurationCommon->pattern1.dl_UL_TransmissionPeriodicity);
|
|
||||||
|
|
||||||
schedulingRequestResourceConfig->periodicityAndOffset->choice.sl40 = 8;
|
|
||||||
schedulingRequestResourceConfig->resource = calloc(1,sizeof(*schedulingRequestResourceConfig->resource));
|
|
||||||
*schedulingRequestResourceConfig->resource = 0;
|
|
||||||
ASN_SEQUENCE_ADD(&pucch_Config->schedulingRequestResourceToAddModList->list,schedulingRequestResourceConfig);
|
|
||||||
|
|
||||||
set_dl_DataToUL_ACK(pucch_Config, carrier->minRXTXTIME);
|
set_dl_DataToUL_ACK(pucch_Config, carrier->minRXTXTIME);
|
||||||
|
|
||||||
@@ -1431,36 +1413,25 @@ void fill_initial_cellGroupConfig(int uid,
|
|||||||
cellGroupConfig->rlc_BearerToReleaseList = NULL;
|
cellGroupConfig->rlc_BearerToReleaseList = NULL;
|
||||||
|
|
||||||
/* mac CellGroup Config */
|
/* mac CellGroup Config */
|
||||||
if (1) {
|
mac_CellGroupConfig = calloc(1, sizeof(*mac_CellGroupConfig));
|
||||||
mac_CellGroupConfig = calloc(1, sizeof(*mac_CellGroupConfig));
|
|
||||||
if (1) {
|
mac_CellGroupConfig->bsr_Config = calloc(1, sizeof(*mac_CellGroupConfig->bsr_Config));
|
||||||
mac_CellGroupConfig->schedulingRequestConfig = calloc(1, sizeof(*mac_CellGroupConfig->schedulingRequestConfig));
|
mac_CellGroupConfig->bsr_Config->periodicBSR_Timer = NR_BSR_Config__periodicBSR_Timer_sf10;
|
||||||
mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList = CALLOC(1,sizeof(*mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList));
|
mac_CellGroupConfig->bsr_Config->retxBSR_Timer = NR_BSR_Config__retxBSR_Timer_sf80;
|
||||||
struct NR_SchedulingRequestToAddMod *schedulingrequestlist;
|
mac_CellGroupConfig->tag_Config = calloc(1, sizeof(*mac_CellGroupConfig->tag_Config));
|
||||||
schedulingrequestlist = CALLOC(1,sizeof(*schedulingrequestlist));
|
mac_CellGroupConfig->tag_Config->tag_ToReleaseList = NULL;
|
||||||
schedulingrequestlist->schedulingRequestId = 0;
|
mac_CellGroupConfig->tag_Config->tag_ToAddModList = calloc(1,sizeof(*mac_CellGroupConfig->tag_Config->tag_ToAddModList));
|
||||||
schedulingrequestlist->sr_ProhibitTimer = CALLOC(1,sizeof(*schedulingrequestlist->sr_ProhibitTimer));
|
struct NR_TAG *tag=calloc(1,sizeof(*tag));
|
||||||
*(schedulingrequestlist->sr_ProhibitTimer) = 0;
|
tag->tag_Id = 0;
|
||||||
schedulingrequestlist->sr_TransMax = NR_SchedulingRequestToAddMod__sr_TransMax_n64;
|
tag->timeAlignmentTimer = NR_TimeAlignmentTimer_infinity;
|
||||||
ASN_SEQUENCE_ADD(&(mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList->list),schedulingrequestlist);
|
ASN_SEQUENCE_ADD(&mac_CellGroupConfig->tag_Config->tag_ToAddModList->list,tag);
|
||||||
}
|
mac_CellGroupConfig->phr_Config = calloc(1, sizeof(*mac_CellGroupConfig->phr_Config));
|
||||||
mac_CellGroupConfig->bsr_Config = calloc(1, sizeof(*mac_CellGroupConfig->bsr_Config));
|
mac_CellGroupConfig->phr_Config->present = NR_SetupRelease_PHR_Config_PR_setup;
|
||||||
mac_CellGroupConfig->bsr_Config->periodicBSR_Timer = NR_BSR_Config__periodicBSR_Timer_sf10;
|
mac_CellGroupConfig->phr_Config->choice.setup = calloc(1, sizeof(*mac_CellGroupConfig->phr_Config->choice.setup));
|
||||||
mac_CellGroupConfig->bsr_Config->retxBSR_Timer = NR_BSR_Config__retxBSR_Timer_sf80;
|
mac_CellGroupConfig->phr_Config->choice.setup->phr_PeriodicTimer = NR_PHR_Config__phr_PeriodicTimer_sf10;
|
||||||
mac_CellGroupConfig->tag_Config = calloc(1, sizeof(*mac_CellGroupConfig->tag_Config));
|
mac_CellGroupConfig->phr_Config->choice.setup->phr_ProhibitTimer = NR_PHR_Config__phr_ProhibitTimer_sf10;
|
||||||
mac_CellGroupConfig->tag_Config->tag_ToReleaseList = NULL;
|
mac_CellGroupConfig->phr_Config->choice.setup->phr_Tx_PowerFactorChange = NR_PHR_Config__phr_Tx_PowerFactorChange_dB1;
|
||||||
mac_CellGroupConfig->tag_Config->tag_ToAddModList = calloc(1,sizeof(*mac_CellGroupConfig->tag_Config->tag_ToAddModList));
|
|
||||||
struct NR_TAG *tag=calloc(1,sizeof(*tag));
|
|
||||||
tag->tag_Id = 0;
|
|
||||||
tag->timeAlignmentTimer = NR_TimeAlignmentTimer_infinity;
|
|
||||||
ASN_SEQUENCE_ADD(&mac_CellGroupConfig->tag_Config->tag_ToAddModList->list,tag);
|
|
||||||
mac_CellGroupConfig->phr_Config = calloc(1, sizeof(*mac_CellGroupConfig->phr_Config));
|
|
||||||
mac_CellGroupConfig->phr_Config->present = NR_SetupRelease_PHR_Config_PR_setup;
|
|
||||||
mac_CellGroupConfig->phr_Config->choice.setup = calloc(1, sizeof(*mac_CellGroupConfig->phr_Config->choice.setup));
|
|
||||||
mac_CellGroupConfig->phr_Config->choice.setup->phr_PeriodicTimer = NR_PHR_Config__phr_PeriodicTimer_sf10;
|
|
||||||
mac_CellGroupConfig->phr_Config->choice.setup->phr_ProhibitTimer = NR_PHR_Config__phr_ProhibitTimer_sf10;
|
|
||||||
mac_CellGroupConfig->phr_Config->choice.setup->phr_Tx_PowerFactorChange = NR_PHR_Config__phr_Tx_PowerFactorChange_dB1;
|
|
||||||
}
|
|
||||||
cellGroupConfig->mac_CellGroupConfig = mac_CellGroupConfig;
|
cellGroupConfig->mac_CellGroupConfig = mac_CellGroupConfig;
|
||||||
|
|
||||||
physicalCellGroupConfig = calloc(1,sizeof(*physicalCellGroupConfig));
|
physicalCellGroupConfig = calloc(1,sizeof(*physicalCellGroupConfig));
|
||||||
@@ -1471,7 +1442,7 @@ void fill_initial_cellGroupConfig(int uid,
|
|||||||
|
|
||||||
cellGroupConfig->spCellConfig = calloc(1,sizeof(*cellGroupConfig->spCellConfig));
|
cellGroupConfig->spCellConfig = calloc(1,sizeof(*cellGroupConfig->spCellConfig));
|
||||||
|
|
||||||
fill_initial_SpCellConfig(uid,cellGroupConfig->spCellConfig,scc,carrier);
|
fill_initial_SpCellConfig(uid,cellGroupConfig,scc,carrier);
|
||||||
|
|
||||||
cellGroupConfig->sCellToAddModList = NULL;
|
cellGroupConfig->sCellToAddModList = NULL;
|
||||||
cellGroupConfig->sCellToReleaseList = NULL;
|
cellGroupConfig->sCellToReleaseList = NULL;
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ uint8_t do_RRCReject(uint8_t Mod_id,
|
|||||||
uint8_t *const buffer);
|
uint8_t *const buffer);
|
||||||
|
|
||||||
void fill_initial_SpCellConfig(int uid,
|
void fill_initial_SpCellConfig(int uid,
|
||||||
NR_SpCellConfig_t *SpCellConfig,
|
NR_CellGroupConfig_t *cellGroupConfig,
|
||||||
NR_ServingCellConfigCommon_t *scc,
|
NR_ServingCellConfigCommon_t *scc,
|
||||||
rrc_gNB_carrier_data_t *carrier);
|
rrc_gNB_carrier_data_t *carrier);
|
||||||
|
|
||||||
|
|||||||
@@ -192,3 +192,30 @@ void config_pucch_resset1(NR_PUCCH_Config_t *pucch_Config, NR_UE_NR_Capability_t
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void schedulingrequest_config(NR_MAC_CellGroupConfig_t *mac_CellGroupConfig,
|
||||||
|
NR_PUCCH_Config_t *pucch_Config) {
|
||||||
|
|
||||||
|
mac_CellGroupConfig->schedulingRequestConfig = calloc(1, sizeof(*mac_CellGroupConfig->schedulingRequestConfig));
|
||||||
|
mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList = CALLOC(1,sizeof(*mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList));
|
||||||
|
struct NR_SchedulingRequestToAddMod *schedulingrequestlist = CALLOC(1,sizeof(*schedulingrequestlist));
|
||||||
|
schedulingrequestlist->schedulingRequestId = 0;
|
||||||
|
schedulingrequestlist->sr_ProhibitTimer = NULL;
|
||||||
|
schedulingrequestlist->sr_TransMax = NR_SchedulingRequestToAddMod__sr_TransMax_n64;
|
||||||
|
ASN_SEQUENCE_ADD(&(mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList->list),schedulingrequestlist);
|
||||||
|
|
||||||
|
// format with <=2 bits in pucch resource set 0
|
||||||
|
NR_PUCCH_ResourceSet_t *pucchresset = pucch_Config->resourceSetToAddModList->list.array[0];
|
||||||
|
// assigning the 1st pucch resource in the set to scheduling request
|
||||||
|
NR_PUCCH_ResourceId_t *pucchressetid = pucchresset->resourceList.list.array[0];
|
||||||
|
|
||||||
|
pucch_Config->schedulingRequestResourceToAddModList = calloc(1,sizeof(*pucch_Config->schedulingRequestResourceToAddModList));
|
||||||
|
NR_SchedulingRequestResourceConfig_t *schedulingRequestResourceConfig = calloc(1,sizeof(*schedulingRequestResourceConfig));
|
||||||
|
schedulingRequestResourceConfig->schedulingRequestResourceId = 1;
|
||||||
|
schedulingRequestResourceConfig->schedulingRequestID = 0;
|
||||||
|
schedulingRequestResourceConfig->periodicityAndOffset = calloc(1,sizeof(*schedulingRequestResourceConfig->periodicityAndOffset));
|
||||||
|
schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl10;
|
||||||
|
schedulingRequestResourceConfig->periodicityAndOffset->choice.sl10 = 7;
|
||||||
|
schedulingRequestResourceConfig->resource = calloc(1,sizeof(*schedulingRequestResourceConfig->resource));
|
||||||
|
*schedulingRequestResourceConfig->resource = *pucchressetid;
|
||||||
|
ASN_SEQUENCE_ADD(&pucch_Config->schedulingRequestResourceToAddModList->list,schedulingRequestResourceConfig);
|
||||||
|
}
|
||||||
|
|||||||
@@ -116,5 +116,7 @@ void nr_rrc_config_ul_tda(NR_ServingCellConfigCommon_t *scc, int min_fb_delay);
|
|||||||
void config_pucch_resset0(NR_PUCCH_Config_t *pucch_Config, int uid, int curr_bwp, NR_UE_NR_Capability_t *uecap);
|
void config_pucch_resset0(NR_PUCCH_Config_t *pucch_Config, int uid, int curr_bwp, NR_UE_NR_Capability_t *uecap);
|
||||||
void config_pucch_resset1(NR_PUCCH_Config_t *pucch_Config, NR_UE_NR_Capability_t *uecap);
|
void config_pucch_resset1(NR_PUCCH_Config_t *pucch_Config, NR_UE_NR_Capability_t *uecap);
|
||||||
void set_dl_DataToUL_ACK(NR_PUCCH_Config_t *pucch_Config, int min_feedback_time);
|
void set_dl_DataToUL_ACK(NR_PUCCH_Config_t *pucch_Config, int min_feedback_time);
|
||||||
|
void schedulingrequest_config(NR_MAC_CellGroupConfig_t *mac_CellGroupConfig,
|
||||||
|
NR_PUCCH_Config_t *pucch_Config);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -96,15 +96,6 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
|
|||||||
|
|
||||||
secondaryCellGroup->mac_CellGroupConfig=calloc(1,sizeof(*secondaryCellGroup->mac_CellGroupConfig));
|
secondaryCellGroup->mac_CellGroupConfig=calloc(1,sizeof(*secondaryCellGroup->mac_CellGroupConfig));
|
||||||
secondaryCellGroup->mac_CellGroupConfig->drx_Config = NULL;
|
secondaryCellGroup->mac_CellGroupConfig->drx_Config = NULL;
|
||||||
secondaryCellGroup->mac_CellGroupConfig->schedulingRequestConfig = calloc(1,sizeof(*secondaryCellGroup->mac_CellGroupConfig->schedulingRequestConfig));
|
|
||||||
secondaryCellGroup->mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList = calloc(1,sizeof(*secondaryCellGroup->mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList));
|
|
||||||
NR_SchedulingRequestToAddMod_t *SchedulingRequestConf = calloc(1,sizeof(*SchedulingRequestConf));
|
|
||||||
SchedulingRequestConf->schedulingRequestId = 0; //Could be changed
|
|
||||||
SchedulingRequestConf->sr_ProhibitTimer = calloc(1,sizeof(*SchedulingRequestConf->sr_ProhibitTimer));
|
|
||||||
*SchedulingRequestConf->sr_ProhibitTimer = NR_SchedulingRequestToAddMod__sr_ProhibitTimer_ms16;
|
|
||||||
SchedulingRequestConf->sr_TransMax = NR_SchedulingRequestToAddMod__sr_TransMax_n32;
|
|
||||||
ASN_SEQUENCE_ADD(&secondaryCellGroup->mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToAddModList->list,SchedulingRequestConf);
|
|
||||||
secondaryCellGroup->mac_CellGroupConfig->schedulingRequestConfig->schedulingRequestToReleaseList = NULL;
|
|
||||||
|
|
||||||
secondaryCellGroup->mac_CellGroupConfig->bsr_Config=calloc(1,sizeof(*secondaryCellGroup->mac_CellGroupConfig->bsr_Config));
|
secondaryCellGroup->mac_CellGroupConfig->bsr_Config=calloc(1,sizeof(*secondaryCellGroup->mac_CellGroupConfig->bsr_Config));
|
||||||
secondaryCellGroup->mac_CellGroupConfig->bsr_Config->periodicBSR_Timer = NR_BSR_Config__periodicBSR_Timer_sf10;
|
secondaryCellGroup->mac_CellGroupConfig->bsr_Config->periodicBSR_Timer = NR_BSR_Config__periodicBSR_Timer_sf10;
|
||||||
@@ -879,17 +870,7 @@ void fill_default_secondaryCellGroup(NR_ServingCellConfigCommon_t *servingcellco
|
|||||||
config_pucch_resset0(pucch_Config, uid, curr_bwp, uecap); // <= 2 bits
|
config_pucch_resset0(pucch_Config, uid, curr_bwp, uecap); // <= 2 bits
|
||||||
config_pucch_resset1(pucch_Config, uecap); // > 2 bits
|
config_pucch_resset1(pucch_Config, uecap); // > 2 bits
|
||||||
|
|
||||||
// for scheduling requestresource
|
schedulingrequest_config(secondaryCellGroup->mac_CellGroupConfig, pucch_Config);
|
||||||
pucch_Config->schedulingRequestResourceToAddModList = calloc(1,sizeof(*pucch_Config->schedulingRequestResourceToAddModList));
|
|
||||||
NR_SchedulingRequestResourceConfig_t *schedulingRequestResourceConfig = calloc(1,sizeof(*schedulingRequestResourceConfig));
|
|
||||||
schedulingRequestResourceConfig->schedulingRequestResourceId = 1;
|
|
||||||
schedulingRequestResourceConfig->schedulingRequestID = 0;
|
|
||||||
schedulingRequestResourceConfig->periodicityAndOffset = calloc(1,sizeof(*schedulingRequestResourceConfig->periodicityAndOffset));
|
|
||||||
schedulingRequestResourceConfig->periodicityAndOffset->present = NR_SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl10;
|
|
||||||
schedulingRequestResourceConfig->periodicityAndOffset->choice.sl10 = 7;
|
|
||||||
schedulingRequestResourceConfig->resource = calloc(1,sizeof(*schedulingRequestResourceConfig->resource));
|
|
||||||
*schedulingRequestResourceConfig->resource = 1;
|
|
||||||
ASN_SEQUENCE_ADD(&pucch_Config->schedulingRequestResourceToAddModList->list,schedulingRequestResourceConfig);
|
|
||||||
|
|
||||||
pucch_Config->schedulingRequestResourceToReleaseList=NULL;
|
pucch_Config->schedulingRequestResourceToReleaseList=NULL;
|
||||||
pucch_Config->multi_CSI_PUCCH_ResourceList=NULL;
|
pucch_Config->multi_CSI_PUCCH_ResourceList=NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user