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 ==================================================================================
28 const size_t cDataBufferSize = 2048;
35 //////////////////////////////////////////////////////////////////////
36 bool TestRICSubscriptionRequest() {
37 RICSubscriptionRequest_t ricSubscriptionRequest;
38 ricSubscriptionRequest.ricRequestID.ricRequestorID = 1;
39 ricSubscriptionRequest.ricRequestID.ricRequestSequenceNumber = 22;
40 ricSubscriptionRequest.ranFunctionID = 33;
42 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.octetString.contentLength = 0;
44 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBIDPresent = true;
45 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceID.globalGNBIDPresent = false;
46 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.contentLength = 3;
47 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[0] = 1;
48 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[1] = 2;
49 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[2] = 3;
51 // ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.eNBID.bits = cMacroENBIDP_20Bits;
52 // ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.eNBID.bits = cHomeENBID_28Bits;
53 // ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.eNBID.bits = cShortMacroENBID_18Bits;
54 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.nodeID.bits = clongMacroENBIDP_21Bits;
56 IdOctects_t eNBOctects;
57 memset(eNBOctects.octets, 0, sizeof(eNBOctects));
58 eNBOctects.octets[0] = 11;
59 eNBOctects.octets[1] = 22;
60 eNBOctects.octets[2] = 31;
61 eNBOctects.octets[3] = 1;
62 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID = eNBOctects.nodeID;
63 printf("eNBOctects.nodeID = %u\n\n",eNBOctects.nodeID);
65 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceDirection = InterfaceDirection__incoming;
66 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceMessageType.procedureCode = 35; // id-rRCTransfer
67 ricSubscriptionRequest.ricSubscription.ricEventTriggerDefinition.interfaceMessageType.typeOfMessage = cE2InitiatingMessage;
69 ricSubscriptionRequest.ricSubscription.ricActionToBeSetupItemIEs.contentLength = 1;
71 while (index < ricSubscriptionRequest.ricSubscription.ricActionToBeSetupItemIEs.contentLength) {
72 ricSubscriptionRequest.ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionID = 255; //index;
73 ricSubscriptionRequest.ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionType = RICActionType_insert;
75 // ricActionDefinition, OPTIONAL. Not used in RIC
76 ricSubscriptionRequest.ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionPresent = false; //true;
77 ricSubscriptionRequest.ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinition.styleID = 255;
78 ricSubscriptionRequest.ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinition.sequenceOfActionParameters.parameterID = 222;
80 // ricSubsequentActionPresent, OPTIONAL
81 ricSubscriptionRequest.ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentActionPresent = true;
82 ricSubscriptionRequest.ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentAction.ricSubsequentActionType = RICSubsequentActionType_Continue;
83 ricSubscriptionRequest.ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentAction.ricTimeToWait = RICTimeToWait_w100ms;
87 printRICSubscriptionRequest(&ricSubscriptionRequest);
89 uint64_t logBufferSize = 1024;
90 char logBuffer[logBufferSize];
91 uint64_t dataBufferSize = cDataBufferSize;
92 byte dataBuffer[dataBufferSize];
93 if (packRICSubscriptionRequest(&dataBufferSize, dataBuffer, logBuffer, &ricSubscriptionRequest) == e2err_OK)
95 memset(&ricSubscriptionRequest,0, sizeof ricSubscriptionRequest);
97 E2MessageInfo_t messageInfo;
98 e2ap_pdu_ptr_t* pE2AP_PDU = unpackE2AP_pdu(dataBufferSize, dataBuffer, logBuffer, &messageInfo);
100 if (messageInfo.messageType == cE2InitiatingMessage) {
101 if (messageInfo.messageId == cRICSubscriptionRequest) {
102 if ((returnCode = getRICSubscriptionRequestData(pE2AP_PDU, &ricSubscriptionRequest)) == e2err_OK) {
103 printRICSubscriptionRequest(&ricSubscriptionRequest);
107 printf("Error in getRICSubscriptionRequestData. ReturnCode = %s",getE2ErrorString(returnCode));
110 printf("Not RICSubscriptionRequest\n");
113 printf("Not InitiatingMessage\n");
116 printf("%s",logBuffer);
119 printf("%s",logBuffer);
123 //////////////////////////////////////////////////////////////////////
124 bool TestRICSubscriptionResponse() {
125 // Test RICSubscribeResponse
126 RICSubscriptionResponse_t ricSubscriptionResponse;
127 ricSubscriptionResponse.ricRequestID.ricRequestorID = 1;
128 ricSubscriptionResponse.ricRequestID.ricRequestSequenceNumber = 22;
129 ricSubscriptionResponse.ranFunctionID = 33;
130 ricSubscriptionResponse.ricActionAdmittedList.contentLength = 16;
132 while (index < ricSubscriptionResponse.ricActionAdmittedList.contentLength) {
133 ricSubscriptionResponse.ricActionAdmittedList.ricActionID[index] = index;
136 ricSubscriptionResponse.ricActionNotAdmittedListPresent = true;
137 ricSubscriptionResponse.ricActionNotAdmittedList.contentLength = 16;
139 while (index < ricSubscriptionResponse.ricActionNotAdmittedList.contentLength) {
140 ricSubscriptionResponse.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricActionID = index;
141 ricSubscriptionResponse.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.content = cRICCauseRadioNetwork;
142 ricSubscriptionResponse.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.cause = index;
146 printRICSubscriptionResponse(&ricSubscriptionResponse);
148 uint64_t logBufferSize = 1024;
149 char logBuffer[logBufferSize];
150 uint64_t dataBufferSize = cDataBufferSize;
151 byte dataBuffer[dataBufferSize];
152 if (packRICSubscriptionResponse(&dataBufferSize, dataBuffer, logBuffer, &ricSubscriptionResponse) == e2err_OK)
154 memset(&ricSubscriptionResponse,0, sizeof ricSubscriptionResponse);
156 E2MessageInfo_t messageInfo;
157 e2ap_pdu_ptr_t* pE2AP_PDU = unpackE2AP_pdu(dataBufferSize, dataBuffer, logBuffer, &messageInfo);
158 if (pE2AP_PDU != 0) {
159 if (messageInfo.messageType == cE2SuccessfulOutcome) {
160 if (messageInfo.messageId == cRICSubscriptionResponse) {
161 if ((returnCode = getRICSubscriptionResponseData(pE2AP_PDU, &ricSubscriptionResponse)) == e2err_OK) {
162 printRICSubscriptionResponse(&ricSubscriptionResponse);
166 printf("Error in getRICSubscriptionResponseData. ReturnCode = %s",getE2ErrorString(returnCode));
169 printf("Not RICSubscriptionResponse\n");
172 printf("Not SuccessfulOutcome\n");
175 printf("%s",logBuffer);
178 printf("%s",logBuffer);
182 //////////////////////////////////////////////////////////////////////
183 bool TestRICSubscriptionFailure() {
184 // Test RICSubscribeFailure
185 RICSubscriptionFailure_t ricSubscriptionFailure;
186 ricSubscriptionFailure.ricRequestID.ricRequestorID = 1;
187 ricSubscriptionFailure.ricRequestID.ricRequestSequenceNumber = 22;
188 ricSubscriptionFailure.ranFunctionID = 33;
189 ricSubscriptionFailure.ricActionNotAdmittedList.contentLength = 16;
191 while (index < ricSubscriptionFailure.ricActionNotAdmittedList.contentLength) {
192 ricSubscriptionFailure.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricActionID = index;
193 ricSubscriptionFailure.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.content = cRICCauseRadioNetwork;
194 ricSubscriptionFailure.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.cause = index;
197 // CriticalityDiagnostics, OPTIONAL. Not used in RIC
198 ricSubscriptionFailure.criticalityDiagnosticsPresent = false;
199 ricSubscriptionFailure.criticalityDiagnostics.procedureCodePresent = true;
200 ricSubscriptionFailure.criticalityDiagnostics.procedureCode = 1;
201 ricSubscriptionFailure.criticalityDiagnostics.triggeringMessagePresent = true;
202 ricSubscriptionFailure.criticalityDiagnostics.triggeringMessage = TriggeringMessage__initiating_message;
203 ricSubscriptionFailure.criticalityDiagnostics.procedureCriticalityPresent = true;
204 ricSubscriptionFailure.criticalityDiagnostics.procedureCriticality = Criticality__reject;
206 ricSubscriptionFailure.criticalityDiagnostics.iEsCriticalityDiagnosticsPresent = false;
207 ricSubscriptionFailure.criticalityDiagnostics.criticalityDiagnosticsIELength = 256;
209 while (index2 < ricSubscriptionFailure.criticalityDiagnostics.criticalityDiagnosticsIELength) {
210 ricSubscriptionFailure.criticalityDiagnostics.criticalityDiagnosticsIEListItem[index2].iECriticality = Criticality__reject;
211 ricSubscriptionFailure.criticalityDiagnostics.criticalityDiagnosticsIEListItem[index2].iE_ID = index2;
212 ricSubscriptionFailure.criticalityDiagnostics.criticalityDiagnosticsIEListItem[index2].typeOfError = TypeOfError_missing;
216 printRICSubscriptionFailure(&ricSubscriptionFailure);
218 uint64_t logBufferSize = 1024;
219 char logBuffer[logBufferSize];
220 uint64_t dataBufferSize = cDataBufferSize;
221 byte dataBuffer[dataBufferSize];
222 if (packRICSubscriptionFailure(&dataBufferSize, dataBuffer, logBuffer, &ricSubscriptionFailure) == e2err_OK)
224 memset(&ricSubscriptionFailure,0, sizeof ricSubscriptionFailure);
226 E2MessageInfo_t messageInfo;
227 e2ap_pdu_ptr_t* pE2AP_PDU = unpackE2AP_pdu(dataBufferSize, dataBuffer, logBuffer, &messageInfo);
228 if (pE2AP_PDU != 0) {
229 if (messageInfo.messageType == cE2UnsuccessfulOutcome) {
230 if (messageInfo.messageId == cRICSubscriptionFailure) {
231 if ((returnCode = getRICSubscriptionFailureData(pE2AP_PDU, &ricSubscriptionFailure)) == e2err_OK) {
232 printRICSubscriptionFailure(&ricSubscriptionFailure);
236 printf("Error in getRICSubscriptionFailureData. ReturnCode = %s",getE2ErrorString(returnCode));
239 printf("Not RICSubscriptionFailure\n");
242 printf("Not UnuccessfulOutcome\n");
245 printf("%s",logBuffer);
248 printf("%s",logBuffer);
252 //////////////////////////////////////////////////////////////////////
253 bool TestRICIndication() {
254 // Test RICIndication
255 RICIndication_t ricIndication;
257 ricIndication.ricRequestID.ricRequestorID = 1;
258 ricIndication.ricRequestID.ricRequestSequenceNumber = 22;
259 ricIndication.ranFunctionID = 33;
260 ricIndication.ricActionID = 44;
261 ricIndication.ricIndicationSN = 55;
262 ricIndication.ricIndicationType = RICIndicationType_RICIndicationTypeReport;
264 ricIndication.ricIndicationHeader.interfaceID.globalGNBIDPresent = false;
265 ricIndication.ricIndicationHeader.interfaceID.globalENBIDPresent = true;
266 ricIndication.ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.contentLength = 3;
268 ricIndication.ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[0] = 1;
269 ricIndication.ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[1] = 2;
270 ricIndication.ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[2] = 3;
272 // ricIndication.ricIndicationHeader.interfaceID.globalENBID.nodeID.bits = cMacroENBIDP_20Bits;
273 // ricIndication.ricIndicationHeader.interfaceID.globalENBID.nodeID.bits = cHomeENBID_28Bits;
274 // ricIndication.ricIndicationHeader.interfaceID.globalENBID.nodeID.bits = cShortMacroENBID_18Bits;
275 ricIndication.ricIndicationHeader.interfaceID.globalENBID.nodeID.bits = clongMacroENBIDP_21Bits;
277 IdOctects_t eNBOctects;
278 memset(eNBOctects.octets, 0, sizeof(eNBOctects));
279 eNBOctects.octets[0] = 11;
280 eNBOctects.octets[1] = 22;
281 eNBOctects.octets[2] = 31;
282 eNBOctects.octets[3] = 1;
283 ricIndication.ricIndicationHeader.interfaceID.globalENBID.nodeID.nodeID = eNBOctects.nodeID;
284 printf("eNBOctects.nodeID = %u",eNBOctects.nodeID);
286 ricIndication.ricIndicationHeader.interfaceDirection = InterfaceDirection__incoming;
288 char data[] = "Hello world";
289 ricIndication.ricIndicationMessage.interfaceMessage.contentLength = sizeof(data);
290 memcpy(ricIndication.ricIndicationMessage.interfaceMessage.data,data,sizeof(data));
292 printRICIndication(&ricIndication);
294 uint64_t logBufferSize = 1024;
295 char logBuffer[logBufferSize];
296 uint64_t dataBufferSize = cDataBufferSize;
297 byte dataBuffer[dataBufferSize];
298 if (packRICIndication(&dataBufferSize, dataBuffer, logBuffer, &ricIndication) == e2err_OK)
300 memset(&ricIndication,0, sizeof ricIndication);
302 E2MessageInfo_t messageInfo;
303 e2ap_pdu_ptr_t* pE2AP_PDU = unpackE2AP_pdu(dataBufferSize, dataBuffer, logBuffer, &messageInfo);
304 if (pE2AP_PDU != 0) {
305 if (messageInfo.messageType == cE2InitiatingMessage) {
306 if (messageInfo.messageId == cRICIndication) {
308 if ((returnCode = getRICIndicationData(pE2AP_PDU, &ricIndication)) == e2err_OK) {
309 printRICIndication(&ricIndication);
313 printf("Error in getRICIndicationData. ReturnCode = %s",getE2ErrorString(returnCode));
316 printf("Not RICIndication\n");
319 printf("Not InitiatingMessage\n");
322 printf("%s",logBuffer);
325 printf("%s",logBuffer);
329 //////////////////////////////////////////////////////////////////////
330 bool TestRICSubscriptionDeleteRequest() {
332 RICSubscriptionDeleteRequest_t ricSubscriptionDeleteRequest;
333 ricSubscriptionDeleteRequest.ricRequestID.ricRequestorID = 1;
334 ricSubscriptionDeleteRequest.ricRequestID.ricRequestSequenceNumber = 22;
335 ricSubscriptionDeleteRequest.ranFunctionID = 33;
337 printRICSubscriptionDeleteRequest(&ricSubscriptionDeleteRequest);
339 uint64_t logBufferSize = 1024;
340 char logBuffer[logBufferSize];
341 uint64_t dataBufferSize = cDataBufferSize;
342 byte dataBuffer[cDataBufferSize];
343 if ((packRICSubscriptionDeleteRequest(&dataBufferSize, dataBuffer, logBuffer, &ricSubscriptionDeleteRequest)) == e2err_OK)
345 memset(&ricSubscriptionDeleteRequest,0, sizeof ricSubscriptionDeleteRequest);
347 E2MessageInfo_t messageInfo;
348 e2ap_pdu_ptr_t* pE2AP_PDU = unpackE2AP_pdu(dataBufferSize, dataBuffer, logBuffer, &messageInfo);
349 if (pE2AP_PDU != 0) {
350 if (messageInfo.messageType == cE2InitiatingMessage) {
351 if (messageInfo.messageId == cRICSubscriptionDeleteRequest) {
352 if ((returnCode = getRICSubscriptionDeleteRequestData(pE2AP_PDU, &ricSubscriptionDeleteRequest)) == e2err_OK) {
353 printRICSubscriptionDeleteRequest(&ricSubscriptionDeleteRequest);
357 printf("Error in getRICSubscriptionDeleteRequestData. ReturnCode = %s",getE2ErrorString(returnCode));
360 printf("Not RICSubscriptionDeleteRequest\n");
363 printf("Not InitiatingMessage\n");
366 printf("%s",logBuffer);
369 printf("%s",logBuffer);
373 //////////////////////////////////////////////////////////////////////
374 bool TestRICSubscriptionDeleteResponse() {
376 RICSubscriptionDeleteResponse_t ricSubscriptionDeleteResponse;
377 ricSubscriptionDeleteResponse.ricRequestID.ricRequestorID = 1;
378 ricSubscriptionDeleteResponse.ricRequestID.ricRequestSequenceNumber = 22;
379 ricSubscriptionDeleteResponse.ranFunctionID = 33;
381 printRICSubscriptionDeleteResponse(&ricSubscriptionDeleteResponse);
383 uint64_t logBufferSize = 1024;
384 char logBuffer[logBufferSize];
385 uint64_t dataBufferSize = cDataBufferSize;
386 byte dataBuffer[dataBufferSize];
387 if ((packRICSubscriptionDeleteResponse(&dataBufferSize, dataBuffer, logBuffer, &ricSubscriptionDeleteResponse)) == e2err_OK)
389 memset(&ricSubscriptionDeleteResponse,0, sizeof ricSubscriptionDeleteResponse);
391 E2MessageInfo_t messageInfo;
392 e2ap_pdu_ptr_t* pE2AP_PDU = unpackE2AP_pdu(dataBufferSize, dataBuffer, logBuffer, &messageInfo);
393 if (pE2AP_PDU != 0) {
394 if (messageInfo.messageType == cE2SuccessfulOutcome) {
395 if (messageInfo.messageId == cRICsubscriptionDeleteResponse) {
396 if ((returnCode = getRICSubscriptionDeleteResponseData(pE2AP_PDU, &ricSubscriptionDeleteResponse)) == e2err_OK) {
397 printRICSubscriptionDeleteResponse(&ricSubscriptionDeleteResponse);
401 printf("Error in getRICSubscriptionDeleteResponseData. ReturnCode = %s",getE2ErrorString(returnCode));
404 printf("Not RICSubscriptionDeleteResponse\n");
407 printf("Not SuccessfulOutcome\n");
410 printf("%s",logBuffer);
413 printf("%s",logBuffer);
417 //////////////////////////////////////////////////////////////////////
418 bool TestRICSubscriptionDeleteFailure() {
420 RICSubscriptionDeleteFailure_t ricSubscriptionDeleteFailure;
421 ricSubscriptionDeleteFailure.ricRequestID.ricRequestorID = 1;
422 ricSubscriptionDeleteFailure.ricRequestID.ricRequestSequenceNumber = 22;
423 ricSubscriptionDeleteFailure.ranFunctionID = 33;
424 ricSubscriptionDeleteFailure.ricCause.content = cRICCauseRadioNetwork;
425 ricSubscriptionDeleteFailure.ricCause.cause = 3;
427 printRICSubscriptionDeleteFailure(&ricSubscriptionDeleteFailure);
429 uint64_t logBufferSize = 1024;
430 char logBuffer[logBufferSize];
431 uint64_t dataBufferSize = cDataBufferSize;
432 byte dataBuffer[dataBufferSize];
433 if ((packRICSubscriptionDeleteFailure(&dataBufferSize, dataBuffer, logBuffer, &ricSubscriptionDeleteFailure)) == e2err_OK)
435 memset(&ricSubscriptionDeleteFailure,0, sizeof ricSubscriptionDeleteFailure);
437 E2MessageInfo_t messageInfo;
438 e2ap_pdu_ptr_t* pE2AP_PDU = unpackE2AP_pdu(dataBufferSize, dataBuffer, logBuffer, &messageInfo);
439 if (pE2AP_PDU != 0) {
440 if (messageInfo.messageType == cE2UnsuccessfulOutcome) {
441 if (messageInfo.messageId == cRICsubscriptionDeleteFailure) {
442 if ((returnCode = getRICSubscriptionDeleteFailureData(pE2AP_PDU, &ricSubscriptionDeleteFailure)) == e2err_OK) {
443 printRICSubscriptionDeleteFailure(&ricSubscriptionDeleteFailure);
447 printf("Error in getRICSubscriptionDeleteFailureData. ReturnCode = %s",getE2ErrorString(returnCode));
450 printf("Not RICSubscriptionDeleteFailure\n");
453 printf("Not UnuccessfulOutcome\n");
456 printf("%s",logBuffer);
459 printf("%s",logBuffer);
463 //////////////////////////////////////////////////////////////////////
464 void printDataBuffer(const size_t byteCount, const uint8_t* pData) {
467 while (index < byteCount) {
468 if (index % 50 == 0) {
471 printf("%u ",pData[index]);
476 //////////////////////////////////////////////////////////////////////
477 void printRICSubscriptionRequest(const RICSubscriptionRequest_t* pRICSubscriptionRequest) {
478 printf("pRICSubscriptionRequest->ricRequestID.ricRequestorID = %u\n", pRICSubscriptionRequest->ricRequestID.ricRequestorID);
479 printf("pRICSubscriptionRequest->ricRequestID.ricRequestSequenceNumber = %u\n", pRICSubscriptionRequest->ricRequestID.ricRequestSequenceNumber);
480 printf("pRICSubscriptionRequest->ranFunctionID = %u\n",pRICSubscriptionRequest->ranFunctionID);
482 printf("pRICSubscriptionRequest->ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.nodeIDbits = %u\n",
483 (unsigned)pRICSubscriptionRequest->ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.nodeID.bits);
484 printf("pRICSubscriptionRequest->ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID = %u\n",
485 (unsigned)pRICSubscriptionRequest->ricSubscription.ricEventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID);
486 printf("pRICSubscriptionRequest->ricSubscription.ricEventTriggerDefinition.interfaceDirection = %u\n",
487 (unsigned)pRICSubscriptionRequest->ricSubscription.ricEventTriggerDefinition.interfaceDirection);
488 printf("pRICSubscriptionRequest->ricSubscription.ricEventTriggerDefinition.interfaceMessageType.procedureCode = %u\n",
489 (unsigned)pRICSubscriptionRequest->ricSubscription.ricEventTriggerDefinition.interfaceMessageType.procedureCode);
490 printf("pRICSubscriptionRequest->ricSubscription.ricEventTriggerDefinition.interfaceMessageType.typeOfMessage = %u\n",
491 (unsigned)pRICSubscriptionRequest->ricSubscription.ricEventTriggerDefinition.interfaceMessageType.typeOfMessage);
492 printf("pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.contentLength = %u\n",
493 (unsigned)pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.contentLength);
496 while (index < pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.contentLength) {
497 printf("pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionID = %li\n",
498 pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionID);
499 printf("pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionType = %li\n",
500 pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionType);
501 printf("pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionPresent = %i\n",
502 pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionPresent);
503 if(pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionPresent)
505 printf("pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinition.styleID = %li\n",
506 pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinition.styleID);
507 printf("pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinition.sequenceOfActionParameters.parameterID = %i\n",
508 pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinition.sequenceOfActionParameters.parameterID);
510 printf("pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentActionPresent = %i\n",
511 pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentActionPresent);
512 if(pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentActionPresent)
514 printf("pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentAction.ricSubsequentActionType = %li\n",
515 pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentAction.ricSubsequentActionType);
516 printf("pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentAction.ricTimeToWait = %li\n",
517 pRICSubscriptionRequest->ricSubscription.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentAction.ricTimeToWait);
525 //////////////////////////////////////////////////////////////////////
526 void printRICSubscriptionResponse(const RICSubscriptionResponse_t* pRICSubscriptionResponse) {
528 printf("pRICSubscriptionResponse->ricRequestID.ricRequestorID = %u\n",pRICSubscriptionResponse->ricRequestID.ricRequestorID);
529 printf("pRICSubscriptionResponse->ricRequestID.ricRequestSequenceNumber = %u\n", pRICSubscriptionResponse->ricRequestID.ricRequestSequenceNumber);
530 printf("pRICSubscriptionResponse->ranFunctionID = %u\n",pRICSubscriptionResponse->ranFunctionID);
531 printf("pRICSubscriptionResponse->ricActionAdmittedList.contentLength = %u\n",(unsigned)pRICSubscriptionResponse->ricActionAdmittedList.contentLength);
533 while (index < pRICSubscriptionResponse->ricActionAdmittedList.contentLength) {
534 printf("pRICSubscriptionResponse->ricActionAdmittedList.ricActionID[index] = %lu\n",pRICSubscriptionResponse->ricActionAdmittedList.ricActionID[index]);
537 printf("pRICSubscriptionResponse->ricActionNotAdmittedListPresent = %u\n",pRICSubscriptionResponse->ricActionNotAdmittedListPresent);
538 printf("pRICSubscriptionResponse->ricActionNotAdmittedList.contentLength = %u\n",(unsigned)pRICSubscriptionResponse->ricActionNotAdmittedList.contentLength);
540 while (index < pRICSubscriptionResponse->ricActionNotAdmittedList.contentLength) {
541 printf("pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricActionID = %lu\n",
542 pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricActionID);
543 printf("pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.content = %u\n",
544 (unsigned)pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.content);
545 printf("pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.cause = %u\n",
546 (unsigned)pRICSubscriptionResponse->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.cause);
552 //////////////////////////////////////////////////////////////////////
553 void printRICSubscriptionFailure(const RICSubscriptionFailure_t* pRICSubscriptionFailure) {
555 printf("pRICSubscriptionFailure->ricRequestID.ricRequestorID = %u\n",pRICSubscriptionFailure->ricRequestID.ricRequestorID);
556 printf("pRICSubscriptionFailure->ricRequestID.ricRequestSequenceNumber = %u\n",pRICSubscriptionFailure->ricRequestID.ricRequestSequenceNumber);
557 printf("pRICSubscriptionFailure->ranFunctionID = %i\n",pRICSubscriptionFailure->ranFunctionID);
558 printf("pRICSubscriptionFailure->ricActionNotAdmittedList.contentLength = %u\n",(unsigned)pRICSubscriptionFailure->ricActionNotAdmittedList.contentLength);
560 while (index < pRICSubscriptionFailure->ricActionNotAdmittedList.contentLength) {
561 printf("pRICSubscriptionFailure->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricActionID = %lu\n",
562 pRICSubscriptionFailure->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricActionID);
563 printf("pRICSubscriptionFailure->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.content = %u\n",
564 (unsigned)pRICSubscriptionFailure->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.content);
565 printf("pRICSubscriptionFailure->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.cause = %u\n",
566 (unsigned)pRICSubscriptionFailure->ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricCause.cause);
569 if (pRICSubscriptionFailure->criticalityDiagnosticsPresent) {
570 printf("pRICSubscriptionFailure->criticalityDiagnosticsPresent = %u\n",pRICSubscriptionFailure->criticalityDiagnosticsPresent);
571 printf("pRICSubscriptionFailure->criticalityDiagnostics.procedureCodePresent = %u\n",pRICSubscriptionFailure->criticalityDiagnostics.procedureCodePresent);
572 printf("pRICSubscriptionFailure->criticalityDiagnostics.procedureCode = %u\n",(unsigned)pRICSubscriptionFailure->criticalityDiagnostics.procedureCode);
573 printf("pRICSubscriptionFailure->criticalityDiagnostics.triggeringMessagePresent = %u\n",pRICSubscriptionFailure->criticalityDiagnostics.triggeringMessagePresent);
574 printf("pRICSubscriptionFailure->criticalityDiagnostics.triggeringMessage = %u\n",(unsigned)pRICSubscriptionFailure->criticalityDiagnostics.triggeringMessage);
575 printf("pRICSubscriptionFailure->criticalityDiagnostics.procedureCriticalityPresent = %u\n",pRICSubscriptionFailure->criticalityDiagnostics.procedureCriticalityPresent);
576 printf("pRICSubscriptionFailure->criticalityDiagnostics.procedureCriticality = %u\n",(unsigned)pRICSubscriptionFailure->criticalityDiagnostics.procedureCriticality);
577 printf("pRICSubscriptionFailure->criticalityDiagnostics.iEsCriticalityDiagnosticsPresent = %u\n",pRICSubscriptionFailure->criticalityDiagnostics.iEsCriticalityDiagnosticsPresent);
578 printf("pRICSubscriptionFailure->criticalityDiagnostics.criticalityDiagnosticsIELength = %u\n",pRICSubscriptionFailure->criticalityDiagnostics.criticalityDiagnosticsIELength);
580 while (index < pRICSubscriptionFailure->criticalityDiagnostics.criticalityDiagnosticsIELength) {
581 printf("pRICSubscriptionFailure->criticalityDiagnostics.criticalityDiagnosticsIEListItem[index].iECriticality = %u\n",
582 (unsigned)pRICSubscriptionFailure->criticalityDiagnostics.criticalityDiagnosticsIEListItem[index].iECriticality);
583 printf("pRICSubscriptionFailure->criticalityDiagnostics.criticalityDiagnosticsIEListItem[index].iE_ID = %u\n",
584 pRICSubscriptionFailure->criticalityDiagnostics.criticalityDiagnosticsIEListItem[index].iE_ID);
585 printf("pRICSubscriptionFailure->criticalityDiagnostics.criticalityDiagnosticsIEListItem[index].typeOfError = %u\n",
586 (unsigned)pRICSubscriptionFailure->criticalityDiagnostics.criticalityDiagnosticsIEListItem[index].typeOfError);
593 //////////////////////////////////////////////////////////////////////
594 void printRICIndication(const RICIndication_t* pRICIndication) {
596 printf("pRICIndication->ricRequestID.ricRequestorID = %u\n",pRICIndication->ricRequestID.ricRequestorID);
597 printf("pRICIndication->ricRequestID.ricRequestSequenceNumber = %u\n",pRICIndication->ricRequestID.ricRequestSequenceNumber);
598 printf("pRICIndication->ranFunctionID = %u\n",pRICIndication->ranFunctionID);
599 printf("pRICIndication->ricActionID = %lu\n",pRICIndication->ricActionID);
600 printf("pRICIndication->ricIndicationSN = %u\n",pRICIndication->ricIndicationSN);
601 printf("pRICIndication->ricIndicationType = %u\n",(unsigned)pRICIndication->ricIndicationType);
602 printf("pRICIndication->ricIndicationHeader.interfaceID.globalENBIDPresent = %u\n",pRICIndication->ricIndicationHeader.interfaceID.globalENBIDPresent);
603 if (pRICIndication->ricIndicationHeader.interfaceID.globalENBIDPresent) {
604 printf("pRICIndication->ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.contentLength = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.contentLength);
605 printf("pRICIndication->ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[0] = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[0]);
606 printf("pRICIndication->ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[1] = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[1]);
607 printf("pRICIndication->ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[2] = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[2]);
608 printf("pRICIndication->ricIndicationHeader.interfaceID.globalENBID.nodeID.bits = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalENBID.nodeID.bits);
609 printf("pRICIndication->ricIndicationHeader.interfaceID.globalENBID.nodeID.nodeID = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalENBID.nodeID.nodeID);
611 printf("pRICIndication->ricIndicationHeader.interfaceID.globalGNBIDPresent = %u\n",pRICIndication->ricIndicationHeader.interfaceID.globalGNBIDPresent);
612 if(pRICIndication->ricIndicationHeader.interfaceID.globalGNBIDPresent){
613 printf("pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.pLMNIdentity.contentLength = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.pLMNIdentity.contentLength);
614 printf("pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[0] = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[0]);
615 printf("pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[1] = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[1]);
616 printf("pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[2] = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[2]);
617 printf("pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.nodeID.bits = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.nodeID.bits);
618 printf("pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.nodeID.nodeID = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceID.globalGNBID.nodeID.nodeID);
620 printf("pRICIndication->ricIndicationHeader.interfaceDirection = %u\n",(unsigned)pRICIndication->ricIndicationHeader.interfaceDirection);
621 printf("pRICIndication->ricIndicationMessage.interfaceMessage.contentLength = %u\n",(unsigned)pRICIndication->ricIndicationMessage.interfaceMessage.contentLength);
623 printf("pRICIndication->ricIndicationMessage.interfaceMessage.data = ");
624 printDataBuffer(pRICIndication->ricIndicationMessage.interfaceMessage.contentLength,pRICIndication->ricIndicationMessage.interfaceMessage.data);
628 void printRICSubscriptionDeleteRequest(const RICSubscriptionDeleteRequest_t* pRICSubscriptionDeleteRequest) {
630 printf("\npRICSubscriptionDeleteRequest->ricRequestID.ricRequestorID = %u\n",pRICSubscriptionDeleteRequest->ricRequestID.ricRequestorID);
631 printf("pRICSubscriptionDeleteRequest->ricRequestID.ricRequestSequenceNumber = %u\n",pRICSubscriptionDeleteRequest->ricRequestID.ricRequestSequenceNumber);
632 printf("pRICSubscriptionDeleteRequest->ranFunctionID = %i\n",pRICSubscriptionDeleteRequest->ranFunctionID);
636 void printRICSubscriptionDeleteResponse(const RICSubscriptionDeleteResponse_t* pRICSubscriptionDeleteResponse) {
638 printf("\npRICSubscriptionDeleteResponse->ricRequestID.ricRequestorID = %u\n",pRICSubscriptionDeleteResponse->ricRequestID.ricRequestorID);
639 printf("pRICSubscriptionDeleteResponse->ricRequestID.ricRequestSequenceNumber = %u\n",pRICSubscriptionDeleteResponse->ricRequestID.ricRequestSequenceNumber);
640 printf("pRICSubscriptionDeleteResponse->ranFunctionID = %i\n",pRICSubscriptionDeleteResponse->ranFunctionID);
644 void printRICSubscriptionDeleteFailure(const RICSubscriptionDeleteFailure_t* pRICSubscriptionDeleteFailure) {
646 printf("\npRICSubscriptionDeleteFailure->ricRequestID.ricRequestorID = %u\n",pRICSubscriptionDeleteFailure->ricRequestID.ricRequestorID);
647 printf("pRICSubscriptionDeleteFailure->ricRequestID.ricRequestSequenceNumber = %u\n",pRICSubscriptionDeleteFailure->ricRequestID.ricRequestSequenceNumber);
648 printf("pRICSubscriptionDeleteFailure->ranFunctionID = %i\n",pRICSubscriptionDeleteFailure->ranFunctionID);
649 printf("pRICSubscriptionDeleteFailure->ricCause.content = %i\n",pRICSubscriptionDeleteFailure->ricCause.content);
650 printf("pRICSubscriptionDeleteFailure->ricCause.cause = %i\n",pRICSubscriptionDeleteFailure->ricCause.cause);