#include "ProtocolIE-Field.h"
#include "ProtocolExtensionField.h"
#include "ProtocolIE-SingleContainer.h"
+#include "F1SetupResponse.h"
+#include "SuccessfulOutcome.h"
+#include "InitiatingMessage.h"
+#include "NonDynamic5QIDescriptor.h"
+#include "AveragingWindow.h"
+#include "MaxDataBurstVolume.h"
+#include "Flows-Mapped-To-DRB-Item.h"
+#include "SliceSupportItem.h"
+#include "ServedPLMNs-Item.h"
#include "F1AP-PDU.h"
+#include "ULUPTNLInformation-ToBeSetup-Item.h"
+#include "ULConfiguration.h"
#include "ModulationOrder.h"
#include "BandNR.h"
#include "UE-CapabilityRAT-Container.h"
* RFAILED - failure
*
* ****************************************************************/
-void fillLongCycleOffsetValue(DrxLongCycleStartOffset *drxLongCycleStartOffset, struct DRX_ConfigRrc__recvedLongCycleOffsetVal *recvedLongCycleOffsetVal)
+void fillLongCycleOffsetValue(DrxLongCycleStartOffset *drxLongCycleStartOffset, struct DRX_ConfigRrc__drx_LongCycleStartOffset *recvedLongCycleOffsetVal)
{
drxLongCycleStartOffset->drxLongCycleStartOffsetChoice = recvedLongCycleOffsetVal->present;
switch(recvedLongCycleOffsetVal->present)
{
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms10:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms10:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms10;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms20:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms20:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms20;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms32:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms32:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms32;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms40:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms40:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms40;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms60:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms60:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms60;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms64:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms64:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms64;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms70:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms70:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms70;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms80:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms80:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms80;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms128:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms128:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms128;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms160:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms160:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms160;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms256:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms256:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms256;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms320:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms320:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms320;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms512:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms512:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms512;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms640:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms640:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms640;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms1024:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms1024:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms1024;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms1280:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms1280:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms1280;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms2048:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms2048:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms2048;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms2560:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms2560:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms2560;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms5120:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms5120:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms5120;
break;
}
- case DRX_ConfigRrc__recvedLongCycleOffsetVal_PR_ms10240:
+ case DRX_ConfigRrc__drx_LongCycleStartOffset_PR_ms10240:
{
drxLongCycleStartOffset->drxLongCycleStartOffsetVal = recvedLongCycleOffsetVal->choice.ms10240;
break;
* ****************************************************************/
void storeDrxCfgInUeCb(struct DRX_ConfigRrc *drxSetup, DrxCfg *drxCfg)
{
- if(drxSetup)
+ switch(drxSetup->drx_onDurationTimer.present)
{
- switch(drxSetup->drx_onDurationTimer.present)
- {
- case DRX_ConfigRrc__drx_onDurationTimer_PR_NOTHING:
+ case DRX_ConfigRrc__drx_onDurationTimer_PR_NOTHING:
+ break;
+ case DRX_ConfigRrc__drx_onDurationTimer_PR_milliSeconds:
+ {
+ drxCfg->drxOnDurationTimer.onDurationTimerValInMs = true;
+ drxCfg->drxOnDurationTimer.onDurationtimerValue.milliSeconds=drxSetup->drx_onDurationTimer.choice.milliSeconds;
break;
- case DRX_ConfigRrc__drx_onDurationTimer_PR_milliSeconds:
- {
- drxCfg->drxOnDurationTimer.onDurationTimerValInMs = true;
- drxCfg->drxOnDurationTimer.onDurationtimerValue.milliSeconds=drxSetup->drx_onDurationTimer.choice.milliSeconds;
- break;
- }
- case DRX_ConfigRrc__drx_onDurationTimer_PR_subMilliSeconds:
- {
- drxCfg->drxOnDurationTimer.onDurationTimerValInMs = false;
- drxCfg->drxOnDurationTimer.onDurationtimerValue.subMilliSeconds = drxSetup->drx_onDurationTimer.choice.subMilliSeconds;
- break;
- }
- }
+ }
+ case DRX_ConfigRrc__drx_onDurationTimer_PR_subMilliSeconds:
+ {
+ drxCfg->drxOnDurationTimer.onDurationTimerValInMs = false;
+ drxCfg->drxOnDurationTimer.onDurationtimerValue.subMilliSeconds = drxSetup->drx_onDurationTimer.choice.subMilliSeconds;
+ break;
+ }
}
fillLongCycleOffsetValue(&drxCfg->drxLongCycleStartOffset, &drxSetup->drx_LongCycleStartOffset);
drxCfg->drxInactivityTimer = drxSetup->drx_InactivityTimer;
case MAC_CellGroupConfig__drx_ConfigRrc_PR_setup:
{
- storeDrxCfgInUeCb(cellGrpCfg->mac_CellGroupConfig->drx_ConfigRrc->choice.setup, &ueCb->drxCfg);
+ if(cellGrpCfg->mac_CellGroupConfig->drx_ConfigRrc->choice.setup)
+ {
+ ueCb->drxCfgPresent = true;
+ storeDrxCfgInUeCb(cellGrpCfg->mac_CellGroupConfig->drx_ConfigRrc->choice.setup, &ueCb->drxCfg);
+ }
break;
}
******************************************************************/
uint8_t BuildDrxCycle(DRXCycle_t *drxCycle)
{
- drxCycle->longDRXCycleLength = LongDRXCycleLength_ms40;
+ drxCycle->longDRXCycleLength = LongDRXCycleLength_ms80;
CU_ALLOC(drxCycle->shortDRXCycleLength, sizeof(ShortDRXCycleLength_t));
if(!drxCycle->shortDRXCycleLength)
{
elementCnt = 3;
else if((action == STOP_DATA_TX) || (action == RESTART_DATA_TX))
elementCnt = 5;
-
+
+#ifdef NR_DRX
+ if(DRX_TO_BE_RELEASE && ueCb->drxCfgPresent)
+ elementCnt++;
+#endif
ueContextModifyReq->protocolIEs.list.count = elementCnt;
ueContextModifyReq->protocolIEs.list.size = elementCnt*sizeof(UEContextModificationRequest_t *);
ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.choice.RRCDeliveryStatusRequest = RRCDeliveryStatusRequest_true;
}
+#ifdef NR_DRX
+ if(DRX_TO_BE_RELEASE && ueCb->drxCfgPresent)
+ {
+ /* DRX Configuration Indicator */
+ ieIdx++;
+ ueContextModifyReq->protocolIEs.list.array[ieIdx]->id = ProtocolIE_ID_id_DRXConfigurationIndicator;
+ ueContextModifyReq->protocolIEs.list.array[ieIdx]->criticality = Criticality_ignore;
+ ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.present = UEContextModificationRequestIEs__value_PR_DRXConfigurationIndicator;
+ ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.choice.DRXConfigurationIndicator = DRXConfigurationIndicator_release;
+ ueCb->drxCfgPresent = false;
+ memset(&ueCb->drxCfg, 0, sizeof(DrxCfg));
+ }
+#endif
+
xer_fprint(stdout, &asn_DEF_F1AP_PDU, f1apMsg);
/* Encode the F1SetupRequest type as APER */