X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=e2ap%2Flibe2ap_wrapper%2FE2AP_if.h;fp=e2ap%2Flibe2ap_wrapper%2FE2AP_if.h;h=2ccea5bccb865f6cf96665834d7104036b8b8307;hb=aada64566a3a77cf9a20a98f9ddd7cd6f37529ae;hp=06a429df18978e5cdbee5ceb2615f363944a7249;hpb=7348625b9ef03d41dd5a0ca0f6c508376259717e;p=ric-plt%2Fsubmgr.git diff --git a/e2ap/libe2ap_wrapper/E2AP_if.h b/e2ap/libe2ap_wrapper/E2AP_if.h index 06a429d..2ccea5b 100644 --- a/e2ap/libe2ap_wrapper/E2AP_if.h +++ b/e2ap/libe2ap_wrapper/E2AP_if.h @@ -26,66 +26,166 @@ #include #include +#include +#include +#include "memtrack.h" #ifdef __cplusplus extern "C" { #endif +extern const int cCauseRICRequest; +extern const int cCauseRICService; +extern const int cCauseTransport; +extern const int cCauseProtocol; +extern const int cCauseMisc; + typedef unsigned char byte; -extern const int64_t cMaxNrOfErrors; +//extern const int64_t cMaxNrOfErrors; extern const uint64_t cMaxSizeOfOctetString; typedef struct { // Octet string in ASN.1 does not have maximum length! size_t contentLength; - uint8_t data[1024]; // table size is const cMaxSizeOfOctetString + uint8_t data[1024]; // Table size is const cMaxSizeOfOctetString } OctetString_t; +typedef struct { // Octet string in ASN.1 does not have maximum length! + size_t length; + uint8_t* data; +} DynOctetString_t; + typedef struct { - uint8_t unusedbits; // trailing unused bits 0 - 7 - size_t byteLength; // length in bytes - uint8_t data[1024]; -} Bitstring_t; + uint8_t unusedBits; // Trailing unused bits 0 - 7 + size_t byteLength; // Length in bytes + uint8_t* data; +} DynBitString_t; typedef struct { - uint32_t ricRequestorID; - uint32_t ricRequestSequenceNumber; + uint32_t ricRequestorID; // 0..65535 + uint32_t ricInstanceID; // 0..65535 } RICRequestID_t; -typedef uint16_t RANFunctionID_t; +typedef uint16_t RANFunctionID_t; // 0..4095 -typedef uint64_t RICActionID_t; +typedef uint64_t RICActionID_t; // 0..255 enum RICActionType_t { - RICActionType_report - ,RICActionType_insert - ,RICActionType_policy + RICActionType_report, + RICActionType_insert, + RICActionType_policy }; typedef uint64_t StyleID_t; -typedef uint32_t ParameterID_t; +typedef uint32_t ParameterID_t; // 0..255 (maxofActionParameters) -typedef struct { - uint32_t dummy; // This data type has no content. This dummy is added here to solve problem with Golang. Golang do not like empty types. -} ParameterValue_t; +typedef struct { // CHOICE. Only one value can be present + bool valueIntPresent; + int64_t valueInt; + bool valueEnumPresent; + int64_t valueEnum; + bool valueBoolPresent; + bool valueBool; + bool valueBitSPresent; + DynBitString_t valueBitS; + bool valueOctSPresent; + DynOctetString_t valueOctS; + bool valuePrtSPresent; + DynOctetString_t valuePrtS; +} ActionParameterValue_t; typedef struct { ParameterID_t parameterID; - ParameterValue_t ParameterValue; -} SequenceOfActionParameters_t; + ActionParameterValue_t actionParameterValue; +} ActionParameterItem_t; typedef struct { StyleID_t styleID; - SequenceOfActionParameters_t sequenceOfActionParameters; -} RICActionDefinition_t; + uint8_t actionParameterCount; + ActionParameterItem_t actionParameterItem[255]; // OPTIONAL. 1..255 (maxofRANParameters) +} E2SMgNBX2actionDefinition_t; + +enum RANParameterTest_t { + RANParameterTest_equal, + RANParameterTest_greaterthan, + RANParameterTest_lessthan, + RANParameterTest_contains, + RANParameterTest_present +}; + +typedef struct { + bool valueIntPresent; + int64_t valueInt; + bool valueEnumPresent; + int64_t valueEnum; + bool valueBoolPresent; + bool valueBool; + bool valueBitSPresent; + DynBitString_t valueBitS; + bool valueOctSPresent; + DynOctetString_t valueOctS; + bool valuePrtSPresent; + DynOctetString_t valuePrtS; +} RANParameterValue_t; + +typedef int64_t RANueGroupID_t; // INTEGER +typedef uint32_t RANParameterID_t; // 0..255 (maxofRANParameters) + +typedef struct { + RANParameterID_t ranParameterID; + RANParameterValue_t ranParameterValue; +} RANParameterItem_t; + +typedef struct { + RANParameterID_t ranParameterID; + uint8_t ranParameterTest; // This is type of enum RANParameterTest_t + RANParameterValue_t ranParameterValue; +} RANueGroupDefItem_t; + +typedef struct { + uint8_t ranUeGroupDefCount; + RANueGroupDefItem_t ranUeGroupDefItem[255]; //OPTIONAL. 1..255 (maxofRANParameters) +} RANueGroupDefinition_t; + +typedef struct { + uint8_t ranParameterCount; + RANParameterItem_t ranParameterItem[255]; //OPTIONAL. 1..255 (maxofRANParameters) +} RANimperativePolicy_t; + +typedef struct { + RANueGroupID_t ranUEgroupID; + RANueGroupDefinition_t ranUEgroupDefinition; + RANimperativePolicy_t ranPolicy; +} RANueGroupItem_t; + +typedef struct { + uint8_t ranUeGroupCount; + RANueGroupItem_t ranUeGroupItem[15]; // OPTIONAL. 1..15 (maxofUEgroup) +} E2SMgNBX2ActionDefinitionFormat2_t; enum RICSubsequentActionType_t { RICSubsequentActionType_Continue, RICSubsequentActionType_wait }; +typedef struct { + uint8_t ranParameterCount; + RANParameterItem_t ranParameterList[255]; // OPTIONAL. 1..255 (maxofRANParameters) +} E2SMgNBNRTActionDefinitionFormat1_t; + +typedef struct { + OctetString_t octetString; // This element is E2AP spec format + // CHOICE. Only one value can be present + bool actionDefinitionX2Format1Present; + E2SMgNBX2actionDefinition_t* actionDefinitionX2Format1; // This element is E2SM-gNB-X2 format + bool actionDefinitionX2Format2Present; + E2SMgNBX2ActionDefinitionFormat2_t* actionDefinitionX2Format2; // This element is E2SM-gNB-X2 format + bool actionDefinitionNRTFormat1Present; + E2SMgNBNRTActionDefinitionFormat1_t* actionDefinitionNRTFormat1; // This element is E2SM-gNB-NRT format +} RICActionDefinitionChoice_t; + enum RICTimeToWait_t { RICTimeToWait_zero, RICTimeToWait_w1ms, @@ -108,15 +208,15 @@ enum RICTimeToWait_t { }; typedef struct { - uint64_t ricSubsequentActionType; // this is type of enum RICSubsequentActionType_t - uint64_t ricTimeToWait; // this is type of enum RICTimeToWait_t + uint64_t ricSubsequentActionType; // This is type of enum RICSubsequentActionType_t + uint64_t ricTimeToWait; // This is type of enum RICTimeToWait_t } RICSubsequentAction_t; typedef struct { RICActionID_t ricActionID; - uint64_t ricActionType; // this is type of enum RICActionType_t + uint64_t ricActionType; // This is type of enum RICActionType_t bool ricActionDefinitionPresent; - RICActionDefinition_t ricActionDefinition; + RICActionDefinitionChoice_t ricActionDefinitionChoice; bool ricSubsequentActionPresent; RICSubsequentAction_t ricSubsequentAction; } RICActionToBeSetupItem_t; @@ -125,7 +225,7 @@ static const uint64_t cMaxofRICactionID = 16; typedef struct { uint8_t contentLength; - RICActionToBeSetupItem_t ricActionToBeSetupItem[16]; // table size is const cMaxofRICactionID + RICActionToBeSetupItem_t ricActionToBeSetupItem[16]; // 1..16 // Table size is const cMaxofRICactionID } RICActionToBeSetupList_t; typedef struct { @@ -163,14 +263,21 @@ enum InterfaceDirection__t { typedef uint8_t ProcedureCode__t; +enum TypeOfMessage_t { + TypeOfMessage_nothing, + TypeOfMessage_InitiatingMessage, + TypeOfMessage_SuccessfulOutcome, + TypeOfMessage_UnsuccessfulOutcome +}; + typedef struct { ProcedureCode__t procedureCode; - uint8_t typeOfMessage; // This is X2AP-PDU, CHOICE of InitiatingMessage or SuccessfulOutcome or UnsuccessfulOutcome -} RICInterfaceMessageType_t; + uint8_t typeOfMessage; // This is type of enum TypeOfMessage_t +} InterfaceMessageType_t; typedef uint32_t InterfaceProtocolIEID_t; -enum ProtocolIEtestCondition_t { +enum InterfaceProtocolIETest_t { ProtocolIEtestCondition_equal, ProtocolIEtestCondition_greaterthan, ProtocolIEtestCondition_lessthan, @@ -180,83 +287,88 @@ enum ProtocolIEtestCondition_t { typedef struct { // CHOICE. Only one value can be present bool valueIntPresent; - int64_t integer; // INTEGER; + int64_t valueInt; bool valueEnumPresent; - int64_t valueEnum; // INTEGER + int64_t valueEnum; bool valueBoolPresent; - bool valueBool; // BOOLEAN - bool valueBitSPresent; - Bitstring_t octetstring; // OCTET STRING, + bool valueBool; + bool valueBitStringPresent; + DynBitString_t valueBitString; bool octetstringPresent; - OctetString_t octetString; // OCTET STRING, + DynOctetString_t octetString; } InterfaceProtocolIEValue_t; typedef struct { InterfaceProtocolIEID_t interfaceProtocolIEID; - //ProtocolIEtestCondition_t protocolIEtestCondition; Golang do not like this line. We do not need this right now. + uint8_t interfaceProtocolIETest; // This is type of enum InterfaceProtocolIETest_t InterfaceProtocolIEValue_t interfaceProtocolIEValue; -} SequenceOfProtocolIE_t; +} InterfacProtocolIE_t; -static const uint64_t cMaxofProtocolIE = 16; +static const uint64_t cMaxofProtocolIE = 15; typedef struct { - SequenceOfProtocolIE_t sequenceOfProtocolIE[16]; // table size is const cMaxofProtocolIE -} SequenceOfProtocolIEList_t; + InterfacProtocolIE_t InterfacProtocolIE[15]; // Table size is const cMaxofProtocolIE +} InterfaceProtocolIEList_t; typedef struct { - OctetString_t octetString; // E2AP spec format, the other elements for E2SM-X2 format InterfaceID_t interfaceID; - uint8_t interfaceDirection; // this is type of enum InterfaceDirection_t - RICInterfaceMessageType_t interfaceMessageType ; - bool sequenceOfProtocolIEListPresent; - SequenceOfProtocolIEList_t SequenceOfProtocolIEList; + uint8_t interfaceDirection; // This is type of enum InterfaceDirection_t + InterfaceMessageType_t interfaceMessageType; + bool interfaceProtocolIEListPresent; + InterfaceProtocolIEList_t interfaceProtocolIEList; // OPTIONAL. Not used in RIC currently +} E2SMgNBX2eventTriggerDefinition_t; + +enum NRTTriggerNature_t { + NRTTriggerNature_t_now, + NRTTriggerNature_t_onchange +}; + +typedef struct { + uint8_t triggerNature; // This is type of enum NRTTriggerNature_t +} E2SMgNBNRTEventTriggerDefinitionFormat1_t; + +typedef struct { + E2SMgNBNRTEventTriggerDefinitionFormat1_t eventDefinitionFormat1; +} E2SMgNBNRTEventTriggerDefinition_t; + +typedef struct { + OctetString_t octetString; // This element is E2AP spec format + // CHOICE. Only one value can be present. + bool E2SMgNBX2EventTriggerDefinitionPresent; + E2SMgNBX2eventTriggerDefinition_t e2SMgNBX2eventTriggerDefinition; // This element is E2SM-gNB-X2 spec format + bool E2SMgNBNRTEventTriggerDefinitionPresent; + E2SMgNBNRTEventTriggerDefinition_t e2SMgNBNRTEventTriggerDefinition; // This element is E2SM-gNB-NRT spec format } RICEventTriggerDefinition_t; typedef struct { RICEventTriggerDefinition_t ricEventTriggerDefinition; RICActionToBeSetupList_t ricActionToBeSetupItemIEs; -} RICSubscription_t; +} RICSubscriptionDetails_t; typedef struct { uint8_t contentLength; - RICActionID_t ricActionID[16]; // table size is const cMaxofRICactionID + RICActionID_t ricActionID[16]; // Table size is const cMaxofRICactionID } RICActionAdmittedList_t; -enum CauseRIC_t { - CauseRIC__function_id_Invalid, - CauseRIC__action_not_supported, - CauseRIC__excessive_actions, - CauseRIC__duplicate_action, - CauseRIC__duplicate_event, - CauseRIC__function_resource_limit, - CauseRIC__request_id_unknown, - CauseRIC__inconsistent_action_subsequent_action_sequence, - CauseRIC__control_message_invalid, - CauseRIC__call_process_id_invalid, - CauseRIC__function_not_required, - CauseRIC__excessive_functions, - CauseRIC__ric_resource_limit -}; - -extern const int cRICCauseRadioNetwork; // this is content of type RICCause_t -extern const int cRICCauseTransport; // this is content of type RICCause_t -extern const int cRICCauseProtocol; // this is content of type RICCause_t -extern const int cRICCauseMisc; // this is content of type RICCause_t -extern const int cRICCauseRic; // this is content of type RICCause_t +extern const int cCauseRIC; // This is content of type CauseRIC_t +extern const int cCauseRICService; // This is content of type CauseRICservice_t +extern const int cRICCauseTransport; // This is content of type CauseTransport_t +extern const int cRICCauseProtocol; // This is content of type CauseProtocol_t +extern const int cRICCauseMisc; // This is content of type CauseMisc_t typedef struct { uint8_t content; // See above constants - uint8_t cause; // this is type of enum CauseRIC_t + uint8_t causeVal; // This is type of enum CauseRIC_t } RICCause_t; typedef struct { RICActionID_t ricActionID; - RICCause_t ricCause; + RICCause_t cause; } RICActionNotAdmittedItem_t; typedef struct { uint8_t contentLength; - RICActionNotAdmittedItem_t RICActionNotAdmittedItem[16]; // table size is const cMaxofRICactionID + RICActionNotAdmittedItem_t RICActionNotAdmittedItem[16]; // Table size is const cMaxofRICactionID } RICActionNotAdmittedList_t; enum Criticality_t { @@ -279,24 +391,24 @@ enum TypeOfError_t { }; typedef struct { - uint8_t iECriticality; // this is type of enum Criticality_t + uint8_t iECriticality; // This is type of enum Criticality_t ProtocolIE_ID__t iE_ID; - uint8_t typeOfError; // this is type of enum TypeOfError_t + uint8_t typeOfError; // This is type of enum TypeOfError_t //iE-Extensions // This has no content in E2AP ASN.1 specification } CriticalityDiagnosticsIEListItem_t; typedef struct { bool procedureCodePresent; - ProcedureCode__t procedureCode; + ProcedureCode__t procedureCode; // OPTIONAL bool triggeringMessagePresent; - uint8_t triggeringMessage; // this is type of enum TriggeringMessage_t + uint8_t triggeringMessage; // OPTIONAL. This is type of enum TriggeringMessage_t bool procedureCriticalityPresent; - uint8_t procedureCriticality; // this is type of enum Criticality_t + uint8_t procedureCriticality; // OPTIONAL. This is type of enum Criticality_t + bool ricRequestorIDPresent; + RICRequestID_t ricRequestorID; //OPTIONAL bool iEsCriticalityDiagnosticsPresent; - uint16_t criticalityDiagnosticsIELength; - CriticalityDiagnosticsIEListItem_t criticalityDiagnosticsIEListItem[256]; // table size is const cMaxNrOfErrors - //iE-Extensions // This has no content in E2AP ASN.1 specification - + uint16_t criticalityDiagnosticsIELength; // 1..256 + CriticalityDiagnosticsIEListItem_t criticalityDiagnosticsIEListItem[256]; // OPTIONAL. Table size is const cMaxNrOfErrors } CriticalityDiagnostics__t; typedef struct { @@ -312,6 +424,56 @@ enum e2err { e2err_RICSubscriptionRequestAllocRANfunctionIDFail, e2err_RICSubscriptionRequestAllocRICeventTriggerDefinitionBufFail, e2err_RICSubscriptionRequestAllocRICaction_ToBeSetup_ItemIEsFail, + e2err_RICSubscriptionRequestAllocactionParameterValueValueBitSFail, + e2err_RICSubscriptionRequestAllocactionParameterValueValueOctSFail, + e2err_RICSubscriptionRequestAllocactionParameterValueValuePrtsSFail, + e2err_RICSubscriptionRequestAllocactionRanParameterValueValueBitSFail, + e2err_RICSubscriptionRequestAllocactionRanParameterValueValueOctSFail, + e2err_RICSubscriptionRequestAllocactionRanParameterValueValuePrtsSFail, + e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueBitSFail, + e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueOctSFail, + e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValuePrtsSFail, + e2err_RICSubscriptionRequestAllocactionDefinitionX2Format1Fail, + e2err_RICSubscriptionRequestAllocactionDefinitionX2Format2Fail, + e2err_RICSubscriptionRequestAllocactionDefinitionNRTFormat1Fail, + e2err_RICSubscriptionRequestAllocRICactionDefinitionBufFail, + e2err_RICSubscriptionRequestAllocRICactionDefinitionFail, + e2err_RICSubscriptionRequestRICActionDefinitionEmpty, + e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_X2_actionDefinition, + e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_NRT_actionDefinition, + e2err_RICSubscriptionRequestActionParameterItemFail, + e2err_RICActionDefinitionChoicePackFail_1, + e2err_RICActionDefinitionChoicePackFail_2, + e2err_RICSubscriptionRequestAllocE2_RANueGroupDef_ItemFail, + e2err_RICSubscriptionRequestAllocRANParameter_ItemFail, + e2err_RICSubscriptionRequestRanranUeGroupDefItemParameterValueEmptyFail, + e2err_RICSubscriptionRequestRanParameterItemRanParameterValueEmptyFail, + e2err_RICSubscriptionRequestAllocActionDefinitionFail, + e2err_RICSubscriptionRequestAllocNRTRANParameter_ItemFail, + e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueBitSFail, + e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueOctSFail, + e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValuePrtsSFail, + e2err_RICSubscriptionRequestRanParameterItemNRTRanParameterValueEmptyFail, + e2err_RICSubscriptionRequestAsn_set_addE2_ActionParameter_ItemFail, + e2err_RICSubscriptionRequestAsn_set_addRANueGroupDef_ItemFail, + e2err_RICSubscriptionRequestAsn_set_addE2_RANParameter_ItemFail, + e2err_RICSubscriptionRequestAsn_set_addE2_NRTRANParameter_ItemFail, + e2err_RICActionDefinitionChoiceWMOREFail, + e2err_RICActionDefinitionChoiceDecodeFAIL, + e2err_RICActionDefinitionChoiceDecodeDefaultFail, + e2err_RICNRTActionDefinitionChoiceWMOREFail, + e2err_RICNRTActionDefinitionChoiceDecodeFAIL, + e2err_RICNRTActionDefinitionChoiceDecodeDefaultFail, + e2err_RICActionDefinitionChoiceEmptyFAIL, + e2err_RICNRTEventTriggerDefinitionDecodeWMOREFail, + e2err_RICNRTEventTriggerDefinitionDecodeFAIL, + e2err_RICNRTEventTriggerDefinitionDecodeDefaultFail, + e2err_RICEventTriggerDefinitionEmptyDecodeDefaultFail, + e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_X2_ActionDefinitionChoiceFail, + e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFormat1Fail, + e2err_RICSubscriptionRequestNRTRanParameterItemRanParameterValueEmptyFail, + e2err_RICSubscriptionRequestNRTAllocActionDefinitionFail, + e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFail, e2err_RICSubscriptionRequestAllocRICsubsequentActionFail, e2err_RICSubscriptionRequestAllocRICsubscriptionRequest_IEsFail, e2err_RICSubscriptionRequestEncodeFail, @@ -329,7 +491,11 @@ enum e2err { e2err_RICEventTriggerDefinitionIEValueFail_4, e2err_RICEventTriggerDefinitionPackFail_1, e2err_RICEventTriggerDefinitionPackFail_2, + e2err_RICENRTventTriggerDefinitionPackFail_1, + e2err_RICNRTEventTriggerDefinitionPackFail_2, e2err_RICEventTriggerDefinitionAllocE2SM_gNB_X2_eventTriggerDefinitionFail, + e2err_RICEventTriggerDefinitionAllocE2SM_gNB_NRT_eventTriggerDefinitionFail, + e2err_RICEventTriggerDefinitionAllocEventTriggerDefinitionEmptyFail, e2err_RICSubscriptionResponseAllocRICrequestIDFail, e2err_RICSubscriptionResponseAllocRANfunctionIDFail, e2err_RICSubscriptionResponseAllocRICaction_Admitted_ItemIEsFail, @@ -391,6 +557,56 @@ static const char* const E2ErrorStrings[] = { "e2err_RICSubscriptionRequestAllocRANfunctionIDFail", "e2err_RICSubscriptionRequestAllocRICeventTriggerDefinitionBufFail", "e2err_RICSubscriptionRequestAllocRICaction_ToBeSetup_ItemIEsFail", + "e2err_RICSubscriptionRequestAllocactionParameterValueValueBitSFail", + "e2err_RICSubscriptionRequestAllocactionParameterValueValueOctSFail", + "e2err_RICSubscriptionRequestAllocactionParameterValueValuePrtsSFail", + "e2err_RICSubscriptionRequestAllocactionRanParameterValueValueBitSFail", + "e2err_RICSubscriptionRequestAllocactionRanParameterValueValueOctSFail", + "e2err_RICSubscriptionRequestAllocactionRanParameterValueValuePrtsSFail", + "e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueBitSFail", + "e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueOctSFail", + "e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValuePrtsSFail", + "e2err_RICSubscriptionRequestAllocactionDefinitionX2Format1Fail", + "e2err_RICSubscriptionRequestAllocactionDefinitionX2Format2Fail", + "e2err_RICSubscriptionRequestAllocactionDefinitionNRTFormat1Fail", + "e2err_RICSubscriptionRequestAllocRICactionDefinitionBufFail", + "e2err_RICSubscriptionRequestAllocRICactionDefinitionFail", + "e2err_RICSubscriptionRequestRICActionDefinitionEmpty", + "e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_X2_actionDefinition", + "e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_NRT_actionDefinition", + "e2err_RICSubscriptionRequestActionParameterItemFail", + "e2err_RICActionDefinitionChoicePackFail_1", + "e2err_RICActionDefinitionChoicePackFail_2", + "e2err_RICSubscriptionRequestAllocE2_RANueGroupDef_ItemFail", + "e2err_RICSubscriptionRequestAllocRANParameter_ItemFail", + "e2err_RICSubscriptionRequestRanranUeGroupDefItemParameterValueEmptyFail", + "e2err_RICSubscriptionRequestRanParameterItemRanParameterValueEmptyFail", + "e2err_RICSubscriptionRequestAllocActionDefinitionFail", + "e2err_RICSubscriptionRequestAllocNRTRANParameter_ItemFail", + "e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueBitSFail", + "e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueOctSFail", + "e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValuePrtsSFail", + "e2err_RICSubscriptionRequestRanParameterItemNRTRanParameterValueEmptyFail", + "e2err_RICSubscriptionRequestAsn_set_addE2_ActionParameter_ItemFail", + "e2err_RICSubscriptionRequestAsn_set_addRANueGroupDef_ItemFail", + "e2err_RICSubscriptionRequestAsn_set_addE2_RANParameter_ItemFail", + "e2err_RICSubscriptionRequestAsn_set_addE2_NRTRANParameter_ItemFail", + "e2err_RICActionDefinitionChoiceWMOREFail", + "e2err_RICActionDefinitionChoiceDecodeFAIL", + "e2err_RICActionDefinitionChoiceDecodeDefaultFail", + "e2err_RICNRTActionDefinitionChoiceWMOREFail", + "e2err_RICNRTActionDefinitionChoiceDecodeFAIL", + "e2err_RICNRTActionDefinitionChoiceDecodeDefaultFail", + "e2err_RICActionDefinitionChoiceEmptyFAIL", + "e2err_RICNRTEventTriggerDefinitionDecodeWMOREFail", + "e2err_RICNRTEventTriggerDefinitionDecodeFAIL", + "e2err_RICNRTEventTriggerDefinitionDecodeDefaultFail", + "e2err_RICEventTriggerDefinitionEmptyDecodeDefaultFail", + "e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_X2_ActionDefinitionChoiceFail", + "e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFormat1Fail", + "e2err_RICSubscriptionRequestNRTRanParameterItemRanParameterValueEmptyFail", + "e2err_RICSubscriptionRequestNRTAllocActionDefinitionFail", + "e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFail", "e2err_RICSubscriptionRequestAllocRICsubsequentActionFail", "e2err_RICSubscriptionRequestAllocRICsubscriptionRequest_IEsFail", "e2err_RICSubscriptionRequestEncodeFail", @@ -408,7 +624,11 @@ static const char* const E2ErrorStrings[] = { "e2err_RICEventTriggerDefinitionIEValueFail_4", "e2err_RICEventTriggerDefinitionPackFail_1", "e2err_RICEventTriggerDefinitionPackFail_2", + "e2err_RICENRTventTriggerDefinitionPackFail_1", + "e2err_RICNRTEventTriggerDefinitionPackFail_2", "e2err_RICEventTriggerDefinitionAllocE2SM_gNB_X2_eventTriggerDefinitionFail", + "e2err_RICEventTriggerDefinitionAllocE2SM_gNB_NRT_eventTriggerDefinitionFail", + "e2err_RICEventTriggerDefinitionAllocEventTriggerDefinitionEmptyFail", "e2err_RICSubscriptionResponseAllocRICrequestIDFail", "e2err_RICSubscriptionResponseAllocRANfunctionIDFail", "e2err_RICSubscriptionResponseAllocRICaction_Admitted_ItemIEsFail", @@ -494,7 +714,7 @@ extern const uint64_t cRICsubscriptionDeleteFailure; typedef struct { RICRequestID_t ricRequestID; RANFunctionID_t ranFunctionID; - RICSubscription_t ricSubscription; + RICSubscriptionDetails_t ricSubscriptionDetails; } RICSubscriptionRequest_t; typedef struct { @@ -505,7 +725,6 @@ typedef struct { RICActionNotAdmittedList_t ricActionNotAdmittedList; } RICSubscriptionResponse_t; - typedef struct { RICRequestID_t ricRequestID; RANFunctionID_t ranFunctionID; @@ -527,9 +746,9 @@ typedef struct { typedef struct { RICRequestID_t ricRequestID; RANFunctionID_t ranFunctionID; - RICCause_t ricCause; + RICCause_t cause; bool criticalityDiagnosticsPresent; - CriticalityDiagnostics__t criticalityDiagnostics; // Not used in RIC currently + CriticalityDiagnostics__t criticalityDiagnostics; // OPTIONAL. Not used in RIC currently } RICSubscriptionDeleteFailure_t; ////////////////////////////////////////////////////////////////////// @@ -541,6 +760,11 @@ typedef void* e2ap_pdu_ptr_t; uint64_t packRICSubscriptionRequest(size_t*, byte*, char*,RICSubscriptionRequest_t*); uint64_t packRICEventTriggerDefinition(char*,RICEventTriggerDefinition_t*); +uint64_t packRICActionDefinition(char*, RICActionDefinitionChoice_t*); +uint64_t packRICEventTriggerDefinitionX2Format(char* pLogBuffer, RICEventTriggerDefinition_t*); +uint64_t packRICEventTriggerDefinitionNRTFormat(char* pLogBuffer, RICEventTriggerDefinition_t*); +uint64_t packActionDefinitionX2Format(char*, RICActionDefinitionChoice_t*); +uint64_t packActionDefinitionNRTFormat(char*, RICActionDefinitionChoice_t*); uint64_t packRICSubscriptionResponse(size_t*, byte*, char*,RICSubscriptionResponse_t*); uint64_t packRICSubscriptionFailure(size_t*, byte*, char*,RICSubscriptionFailure_t*); uint64_t packRICSubscriptionDeleteRequest(size_t*, byte*, char*,RICSubscriptionDeleteRequest_t*); @@ -548,14 +772,30 @@ uint64_t packRICSubscriptionDeleteResponse(size_t*, byte*, char*,RICSubscription uint64_t packRICSubscriptionDeleteFailure(size_t*, byte*, char*,RICSubscriptionDeleteFailure_t*); e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t, const byte*, char*, E2MessageInfo_t*); -uint64_t getRICSubscriptionRequestData(e2ap_pdu_ptr_t*, RICSubscriptionRequest_t*); +uint64_t getRICSubscriptionRequestData(mem_track_hdr_t *, e2ap_pdu_ptr_t*, RICSubscriptionRequest_t*); uint64_t getRICEventTriggerDefinitionData(RICEventTriggerDefinition_t*); +uint64_t getRICEventTriggerDefinitionDataX2Format(RICEventTriggerDefinition_t*); +uint64_t getRICEventTriggerDefinitionDataNRTFormat(RICEventTriggerDefinition_t*); +uint64_t getRICActionDefinitionData(mem_track_hdr_t *, RICActionDefinitionChoice_t*); +uint64_t getRICActionDefinitionDataX2Format(mem_track_hdr_t*, RICActionDefinitionChoice_t*); +uint64_t getRICActionDefinitionDataNRTFormat(mem_track_hdr_t*, RICActionDefinitionChoice_t*); uint64_t getRICSubscriptionResponseData(e2ap_pdu_ptr_t*, RICSubscriptionResponse_t*); uint64_t getRICSubscriptionFailureData(e2ap_pdu_ptr_t*, RICSubscriptionFailure_t*); uint64_t getRICSubscriptionDeleteRequestData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteRequest_t*); uint64_t getRICSubscriptionDeleteResponseData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteResponse_t*); uint64_t getRICSubscriptionDeleteFailureData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteFailure_t*); +void* allocDynMem(mem_track_hdr_t*, size_t); +bool addOctetString(mem_track_hdr_t *, DynOctetString_t*, uint64_t, void*); +bool addBitString(mem_track_hdr_t *, DynBitString_t*, uint64_t, void*, uint8_t); + +uint64_t allocActionDefinitionX2Format1(mem_track_hdr_t*, E2SMgNBX2actionDefinition_t**); +uint64_t allocActionDefinitionX2Format2(mem_track_hdr_t*, E2SMgNBX2ActionDefinitionFormat2_t**); +uint64_t allocActionDefinitionNRTFormat1(mem_track_hdr_t*, E2SMgNBNRTActionDefinitionFormat1_t**); + +uint64_t allocateOctetStringBuffer(DynOctetString_t*, uint64_t); +uint64_t allocateBitStringBuffer(mem_track_hdr_t *, DynBitString_t*, uint64_t); + #if DEBUG bool TestRICSubscriptionRequest(); bool TestRICSubscriptionResponse();