#include <stdbool.h>
#include <stdint.h>
+#include <ProcedureCode.h>
+#include <PrintableString.h>
+#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,
};
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;
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 {
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,
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 {
};
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 {
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,
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,
e2err_RICSubscriptionResponseAllocRICActionAdmittedListFail,
e2err_RICSubscriptionResponseAllocRICaction_NotAdmitted_ItemIEsFail,
- e2err_RICSubscriptionResponseAllocRICActionNotAdmittedListFail,
e2err_RICSubscriptionResponseEncodeFail,
e2err_RICSubscriptionResponseAllocE2AP_PDUFail,
e2err_RICSubscriptionFailureAllocRICrequestIDFail,
"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",
"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",
"e2err_RICSubscriptionResponseAllocRICActionAdmittedListFail",
"e2err_RICSubscriptionResponseAllocRICaction_NotAdmitted_ItemIEsFail",
- "e2err_RICSubscriptionResponseAllocRICActionNotAdmittedListFail",
"e2err_RICSubscriptionResponseEncodeFail",
"e2err_RICSubscriptionResponseAllocE2AP_PDUFail",
"e2err_RICSubscriptionFailureAllocRICrequestIDFail",
typedef struct {
RICRequestID_t ricRequestID;
RANFunctionID_t ranFunctionID;
- RICSubscription_t ricSubscription;
+ RICSubscriptionDetails_t ricSubscriptionDetails;
} RICSubscriptionRequest_t;
typedef struct {
RICActionNotAdmittedList_t ricActionNotAdmittedList;
} RICSubscriptionResponse_t;
-
typedef struct {
RICRequestID_t ricRequestID;
RANFunctionID_t ranFunctionID;
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;
//////////////////////////////////////////////////////////////////////
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*);
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();