+//////////////////////////////////////////////////////////////////////
+uint64_t getRICEventTriggerDefinitionDataNRTFormat(RICEventTriggerDefinition_t* pRICEventTriggerDefinition) {
+
+ E2_E2SM_gNB_NRT_EventTriggerDefinition_t* pE2_E2SM_gNB_NRT_EventTriggerDefinition = 0;
+ asn_dec_rval_t rval;
+ rval = asn_decode(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition, (void **)&pE2_E2SM_gNB_NRT_EventTriggerDefinition,
+ pRICEventTriggerDefinition->octetString.data, pRICEventTriggerDefinition->octetString.contentLength);
+ switch(rval.code) {
+ case RC_OK:
+ // Debug print
+ if (debug) {
+ printf("Successfully decoded E2SM_gNB_X2_eventTriggerDefinition\n");
+ asn_fprint(stdout, &asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition, pE2_E2SM_gNB_NRT_EventTriggerDefinition);
+ }
+
+ // NRT-TriggerNature
+ if (pE2_E2SM_gNB_NRT_EventTriggerDefinition->present == E2_E2SM_gNB_NRT_EventTriggerDefinition_PR_eventDefinition_Format1) {
+ pRICEventTriggerDefinition->E2SMgNBNRTEventTriggerDefinitionPresent = true;
+ pRICEventTriggerDefinition->e2SMgNBNRTEventTriggerDefinition.eventDefinitionFormat1.triggerNature =
+ pE2_E2SM_gNB_NRT_EventTriggerDefinition->choice.eventDefinition_Format1.triggerNature;
+ }
+ ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition, pE2_E2SM_gNB_NRT_EventTriggerDefinition);
+ return e2err_OK;
+ case RC_WMORE:
+ if (debug)
+ printf("Decode failed. More data needed. Buffer size %zu, %s, consumed %zu\n",pRICEventTriggerDefinition->octetString.contentLength,
+ asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition.name, rval.consumed);
+
+ return e2err_RICNRTEventTriggerDefinitionDecodeWMOREFail;
+ case RC_FAIL:
+ if (debug)
+ printf("Decode failed. Buffer size %zu, %s, consumed %zu\n",pRICEventTriggerDefinition->octetString.contentLength,
+ asn_DEF_E2_E2SM_gNB_NRT_EventTriggerDefinition.name, rval.consumed);
+ return e2err_RICNRTEventTriggerDefinitionDecodeFAIL;
+ default:
+ return e2err_RICNRTEventTriggerDefinitionDecodeDefaultFail;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////
+uint64_t getRICActionDefinitionData(mem_track_hdr_t *pDynMemHead, RICActionDefinitionChoice_t* pRICActionDefinitionChoice) {
+
+ if (pRICActionDefinitionChoice->actionDefinitionNRTFormat1Present)
+ return getRICActionDefinitionDataNRTFormat(pDynMemHead, pRICActionDefinitionChoice);
+// if (pRICActionDefinitionChoice->actionDefinitionX2Format1Present || pRICActionDefinitionChoice->actionDefinitionX2Format2Present)
+ else
+ return getRICActionDefinitionDataX2Format(pDynMemHead, pRICActionDefinitionChoice);
+// else
+// return e2err_RICActionDefinitionChoiceEmptyFAIL;
+}
+
+//////////////////////////////////////////////////////////////////////
+uint64_t getRICActionDefinitionDataX2Format(mem_track_hdr_t* pDynMemHead, RICActionDefinitionChoice_t* pRICActionDefinitionChoice) {
+
+ E2_E2SM_gNB_X2_ActionDefinitionChoice_t* pE2_E2SM_gNB_X2_ActionDefinitionChoice = 0;
+ asn_dec_rval_t rval;
+ rval = asn_decode(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, (void **)&pE2_E2SM_gNB_X2_ActionDefinitionChoice,
+ pRICActionDefinitionChoice->octetString.data, pRICActionDefinitionChoice->octetString.contentLength);
+ switch(rval.code) {
+ case RC_OK:
+ // Debug print
+ if (debug) {
+ printf("Successfully decoded E2SM_gNB_X2_ActionDefinitionChoice\n");
+ asn_fprint(stdout, &asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice);
+ }
+ // ActionDefinitionChoice
+ if (pE2_E2SM_gNB_X2_ActionDefinitionChoice->present == E2_E2SM_gNB_X2_ActionDefinitionChoice_PR_actionDefinition_Format1) {
+
+ // E2SM-gNB-X2-actionDefinition
+ uint64_t status;
+ if ((status = allocActionDefinitionX2Format1(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format1)) != e2err_OK)
+ return status;
+ pRICActionDefinitionChoice->actionDefinitionX2Format1Present = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2Present = false;
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1Present = false;
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterCount = 0;
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->styleID = pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format1.style_ID;
+
+ uint64_t index = 0;
+ if (pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format1.actionParameter_List) {
+ while (index < pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format1.actionParameter_List->list.count) {
+ E2_ActionParameter_Item_t* pE2_ActionParameter_Item = pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format1.actionParameter_List->list.array[index];
+ if (pE2_ActionParameter_Item) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].parameterID = pE2_ActionParameter_Item->actionParameter_ID;
+ if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valueInt) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueIntPresent = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueInt =
+ pE2_ActionParameter_Item->actionParameter_Value.choice.valueInt;
+ }
+ else if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valueEnum) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueEnumPresent = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueIntPresent =
+ pE2_ActionParameter_Item->actionParameter_Value.choice.valueEnum;
+ }
+ else if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valueBool) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBoolPresent = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBool =
+ pE2_ActionParameter_Item->actionParameter_Value.choice.valueBool;
+ }
+ else if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valueBitS) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBitSPresent = true;
+ addBitString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueBitS,
+ pE2_ActionParameter_Item->actionParameter_Value.choice.valueBitS.size,
+ pE2_ActionParameter_Item->actionParameter_Value.choice.valueBitS.buf,
+ pE2_ActionParameter_Item->actionParameter_Value.choice.valueBitS.bits_unused);
+ }
+ else if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valueOctS) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueOctSPresent = true;
+ addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valueOctS,
+ pE2_ActionParameter_Item->actionParameter_Value.choice.valueOctS.size,
+ pE2_ActionParameter_Item->actionParameter_Value.choice.valueOctS.buf);
+ }
+ else if (pE2_ActionParameter_Item->actionParameter_Value.present == E2_ActionParameter_Value_PR_valuePrtS) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valuePrtSPresent = true;
+ addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterItem[index].actionParameterValue.valuePrtS,
+ pE2_ActionParameter_Item->actionParameter_Value.choice.valuePrtS.size,
+ pE2_ActionParameter_Item->actionParameter_Value.choice.valuePrtS.buf);
+ }
+ else {
+ ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice);
+ return e2err_RICSubscriptionRequestActionParameterItemFail;
+ }
+ }
+ index++;
+ }
+ }
+ pRICActionDefinitionChoice->actionDefinitionX2Format1->actionParameterCount = index;
+ }
+ else if (pE2_E2SM_gNB_X2_ActionDefinitionChoice->present == E2_E2SM_gNB_X2_ActionDefinitionChoice_PR_actionDefinition_Format2) {
+
+ // E2SM-gNB-X2-ActionDefinition-Format2
+ uint64_t status;
+ if ((status = allocActionDefinitionX2Format2(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2)) != e2err_OK)
+ return status;
+
+ pRICActionDefinitionChoice->actionDefinitionX2Format2Present = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format1Present = false;
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1Present = false;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupCount = 0;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem->ranUEgroupDefinition.ranUeGroupDefCount = 0;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem->ranPolicy.ranParameterCount = 0;
+
+ E2_E2SM_gNB_X2_ActionDefinition_Format2_t* pE2SM_gNB_X2_actionDefinition = &pE2_E2SM_gNB_X2_ActionDefinitionChoice->choice.actionDefinition_Format2;
+ if(pE2SM_gNB_X2_actionDefinition) {
+ uint64_t index = 0;
+ if (pE2SM_gNB_X2_actionDefinition->ranUEgroup_List) {
+ while (index < pE2SM_gNB_X2_actionDefinition->ranUEgroup_List->list.count) {
+ E2_RANueGroup_Item_t* pE2_RANueGroup_Item = pE2SM_gNB_X2_actionDefinition->ranUEgroup_List->list.array[index];
+ if (pE2_RANueGroup_Item) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupID = pE2_RANueGroup_Item->ranUEgroupID;
+ uint64_t index2 = 0;
+ while (index2 < pE2_RANueGroup_Item->ranUEgroupDefinition.ranUEgroupDef_List->list.count) {
+ E2_RANueGroupDef_Item_t* pE2_RANueGroupDef_Item = pE2_RANueGroup_Item->ranUEgroupDefinition.ranUEgroupDef_List->list.array[index2];
+ if(pE2_RANueGroupDef_Item) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterID = pE2_RANueGroupDef_Item->ranParameter_ID;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterTest = pE2_RANueGroupDef_Item->ranParameter_Test;
+ if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueInt) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueIntPresent = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueInt =
+ pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueInt;
+ }
+ else if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueEnum) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueEnum = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueEnum =
+ pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueEnum;
+ }
+ else if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueBool) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBoolPresent = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBool =
+ pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBool;
+ }
+ else if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueBitS) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBitSPresent = true;
+ addBitString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueBitS,
+ pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBitS.size,
+ pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBitS.buf,
+ pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueBitS.bits_unused);
+ }
+ else if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueOctS) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueOctSPresent = true;
+ addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valueOctS,
+ pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueOctS.size,
+ pE2_RANueGroupDef_Item->ranParameter_Value.choice.valueOctS.buf);
+ }
+ else if (pE2_RANueGroupDef_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valuePrtS) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valuePrtSPresent = true;
+ addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefItem[index2].ranParameterValue.valuePrtS,
+ pE2_RANueGroupDef_Item->ranParameter_Value.choice.valuePrtS.size,
+ pE2_RANueGroupDef_Item->ranParameter_Value.choice.valuePrtS.buf);
+ }
+ else {
+ ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice);
+ return e2err_RICSubscriptionRequestRanranUeGroupDefItemParameterValueEmptyFail;
+ }
+ }
+ else {
+ ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice);
+ return e2err_RICSubscriptionRequestAllocE2_RANueGroupDef_ItemFail;
+ }
+ index2++;
+ }
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranUEgroupDefinition.ranUeGroupDefCount = index2;
+
+ uint64_t index3 = 0;
+ while (index3 < pE2_RANueGroup_Item->ranPolicy.ranImperativePolicy_List->list.count) {
+ E2_RANParameter_Item_t* pE2_RANParameter_Item = pE2_RANueGroup_Item->ranPolicy.ranImperativePolicy_List->list.array[index3];
+ if (pE2_RANParameter_Item) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterID = pE2_RANParameter_Item->ranParameter_ID;
+ if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueInt) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueIntPresent = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueInt =
+ pE2_RANParameter_Item->ranParameter_Value.choice.valueInt;
+ }
+ else if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueEnum) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueEnum = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueEnum =
+ pE2_RANParameter_Item->ranParameter_Value.choice.valueEnum;
+ }
+ else if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueBool) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBoolPresent = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBool =
+ pE2_RANParameter_Item->ranParameter_Value.choice.valueBool;
+ }
+ else if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueBitS) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBitSPresent = true;
+ addBitString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueBitS,
+ pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.size,
+ pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.buf,
+ pE2_RANParameter_Item->ranParameter_Value.choice.valueBitS.bits_unused);
+ }
+ else if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valueOctS) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueOctSPresent = true;
+ addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valueOctS,
+ pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.size,
+ pE2_RANParameter_Item->ranParameter_Value.choice.valueOctS.buf);
+ }
+ else if (pE2_RANParameter_Item->ranParameter_Value.present == E2_RANParameter_Value_PR_valuePrtS) {
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valuePrtSPresent = true;
+ addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterItem[index3].ranParameterValue.valuePrtS,
+ pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.size,
+ pE2_RANParameter_Item->ranParameter_Value.choice.valuePrtS.buf);
+ }
+ else {
+ ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice);
+ return e2err_RICSubscriptionRequestRanParameterItemRanParameterValueEmptyFail;
+ }
+ }
+ else {
+ ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice);
+ return e2err_RICSubscriptionRequestAllocActionDefinitionFail;
+ }
+ index3++;
+ }
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupItem[index].ranPolicy.ranParameterCount = index3;
+ }
+ else {
+ ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice);
+ return e2err_RICSubscriptionRequestAllocRANParameter_ItemFail;
+ }
+ index++;
+ }
+ }
+ pRICActionDefinitionChoice->actionDefinitionX2Format2->ranUeGroupCount = index;
+ }
+ }
+ ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice, pE2_E2SM_gNB_X2_ActionDefinitionChoice);
+ return e2err_OK;
+ case RC_WMORE:
+ if (debug)
+ printf("Decode failed. More data needed. Buffer size %zu, %s, consumed %zu\n",pRICActionDefinitionChoice->octetString.contentLength,
+ asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice.name, rval.consumed);
+
+ return e2err_RICActionDefinitionChoiceWMOREFail;
+ case RC_FAIL:
+ if (debug)
+ printf("Decode failed. Buffer size %zu, %s, consumed %zu\n",pRICActionDefinitionChoice->octetString.contentLength,
+ asn_DEF_E2_E2SM_gNB_X2_ActionDefinitionChoice.name, rval.consumed);
+
+ return e2err_RICActionDefinitionChoiceDecodeFAIL;
+ default:
+ return e2err_RICActionDefinitionChoiceDecodeDefaultFail;
+ }
+}
+
+//////////////////////////////////////////////////////////////////////
+uint64_t getRICActionDefinitionDataNRTFormat(mem_track_hdr_t* pDynMemHead, RICActionDefinitionChoice_t* pRICActionDefinitionChoice) {
+
+ E2_E2SM_gNB_NRT_ActionDefinition_t* pE2_E2SM_gNB_NRT_ActionDefinition = 0;
+ asn_dec_rval_t rval;
+ rval = asn_decode(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, (void **)&pE2_E2SM_gNB_NRT_ActionDefinition,
+ pRICActionDefinitionChoice->octetString.data, pRICActionDefinitionChoice->octetString.contentLength);
+ switch(rval.code) {
+ case RC_OK:
+ // Debug print
+ if (debug) {
+ printf("Successfully decoded E2SM_gNB_NRT_ActionDefinition\n");
+ asn_fprint(stdout, &asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition);
+ }
+
+ // ActionDefinitionChoice
+ if (pE2_E2SM_gNB_NRT_ActionDefinition->present == E2_E2SM_gNB_NRT_ActionDefinition_PR_actionDefinition_Format1) {
+
+ // E2SM-gNB-NRT-actionDefinition
+ uint64_t status;
+ if ((status = allocActionDefinitionNRTFormat1(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1)) != e2err_OK)
+ return status;
+
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1Present = true;
+ pRICActionDefinitionChoice->actionDefinitionX2Format1Present = false;
+ pRICActionDefinitionChoice->actionDefinitionX2Format2Present = false;
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterCount = 0;
+ if (pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List) {
+ uint64_t index = 0;
+ while (index < pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List->list.count) {
+ E2_RANparameter_Item_t* pE2_RANparameter_Item = pE2_E2SM_gNB_NRT_ActionDefinition->choice.actionDefinition_Format1.ranParameter_List->list.array[index];
+ if (pE2_RANparameter_Item) {
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterID = pE2_RANparameter_Item->ranParameter_ID;
+
+ if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueInt) {
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueIntPresent = true;
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueInt =
+ pE2_RANparameter_Item->ranParameter_Value.choice.valueInt;
+ }
+ else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueEnum) {
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueEnumPresent = true;
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueEnum =
+ pE2_RANparameter_Item->ranParameter_Value.choice.valueEnum;
+ }
+ else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueBool) {
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBoolPresent = true;
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBool =
+ pE2_RANparameter_Item->ranParameter_Value.choice.valueBool;
+ }
+ else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueBitS) {
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitSPresent = true;
+ addBitString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueBitS,
+ pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.size,
+ pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.buf,
+ pE2_RANparameter_Item->ranParameter_Value.choice.valueBitS.bits_unused);
+ }
+ else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valueOctS) {
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctSPresent = true;
+ addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valueOctS,
+ pE2_RANparameter_Item->ranParameter_Value.choice.valueOctS.size,
+ pE2_RANparameter_Item->ranParameter_Value.choice.valueOctS.buf);
+ }
+ else if (pE2_RANparameter_Item->ranParameter_Value.present == E2_RANparameter_Value_PR_valuePrtS) {
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtSPresent = true;
+ addOctetString(pDynMemHead, &pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterList[index].ranParameterValue.valuePrtS,
+ pE2_RANparameter_Item->ranParameter_Value.choice.valuePrtS.size,
+ pE2_RANparameter_Item->ranParameter_Value.choice.valuePrtS.buf);
+ }
+ else {
+ ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition);
+ return e2err_RICSubscriptionRequestNRTRanParameterItemRanParameterValueEmptyFail;
+ }
+ }
+ else {
+ ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition);
+ return e2err_RICSubscriptionRequestNRTAllocActionDefinitionFail;
+ }
+ index++;
+ }
+ pRICActionDefinitionChoice->actionDefinitionNRTFormat1->ranParameterCount = index;
+ }
+ }
+ ASN_STRUCT_FREE(asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition, pE2_E2SM_gNB_NRT_ActionDefinition);
+ return e2err_OK;
+ case RC_WMORE:
+ if (debug)
+ printf("Decode failed. More data needed. Buffer size %zu, %s, consumed %zu\n",pRICActionDefinitionChoice->octetString.contentLength,
+ asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition.name, rval.consumed);
+
+ return e2err_RICNRTActionDefinitionChoiceWMOREFail;
+ case RC_FAIL:
+ if (debug)
+ printf("Decode failed. Buffer size %zu, %s, consumed %zu\n",pRICActionDefinitionChoice->octetString.contentLength,
+ asn_DEF_E2_E2SM_gNB_NRT_ActionDefinition.name, rval.consumed);
+
+ return e2err_RICNRTActionDefinitionChoiceDecodeFAIL;
+ default:
+ return e2err_RICNRTActionDefinitionChoiceDecodeDefaultFail;
+ }
+}