X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=e2ap%2Flibe2ap_wrapper%2FE2AP_if.h;h=a98570c223f8c826cb9dad5089dbafca70d8a4b1;hb=HEAD;hp=d70d2b67bceb057508aca765058575891a1463d0;hpb=ff8dccd02d76eebfccc0b509ce0b42a2c1760e12;p=ric-plt%2Fsubmgr.git diff --git a/e2ap/libe2ap_wrapper/E2AP_if.h b/e2ap/libe2ap_wrapper/E2AP_if.h index d70d2b6..a98570c 100644 --- a/e2ap/libe2ap_wrapper/E2AP_if.h +++ b/e2ap/libe2ap_wrapper/E2AP_if.h @@ -26,6 +26,7 @@ #include #include +#include #ifdef __cplusplus extern "C" { @@ -33,59 +34,48 @@ extern "C" { typedef unsigned char byte; -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 struct { - uint32_t dummy; // This data type has no content. This dymmy is added here to solve problem with Golang. Golang do not like empty types. -} ParameterValue_t; - -typedef struct { - ParameterID_t parameterID; - ParameterValue_t ParameterValue; -} SequenceOfActionParameters_t; - -typedef struct { - StyleID_t styleID; - SequenceOfActionParameters_t sequenceOfActionParameters; -} RICActionDefinition_t; - enum RICSubsequentActionType_t { RICSubsequentActionType_Continue, RICSubsequentActionType_wait }; +typedef struct { + OctetString_t octetString; // This element is E2AP spec format +} RICActionDefinitionChoice_t; + enum RICTimeToWait_t { RICTimeToWait_zero, RICTimeToWait_w1ms, @@ -108,15 +98,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 +115,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,100 +153,33 @@ enum InterfaceDirection__t { typedef uint8_t ProcedureCode__t; -typedef struct { - ProcedureCode__t procedureCode; - uint8_t typeOfMessage; // This is X2AP-PDU, CHOICE of InitiatingMessage or SuccessfulOutcome or UnsuccessfulOutcome -} RICInterfaceMessageType_t; - -typedef uint32_t InterfaceProtocolIEID_t; - -enum ProtocolIEtestCondition_t { - ProtocolIEtestCondition_equal, - ProtocolIEtestCondition_greaterthan, - ProtocolIEtestCondition_lessthan, - ProtocolIEtestCondition_contains, - ProtocolIEtestCondition_present -}; - -typedef struct { // CHOICE. Only one value can be present - bool valueIntPresent; - int64_t integer; //INTEGER; - bool valueEnumPresent; - int64_t valueEnum; // INTEGER - bool valueBoolPresent; - bool valueBool; // BOOLEAN - bool valueBitSPresent; - Bitstring_t octetstring; // OCTET STRING, - bool octetstringPresent; - OctetString_t octetString; // OCTET STRING, -} InterfaceProtocolIEValue_t; - -typedef struct { - InterfaceProtocolIEID_t interfaceProtocolIEID; - //ProtocolIEtestCondition_t protocolIEtestCondition; Golang do not like this line. We do not need this right now. - InterfaceProtocolIEValue_t interfaceProtocolIEValue; -} SequenceOfProtocolIE_t; - -static const uint64_t cMaxofProtocolIE = 16; - typedef struct { - SequenceOfProtocolIE_t sequenceOfProtocolIE[16]; // table size is const cMaxofProtocolIE -} SequenceOfProtocolIEList_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; + OctetString_t octetString; // This element is E2AP 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 - 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,44 +202,26 @@ 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 int32_t RICIndicationSN_t; - -enum RICIndicationType_t { - RICIndicationType_RICIndicationTypeReport, - RICIndicationType_RICIndicationTypeInsert -}; - -typedef struct { - OctetString_t octetString; // E2AP spec format, the other elements for E2SM-X2 format - InterfaceID_t interfaceID; - uint8_t interfaceDirection; -} RICIndicationHeader_t; - -typedef struct { - OctetString_t octetString; // E2AP spec format, the other elements for E2SM-X2 format - OctetString_t interfaceMessage; -} RICIndicationMessage_t; - typedef struct { OctetString_t octetString; // E2AP spec format, the other elements for E2SM-X2 format uint64_t ricCallProcessIDVal; @@ -330,66 +235,25 @@ enum e2err { e2err_RICSubscriptionRequestAllocRANfunctionIDFail, e2err_RICSubscriptionRequestAllocRICeventTriggerDefinitionBufFail, e2err_RICSubscriptionRequestAllocRICaction_ToBeSetup_ItemIEsFail, + e2err_RICSubscriptionRequestAllocRICactionDefinitionBufFail, + e2err_RICSubscriptionRequestAllocRICactionDefinitionFail, e2err_RICSubscriptionRequestAllocRICsubsequentActionFail, e2err_RICSubscriptionRequestAllocRICsubscriptionRequest_IEsFail, e2err_RICSubscriptionRequestEncodeFail, e2err_RICSubscriptionRequestAllocE2AP_PDUFail, - e2err_RICEventTriggerDefinitionIEValueFail_1, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDpLMN_IdentityBufFail, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDhome_eNB_IDBufFail, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail, - e2err_RICEventTriggerDefinitionIEValueFail_2, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDpLMN_IdentityBufFail, - e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDgNB_IDBufFail, - e2err_RICEventTriggerDefinitionIEValueFail_3, - e2err_RICEventTriggerDefinitionIEValueFail_4, - e2err_RICEventTriggerDefinitionPackFail_1, - e2err_RICEventTriggerDefinitionPackFail_2, - e2err_RICEventTriggerDefinitionAllocE2SM_gNB_X2_eventTriggerDefinitionFail, e2err_RICSubscriptionResponseAllocRICrequestIDFail, e2err_RICSubscriptionResponseAllocRANfunctionIDFail, e2err_RICSubscriptionResponseAllocRICaction_Admitted_ItemIEsFail, e2err_RICSubscriptionResponseAllocRICActionAdmittedListFail, e2err_RICSubscriptionResponseAllocRICaction_NotAdmitted_ItemIEsFail, - e2err_RICSubscriptionResponseAllocRICActionNotAdmittedListFail, e2err_RICSubscriptionResponseEncodeFail, e2err_RICSubscriptionResponseAllocE2AP_PDUFail, e2err_RICSubscriptionFailureAllocRICrequestIDFail, e2err_RICSubscriptionFailureAllocRANfunctionIDFail, e2err_RICSubscriptionFailureAllocRICaction_NotAdmitted_ItemIEsFail, - e2err_RICSubscriptionFailureAllocRICActionAdmittedListFail, + e2err_RICSubscriptionFailureAllocCauseFail, e2err_RICSubscriptionFailureEncodeFail, e2err_RICSubscriptionFailureAllocE2AP_PDUFail, - e2err_RICIndicationRICrequestIDFail, - e2err_RICIndicationAllocRANfunctionIDFail, - e2err_RICIndicationAllocRICactionIDFail, - e2err_RICIndicationAllocRICindicationSNFail, - e2err_RICIndicationAllocRICindicationTypeFail, - e2err_RICIndicationAllocRRICindicationHeaderBufFail, - e2err_RICIndicationAllocRICindicationHeaderFail, - e2err_RICIndicationAllocRICindicationMessageBufFail, - e2err_RICIndicationAllocRICindicationMessageFail, - e2err_RICIndicationEncodeFail, - e2err_RICIndicationAllocE2AP_PDUFail, - e2err_RICindicationHeaderIEValueFail_1, - e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDpLMN_IdentityBufFail, - e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail, - e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDhome_eNB_IDBufFail, - e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail, - e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail, - e2err_RICindicationHeaderIEValueFail_2, - e2err_RICIndicationAllocRICIndicationHeaderglobal_gNB_IDpLMN_IdentityBufFail, - e2err_RICIndicationAllocRICIndicationHeaderglobal_gNB_IDgNB_IDgNB_IDBufFail, - e2err_RICindicationHeaderIEValueFail_3, - e2err_RICindicationHeaderPackFail_1, - e2err_RICindicationHeaderPackFail_2, - e2err_RICIndicationHeaderAllocE2AP_PDUFail, - e2err_RICIndicationMessageAllocinterfaceMessageFail, - e2err_RICindicationMessagePackFail_1, - e2err_RICindicationMessagePackFail_2, - e2err_E2SM_gNB_X2_indicationMessageAllocE2AP_PDUFail, e2err_RICSubscriptionDeleteRequestAllocRICrequestIDFail, e2err_RICSubscriptionDeleteRequestAllocRANfunctionIDFail, e2err_RICSubscriptionDeleteRequestEncodeFail, @@ -406,115 +270,63 @@ enum e2err { e2err_RICsubscriptionRequestRICrequestIDMissing, e2err_RICsubscriptionRequestRANfunctionIDMissing, e2err_RICsubscriptionRequestICsubscriptionMissing, - e2err_RICEventTriggerDefinitionIEValueFail_5, - e2err_RICEventTriggerDefinitionIEValueFail_6, - e2err_RICEventTriggerDefinitionIEValueFail_7, - e2err_RICEventTriggerDefinitionIEValueFail_8, - e2err_RICEventTriggerDefinitionDecodeWMOREFail, - e2err_RICEventTriggerDefinitionDecodeFAIL, - e2err_RICEventTriggerDefinitionDecodeDefaultFail, e2err_RICsubscriptionResponseRICrequestIDMissing, e2err_RICsubscriptionResponseRANfunctionIDMissing, e2err_RICsubscriptionResponseRICaction_Admitted_ListMissing, - e2err_RICsubscriptionResponseRICaction_NotAdmitted_ListMissing, e2err_RICsubscriptionFailureRICrequestIDMissing, e2err_RICsubscriptionFailureRANfunctionIDMissing, - e2err_RICsubscriptionFailureRICaction_NotAdmitted_ListMissing, - e2err_RICindicationRICrequestIDMissing, - e2err_RICindicationRANfunctionIDMissing, - e2err_RICindicationRICactionIDMissing, - e2err_RICindicationRICindicationSNMissing, - e2err_RICindicationRICindicationTypeMissing, - e2err_RICIndicationHeaderContentLengthFail, - e2err_RICindicationRICindicationHeaderMissing, - e2err_RICIndicationMessageContentLengthFail, - e2err_RICindicationRICindicationMessageMissing, - e2err_RICEventTriggerDefinitionIEValueFail_9, - e2err_RICEventTriggerDefinitionIEValueFail_10, - e2err_RICEventTriggerDefinitionIEValueFail_11, - e2err_RICIndicationHeaderDecodeWMOREFail, - e2err_RICIndicationHeaderDecodeFAIL, - e2err_RICIndicationHeaderDecodeDefaultFail, - e2err_RICIndicationMessageIEContentLengthFail, - e2err_RICIndicationMessageDecodeWMOREFail, - e2err_RICIndicationMessageDecodeFAIL, - e2err_RICIndicationMessageDecodeDefaultFail, + e2err_RICsubscriptionFailureCauseMissing, e2err_RICsubscriptionDeleteRequestRICrequestIDMissing, e2err_RICsubscriptionDeleteRequestRANfunctionIDMissing, e2err_RICsubscriptionDeleteResponseRICrequestIDMissing, e2err_RICsubscriptionDeleteResponseRANfunctionIDMissing, e2err_RICsubscriptionDeleteFailureRICrequestIDMissing, e2err_RICsubscriptionDeleteFailureRANfunctionIDMissing, - e2err_RICsubscriptionDeleteFailureRICcauseMissing + e2err_RICsubscriptionDeleteFailureRICcauseMissing, + e2err_RICSubscriptionDeleteRequiredRICrequestIDMissing, + e2err_RICSubscriptionDeleteRequiredRANfunctionIDMissing, + e2err_RICSubscriptionDeleteRequiredRICcauseMissing, + e2err_RICSubscriptionDeleteRequiredEncodeFail, + e2err_RICSubscriptionDeleteRequiredAllocE2AP_PDUFail, + e2err_RICsubscriptionResponseRICrequestIDWrongOrder, + e2err_RICsubscriptionResponseRANfunctionIDWrongOrder, + e2err_RICsubscriptionResponseRICaction_Admitted_ListWrongOrder, + e2err_RICsubscriptionResponseRICaction_NotAdmitted_ListWrongOrder, + e2err_RICsubscriptionFailureRICrequestIDWrongOrder, + e2err_RICsubscriptionFailureRANfunctionIDWrongOrder, + e2err_RICsubscriptionFailureCauseWrongOrder, + e2err_RICsubscriptionDeleteResponseRICrequestIDWrongOrder, + e2err_RICsubscriptionDeleteResponseRANfunctionIDWrongOrder, + e2err_RICsubscriptionDeleteFailureRICrequestIDWrongOrder, + e2err_RICsubscriptionDeleteFailureRANfunctionIDWrongOrder, + e2err_RICsubscriptionDeleteFailureRICcauseWrongOrder }; - static const char* const E2ErrorStrings[] = { "e2err_OK", "e2err_RICSubscriptionRequestAllocRICrequestIDFail", "e2err_RICSubscriptionRequestAllocRANfunctionIDFail", "e2err_RICSubscriptionRequestAllocRICeventTriggerDefinitionBufFail", "e2err_RICSubscriptionRequestAllocRICaction_ToBeSetup_ItemIEsFail", + "e2err_RICSubscriptionRequestAllocRICactionDefinitionBufFail", + "e2err_RICSubscriptionRequestAllocRICactionDefinitionFail", "e2err_RICSubscriptionRequestAllocRICsubsequentActionFail", "e2err_RICSubscriptionRequestAllocRICsubscriptionRequest_IEsFail", "e2err_RICSubscriptionRequestEncodeFail", "e2err_RICSubscriptionRequestAllocE2AP_PDUFail", - "e2err_RICEventTriggerDefinitionIEValueFail_1", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDpLMN_IdentityBufFail", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDhome_eNB_IDBufFail", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail", - "e2err_RICEventTriggerDefinitionIEValueFail_2", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDpLMN_IdentityBufFail", - "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDgNB_IDBufFail", - "e2err_RICEventTriggerDefinitionIEValueFail_3", - "e2err_RICEventTriggerDefinitionIEValueFail_4", - "e2err_RICEventTriggerDefinitionPackFail_1", - "e2err_RICEventTriggerDefinitionPackFail_2", - "e2err_RICEventTriggerDefinitionAllocE2SM_gNB_X2_eventTriggerDefinitionFail", "e2err_RICSubscriptionResponseAllocRICrequestIDFail", "e2err_RICSubscriptionResponseAllocRANfunctionIDFail", "e2err_RICSubscriptionResponseAllocRICaction_Admitted_ItemIEsFail", "e2err_RICSubscriptionResponseAllocRICActionAdmittedListFail", "e2err_RICSubscriptionResponseAllocRICaction_NotAdmitted_ItemIEsFail", - "e2err_RICSubscriptionResponseAllocRICActionNotAdmittedListFail", "e2err_RICSubscriptionResponseEncodeFail", "e2err_RICSubscriptionResponseAllocE2AP_PDUFail", "e2err_RICSubscriptionFailureAllocRICrequestIDFail", "e2err_RICSubscriptionFailureAllocRANfunctionIDFail", "e2err_RICSubscriptionFailureAllocRICaction_NotAdmitted_ItemIEsFail", - "e2err_RICSubscriptionFailureAllocRICActionAdmittedListFail", + "e2err_RICSubscriptionFailureAllocCauseFail", "e2err_RICSubscriptionFailureEncodeFail", "e2err_RICSubscriptionFailureAllocE2AP_PDUFail", - "e2err_RICIndicationRICrequestIDFail", - "e2err_RICIndicationAllocRANfunctionIDFail", - "e2err_RICIndicationAllocRICactionIDFail", - "e2err_RICIndicationAllocRICindicationSNFail", - "e2err_RICIndicationAllocRICindicationTypeFail", - "e2err_RICIndicationAllocRRICindicationHeaderBufFail", - "e2err_RICIndicationAllocRICindicationHeaderFail", - "e2err_RICIndicationAllocRICindicationMessageBufFail", - "e2err_RICIndicationAllocRICindicationMessageFail", - "e2err_RICIndicationEncodeFail", - "e2err_RICIndicationAllocE2AP_PDUFail", - "e2err_RICindicationHeaderIEValueFail_1", - "e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDpLMN_IdentityBufFail", - "e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail", - "e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDhome_eNB_IDBufFail", - "e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail", - "e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail", - "e2err_RICindicationHeaderIEValueFail_2", - "e2err_RICIndicationAllocRICIndicationHeaderglobal_gNB_IDpLMN_IdentityBufFail", - "e2err_RICIndicationAllocRICIndicationHeaderglobal_gNB_IDgNB_IDgNB_IDBufFail", - "e2err_RICindicationHeaderIEValueFail_3", - "e2err_RICindicationHeaderPackFail_1", - "e2err_RICindicationHeaderPackFail_2", - "e2err_RICIndicationHeaderAllocE2AP_PDUFail", - "e2err_RICIndicationMessageAllocinterfaceMessageFail", - "e2err_RICindicationMessagePackFail_1", - "e2err_RICindicationMessagePackFail_2", - "e2err_E2SM_gNB_X2_indicationMessageAllocE2AP_PDUFail", "e2err_RICSubscriptionDeleteRequestAllocRICrequestIDFail", "e2err_RICSubscriptionDeleteRequestAllocRANfunctionIDFail", "e2err_RICSubscriptionDeleteRequestEncodeFail", @@ -531,46 +343,31 @@ static const char* const E2ErrorStrings[] = { "e2err_RICsubscriptionRequestRICrequestIDMissing", "e2err_RICsubscriptionRequestRANfunctionIDMissing", "e2err_RICsubscriptionRequestICsubscriptionMissing", - "e2err_RICEventTriggerDefinitionIEValueFail_5", - "e2err_RICEventTriggerDefinitionIEValueFail_6", - "e2err_RICEventTriggerDefinitionIEValueFail_7", - "e2err_RICEventTriggerDefinitionIEValueFail_8", - "e2err_RICEventTriggerDefinitionDecodeWMOREFail", - "e2err_RICEventTriggerDefinitionDecodeFAIL", - "e2err_RICEventTriggerDefinitionDecodeDefaultFail", "e2err_RICsubscriptionResponseRICrequestIDMissing", "e2err_RICsubscriptionResponseRANfunctionIDMissing", "e2err_RICsubscriptionResponseRICaction_Admitted_ListMissing", - "e2err_RICsubscriptionResponseRICaction_NotAdmitted_ListMissing", "e2err_RICsubscriptionFailureRICrequestIDMissing", "e2err_RICsubscriptionFailureRANfunctionIDMissing", - "e2err_RICsubscriptionFailureRICaction_NotAdmitted_ListMissing", - "e2err_RICindicationRICrequestIDMissing", - "e2err_RICindicationRANfunctionIDMissing", - "e2err_RICindicationRICactionIDMissing", - "e2err_RICindicationRICindicationSNMissing", - "e2err_RICindicationRICindicationTypeMissing", - "e2err_RICIndicationHeaderContentLengthFail", - "e2err_RICindicationRICindicationHeaderMissing", - "e2err_RICIndicationMessageContentLengthFail", - "e2err_RICindicationRICindicationMessageMissing", - "e2err_RICEventTriggerDefinitionIEValueFail_9", - "e2err_RICEventTriggerDefinitionIEValueFail_10", - "e2err_RICEventTriggerDefinitionIEValueFail_11", - "e2err_RICIndicationHeaderDecodeWMOREFail", - "e2err_RICIndicationHeaderDecodeFAIL", - "e2err_RICIndicationHeaderDecodeDefaultFail", - "e2err_RICIndicationMessageIEContentLengthFail", - "e2err_RICIndicationMessageDecodeWMOREFail", - "e2err_RICIndicationMessageDecodeFAIL", - "e2err_RICIndicationMessageDecodeDefaultFail", + "e2err_RICsubscriptionFailureCauseMissing", "e2err_RICsubscriptionDeleteRequestRICrequestIDMissing", "e2err_RICsubscriptionDeleteRequestRANfunctionIDMissing", "e2err_RICsubscriptionDeleteResponseRICrequestIDMissing", "e2err_RICsubscriptionDeleteResponseRANfunctionIDMissing", "e2err_RICsubscriptionDeleteFailureRICrequestIDMissing", "e2err_RICsubscriptionDeleteFailureRANfunctionIDMissing", - "e2err_RICsubscriptionDeleteFailureRICcauseMissing" + "e2err_RICsubscriptionDeleteFailureRICcauseMissing", + "e2err_RICSubscriptionDeleteRequiredRICrequestIDMissing", + "e2err_RICSubscriptionDeleteRequiredRANfunctionIDMissing", + "e2err_RICSubscriptionDeleteRequiredRICcauseMissing", + "e2err_RICSubscriptionDeleteRequiredEncodeFail", + "e2err_RICSubscriptionDeleteRequiredAllocE2AP_PDUFail", + "e2err_RICsubscriptionResponseRICrequestIDWrongOrder", + "e2err_RICsubscriptionResponseRANfunctionIDWrongOrder", + "e2err_RICsubscriptionResponseRICaction_Admitted_ListWrongOrder", + "e2err_RICsubscriptionResponseRICaction_NotAdmitted_ListWrongOrder", + "e2err_RICsubscriptionFailureRICrequestIDWrongOrder", + "e2err_RICsubscriptionFailureRANfunctionIDWrongOrder", + "e2err_RICsubscriptionFailureCauseWrongOrder", }; typedef struct { @@ -591,7 +388,7 @@ extern const uint64_t cE2UnsuccessfulOutcome; // Initiating message extern const uint64_t cRICSubscriptionRequest; extern const uint64_t cRICSubscriptionDeleteRequest; -extern const uint64_t cRICIndication; +extern const uint64_t cRICSubscriptionDeleteRequired; // Successful outcome extern const uint64_t cRICSubscriptionResponse; @@ -604,7 +401,7 @@ extern const uint64_t cRICsubscriptionDeleteFailure; typedef struct { RICRequestID_t ricRequestID; RANFunctionID_t ranFunctionID; - RICSubscription_t ricSubscription; + RICSubscriptionDetails_t ricSubscriptionDetails; } RICSubscriptionRequest_t; typedef struct { @@ -615,26 +412,14 @@ typedef struct { RICActionNotAdmittedList_t ricActionNotAdmittedList; } RICSubscriptionResponse_t; - typedef struct { RICRequestID_t ricRequestID; RANFunctionID_t ranFunctionID; - RICActionNotAdmittedList_t ricActionNotAdmittedList; + RICCause_t cause; bool criticalityDiagnosticsPresent; CriticalityDiagnostics__t criticalityDiagnostics; } RICSubscriptionFailure_t; -typedef struct { - RICRequestID_t ricRequestID; - RANFunctionID_t ranFunctionID; - RICActionID_t ricActionID; - RICIndicationSN_t ricIndicationSN; - uint64_t ricIndicationType; // this is type of enum RICIndicationType_t - RICIndicationHeader_t ricIndicationHeader; - RICIndicationMessage_t ricIndicationMessage; - RICCallProcessID_t ricCallProcessID; // Not usein RIC currently -} RICIndication_t; - typedef struct { RICRequestID_t ricRequestID; RANFunctionID_t ranFunctionID; @@ -648,58 +433,67 @@ typedef struct { typedef struct { RICRequestID_t ricRequestID; RANFunctionID_t ranFunctionID; - RICCause_t ricCause; + RICCause_t cause; bool criticalityDiagnosticsPresent; - CriticalityDiagnostics__t criticalityDiagnostics; // Not usein RIC currently + CriticalityDiagnostics__t criticalityDiagnostics; // OPTIONAL. Not used in RIC currently } RICSubscriptionDeleteFailure_t; +typedef struct { + RICRequestID_t ricRequestID; + RANFunctionID_t ranFunctionID; + RICCause_t cause; +} RICSubscriptionDeleteRequired_t; + +typedef struct { + int noOfRanSubscriptions; + RICSubscriptionDeleteRequired_t ranSubscriptionsDelRequired[1024]; + +} RICSubsDeleteRequired_t; + ////////////////////////////////////////////////////////////////////// // Function declarations +void allowASN1DebugPrints(bool); + +void allowOutOfOrderIEMsg(uint8_t); + const char* getE2ErrorString(uint64_t); typedef void* e2ap_pdu_ptr_t; uint64_t packRICSubscriptionRequest(size_t*, byte*, char*,RICSubscriptionRequest_t*); -uint64_t packRICEventTriggerDefinition(char*,RICEventTriggerDefinition_t*); uint64_t packRICSubscriptionResponse(size_t*, byte*, char*,RICSubscriptionResponse_t*); uint64_t packRICSubscriptionFailure(size_t*, byte*, char*,RICSubscriptionFailure_t*); -uint64_t packRICIndication(size_t*, byte*, char*,RICIndication_t*); -uint64_t packRICIndicationHeader(char*,RICIndicationHeader_t*); -uint64_t packRICIndicationMessage(char*,RICIndicationMessage_t*); uint64_t packRICSubscriptionDeleteRequest(size_t*, byte*, char*,RICSubscriptionDeleteRequest_t*); uint64_t packRICSubscriptionDeleteResponse(size_t*, byte*, char*,RICSubscriptionDeleteResponse_t*); uint64_t packRICSubscriptionDeleteFailure(size_t*, byte*, char*,RICSubscriptionDeleteFailure_t*); +uint64_t packRICSubscriptionDeleteRequired(size_t*, byte*, char*,RICSubsDeleteRequired_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 getRICEventTriggerDefinitionData(RICEventTriggerDefinition_t*); uint64_t getRICSubscriptionResponseData(e2ap_pdu_ptr_t*, RICSubscriptionResponse_t*); uint64_t getRICSubscriptionFailureData(e2ap_pdu_ptr_t*, RICSubscriptionFailure_t*); -uint64_t getRICIndicationData(e2ap_pdu_ptr_t*, RICIndication_t*); -uint64_t getRICIndicationHeaderData(RICIndicationHeader_t*); -uint64_t getRICIndicationMessageData(RICIndicationMessage_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*); - +uint64_t getRICSubscriptionDeleteRequiredData(e2ap_pdu_ptr_t*, RICSubsDeleteRequired_t*); #if DEBUG bool TestRICSubscriptionRequest(); bool TestRICSubscriptionResponse(); bool TestRICSubscriptionFailure(); -bool TestRICIndication(); bool TestRICSubscriptionDeleteRequest(); bool TestRICSubscriptionDeleteResponse(); bool TestRICSubscriptionDeleteFailure(); +bool TestRICSubscriptionDeleteRequired(); void printRICSubscriptionRequest(const RICSubscriptionRequest_t*); void printRICSubscriptionResponse(const RICSubscriptionResponse_t*); void printRICSubscriptionFailure(const RICSubscriptionFailure_t*); -void printRICIndication(const RICIndication_t*); void printRICSubscriptionDeleteRequest(const RICSubscriptionDeleteRequest_t*); void printRICSubscriptionDeleteResponse(const RICSubscriptionDeleteResponse_t*); void printRICSubscriptionDeleteFailure(const RICSubscriptionDeleteFailure_t*); +void printRICSubscriptionDeleteRequired(const RICSubsDeleteRequired_t*); #endif #ifdef __cplusplus