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
34 typedef unsigned char byte;
36 extern const int64_t cMaxNrOfErrors;
38 extern const uint64_t cMaxSizeOfOctetString;
40 typedef struct { // Octet string in ASN.1 does not have maximum length!
42 uint8_t data[1024]; // table size is const cMaxSizeOfOctetString
46 uint8_t unusedbits; // trailing unused bits 0 - 7
47 size_t byteLength; // length in bytes
52 uint32_t ricRequestorID;
53 uint32_t ricRequestSequenceNumber;
56 typedef uint16_t RANFunctionID_t;
58 typedef uint64_t RICActionID_t;
60 enum RICActionType_t {
66 typedef uint64_t StyleID_t;
68 typedef uint32_t ParameterID_t;
71 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.
75 ParameterID_t parameterID;
76 ParameterValue_t ParameterValue;
77 } SequenceOfActionParameters_t;
81 SequenceOfActionParameters_t sequenceOfActionParameters;
82 } RICActionDefinition_t;
84 enum RICSubsequentActionType_t {
85 RICSubsequentActionType_Continue,
86 RICSubsequentActionType_wait
89 enum RICTimeToWait_t {
100 RICTimeToWait_w200ms,
101 RICTimeToWait_w500ms,
111 uint64_t ricSubsequentActionType; // this is type of enum RICSubsequentActionType_t
112 uint64_t ricTimeToWait; // this is type of enum RICTimeToWait_t
113 } RICSubsequentAction_t;
116 RICActionID_t ricActionID;
117 uint64_t ricActionType; // this is type of enum RICActionType_t
118 bool ricActionDefinitionPresent;
119 RICActionDefinition_t ricActionDefinition;
120 bool ricSubsequentActionPresent;
121 RICSubsequentAction_t ricSubsequentAction;
122 } RICActionToBeSetupItem_t;
124 static const uint64_t cMaxofRICactionID = 16;
127 uint8_t contentLength;
128 RICActionToBeSetupItem_t ricActionToBeSetupItem[16]; // table size is const cMaxofRICactionID
129 } RICActionToBeSetupList_t;
132 uint8_t contentLength;
133 uint8_t pLMNIdentityVal[3];
137 extern const size_t cMacroENBIDP_20Bits;
138 extern const size_t cHomeENBID_28Bits;
139 extern const size_t cShortMacroENBID_18Bits;
140 extern const size_t clongMacroENBIDP_21Bits;
142 typedef struct { // gNB-ID (SIZE 22..32 bits) or eNB-ID (SIZE 18, 20,21 or 28 bits)
148 PLMNIdentity_t pLMNIdentity;
152 typedef struct { // CHOICE. Only either value can be present
153 bool globalENBIDPresent;
154 GlobalNodeID_t globalENBID;
155 bool globalGNBIDPresent;
156 GlobalNodeID_t globalGNBID;
159 enum InterfaceDirection__t {
160 InterfaceDirection__incoming,
161 InterfaceDirection__outgoing
164 typedef uint8_t ProcedureCode__t;
167 ProcedureCode__t procedureCode;
168 uint8_t typeOfMessage; // This is X2AP-PDU, CHOICE of InitiatingMessage or SuccessfulOutcome or UnsuccessfulOutcome
169 } RICInterfaceMessageType_t;
171 typedef uint32_t InterfaceProtocolIEID_t;
173 enum ProtocolIEtestCondition_t {
174 ProtocolIEtestCondition_equal,
175 ProtocolIEtestCondition_greaterthan,
176 ProtocolIEtestCondition_lessthan,
177 ProtocolIEtestCondition_contains,
178 ProtocolIEtestCondition_present
181 typedef struct { // CHOICE. Only one value can be present
182 bool valueIntPresent;
183 int64_t integer; //INTEGER;
184 bool valueEnumPresent;
185 int64_t valueEnum; // INTEGER
186 bool valueBoolPresent;
187 bool valueBool; // BOOLEAN
188 bool valueBitSPresent;
189 Bitstring_t octetstring; // OCTET STRING,
190 bool octetstringPresent;
191 OctetString_t octetString; // OCTET STRING,
192 } InterfaceProtocolIEValue_t;
195 InterfaceProtocolIEID_t interfaceProtocolIEID;
196 //ProtocolIEtestCondition_t protocolIEtestCondition; Golang do not like this line. We do not need this right now.
197 InterfaceProtocolIEValue_t interfaceProtocolIEValue;
198 } SequenceOfProtocolIE_t;
200 static const uint64_t cMaxofProtocolIE = 16;
203 SequenceOfProtocolIE_t sequenceOfProtocolIE[16]; // table size is const cMaxofProtocolIE
204 } SequenceOfProtocolIEList_t;
207 OctetString_t octetString; // E2AP spec format, the other elements for E2SM-X2 format
208 InterfaceID_t interfaceID;
209 uint8_t interfaceDirection; // this is type of enum InterfaceDirection_t
210 RICInterfaceMessageType_t interfaceMessageType ;
211 bool sequenceOfProtocolIEListPresent;
212 SequenceOfProtocolIEList_t SequenceOfProtocolIEList;
213 } RICEventTriggerDefinition_t;
216 RICEventTriggerDefinition_t ricEventTriggerDefinition;
217 RICActionToBeSetupList_t ricActionToBeSetupItemIEs;
221 uint8_t contentLength;
222 RICActionID_t ricActionID[16]; // table size is const cMaxofRICactionID
223 } RICActionAdmittedList_t;
226 CauseRIC__function_id_Invalid,
227 CauseRIC__action_not_supported,
228 CauseRIC__excessive_actions,
229 CauseRIC__duplicate_action,
230 CauseRIC__duplicate_event,
231 CauseRIC__function_resource_limit,
232 CauseRIC__request_id_unknown,
233 CauseRIC__inconsistent_action_subsequent_action_sequence,
234 CauseRIC__control_message_invalid,
235 CauseRIC__call_process_id_invalid,
236 CauseRIC__function_not_required,
237 CauseRIC__excessive_functions,
238 CauseRIC__ric_resource_limit
241 extern const int cRICCauseRadioNetwork; // this is content of type RICCause_t
242 extern const int cRICCauseTransport; // this is content of type RICCause_t
243 extern const int cRICCauseProtocol; // this is content of type RICCause_t
244 extern const int cRICCauseMisc; // this is content of type RICCause_t
245 extern const int cRICCauseRic; // this is content of type RICCause_t
248 uint8_t content; // See above constants
249 uint8_t cause; // this is type of enum CauseRIC_t
253 RICActionID_t ricActionID;
255 } RICActionNotAdmittedItem_t;
258 uint8_t contentLength;
259 RICActionNotAdmittedItem_t RICActionNotAdmittedItem[16]; // table size is const cMaxofRICactionID
260 } RICActionNotAdmittedList_t;
268 typedef uint32_t ProtocolIE_ID__t;
270 enum TriggeringMessage__t {
271 TriggeringMessage__initiating_message,
272 TriggeringMessage__successful_outcome,
273 TriggeringMessage__unsuccessful_outcome
277 TypeOfError_not_understood,
282 uint8_t iECriticality; // this is type of enum Criticality_t
283 ProtocolIE_ID__t iE_ID;
284 uint8_t typeOfError; // this is type of enum TypeOfError_t
285 //iE-Extensions // This has no content in E2AP ASN.1 specification
286 } CriticalityDiagnosticsIEListItem_t;
289 bool procedureCodePresent;
290 ProcedureCode__t procedureCode;
291 bool triggeringMessagePresent;
292 uint8_t triggeringMessage; // this is type of enum TriggeringMessage_t
293 bool procedureCriticalityPresent;
294 uint8_t procedureCriticality; // this is type of enum Criticality_t
295 bool iEsCriticalityDiagnosticsPresent;
296 uint16_t criticalityDiagnosticsIELength;
297 CriticalityDiagnosticsIEListItem_t criticalityDiagnosticsIEListItem[256]; // table size is const cMaxNrOfErrors
298 //iE-Extensions // This has no content in E2AP ASN.1 specification
300 } CriticalityDiagnostics__t;
302 typedef int32_t RICIndicationSN_t;
304 enum RICIndicationType_t {
305 RICIndicationType_RICIndicationTypeReport,
306 RICIndicationType_RICIndicationTypeInsert
310 OctetString_t octetString; // E2AP spec format, the other elements for E2SM-X2 format
311 InterfaceID_t interfaceID;
312 uint8_t interfaceDirection;
313 } RICIndicationHeader_t;
316 OctetString_t octetString; // E2AP spec format, the other elements for E2SM-X2 format
317 OctetString_t interfaceMessage;
318 } RICIndicationMessage_t;
321 OctetString_t octetString; // E2AP spec format, the other elements for E2SM-X2 format
322 uint64_t ricCallProcessIDVal;
323 } RICCallProcessID_t;
325 //////////////////////////////////////////////////////////////////////
329 e2err_RICSubscriptionRequestAllocRICrequestIDFail,
330 e2err_RICSubscriptionRequestAllocRANfunctionIDFail,
331 e2err_RICSubscriptionRequestAllocRICeventTriggerDefinitionBufFail,
332 e2err_RICSubscriptionRequestAllocRICaction_ToBeSetup_ItemIEsFail,
333 e2err_RICSubscriptionRequestAllocRICsubsequentActionFail,
334 e2err_RICSubscriptionRequestAllocRICsubscriptionRequest_IEsFail,
335 e2err_RICSubscriptionRequestEncodeFail,
336 e2err_RICSubscriptionRequestAllocE2AP_PDUFail,
337 e2err_RICEventTriggerDefinitionIEValueFail_1,
338 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDpLMN_IdentityBufFail,
339 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail,
340 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDhome_eNB_IDBufFail,
341 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail,
342 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail,
343 e2err_RICEventTriggerDefinitionIEValueFail_2,
344 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDpLMN_IdentityBufFail,
345 e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDgNB_IDBufFail,
346 e2err_RICEventTriggerDefinitionIEValueFail_3,
347 e2err_RICEventTriggerDefinitionIEValueFail_4,
348 e2err_RICEventTriggerDefinitionPackFail_1,
349 e2err_RICEventTriggerDefinitionPackFail_2,
350 e2err_RICEventTriggerDefinitionAllocE2SM_gNB_X2_eventTriggerDefinitionFail,
351 e2err_RICSubscriptionResponseAllocRICrequestIDFail,
352 e2err_RICSubscriptionResponseAllocRANfunctionIDFail,
353 e2err_RICSubscriptionResponseAllocRICaction_Admitted_ItemIEsFail,
354 e2err_RICSubscriptionResponseAllocRICActionAdmittedListFail,
355 e2err_RICSubscriptionResponseAllocRICaction_NotAdmitted_ItemIEsFail,
356 e2err_RICSubscriptionResponseAllocRICActionNotAdmittedListFail,
357 e2err_RICSubscriptionResponseEncodeFail,
358 e2err_RICSubscriptionResponseAllocE2AP_PDUFail,
359 e2err_RICSubscriptionFailureAllocRICrequestIDFail,
360 e2err_RICSubscriptionFailureAllocRANfunctionIDFail,
361 e2err_RICSubscriptionFailureAllocRICaction_NotAdmitted_ItemIEsFail,
362 e2err_RICSubscriptionFailureAllocRICActionAdmittedListFail,
363 e2err_RICSubscriptionFailureEncodeFail,
364 e2err_RICSubscriptionFailureAllocE2AP_PDUFail,
365 e2err_RICIndicationRICrequestIDFail,
366 e2err_RICIndicationAllocRANfunctionIDFail,
367 e2err_RICIndicationAllocRICactionIDFail,
368 e2err_RICIndicationAllocRICindicationSNFail,
369 e2err_RICIndicationAllocRICindicationTypeFail,
370 e2err_RICIndicationAllocRRICindicationHeaderBufFail,
371 e2err_RICIndicationAllocRICindicationHeaderFail,
372 e2err_RICIndicationAllocRICindicationMessageBufFail,
373 e2err_RICIndicationAllocRICindicationMessageFail,
374 e2err_RICIndicationEncodeFail,
375 e2err_RICIndicationAllocE2AP_PDUFail,
376 e2err_RICindicationHeaderIEValueFail_1,
377 e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDpLMN_IdentityBufFail,
378 e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail,
379 e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDhome_eNB_IDBufFail,
380 e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail,
381 e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail,
382 e2err_RICindicationHeaderIEValueFail_2,
383 e2err_RICIndicationAllocRICIndicationHeaderglobal_gNB_IDpLMN_IdentityBufFail,
384 e2err_RICIndicationAllocRICIndicationHeaderglobal_gNB_IDgNB_IDgNB_IDBufFail,
385 e2err_RICindicationHeaderIEValueFail_3,
386 e2err_RICindicationHeaderPackFail_1,
387 e2err_RICindicationHeaderPackFail_2,
388 e2err_RICIndicationHeaderAllocE2AP_PDUFail,
389 e2err_RICIndicationMessageAllocinterfaceMessageFail,
390 e2err_RICindicationMessagePackFail_1,
391 e2err_RICindicationMessagePackFail_2,
392 e2err_E2SM_gNB_X2_indicationMessageAllocE2AP_PDUFail,
393 e2err_RICSubscriptionDeleteRequestAllocRICrequestIDFail,
394 e2err_RICSubscriptionDeleteRequestAllocRANfunctionIDFail,
395 e2err_RICSubscriptionDeleteRequestEncodeFail,
396 e2err_RICSubscriptionDeleteRequestAllocE2AP_PDUFail,
397 e2err_RICSubscriptionDeleteResponseAllocRICrequestIDFail,
398 e2err_RICSubscriptionDeleteResponseAllocRANfunctionIDFail,
399 e2err_RICSubscriptionDeleteResponseEncodeFail,
400 e2err_RICSubscriptionDeleteResponseAllocE2AP_PDUFail,
401 e2err_RICSubscriptionDeleteFailureAllocRICrequestIDFail,
402 e2err_RICSubscriptionDeleteFailureAllocRANfunctionIDFail,
403 e2err_RICSubscriptionDeleteFailureAllocRICcauseFail,
404 e2err_RICSubscriptionDeleteFailureEncodeFail,
405 e2err_RICSubscriptionDeleteFailureAllocE2AP_PDUFail,
406 e2err_RICsubscriptionRequestRICrequestIDMissing,
407 e2err_RICsubscriptionRequestRANfunctionIDMissing,
408 e2err_RICsubscriptionRequestICsubscriptionMissing,
409 e2err_RICEventTriggerDefinitionIEValueFail_5,
410 e2err_RICEventTriggerDefinitionIEValueFail_6,
411 e2err_RICEventTriggerDefinitionIEValueFail_7,
412 e2err_RICEventTriggerDefinitionIEValueFail_8,
413 e2err_RICEventTriggerDefinitionDecodeWMOREFail,
414 e2err_RICEventTriggerDefinitionDecodeFAIL,
415 e2err_RICEventTriggerDefinitionDecodeDefaultFail,
416 e2err_RICsubscriptionResponseRICrequestIDMissing,
417 e2err_RICsubscriptionResponseRANfunctionIDMissing,
418 e2err_RICsubscriptionResponseRICaction_Admitted_ListMissing,
419 e2err_RICsubscriptionResponseRICaction_NotAdmitted_ListMissing,
420 e2err_RICsubscriptionFailureRICrequestIDMissing,
421 e2err_RICsubscriptionFailureRANfunctionIDMissing,
422 e2err_RICsubscriptionFailureRICaction_NotAdmitted_ListMissing,
423 e2err_RICindicationRICrequestIDMissing,
424 e2err_RICindicationRANfunctionIDMissing,
425 e2err_RICindicationRICactionIDMissing,
426 e2err_RICindicationRICindicationSNMissing,
427 e2err_RICindicationRICindicationTypeMissing,
428 e2err_RICIndicationHeaderContentLengthFail,
429 e2err_RICindicationRICindicationHeaderMissing,
430 e2err_RICIndicationMessageContentLengthFail,
431 e2err_RICindicationRICindicationMessageMissing,
432 e2err_RICEventTriggerDefinitionIEValueFail_9,
433 e2err_RICEventTriggerDefinitionIEValueFail_10,
434 e2err_RICEventTriggerDefinitionIEValueFail_11,
435 e2err_RICIndicationHeaderDecodeWMOREFail,
436 e2err_RICIndicationHeaderDecodeFAIL,
437 e2err_RICIndicationHeaderDecodeDefaultFail,
438 e2err_RICIndicationMessageIEContentLengthFail,
439 e2err_RICIndicationMessageDecodeWMOREFail,
440 e2err_RICIndicationMessageDecodeFAIL,
441 e2err_RICIndicationMessageDecodeDefaultFail,
442 e2err_RICsubscriptionDeleteRequestRICrequestIDMissing,
443 e2err_RICsubscriptionDeleteRequestRANfunctionIDMissing,
444 e2err_RICsubscriptionDeleteResponseRICrequestIDMissing,
445 e2err_RICsubscriptionDeleteResponseRANfunctionIDMissing,
446 e2err_RICsubscriptionDeleteFailureRICrequestIDMissing,
447 e2err_RICsubscriptionDeleteFailureRANfunctionIDMissing,
448 e2err_RICsubscriptionDeleteFailureRICcauseMissing
452 static const char* const E2ErrorStrings[] = {
454 "e2err_RICSubscriptionRequestAllocRICrequestIDFail",
455 "e2err_RICSubscriptionRequestAllocRANfunctionIDFail",
456 "e2err_RICSubscriptionRequestAllocRICeventTriggerDefinitionBufFail",
457 "e2err_RICSubscriptionRequestAllocRICaction_ToBeSetup_ItemIEsFail",
458 "e2err_RICSubscriptionRequestAllocRICsubsequentActionFail",
459 "e2err_RICSubscriptionRequestAllocRICsubscriptionRequest_IEsFail",
460 "e2err_RICSubscriptionRequestEncodeFail",
461 "e2err_RICSubscriptionRequestAllocE2AP_PDUFail",
462 "e2err_RICEventTriggerDefinitionIEValueFail_1",
463 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDpLMN_IdentityBufFail",
464 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail",
465 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDhome_eNB_IDBufFail",
466 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail",
467 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail",
468 "e2err_RICEventTriggerDefinitionIEValueFail_2",
469 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDpLMN_IdentityBufFail",
470 "e2err_RICIndicationAllocRICEventTriggerDefinitionglobal_gNB_IDgNB_IDBufFail",
471 "e2err_RICEventTriggerDefinitionIEValueFail_3",
472 "e2err_RICEventTriggerDefinitionIEValueFail_4",
473 "e2err_RICEventTriggerDefinitionPackFail_1",
474 "e2err_RICEventTriggerDefinitionPackFail_2",
475 "e2err_RICEventTriggerDefinitionAllocE2SM_gNB_X2_eventTriggerDefinitionFail",
476 "e2err_RICSubscriptionResponseAllocRICrequestIDFail",
477 "e2err_RICSubscriptionResponseAllocRANfunctionIDFail",
478 "e2err_RICSubscriptionResponseAllocRICaction_Admitted_ItemIEsFail",
479 "e2err_RICSubscriptionResponseAllocRICActionAdmittedListFail",
480 "e2err_RICSubscriptionResponseAllocRICaction_NotAdmitted_ItemIEsFail",
481 "e2err_RICSubscriptionResponseAllocRICActionNotAdmittedListFail",
482 "e2err_RICSubscriptionResponseEncodeFail",
483 "e2err_RICSubscriptionResponseAllocE2AP_PDUFail",
484 "e2err_RICSubscriptionFailureAllocRICrequestIDFail",
485 "e2err_RICSubscriptionFailureAllocRANfunctionIDFail",
486 "e2err_RICSubscriptionFailureAllocRICaction_NotAdmitted_ItemIEsFail",
487 "e2err_RICSubscriptionFailureAllocRICActionAdmittedListFail",
488 "e2err_RICSubscriptionFailureEncodeFail",
489 "e2err_RICSubscriptionFailureAllocE2AP_PDUFail",
490 "e2err_RICIndicationRICrequestIDFail",
491 "e2err_RICIndicationAllocRANfunctionIDFail",
492 "e2err_RICIndicationAllocRICactionIDFail",
493 "e2err_RICIndicationAllocRICindicationSNFail",
494 "e2err_RICIndicationAllocRICindicationTypeFail",
495 "e2err_RICIndicationAllocRRICindicationHeaderBufFail",
496 "e2err_RICIndicationAllocRICindicationHeaderFail",
497 "e2err_RICIndicationAllocRICindicationMessageBufFail",
498 "e2err_RICIndicationAllocRICindicationMessageFail",
499 "e2err_RICIndicationEncodeFail",
500 "e2err_RICIndicationAllocE2AP_PDUFail",
501 "e2err_RICindicationHeaderIEValueFail_1",
502 "e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDpLMN_IdentityBufFail",
503 "e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDmacro_eNB_IDBufFail",
504 "e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDhome_eNB_IDBufFail",
505 "e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDshort_Macro_eNB_IDBufFail",
506 "e2err_RICIndicationAllocRICIndicationHeaderglobal_eNB_IDeNB_IDlong_Macro_eNB_IDBufFail",
507 "e2err_RICindicationHeaderIEValueFail_2",
508 "e2err_RICIndicationAllocRICIndicationHeaderglobal_gNB_IDpLMN_IdentityBufFail",
509 "e2err_RICIndicationAllocRICIndicationHeaderglobal_gNB_IDgNB_IDgNB_IDBufFail",
510 "e2err_RICindicationHeaderIEValueFail_3",
511 "e2err_RICindicationHeaderPackFail_1",
512 "e2err_RICindicationHeaderPackFail_2",
513 "e2err_RICIndicationHeaderAllocE2AP_PDUFail",
514 "e2err_RICIndicationMessageAllocinterfaceMessageFail",
515 "e2err_RICindicationMessagePackFail_1",
516 "e2err_RICindicationMessagePackFail_2",
517 "e2err_E2SM_gNB_X2_indicationMessageAllocE2AP_PDUFail",
518 "e2err_RICSubscriptionDeleteRequestAllocRICrequestIDFail",
519 "e2err_RICSubscriptionDeleteRequestAllocRANfunctionIDFail",
520 "e2err_RICSubscriptionDeleteRequestEncodeFail",
521 "e2err_RICSubscriptionDeleteRequestAllocE2AP_PDUFail",
522 "e2err_RICSubscriptionDeleteResponseAllocRICrequestIDFail",
523 "e2err_RICSubscriptionDeleteResponseAllocRANfunctionIDFail",
524 "e2err_RICSubscriptionDeleteResponseEncodeFail",
525 "e2err_RICSubscriptionDeleteResponseAllocE2AP_PDUFail",
526 "e2err_RICSubscriptionDeleteFailureAllocRICrequestIDFail",
527 "e2err_RICSubscriptionDeleteFailureAllocRANfunctionIDFail",
528 "e2err_RICSubscriptionDeleteFailureAllocRICcauseFail",
529 "e2err_RICSubscriptionDeleteFailureEncodeFail",
530 "e2err_RICSubscriptionDeleteFailureAllocE2AP_PDUFail",
531 "e2err_RICsubscriptionRequestRICrequestIDMissing",
532 "e2err_RICsubscriptionRequestRANfunctionIDMissing",
533 "e2err_RICsubscriptionRequestICsubscriptionMissing",
534 "e2err_RICEventTriggerDefinitionIEValueFail_5",
535 "e2err_RICEventTriggerDefinitionIEValueFail_6",
536 "e2err_RICEventTriggerDefinitionIEValueFail_7",
537 "e2err_RICEventTriggerDefinitionIEValueFail_8",
538 "e2err_RICEventTriggerDefinitionDecodeWMOREFail",
539 "e2err_RICEventTriggerDefinitionDecodeFAIL",
540 "e2err_RICEventTriggerDefinitionDecodeDefaultFail",
541 "e2err_RICsubscriptionResponseRICrequestIDMissing",
542 "e2err_RICsubscriptionResponseRANfunctionIDMissing",
543 "e2err_RICsubscriptionResponseRICaction_Admitted_ListMissing",
544 "e2err_RICsubscriptionResponseRICaction_NotAdmitted_ListMissing",
545 "e2err_RICsubscriptionFailureRICrequestIDMissing",
546 "e2err_RICsubscriptionFailureRANfunctionIDMissing",
547 "e2err_RICsubscriptionFailureRICaction_NotAdmitted_ListMissing",
548 "e2err_RICindicationRICrequestIDMissing",
549 "e2err_RICindicationRANfunctionIDMissing",
550 "e2err_RICindicationRICactionIDMissing",
551 "e2err_RICindicationRICindicationSNMissing",
552 "e2err_RICindicationRICindicationTypeMissing",
553 "e2err_RICIndicationHeaderContentLengthFail",
554 "e2err_RICindicationRICindicationHeaderMissing",
555 "e2err_RICIndicationMessageContentLengthFail",
556 "e2err_RICindicationRICindicationMessageMissing",
557 "e2err_RICEventTriggerDefinitionIEValueFail_9",
558 "e2err_RICEventTriggerDefinitionIEValueFail_10",
559 "e2err_RICEventTriggerDefinitionIEValueFail_11",
560 "e2err_RICIndicationHeaderDecodeWMOREFail",
561 "e2err_RICIndicationHeaderDecodeFAIL",
562 "e2err_RICIndicationHeaderDecodeDefaultFail",
563 "e2err_RICIndicationMessageIEContentLengthFail",
564 "e2err_RICIndicationMessageDecodeWMOREFail",
565 "e2err_RICIndicationMessageDecodeFAIL",
566 "e2err_RICIndicationMessageDecodeDefaultFail",
567 "e2err_RICsubscriptionDeleteRequestRICrequestIDMissing",
568 "e2err_RICsubscriptionDeleteRequestRANfunctionIDMissing",
569 "e2err_RICsubscriptionDeleteResponseRICrequestIDMissing",
570 "e2err_RICsubscriptionDeleteResponseRANfunctionIDMissing",
571 "e2err_RICsubscriptionDeleteFailureRICrequestIDMissing",
572 "e2err_RICsubscriptionDeleteFailureRANfunctionIDMissing",
573 "e2err_RICsubscriptionDeleteFailureRICcauseMissing"
577 uint64_t messageType; // Initiating message or Successful outcome or Unsuccessful outcome
581 //////////////////////////////////////////////////////////////////////
582 // Message definitons
584 // Below constant values are same as in E2AP, E2SM and X2AP specs
585 extern const uint64_t cE2InitiatingMessage;
586 extern const uint64_t cE2SuccessfulOutcome;
587 extern const uint64_t cE2UnsuccessfulOutcome;
589 // E2AP messages. Below message id constant values are the same as in ASN.1 specification
591 // Initiating message
592 extern const uint64_t cRICSubscriptionRequest;
593 extern const uint64_t cRICSubscriptionDeleteRequest;
594 extern const uint64_t cRICIndication;
596 // Successful outcome
597 extern const uint64_t cRICSubscriptionResponse;
598 extern const uint64_t cRICsubscriptionDeleteResponse;
600 // Unsuccessful outcome
601 extern const uint64_t cRICSubscriptionFailure;
602 extern const uint64_t cRICsubscriptionDeleteFailure;
605 RICRequestID_t ricRequestID;
606 RANFunctionID_t ranFunctionID;
607 RICSubscription_t ricSubscription;
608 } RICSubscriptionRequest_t;
611 RICRequestID_t ricRequestID;
612 RANFunctionID_t ranFunctionID;
613 RICActionAdmittedList_t ricActionAdmittedList;
614 bool ricActionNotAdmittedListPresent;
615 RICActionNotAdmittedList_t ricActionNotAdmittedList;
616 } RICSubscriptionResponse_t;
620 RICRequestID_t ricRequestID;
621 RANFunctionID_t ranFunctionID;
622 RICActionNotAdmittedList_t ricActionNotAdmittedList;
623 bool criticalityDiagnosticsPresent;
624 CriticalityDiagnostics__t criticalityDiagnostics;
625 } RICSubscriptionFailure_t;
628 RICRequestID_t ricRequestID;
629 RANFunctionID_t ranFunctionID;
630 RICActionID_t ricActionID;
631 RICIndicationSN_t ricIndicationSN;
632 uint64_t ricIndicationType; // this is type of enum RICIndicationType_t
633 RICIndicationHeader_t ricIndicationHeader;
634 RICIndicationMessage_t ricIndicationMessage;
635 RICCallProcessID_t ricCallProcessID; // Not usein RIC currently
639 RICRequestID_t ricRequestID;
640 RANFunctionID_t ranFunctionID;
641 } RICSubscriptionDeleteRequest_t;
644 RICRequestID_t ricRequestID;
645 RANFunctionID_t ranFunctionID;
646 } RICSubscriptionDeleteResponse_t;
649 RICRequestID_t ricRequestID;
650 RANFunctionID_t ranFunctionID;
652 bool criticalityDiagnosticsPresent;
653 CriticalityDiagnostics__t criticalityDiagnostics; // Not usein RIC currently
654 } RICSubscriptionDeleteFailure_t;
656 //////////////////////////////////////////////////////////////////////
657 // Function declarations
659 const char* getE2ErrorString(uint64_t);
661 typedef void* e2ap_pdu_ptr_t;
663 uint64_t packRICSubscriptionRequest(size_t*, byte*, char*,RICSubscriptionRequest_t*);
664 uint64_t packRICEventTriggerDefinition(char*,RICEventTriggerDefinition_t*);
665 uint64_t packRICSubscriptionResponse(size_t*, byte*, char*,RICSubscriptionResponse_t*);
666 uint64_t packRICSubscriptionFailure(size_t*, byte*, char*,RICSubscriptionFailure_t*);
667 uint64_t packRICIndication(size_t*, byte*, char*,RICIndication_t*);
668 uint64_t packRICIndicationHeader(char*,RICIndicationHeader_t*);
669 uint64_t packRICIndicationMessage(char*,RICIndicationMessage_t*);
670 uint64_t packRICSubscriptionDeleteRequest(size_t*, byte*, char*,RICSubscriptionDeleteRequest_t*);
671 uint64_t packRICSubscriptionDeleteResponse(size_t*, byte*, char*,RICSubscriptionDeleteResponse_t*);
672 uint64_t packRICSubscriptionDeleteFailure(size_t*, byte*, char*,RICSubscriptionDeleteFailure_t*);
674 e2ap_pdu_ptr_t* unpackE2AP_pdu(const size_t, const byte*, char*, E2MessageInfo_t*);
675 uint64_t getRICSubscriptionRequestData(e2ap_pdu_ptr_t*, RICSubscriptionRequest_t*);
676 uint64_t getRICEventTriggerDefinitionData(RICEventTriggerDefinition_t*);
677 uint64_t getRICSubscriptionResponseData(e2ap_pdu_ptr_t*, RICSubscriptionResponse_t*);
678 uint64_t getRICSubscriptionFailureData(e2ap_pdu_ptr_t*, RICSubscriptionFailure_t*);
679 uint64_t getRICIndicationData(e2ap_pdu_ptr_t*, RICIndication_t*);
680 uint64_t getRICIndicationHeaderData(RICIndicationHeader_t*);
681 uint64_t getRICIndicationMessageData(RICIndicationMessage_t*);
682 uint64_t getRICSubscriptionDeleteRequestData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteRequest_t*);
683 uint64_t getRICSubscriptionDeleteResponseData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteResponse_t*);
684 uint64_t getRICSubscriptionDeleteFailureData(e2ap_pdu_ptr_t*, RICSubscriptionDeleteFailure_t*);
688 bool TestRICSubscriptionRequest();
689 bool TestRICSubscriptionResponse();
690 bool TestRICSubscriptionFailure();
691 bool TestRICIndication();
692 bool TestRICSubscriptionDeleteRequest();
693 bool TestRICSubscriptionDeleteResponse();
694 bool TestRICSubscriptionDeleteFailure();
696 void printRICSubscriptionRequest(const RICSubscriptionRequest_t*);
697 void printRICSubscriptionResponse(const RICSubscriptionResponse_t*);
698 void printRICSubscriptionFailure(const RICSubscriptionFailure_t*);
699 void printRICIndication(const RICIndication_t*);
700 void printRICSubscriptionDeleteRequest(const RICSubscriptionDeleteRequest_t*);
701 void printRICSubscriptionDeleteResponse(const RICSubscriptionDeleteResponse_t*);
702 void printRICSubscriptionDeleteFailure(const RICSubscriptionDeleteFailure_t*);