2 ==================================================================================
3 Copyright (c) 2019 AT&T Intellectual Property.
4 Copyright (c) 2019 Nokia
6 Licensed under the Apache License, Version 2.0 (the "License");
7 you may not use this file except in compliance with the License.
8 You may obtain a copy of the License at
10 http://www.apache.org/licenses/LICENSE-2.0
12 Unless required by applicable law or agreed to in writing, software
13 distributed under the License is distributed on an "AS IS" BASIS,
14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 See the License for the specific language governing permissions and
16 limitations under the License.
17 ==================================================================================
23 #ifndef ASN_DISABLE_OER_SUPPORT
24 #define ASN_DISABLE_OER_SUPPORT
29 #include <ProcedureCode.h>
30 #include <PrintableString.h>
37 extern const int cCauseRICRequest;
38 extern const int cCauseRICService;
39 extern const int cCauseTransport;
40 extern const int cCauseProtocol;
41 extern const int cCauseMisc;
43 typedef unsigned char byte;
45 //extern const int64_t cMaxNrOfErrors;
47 extern const uint64_t cMaxSizeOfOctetString;
49 typedef struct { // Octet string in ASN.1 does not have maximum length!
51 uint8_t data[1024]; // Table size is const cMaxSizeOfOctetString
54 typedef struct { // Octet string in ASN.1 does not have maximum length!
60 uint8_t unusedBits; // Trailing unused bits 0 - 7
61 size_t byteLength; // Length in bytes
66 uint32_t ricRequestorID; // 0..65535
67 uint32_t ricInstanceID; // 0..65535
70 typedef uint16_t RANFunctionID_t; // 0..4095
72 typedef uint64_t RICActionID_t; // 0..255
74 enum RICActionType_t {
80 typedef uint64_t StyleID_t;
82 typedef uint32_t ParameterID_t; // 0..255 (maxofActionParameters)
84 typedef struct { // CHOICE. Only one value can be present
87 bool valueEnumPresent;
89 bool valueBoolPresent;
91 bool valueBitSPresent;
92 DynBitString_t valueBitS;
93 bool valueOctSPresent;
94 DynOctetString_t valueOctS;
95 bool valuePrtSPresent;
96 DynOctetString_t valuePrtS;
97 } ActionParameterValue_t;
100 ParameterID_t parameterID;
101 ActionParameterValue_t actionParameterValue;
102 } ActionParameterItem_t;
106 uint8_t actionParameterCount;
107 ActionParameterItem_t actionParameterItem[255]; // OPTIONAL. 1..255 (maxofRANParameters)
108 } E2SMgNBX2actionDefinition_t;
110 enum RANParameterTest_t {
111 RANParameterTest_equal,
112 RANParameterTest_greaterthan,
113 RANParameterTest_lessthan,
114 RANParameterTest_contains,
115 RANParameterTest_present
119 bool valueIntPresent;
121 bool valueEnumPresent;
123 bool valueBoolPresent;
125 bool valueBitSPresent;
126 DynBitString_t valueBitS;
127 bool valueOctSPresent;
128 DynOctetString_t valueOctS;
129 bool valuePrtSPresent;
130 DynOctetString_t valuePrtS;
131 } RANParameterValue_t;
133 typedef int64_t RANueGroupID_t; // INTEGER
134 typedef uint32_t RANParameterID_t; // 0..255 (maxofRANParameters)
137 RANParameterID_t ranParameterID;
138 RANParameterValue_t ranParameterValue;
139 } RANParameterItem_t;
142 RANParameterID_t ranParameterID;
143 uint8_t ranParameterTest; // This is type of enum RANParameterTest_t
144 RANParameterValue_t ranParameterValue;
145 } RANueGroupDefItem_t;
148 uint8_t ranUeGroupDefCount;
149 RANueGroupDefItem_t ranUeGroupDefItem[255]; //OPTIONAL. 1..255 (maxofRANParameters)
150 } RANueGroupDefinition_t;
153 uint8_t ranParameterCount;
154 RANParameterItem_t ranParameterItem[255]; //OPTIONAL. 1..255 (maxofRANParameters)
155 } RANimperativePolicy_t;
158 RANueGroupID_t ranUEgroupID;
159 RANueGroupDefinition_t ranUEgroupDefinition;
160 RANimperativePolicy_t ranPolicy;
164 uint8_t ranUeGroupCount;
165 RANueGroupItem_t ranUeGroupItem[15]; // OPTIONAL. 1..15 (maxofUEgroup)
166 } E2SMgNBX2ActionDefinitionFormat2_t;
168 enum RICSubsequentActionType_t {
169 RICSubsequentActionType_Continue,
170 RICSubsequentActionType_wait
174 uint8_t ranParameterCount;
175 RANParameterItem_t ranParameterList[255]; // OPTIONAL. 1..255 (maxofRANParameters)
176 } E2SMgNBNRTActionDefinitionFormat1_t;
179 OctetString_t octetString; // This element is E2AP spec format
180 // CHOICE. Only one value can be present
181 bool actionDefinitionX2Format1Present;
182 E2SMgNBX2actionDefinition_t* actionDefinitionX2Format1; // This element is E2SM-gNB-X2 format
183 bool actionDefinitionX2Format2Present;
184 E2SMgNBX2ActionDefinitionFormat2_t* actionDefinitionX2Format2; // This element is E2SM-gNB-X2 format
185 bool actionDefinitionNRTFormat1Present;
186 E2SMgNBNRTActionDefinitionFormat1_t* actionDefinitionNRTFormat1; // This element is E2SM-gNB-NRT format
187 } RICActionDefinitionChoice_t;
189 enum RICTimeToWait_t {
199 RICTimeToWait_w100ms,
200 RICTimeToWait_w200ms,
201 RICTimeToWait_w500ms,
211 uint64_t ricSubsequentActionType; // This is type of enum RICSubsequentActionType_t
212 uint64_t ricTimeToWait; // This is type of enum RICTimeToWait_t
213 } RICSubsequentAction_t;
216 RICActionID_t ricActionID;
217 uint64_t ricActionType; // This is type of enum RICActionType_t
218 bool ricActionDefinitionPresent;
219 RICActionDefinitionChoice_t ricActionDefinitionChoice;
220 bool ricSubsequentActionPresent;
221 RICSubsequentAction_t ricSubsequentAction;
222 } RICActionToBeSetupItem_t;
224 static const uint64_t cMaxofRICactionID = 16;
227 uint8_t contentLength;
228 RICActionToBeSetupItem_t ricActionToBeSetupItem[16]; // 1..16 // Table size is const cMaxofRICactionID
229 } RICActionToBeSetupList_t;
232 uint8_t contentLength;
233 uint8_t pLMNIdentityVal[3];
237 extern const size_t cMacroENBIDP_20Bits;
238 extern const size_t cHomeENBID_28Bits;
239 extern const size_t cShortMacroENBID_18Bits;
240 extern const size_t clongMacroENBIDP_21Bits;
242 typedef struct { // gNB-ID (SIZE 22..32 bits) or eNB-ID (SIZE 18, 20,21 or 28 bits)
248 PLMNIdentity_t pLMNIdentity;
252 typedef struct { // CHOICE. Only either value can be present
253 bool globalENBIDPresent;
254 GlobalNodeID_t globalENBID;
255 bool globalGNBIDPresent;
256 GlobalNodeID_t globalGNBID;
259 enum InterfaceDirection__t {
260 InterfaceDirection__incoming,
261 InterfaceDirection__outgoing
264 typedef uint8_t ProcedureCode__t;
266 enum TypeOfMessage_t {
267 TypeOfMessage_nothing,
268 TypeOfMessage_InitiatingMessage,
269 TypeOfMessage_SuccessfulOutcome,
270 TypeOfMessage_UnsuccessfulOutcome
274 ProcedureCode__t procedureCode;
275 uint8_t typeOfMessage; // This is type of enum TypeOfMessage_t
276 } InterfaceMessageType_t;
278 typedef uint32_t InterfaceProtocolIEID_t;
280 enum InterfaceProtocolIETest_t {
281 ProtocolIEtestCondition_equal,
282 ProtocolIEtestCondition_greaterthan,
283 ProtocolIEtestCondition_lessthan,
284 ProtocolIEtestCondition_contains,
285 ProtocolIEtestCondition_present
288 typedef struct { // CHOICE. Only one value can be present
289 bool valueIntPresent;
291 bool valueEnumPresent;
293 bool valueBoolPresent;
295 bool valueBitStringPresent;
296 DynBitString_t valueBitString;
297 bool octetstringPresent;
298 DynOctetString_t octetString;
299 } InterfaceProtocolIEValue_t;
302 InterfaceProtocolIEID_t interfaceProtocolIEID;
303 uint8_t interfaceProtocolIETest; // This is type of enum InterfaceProtocolIETest_t
304 InterfaceProtocolIEValue_t interfaceProtocolIEValue;
305 } InterfacProtocolIE_t;
307 static const uint64_t cMaxofProtocolIE = 15;
310 InterfacProtocolIE_t InterfacProtocolIE[15]; // Table size is const cMaxofProtocolIE
311 } InterfaceProtocolIEList_t;
314 InterfaceID_t interfaceID;
315 uint8_t interfaceDirection; // This is type of enum InterfaceDirection_t
316 InterfaceMessageType_t interfaceMessageType;
317 bool interfaceProtocolIEListPresent;
318 InterfaceProtocolIEList_t interfaceProtocolIEList; // OPTIONAL. Not used in RIC currently
319 } E2SMgNBX2eventTriggerDefinition_t;
321 enum NRTTriggerNature_t {
322 NRTTriggerNature_t_now,
323 NRTTriggerNature_t_onchange
327 uint8_t triggerNature; // This is type of enum NRTTriggerNature_t
328 } E2SMgNBNRTEventTriggerDefinitionFormat1_t;
331 E2SMgNBNRTEventTriggerDefinitionFormat1_t eventDefinitionFormat1;
332 } E2SMgNBNRTEventTriggerDefinition_t;
335 OctetString_t octetString; // This element is E2AP spec format
336 // CHOICE. Only one value can be present.
337 bool E2SMgNBX2EventTriggerDefinitionPresent;
338 E2SMgNBX2eventTriggerDefinition_t e2SMgNBX2eventTriggerDefinition; // This element is E2SM-gNB-X2 spec format
339 bool E2SMgNBNRTEventTriggerDefinitionPresent;
340 E2SMgNBNRTEventTriggerDefinition_t e2SMgNBNRTEventTriggerDefinition; // This element is E2SM-gNB-NRT spec format
341 } RICEventTriggerDefinition_t;
344 RICEventTriggerDefinition_t ricEventTriggerDefinition;
345 RICActionToBeSetupList_t ricActionToBeSetupItemIEs;
346 } RICSubscriptionDetails_t;
349 uint8_t contentLength;
350 RICActionID_t ricActionID[16]; // Table size is const cMaxofRICactionID
351 } RICActionAdmittedList_t;
353 extern const int cCauseRIC; // This is content of type CauseRIC_t
354 extern const int cCauseRICService; // This is content of type CauseRICservice_t
355 extern const int cRICCauseTransport; // This is content of type CauseTransport_t
356 extern const int cRICCauseProtocol; // This is content of type CauseProtocol_t
357 extern const int cRICCauseMisc; // This is content of type CauseMisc_t
360 uint8_t content; // See above constants
361 uint8_t causeVal; // This is type of enum CauseRIC_t
365 RICActionID_t ricActionID;
367 } RICActionNotAdmittedItem_t;
370 uint8_t contentLength;
371 RICActionNotAdmittedItem_t RICActionNotAdmittedItem[16]; // Table size is const cMaxofRICactionID
372 } RICActionNotAdmittedList_t;
380 typedef uint32_t ProtocolIE_ID__t;
382 enum TriggeringMessage__t {
383 TriggeringMessage__initiating_message,
384 TriggeringMessage__successful_outcome,
385 TriggeringMessage__unsuccessful_outcome
389 TypeOfError_not_understood,
394 uint8_t iECriticality; // This is type of enum Criticality_t
395 ProtocolIE_ID__t iE_ID;
396 uint8_t typeOfError; // This is type of enum TypeOfError_t
397 //iE-Extensions // This has no content in E2AP ASN.1 specification
398 } CriticalityDiagnosticsIEListItem_t;
401 bool procedureCodePresent;
402 ProcedureCode__t procedureCode; // OPTIONAL
403 bool triggeringMessagePresent;
404 uint8_t triggeringMessage; // OPTIONAL. This is type of enum TriggeringMessage_t
405 bool procedureCriticalityPresent;
406 uint8_t procedureCriticality; // OPTIONAL. This is type of enum Criticality_t
407 bool ricRequestorIDPresent;
408 RICRequestID_t ricRequestorID; //OPTIONAL
409 bool iEsCriticalityDiagnosticsPresent;
410 uint16_t criticalityDiagnosticsIELength; // 1..256
411 CriticalityDiagnosticsIEListItem_t criticalityDiagnosticsIEListItem[256]; // OPTIONAL. Table size is const cMaxNrOfErrors
412 } CriticalityDiagnostics__t;
415 OctetString_t octetString; // E2AP spec format, the other elements for E2SM-X2 format
416 uint64_t ricCallProcessIDVal;
417 } RICCallProcessID_t;
419 //////////////////////////////////////////////////////////////////////
423 e2err_RICSubscriptionRequestAllocRICrequestIDFail,
424 e2err_RICSubscriptionRequestAllocRANfunctionIDFail,
425 e2err_RICSubscriptionRequestAllocRICeventTriggerDefinitionBufFail,
426 e2err_RICSubscriptionRequestAllocRICaction_ToBeSetup_ItemIEsFail,
427 e2err_RICSubscriptionRequestAllocactionParameterValueValueBitSFail,
428 e2err_RICSubscriptionRequestAllocactionParameterValueValueOctSFail,
429 e2err_RICSubscriptionRequestAllocactionParameterValueValuePrtsSFail,
430 e2err_RICSubscriptionRequestAllocactionRanParameterValueValueBitSFail,
431 e2err_RICSubscriptionRequestAllocactionRanParameterValueValueOctSFail,
432 e2err_RICSubscriptionRequestAllocactionRanParameterValueValuePrtsSFail,
433 e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueBitSFail,
434 e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueOctSFail,
435 e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValuePrtsSFail,
436 e2err_RICSubscriptionRequestAllocactionDefinitionX2Format1Fail,
437 e2err_RICSubscriptionRequestAllocactionDefinitionX2Format2Fail,
438 e2err_RICSubscriptionRequestAllocactionDefinitionNRTFormat1Fail,
439 e2err_RICSubscriptionRequestAllocRICactionDefinitionBufFail,
440 e2err_RICSubscriptionRequestAllocRICactionDefinitionFail,
441 e2err_RICSubscriptionRequestRICActionDefinitionEmpty,
442 e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_X2_actionDefinition,
443 e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_NRT_actionDefinition,
444 e2err_RICSubscriptionRequestActionParameterItemFail,
445 e2err_RICActionDefinitionChoicePackFail_1,
446 e2err_RICActionDefinitionChoicePackFail_2,
447 e2err_RICSubscriptionRequestAllocE2_RANueGroupDef_ItemFail,
448 e2err_RICSubscriptionRequestAllocRANParameter_ItemFail,
449 e2err_RICSubscriptionRequestRanranUeGroupDefItemParameterValueEmptyFail,
450 e2err_RICSubscriptionRequestRanParameterItemRanParameterValueEmptyFail,
451 e2err_RICSubscriptionRequestAllocActionDefinitionFail,
452 e2err_RICSubscriptionRequestAllocNRTRANParameter_ItemFail,
453 e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueBitSFail,
454 e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueOctSFail,
455 e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValuePrtsSFail,
456 e2err_RICSubscriptionRequestRanParameterItemNRTRanParameterValueEmptyFail,
457 e2err_RICSubscriptionRequestAsn_set_addE2_ActionParameter_ItemFail,
458 e2err_RICSubscriptionRequestAsn_set_addRANueGroupDef_ItemFail,
459 e2err_RICSubscriptionRequestAsn_set_addE2_RANParameter_ItemFail,
460 e2err_RICSubscriptionRequestAsn_set_addE2_NRTRANParameter_ItemFail,
461 e2err_RICActionDefinitionChoiceWMOREFail,
462 e2err_RICActionDefinitionChoiceDecodeFAIL,
463 e2err_RICActionDefinitionChoiceDecodeDefaultFail,
464 e2err_RICNRTActionDefinitionChoiceWMOREFail,
465 e2err_RICNRTActionDefinitionChoiceDecodeFAIL,
466 e2err_RICNRTActionDefinitionChoiceDecodeDefaultFail,
467 e2err_RICActionDefinitionChoiceEmptyFAIL,
468 e2err_RICNRTEventTriggerDefinitionDecodeWMOREFail,
469 e2err_RICNRTEventTriggerDefinitionDecodeFAIL,
470 e2err_RICNRTEventTriggerDefinitionDecodeDefaultFail,
471 e2err_RICEventTriggerDefinitionEmptyDecodeDefaultFail,
472 e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_X2_ActionDefinitionChoiceFail,
473 e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFormat1Fail,
474 e2err_RICSubscriptionRequestNRTRanParameterItemRanParameterValueEmptyFail,
475 e2err_RICSubscriptionRequestNRTAllocActionDefinitionFail,
476 e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFail,
477 e2err_RICSubscriptionRequestAllocRICsubsequentActionFail,
478 e2err_RICSubscriptionRequestAllocRICsubscriptionRequest_IEsFail,
479 e2err_RICSubscriptionRequestEncodeFail,
480 e2err_RICSubscriptionRequestAllocE2AP_PDUFail,
481 e2err_RICEventTriggerDefinitionIEValueFail_1,
482 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDpLMN_IdentityBufFail,
483 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail,
484 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDhome_eNB_IDBufFail,
485 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail,
486 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail,
487 e2err_RICEventTriggerDefinitionIEValueFail_2,
488 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDpLMN_IdentityBufFail,
489 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDgNB_IDBufFail,
490 e2err_RICEventTriggerDefinitionIEValueFail_3,
491 e2err_RICEventTriggerDefinitionIEValueFail_4,
492 e2err_RICEventTriggerDefinitionPackFail_1,
493 e2err_RICEventTriggerDefinitionPackFail_2,
494 e2err_RICENRTventTriggerDefinitionPackFail_1,
495 e2err_RICNRTEventTriggerDefinitionPackFail_2,
496 e2err_RICEventTriggerDefinitionAllocE2SM_gNB_X2_eventTriggerDefinitionFail,
497 e2err_RICEventTriggerDefinitionAllocE2SM_gNB_NRT_eventTriggerDefinitionFail,
498 e2err_RICEventTriggerDefinitionAllocEventTriggerDefinitionEmptyFail,
499 e2err_RICSubscriptionResponseAllocRICrequestIDFail,
500 e2err_RICSubscriptionResponseAllocRANfunctionIDFail,
501 e2err_RICSubscriptionResponseAllocRICaction_Admitted_ItemIEsFail,
502 e2err_RICSubscriptionResponseAllocRICActionAdmittedListFail,
503 e2err_RICSubscriptionResponseAllocRICaction_NotAdmitted_ItemIEsFail,
504 e2err_RICSubscriptionResponseEncodeFail,
505 e2err_RICSubscriptionResponseAllocE2AP_PDUFail,
506 e2err_RICSubscriptionFailureAllocRICrequestIDFail,
507 e2err_RICSubscriptionFailureAllocRANfunctionIDFail,
508 e2err_RICSubscriptionFailureAllocRICaction_NotAdmitted_ItemIEsFail,
509 e2err_RICSubscriptionFailureAllocRICActionAdmittedListFail,
510 e2err_RICSubscriptionFailureEncodeFail,
511 e2err_RICSubscriptionFailureAllocE2AP_PDUFail,
512 e2err_E2SM_gNB_X2_indicationMessageAllocE2AP_PDUFail,
513 e2err_RICSubscriptionDeleteRequestAllocRICrequestIDFail,
514 e2err_RICSubscriptionDeleteRequestAllocRANfunctionIDFail,
515 e2err_RICSubscriptionDeleteRequestEncodeFail,
516 e2err_RICSubscriptionDeleteRequestAllocE2AP_PDUFail,
517 e2err_RICSubscriptionDeleteResponseAllocRICrequestIDFail,
518 e2err_RICSubscriptionDeleteResponseAllocRANfunctionIDFail,
519 e2err_RICSubscriptionDeleteResponseEncodeFail,
520 e2err_RICSubscriptionDeleteResponseAllocE2AP_PDUFail,
521 e2err_RICSubscriptionDeleteFailureAllocRICrequestIDFail,
522 e2err_RICSubscriptionDeleteFailureAllocRANfunctionIDFail,
523 e2err_RICSubscriptionDeleteFailureAllocRICcauseFail,
524 e2err_RICSubscriptionDeleteFailureEncodeFail,
525 e2err_RICSubscriptionDeleteFailureAllocE2AP_PDUFail,
526 e2err_RICsubscriptionRequestRICrequestIDMissing,
527 e2err_RICsubscriptionRequestRANfunctionIDMissing,
528 e2err_RICsubscriptionRequestICsubscriptionMissing,
529 e2err_RICEventTriggerDefinitionIEValueFail_5,
530 e2err_RICEventTriggerDefinitionIEValueFail_6,
531 e2err_RICEventTriggerDefinitionIEValueFail_7,
532 e2err_RICEventTriggerDefinitionIEValueFail_8,
533 e2err_RICEventTriggerDefinitionDecodeWMOREFail,
534 e2err_RICEventTriggerDefinitionDecodeFAIL,
535 e2err_RICEventTriggerDefinitionDecodeDefaultFail,
536 e2err_RICsubscriptionResponseRICrequestIDMissing,
537 e2err_RICsubscriptionResponseRANfunctionIDMissing,
538 e2err_RICsubscriptionResponseRICaction_Admitted_ListMissing,
539 e2err_RICsubscriptionFailureRICrequestIDMissing,
540 e2err_RICsubscriptionFailureRANfunctionIDMissing,
541 e2err_RICsubscriptionFailureRICaction_NotAdmitted_ListMissing,
542 e2err_RICEventTriggerDefinitionIEValueFail_9,
543 e2err_RICEventTriggerDefinitionIEValueFail_10,
544 e2err_RICEventTriggerDefinitionIEValueFail_11,
545 e2err_RICsubscriptionDeleteRequestRICrequestIDMissing,
546 e2err_RICsubscriptionDeleteRequestRANfunctionIDMissing,
547 e2err_RICsubscriptionDeleteResponseRICrequestIDMissing,
548 e2err_RICsubscriptionDeleteResponseRANfunctionIDMissing,
549 e2err_RICsubscriptionDeleteFailureRICrequestIDMissing,
550 e2err_RICsubscriptionDeleteFailureRANfunctionIDMissing,
551 e2err_RICsubscriptionDeleteFailureRICcauseMissing
554 static const char* const E2ErrorStrings[] = {
556 "e2err_RICSubscriptionRequestAllocRICrequestIDFail",
557 "e2err_RICSubscriptionRequestAllocRANfunctionIDFail",
558 "e2err_RICSubscriptionRequestAllocRICeventTriggerDefinitionBufFail",
559 "e2err_RICSubscriptionRequestAllocRICaction_ToBeSetup_ItemIEsFail",
560 "e2err_RICSubscriptionRequestAllocactionParameterValueValueBitSFail",
561 "e2err_RICSubscriptionRequestAllocactionParameterValueValueOctSFail",
562 "e2err_RICSubscriptionRequestAllocactionParameterValueValuePrtsSFail",
563 "e2err_RICSubscriptionRequestAllocactionRanParameterValueValueBitSFail",
564 "e2err_RICSubscriptionRequestAllocactionRanParameterValueValueOctSFail",
565 "e2err_RICSubscriptionRequestAllocactionRanParameterValueValuePrtsSFail",
566 "e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueBitSFail",
567 "e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValueOctSFail",
568 "e2err_RICSubscriptionRequestAllocactionRanParameterValue2ValuePrtsSFail",
569 "e2err_RICSubscriptionRequestAllocactionDefinitionX2Format1Fail",
570 "e2err_RICSubscriptionRequestAllocactionDefinitionX2Format2Fail",
571 "e2err_RICSubscriptionRequestAllocactionDefinitionNRTFormat1Fail",
572 "e2err_RICSubscriptionRequestAllocRICactionDefinitionBufFail",
573 "e2err_RICSubscriptionRequestAllocRICactionDefinitionFail",
574 "e2err_RICSubscriptionRequestRICActionDefinitionEmpty",
575 "e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_X2_actionDefinition",
576 "e2err_RICSubscriptionRequestRICActionDefinitionEmptyE2_E2SM_gNB_NRT_actionDefinition",
577 "e2err_RICSubscriptionRequestActionParameterItemFail",
578 "e2err_RICActionDefinitionChoicePackFail_1",
579 "e2err_RICActionDefinitionChoicePackFail_2",
580 "e2err_RICSubscriptionRequestAllocE2_RANueGroupDef_ItemFail",
581 "e2err_RICSubscriptionRequestAllocRANParameter_ItemFail",
582 "e2err_RICSubscriptionRequestRanranUeGroupDefItemParameterValueEmptyFail",
583 "e2err_RICSubscriptionRequestRanParameterItemRanParameterValueEmptyFail",
584 "e2err_RICSubscriptionRequestAllocActionDefinitionFail",
585 "e2err_RICSubscriptionRequestAllocNRTRANParameter_ItemFail",
586 "e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueBitSFail",
587 "e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValueOctSFail",
588 "e2err_RICSubscriptionRequestAllocactionNRTRanParameterValue2ValuePrtsSFail",
589 "e2err_RICSubscriptionRequestRanParameterItemNRTRanParameterValueEmptyFail",
590 "e2err_RICSubscriptionRequestAsn_set_addE2_ActionParameter_ItemFail",
591 "e2err_RICSubscriptionRequestAsn_set_addRANueGroupDef_ItemFail",
592 "e2err_RICSubscriptionRequestAsn_set_addE2_RANParameter_ItemFail",
593 "e2err_RICSubscriptionRequestAsn_set_addE2_NRTRANParameter_ItemFail",
594 "e2err_RICActionDefinitionChoiceWMOREFail",
595 "e2err_RICActionDefinitionChoiceDecodeFAIL",
596 "e2err_RICActionDefinitionChoiceDecodeDefaultFail",
597 "e2err_RICNRTActionDefinitionChoiceWMOREFail",
598 "e2err_RICNRTActionDefinitionChoiceDecodeFAIL",
599 "e2err_RICNRTActionDefinitionChoiceDecodeDefaultFail",
600 "e2err_RICActionDefinitionChoiceEmptyFAIL",
601 "e2err_RICNRTEventTriggerDefinitionDecodeWMOREFail",
602 "e2err_RICNRTEventTriggerDefinitionDecodeFAIL",
603 "e2err_RICNRTEventTriggerDefinitionDecodeDefaultFail",
604 "e2err_RICEventTriggerDefinitionEmptyDecodeDefaultFail",
605 "e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_X2_ActionDefinitionChoiceFail",
606 "e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFormat1Fail",
607 "e2err_RICSubscriptionRequestNRTRanParameterItemRanParameterValueEmptyFail",
608 "e2err_RICSubscriptionRequestNRTAllocActionDefinitionFail",
609 "e2err_RICSubscriptionRequestAllocE2_E2SM_gNB_NRT_ActionDefinitionFail",
610 "e2err_RICSubscriptionRequestAllocRICsubsequentActionFail",
611 "e2err_RICSubscriptionRequestAllocRICsubscriptionRequest_IEsFail",
612 "e2err_RICSubscriptionRequestEncodeFail",
613 "e2err_RICSubscriptionRequestAllocE2AP_PDUFail",
614 "e2err_RICEventTriggerDefinitionIEValueFail_1",
615 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDpLMN_IdentityBufFail",
616 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail",
617 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDhome_eNB_IDBufFail",
618 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail",
619 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail",
620 "e2err_RICEventTriggerDefinitionIEValueFail_2",
621 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDpLMN_IdentityBufFail",
622 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDgNB_IDBufFail",
623 "e2err_RICEventTriggerDefinitionIEValueFail_3",
624 "e2err_RICEventTriggerDefinitionIEValueFail_4",
625 "e2err_RICEventTriggerDefinitionPackFail_1",
626 "e2err_RICEventTriggerDefinitionPackFail_2",
627 "e2err_RICENRTventTriggerDefinitionPackFail_1",
628 "e2err_RICNRTEventTriggerDefinitionPackFail_2",
629 "e2err_RICEventTriggerDefinitionAllocE2SM_gNB_X2_eventTriggerDefinitionFail",
630 "e2err_RICEventTriggerDefinitionAllocE2SM_gNB_NRT_eventTriggerDefinitionFail",
631 "e2err_RICEventTriggerDefinitionAllocEventTriggerDefinitionEmptyFail",
632 "e2err_RICSubscriptionResponseAllocRICrequestIDFail",
633 "e2err_RICSubscriptionResponseAllocRANfunctionIDFail",
634 "e2err_RICSubscriptionResponseAllocRICaction_Admitted_ItemIEsFail",
635 "e2err_RICSubscriptionResponseAllocRICActionAdmittedListFail",
636 "e2err_RICSubscriptionResponseAllocRICaction_NotAdmitted_ItemIEsFail",
637 "e2err_RICSubscriptionResponseEncodeFail",
638 "e2err_RICSubscriptionResponseAllocE2AP_PDUFail",
639 "e2err_RICSubscriptionFailureAllocRICrequestIDFail",
640 "e2err_RICSubscriptionFailureAllocRANfunctionIDFail",
641 "e2err_RICSubscriptionFailureAllocRICaction_NotAdmitted_ItemIEsFail",
642 "e2err_RICSubscriptionFailureAllocRICActionAdmittedListFail",
643 "e2err_RICSubscriptionFailureEncodeFail",
644 "e2err_RICSubscriptionFailureAllocE2AP_PDUFail",
645 "e2err_E2SM_gNB_X2_indicationMessageAllocE2AP_PDUFail",
646 "e2err_RICSubscriptionDeleteRequestAllocRICrequestIDFail",
647 "e2err_RICSubscriptionDeleteRequestAllocRANfunctionIDFail",
648 "e2err_RICSubscriptionDeleteRequestEncodeFail",
649 "e2err_RICSubscriptionDeleteRequestAllocE2AP_PDUFail",
650 "e2err_RICSubscriptionDeleteResponseAllocRICrequestIDFail",
651 "e2err_RICSubscriptionDeleteResponseAllocRANfunctionIDFail",
652 "e2err_RICSubscriptionDeleteResponseEncodeFail",
653 "e2err_RICSubscriptionDeleteResponseAllocE2AP_PDUFail",
654 "e2err_RICSubscriptionDeleteFailureAllocRICrequestIDFail",
655 "e2err_RICSubscriptionDeleteFailureAllocRANfunctionIDFail",
656 "e2err_RICSubscriptionDeleteFailureAllocRICcauseFail",
657 "e2err_RICSubscriptionDeleteFailureEncodeFail",
658 "e2err_RICSubscriptionDeleteFailureAllocE2AP_PDUFail",
659 "e2err_RICsubscriptionRequestRICrequestIDMissing",
660 "e2err_RICsubscriptionRequestRANfunctionIDMissing",
661 "e2err_RICsubscriptionRequestICsubscriptionMissing",
662 "e2err_RICEventTriggerDefinitionIEValueFail_5",
663 "e2err_RICEventTriggerDefinitionIEValueFail_6",
664 "e2err_RICEventTriggerDefinitionIEValueFail_7",
665 "e2err_RICEventTriggerDefinitionIEValueFail_8",
666 "e2err_RICEventTriggerDefinitionDecodeWMOREFail",
667 "e2err_RICEventTriggerDefinitionDecodeFAIL",
668 "e2err_RICEventTriggerDefinitionDecodeDefaultFail",
669 "e2err_RICsubscriptionResponseRICrequestIDMissing",
670 "e2err_RICsubscriptionResponseRANfunctionIDMissing",
671 "e2err_RICsubscriptionResponseRICaction_Admitted_ListMissing",
672 "e2err_RICsubscriptionFailureRICrequestIDMissing",
673 "e2err_RICsubscriptionFailureRANfunctionIDMissing",
674 "e2err_RICsubscriptionFailureRICaction_NotAdmitted_ListMissing",
675 "e2err_RICEventTriggerDefinitionIEValueFail_9",
676 "e2err_RICEventTriggerDefinitionIEValueFail_10",
677 "e2err_RICEventTriggerDefinitionIEValueFail_11",
678 "e2err_RICsubscriptionDeleteRequestRICrequestIDMissing",
679 "e2err_RICsubscriptionDeleteRequestRANfunctionIDMissing",
680 "e2err_RICsubscriptionDeleteResponseRICrequestIDMissing",
681 "e2err_RICsubscriptionDeleteResponseRANfunctionIDMissing",
682 "e2err_RICsubscriptionDeleteFailureRICrequestIDMissing",
683 "e2err_RICsubscriptionDeleteFailureRANfunctionIDMissing",
684 "e2err_RICsubscriptionDeleteFailureRICcauseMissing"
688 uint64_t messageType; // Initiating message or Successful outcome or Unsuccessful outcome
692 //////////////////////////////////////////////////////////////////////
693 // Message definitons
695 // Below constant values are same as in E2AP, E2SM and X2AP specs
696 extern const uint64_t cE2InitiatingMessage;
697 extern const uint64_t cE2SuccessfulOutcome;
698 extern const uint64_t cE2UnsuccessfulOutcome;
700 // E2AP messages. Below message id constant values are the same as in ASN.1 specification
702 // Initiating message
703 extern const uint64_t cRICSubscriptionRequest;
704 extern const uint64_t cRICSubscriptionDeleteRequest;
706 // Successful outcome
707 extern const uint64_t cRICSubscriptionResponse;
708 extern const uint64_t cRICsubscriptionDeleteResponse;
710 // Unsuccessful outcome
711 extern const uint64_t cRICSubscriptionFailure;
712 extern const uint64_t cRICsubscriptionDeleteFailure;
715 RICRequestID_t ricRequestID;
716 RANFunctionID_t ranFunctionID;
717 RICSubscriptionDetails_t ricSubscriptionDetails;
718 } RICSubscriptionRequest_t;
721 RICRequestID_t ricRequestID;
722 RANFunctionID_t ranFunctionID;
723 RICActionAdmittedList_t ricActionAdmittedList;
724 bool ricActionNotAdmittedListPresent;
725 RICActionNotAdmittedList_t ricActionNotAdmittedList;
726 } RICSubscriptionResponse_t;
729 RICRequestID_t ricRequestID;
730 RANFunctionID_t ranFunctionID;
731 RICActionNotAdmittedList_t ricActionNotAdmittedList;
732 bool criticalityDiagnosticsPresent;
733 CriticalityDiagnostics__t criticalityDiagnostics;
734 } RICSubscriptionFailure_t;
737 RICRequestID_t ricRequestID;
738 RANFunctionID_t ranFunctionID;
739 } RICSubscriptionDeleteRequest_t;
742 RICRequestID_t ricRequestID;
743 RANFunctionID_t ranFunctionID;
744 } RICSubscriptionDeleteResponse_t;
747 RICRequestID_t ricRequestID;
748 RANFunctionID_t ranFunctionID;
750 bool criticalityDiagnosticsPresent;
751 CriticalityDiagnostics__t criticalityDiagnostics; // OPTIONAL. Not used in RIC currently
752 } RICSubscriptionDeleteFailure_t;
754 //////////////////////////////////////////////////////////////////////
755 // Function declarations
757 const char* getE2ErrorString(uint64_t);
759 typedef void* e2ap_pdu_ptr_t;
761 uint64_t packRICSubscriptionRequest(size_t*, byte*, char*,RICSubscriptionRequest_t*);
762 uint64_t packRICEventTriggerDefinition(char*,RICEventTriggerDefinition_t*);
763 uint64_t packRICActionDefinition(char*, RICActionDefinitionChoice_t*);
764 uint64_t packRICEventTriggerDefinitionX2Format(char* pLogBuffer, RICEventTriggerDefinition_t*);
765 uint64_t packRICEventTriggerDefinitionNRTFormat(char* pLogBuffer, RICEventTriggerDefinition_t*);
766 uint64_t packActionDefinitionX2Format(char*, RICActionDefinitionChoice_t*);
767 uint64_t packActionDefinitionNRTFormat(char*, RICActionDefinitionChoice_t*);
768 uint64_t packRICSubscriptionResponse(size_t*, byte*, char*,RICSubscriptionResponse_t*);
769 uint64_t packRICSubscriptionFailure(size_t*, byte*, char*,RICSubscriptionFailure_t*);
770 uint64_t packRICSubscriptionDeleteRequest(size_t*, byte*, char*,RICSubscriptionDeleteRequest_t*);
771 uint64_t packRICSubscriptionDeleteResponse(size_t*, byte*, char*,RICSubscriptionDeleteResponse_t*);
772 uint64_t packRICSubscriptionDeleteFailure(size_t*, byte*, char*,RICSubscriptionDeleteFailure_t*);
774 e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t, const byte*, char*, E2MessageInfo_t*);
775 uint64_t getRICSubscriptionRequestData(mem_track_hdr_t *, e2ap_pdu_ptr_t*, RICSubscriptionRequest_t*);
776 uint64_t getRICEventTriggerDefinitionData(RICEventTriggerDefinition_t*);
777 uint64_t getRICEventTriggerDefinitionDataX2Format(RICEventTriggerDefinition_t*);
778 uint64_t getRICEventTriggerDefinitionDataNRTFormat(RICEventTriggerDefinition_t*);
779 uint64_t getRICActionDefinitionData(mem_track_hdr_t *, RICActionDefinitionChoice_t*);
780 uint64_t getRICActionDefinitionDataX2Format(mem_track_hdr_t*, RICActionDefinitionChoice_t*);
781 uint64_t getRICActionDefinitionDataNRTFormat(mem_track_hdr_t*, RICActionDefinitionChoice_t*);
782 uint64_t getRICSubscriptionResponseData(e2ap_pdu_ptr_t*, RICSubscriptionResponse_t*);
783 uint64_t getRICSubscriptionFailureData(e2ap_pdu_ptr_t*, RICSubscriptionFailure_t*);
784 uint64_t getRICSubscriptionDeleteRequestData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteRequest_t*);
785 uint64_t getRICSubscriptionDeleteResponseData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteResponse_t*);
786 uint64_t getRICSubscriptionDeleteFailureData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteFailure_t*);
788 void* allocDynMem(mem_track_hdr_t*, size_t);
789 bool addOctetString(mem_track_hdr_t *, DynOctetString_t*, uint64_t, void*);
790 bool addBitString(mem_track_hdr_t *, DynBitString_t*, uint64_t, void*, uint8_t);
792 uint64_t allocActionDefinitionX2Format1(mem_track_hdr_t*, E2SMgNBX2actionDefinition_t**);
793 uint64_t allocActionDefinitionX2Format2(mem_track_hdr_t*, E2SMgNBX2ActionDefinitionFormat2_t**);
794 uint64_t allocActionDefinitionNRTFormat1(mem_track_hdr_t*, E2SMgNBNRTActionDefinitionFormat1_t**);
796 uint64_t allocateOctetStringBuffer(DynOctetString_t*, uint64_t);
797 uint64_t allocateBitStringBuffer(mem_track_hdr_t *, DynBitString_t*, uint64_t);
800 bool TestRICSubscriptionRequest();
801 bool TestRICSubscriptionResponse();
802 bool TestRICSubscriptionFailure();
803 bool TestRICSubscriptionDeleteRequest();
804 bool TestRICSubscriptionDeleteResponse();
805 bool TestRICSubscriptionDeleteFailure();
807 void printRICSubscriptionRequest(const RICSubscriptionRequest_t*);
808 void printRICSubscriptionResponse(const RICSubscriptionResponse_t*);
809 void printRICSubscriptionFailure(const RICSubscriptionFailure_t*);
810 void printRICSubscriptionDeleteRequest(const RICSubscriptionDeleteRequest_t*);
811 void printRICSubscriptionDeleteResponse(const RICSubscriptionDeleteResponse_t*);
812 void printRICSubscriptionDeleteFailure(const RICSubscriptionDeleteFailure_t*);