Modify licenses
[scp/ocu/5gnr.git] / Include / cuModuleInterface.h
1 /******************************************************************************
2 *
3 *   Copyright (c) 2020 ICT/CAS.
4 *
5 *   Licensed under the O-RAN Software License, Version 1.0 (the "Software License");
6 *   you may not use this file except in compliance with the License.
7 *   You may obtain a copy of the License at
8 *
9 *       https://www.o-ran.org/software
10 *
11 *   Unless required by applicable law or agreed to in writing, software
12 *   distributed under the License is distributed on an "AS IS" BASIS,
13 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *   See the License for the specific language governing permissions and
15 *   limitations under the License.
16 *
17 *******************************************************************************/
18
19
20
21 #ifndef __CUMODULEINTERFACEH__
22 #define __CUMODULEINTERFACEH__
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27
28 #include "cuCommon.h"
29 #include "cuModuleCommon.h"
30 #include "ngasn_constant.h"
31 /**********************************************************************************
32 ***********************************************************************************
33 **************** CUC <--> NGAP               ACCORDING TO STRUCTURE ***************
34 ***********************************************************************************
35 ***********************************************************************************/
36 typedef UINT16      Instance_t;
37
38 #define NGAP_MAX_AMF_NUM                        2
39 #define NGAP_MAX_UE_NUM                         MAX_UE_NUM
40
41 #define NG_MAX_TAC_NUM                  10
42 #define NG_MAX_PLMN_NUM                 2
43
44 #define NG_MAX_GUAMI_NUM                        2
45 #define NG_MAX_SESSION_NUM              10
46
47 #define RrcVersionLatestVerEnhancedChosen            0x1
48
49 #define e1ap_maxnoofErrors                                                              256
50 #define e1ap_maxnoofSPLMNs                                                              12
51 #define e1ap_maxnoofSliceItems                                                  1024
52 #define e1ap_maxnoofIndividualE1ConnectionsToReset              65536
53 #define e1ap_maxnoofNGRANQOSParameters                                  256
54 #define e1ap_maxnoofDRBs                                                                32
55 #define e1ap_maxnoofNRCGI                                                               512
56 #define e1ap_maxnoofPDUSessionResource                                  256
57 #define e1ap_maxnoofQoSFlows                                                    64
58 #define e1ap_maxnoofUPParameters                                                8
59 #define e1ap_maxnoofCellGroups                                                  4
60
61
62 typedef struct rrcVersion
63 {
64     UINT16                 bitmask;
65     UINT8                  latestRrcVer;//f30版本中 asn的语法描述中是个错误,不应该是bitstring,在f70版本中已经修复
66     UINT8                  latestRrcVerEn[3]; /* OPTIONAL */
67 } RrcVersion_t;
68
69 /* AMF Name */
70 typedef RanName_t   AmfName_t;
71
72 typedef struct
73 {
74     UINT16                  plmnNum;
75     PlmnId_t                plmnId[NG_MAX_PLMN_NUM];
76     SliceList_t             taiSlice[NG_MAX_PLMN_NUM];
77 }BroadPlmns_t;
78
79 typedef struct
80 {
81         UINT16                  taNum;
82     CuTac_t                 tac[NG_MAX_TAC_NUM];
83     BroadPlmns_t            bPlmn[NG_MAX_TAC_NUM];
84 }SupportTas_t;
85
86 typedef UINT8   AmfRegionId_t;
87
88 typedef struct AmfSetId
89 {
90     UINT16                  amfSetId:10;
91 }AmfSetId_t;
92
93 typedef struct AmfPointer
94 {
95     UINT8                   amfPointer:6;
96 }AmfPointer_t;
97
98 #define GUAMI_PLMNID_PRESENCE              (1<<0)
99 typedef struct guami
100 {
101     UINT8                   bitMask;
102     PlmnId_t                plmnId;
103     AmfRegionId_t           amfRegionId;
104     AmfSetId_t              amfSetId;
105     AmfPointer_t            amfPointer;
106 }Guami_t;
107
108 typedef struct guamiList
109 {
110         UINT8                                   guamiNum;
111         Guami_t                                 guAmi[NG_MAX_GUAMI_NUM];
112         AmfName_t                               backupAmfName[NG_MAX_GUAMI_NUM]; /* xycTBD */
113 }GuamiList_t;
114
115 #define MAX_SIZE_OF_OCTET_STRING    255
116 typedef struct NasPdu
117 {
118     UINT32                  size;
119     UINT8                   buffer[MAX_SIZE_OF_OCTET_STRING];
120 }NasPdu_t;
121
122 typedef struct  FiveGTmsi
123 {
124     UINT8                   fivegTmsi[4];
125 }FiveGTmsi_t;
126
127 typedef struct FiveGSTmsi
128 {
129     AmfSetId_t              amfSetId;
130     AmfPointer_t            amfPointer;
131     FiveGTmsi_t             fiveGTmsi;
132 }FiveGSTmsi_t;
133
134 typedef UINT64                          AmfUeNgapId_t;
135
136 #define EMERGENCY_SERVICE_TARGET_CN_PRESENT         (1 << 0)
137 typedef struct emergFbInd
138 {
139     UINT16                                              bitMask;
140     EmergencyFallbackRequestIndicator_e     emergencyFallbackRequestIndicator;
141     EmergencyServiceTargetCN_e                          emergencyServiceTargetCn;           /* OPTIONAL */
142 } EmergFbInd_t;
143
144 typedef struct ueRadioCapaForPagOfNr
145 {
146     UINT32                  size;
147     UINT8                   buffer[MAX_SIZE_OF_OCTET_STRING];
148 }UeRadioCapaForPagOfNr_t;
149
150 #define UE_RADIO_CAPABILITY_PAGING_NR_PRESENT       (1 << 0)
151 #define UE_RADIO_CAPABILITY_PAGING_EUTRA_PRESENT    (1 << 1)
152 typedef struct UeRadioCapaForPag
153 {
154     UINT16                                  bitMask;
155     UeRadioCapaForPagOfNr_t                 ueRadioCapabilityForPagingOfNr;     /* OPTIONAL */
156     UeRadioCapaForPagOfNr_t                 ueRadioCapabilityForPagingOfEutra;  /* OPTIONAL */
157 } UeRadioCapaForPag_t;
158
159 typedef struct UeRadioCapability
160 {
161     UINT32                  size;
162     UINT8                   buffer[MAX_SIZE_OF_OCTET_STRING];
163 }UeRadioCapability_t;
164
165 typedef struct ngRanTraceId
166 {
167     UINT32                  size;
168     UINT8                   buffer[MAX_SIZE_OF_OCTET_STRING];
169 }NgRanTraceId_t;
170
171 typedef UINT8 InterToTrace_t;
172
173 typedef struct traceActiv
174 {
175     NgRanTraceId_t          ngRanTraceId;
176     InterToTrace_t          interfacesToTrace;
177     INT64                           traceDepth;
178     TransLayerAddr_t        traceCollectionEntityIpAddress;
179 } TraceActiv_t;
180
181 typedef struct  secuKey
182 {
183     UINT8                   securityKey[32];
184 }SecuKey_t;
185
186 typedef struct
187 {
188         UINT8                                   nextHopChainingCount;
189         SecuKey_t                               nextHopNH;
190 }SecurityCtx_t;
191 typedef UINT8       RatRestrInfo_t;
192
193 typedef struct ratRestrItem
194 {
195     PlmnId_t                plmnId;
196     RatRestrInfo_t          ratRestrInfo;
197 } RatRestrItem_t;
198
199 typedef struct mobiRestrInfo
200 {
201     PlmnId_t                                    plmnId;
202     UINT8                                       equalPlmnNum;
203     PlmnId_t                                    ePlmnId[ngap_maxnoofEPLMNs];
204     UINT8                                       ratRestrictNum;
205     RatRestrItem_t                              ratRestrictItem[ngap_maxnoofEPLMNsPlusOne];
206     UINT8                                       forbiddenAreaNum;
207     PlmnId_t                                    forbPlmnId[ngap_maxnoofEPLMNsPlusOne];
208     UINT16                                      forbTacNum[ngap_maxnoofEPLMNsPlusOne];
209     CuTac_t                                     forbTac[ngap_maxnoofEPLMNsPlusOne][ngap_maxnoofForbTACs];
210     UINT8                                       servAreaNum;
211     PlmnId_t                                    servPlmnId[ngap_maxnoofEPLMNsPlusOne];
212     UINT8                                       allowTacNum[ngap_maxnoofEPLMNsPlusOne];
213     CuTac_t                                     allowedTac[ngap_maxnoofEPLMNsPlusOne][ngap_maxnoofAllowedAreas];
214     UINT8                                       notAllowTacNum[ngap_maxnoofEPLMNsPlusOne];
215     CuTac_t                                     notAllowedTac[ngap_maxnoofEPLMNsPlusOne][ngap_maxnoofAllowedAreas];
216 }MobiRestrInfo_t;
217
218 typedef struct ueSecurCapa
219 {
220     UINT16                                  nrEncryptionAlgorithms;
221     UINT16                                  nrIntegrityProtectionAlgorithms;
222     UINT16                                  eutraEncryptionAlgorithms;
223     UINT16                                  eutraIntegrityProtectionAlgorithms;
224 } UeSecurCapa_t;
225
226 #define EXPECTED_ACTIVITY_PERIOD_PRESENT                        (1 << 0)
227 #define EXPECTED_IDLE_PERIOD_PRESENT                            (1 << 1)
228 #define SOURCEOF_UE_ACTIVITY_BEHAVIOUR_INFORMATION_PRESENT      (1 << 2)
229 typedef struct expectedUeActivityBehaviour
230 {
231     UINT16                                      bitMask;
232     INT64                                                               expectedActivityPeriod;                 /* OPTIONAL */
233     INT64                                                       expectedIdlePeriod;                     /* OPTIONAL */
234     SourceOfUEActivityBehaviourInformation_e    sourceOfUeActivityBehaviourInformation; /* OPTIONAL */
235 } ExpectedUeActivityBehaviour_t;
236
237 #define EXPECTEDUEMOVINGTRAJECTORYITEM_TIME_STAYED_IN_CELL_PRESENT              (1 << 0)
238 typedef struct expectedUeMovingTrajectoryItem
239 {
240     UINT16                                      bitMask;
241     CuNrCgi_t                                   nrCgi;
242     INT64                                       timeStayedInCell;       /* OPTIONAL */
243 } ExpectedUeMovingTrajectoryItem_t;
244
245 #define EXPECTED_UE_ACTIVITY_BEHAVIOR_PRESENT           (1 << 0)
246 #define EXPECTED_HO_INTERVAL_PRESENT                            (1 << 1)
247 #define EXPECTED_UE_MOBILITY_PRESENT                            (1 << 2)
248 typedef struct
249 {
250         UINT16                                                                          bitMask;
251         ExpectedUeActivityBehaviour_t               expectedUeActivityBehaviour;
252     INT64                                                       expectedHoInterval;
253     INT64                                                       expectedUeMobility;
254     UINT8                                       expectUeMovTrajectoryNum;
255     ExpectedUeMovingTrajectoryItem_t            expectedUeMovingTrajectory[ngap_maxnoofCellsUEMovingTrajectory];
256 }ExpectUeBeHaviour_t;
257
258 #define CORE_ASSISTANCE_INFO_UE_SPECIFIC_DRX_PRESENT                    (1 << 0)
259 #define CORE_ASSISTANCE_INFO_MICO_MODE_INDICATION_PRESENT               (1 << 1)
260 #define CORE_ASSISTANCE_INFO_EXPECT_UE_BEHAVIOUR_PRESENT                (1 << 2)
261 typedef struct coreAssitInfo
262 {
263         UINT16                                                                          bitMask;
264         UeIdIdxValue_t                              ueIdIdxValue;
265     INT64                                               ueSpecificDrx;
266     UINT8                                       periodicRegistrationUpdateTimer;
267     INT64                                                       micoModeIndication;
268     UINT8                                       inactiveTaiNum;
269     Tai_t                                       inactiveTai[ngap_maxnoofTAIforInactive];
270         ExpectUeBeHaviour_t                                             exceptUeBehaviour;
271 }CoreAssitInfo_t;
272
273 #define NOTIFICATION_CONTROL_PRESENT                (1 << 0)
274 #define MAX_PACKET_LOSSRATE_DL_PRESENT              (1 << 1)
275 #define MAX_PACKET_LOSSRATE_UL_PRESENT              (1 << 2)
276 typedef struct gbrQosInfo
277 {
278     UINT16                                  bitMask;
279         UINT64                                                                  maxFlowBitRateDL;
280         UINT64                                                                  maxFlowBitRateUL;
281         UINT64                                                                  guaranteedFlowBitRateDL;
282         UINT64                                                                  guaranteedFlowBitRateUL;
283     NotificationControl_e                   notificationControl;            /* OPTIONAL */
284     INT64                                               maxPacketLossRateDL;            /* OPTIONAL */
285     INT64                                               maxPacketLossRateUL;            /* OPTIONAL */
286 } GbrQosInfo_t;
287
288 #define GBR_QOS_INFORMATION_PRESENT                 (1 << 0)
289 #define REFLECTIVE_QOS_ATTRIBUTE_PRESENT            (1 << 1)
290 #define ADDITIONAL_QOS_FLOW_INFORMATION_PRESENT     (1 << 2)
291 typedef struct qosFlowLevelQosParam
292 {
293     UINT16                                  bitMask;
294     QosCharact_t                            qosCharacteristics;
295     AllocAndRetenPriority_t                             allocationAndRetentionPriority;
296     GbrQosInfo_t                            gbrQosInformation;                  /* OPTIONAL */
297     ReflectiveQosAttribute_e                reflectiveQosAttribute;             /* OPTIONAL */
298     AddQosFlowInfo_e                                    additionalQosFlowInformation;       /* OPTIONAL */
299 } QosFlowLevelQosParam_t;
300
301 #define QOS_FLOW_SETUP_REQ_E_RAB_ID_PRESENT                    (1 << 0)
302 typedef struct qosFlowSetupReqItem
303 {
304     UINT16                                  bitMask;
305     INT64                                                   qosFlowId;
306     QosFlowLevelQosParam_t                  qosFlowLevelQosParameters;
307     INT64                                       eRabId;                         /* OPTIONAL */
308 } QosFlowSetupReqItem_t;
309
310 #define MAX_INTERITY_PROTECTED_DATARATE_PRESENT     (1 << 0)
311 typedef struct securIndic
312 {
313     UINT16                                  bitMask;
314     INT64                                                               integrityProtectionIndication;
315     INT64                                                                   confidentialityProtectionIndication;
316     INT64                                                                   maxIntegrityProtectedDataRate;  /* OPTIONAL */
317 } SecurIndic_t;
318
319 typedef struct
320 {
321         UINT64                                                                  DlSessAMBR;
322         UINT64                                                                  UlSessAmbr;
323 }NgapPduSessAmber_t;
324
325 #define PDU_SESSION_SETUP_REQ_TRANSFER_SESSION_AMBR_PRESENT                                     (1 << 0)
326 #define PDU_SESSION_SETUP_REQ_TRANSFER_DATA_FORWARD_NOT_POSSIBLE_PRESENT        (1 << 1)
327 #define PDU_SESSION_SETUP_REQ_TRANSFER_SECURITY_INDICATION_PRESENT                      (1 << 2)
328 #define PDU_SESSION_SETUP_REQ_TRANSFER_NET_WORK_INSTANCE_PRESENT                        (1 << 3)
329
330 typedef struct
331 {
332         UINT16                                                                  bitMask;
333         NgapPduSessAmber_t                                          sessAMBR;//Optional
334     UpTransLayerInfo_t                      ulNguUpTnlInfor;
335         UINT8                                                                   additionalUpTnlNum;
336     UpTransLayerInfo_t                      additionalUlNguUpTnlInfor[ngap_maxnoofMultiConnectivityMinusOne];
337     INT64                                                           dataForwardingNotPossible;//Optional
338     INT64                                               pduSessionType;
339     SecurIndic_t                            securityIndication;//Optional
340         INT64                                                                   networkInstance;//Optional
341     UINT8                                   qosFlowSetupReqNum;//   >= 1
342     QosFlowSetupReqItem_t                   qosFlowSetupRequestItems[ngap_maxnoofQosFlows];
343 }PduSessSetupReqTransfer_t;
344
345 #define PDU_SESSION_RESOURCE_SETUP_REQUEST_NAS_PDU_PRESENT              (1 << 0)
346 typedef struct pduSessionSetupReq
347 {
348         UINT16                                                                  bitMask;
349         UINT16                                      pduSessID;
350     NasPdu_t                                nasPdu;//Optional
351     SNssai_t                                sNSSAI;
352         PduSessSetupReqTransfer_t                               pduSetupReqTransfer;
353 }PduSessionSetupReq_t;
354
355 typedef struct recommRanforPag
356 {
357     UINT8                           ranNum;
358         /* AMFPagingTarget_PR */
359     AmfPgType_e                                 amfPgType[ngap_maxnoofRecommendedRANNodes];
360     RecomRanGnbId_t                     gNBId[ngap_maxnoofRecommendedRANNodes];
361     Tai_t                           Tai[ngap_maxnoofRecommendedRANNodes];
362 }RecommRanforPag_t;
363
364 #define RECOMMCELLITEM_TIME_STAYED_INCELL_PRESENT   (1 << 0)
365 typedef struct recommCellItem
366 {
367     UINT16                                  bitMask;
368     CuNrCgi_t                               nrCgi;
369     UINT64                                  timeStayedInCell;                   /* OPTIONAL */
370 } RecommCellItem_t;
371
372 typedef struct recommCellforPag
373 {
374     UINT8                                   cellNum;
375     RecommCellItem_t                        cellItem[ngap_maxnoofRecommendedCells];
376 }RecommCellforPag_t;
377
378
379 #define PAGING_ATTEMPT_INFO_NEXT_PAGING_AREA_SCOPE_PRESENT      (1 << 0)
380 typedef struct pagingAttemptInfo
381 {
382         UINT8                                                                   pagingAttemptCount;
383         UINT8                                                                   intendNoOfPagingAttempt;
384         NextPagingAreaScope_e                                   nextPagingAreaScope;//Optional
385 }PagingAttemptInfo_t;
386
387 #define ASSIST_DATA_FOR_PAGING_RECOMMAND_CELL_PRESENT           (1 << 0)
388 #define ASSIST_DATA_FOR_PAGING_PAGING_ATTEMPT_INFO_PRESENT      (1 << 1)
389 typedef struct assistDataForPaging
390 {
391         RecommCellforPag_t                                              recommandCell;//Optinal
392         PagingAttemptInfo_t                                             pagingAttemptInfo;//Optional
393 }AssistDataForPaging_t;
394 #define QOSFLOW_MAPPING_INDICATION_PRESENT  (1 << 0)
395 typedef struct AssocQosFlowItem
396 {
397     UINT16                                  bitMask;
398     INT64                                               qosFlowId;
399     QosFlowMapInd_e                         qosFlowMappingIndication;   /* OPTIONAL */
400 } AssocQosFlowItem_t;
401
402 typedef struct qosFlowPerTnlInfo
403 {
404     UpTransLayerInfo_t                      upTransLayerInfo;
405     UINT8                                   assocQosFlowNum;
406     AssocQosFlowItem_t                      assocQosItem[ngap_maxnoofQosFlows];
407 }QosFlowPerTnlInfo_t;
408
409 typedef struct qosFlowIte
410 {
411     INT64                                                           qosFlowId;
412     NgapCause_e                                 cause;
413 } QosFlowIte_t;
414
415 #define PDU_SESSION_SETUP_RSP_SECURITY_RESULT_PRESENT   (1 << 0)
416 typedef struct pduSessSetupResp
417 {
418         UINT16                                                                  bitMask;
419     UINT16                                          pduSessId;
420     QosFlowPerTnlInfo_t                     dlQosFlowTnlInfo;
421         UINT8                                                                   addDlQosFlowNum;
422     QosFlowPerTnlInfo_t                     addDlQosFlowTnlInfo[ngap_maxnoofMultiConnectivityMinusOne];
423     SecuResult_t                            securityResult;
424     UINT8                                   qosFlowFailNum;
425     QosFlowIte_t                            qosFlowFailtoSetup[ngap_maxnoofQosFlows];
426 }PduSessSetupResp_t;
427
428 typedef struct pduSessSetupFail
429 {
430     UINT16                                          pduSessId;
431     NgapCause_e                                                         cause;
432 }PduSessSetupFail_t;
433
434 typedef struct
435 {
436         UINT64                                                                  DlUeAMBR;
437         UINT64                                                                  UlUeAmbr;
438 }NgapUeAmber_t;
439
440 typedef struct
441 {
442         UINT8                                                                   timePeriodsNum;
443         Timestamp_t                                                             startTimeStamp[ngap_maxnoofTimePeriods];
444         Timestamp_t                                                             endTimeStamp[ngap_maxnoofTimePeriods];
445         UINT64                                                                  usageCountUl[ngap_maxnoofTimePeriods];
446         UINT64                                                                  usageConutDl[ngap_maxnoofTimePeriods];
447 }VolumeTimedRpt_t;
448
449 typedef struct
450 {
451         INT64                                                                   ratType;
452         VolumeTimedRpt_t                                                sessTimedRpt;
453 }PduSessUsageRpt_t;
454
455 typedef struct
456 {
457         INT64                                                                   qfi;
458         INT64                                                                   ratType;
459         VolumeTimedRpt_t                                                flowTimedRpt;
460 }QosFlowUsageRptItem_t;
461
462 typedef struct
463 {
464         PduSessUsageRpt_t                                               sessUsageRpt;
465         UINT8                                                                   qosFlowUsageRptNum;
466         QosFlowUsageRptItem_t                                   qosFlowUsageRptItem;
467 }SecondRATUsageInfo_t;
468
469 #define PDU_SESSION_RESOURCE_ITEM_SECOND_RAT_USAGE_INFO_PRESENT (1 << 0)
470 typedef struct
471 {
472         UINT16                                                                  sessId;
473         SecondRATUsageInfo_t                                    secondRatUsageInfo;
474 }PduSessResourceItem_t;
475
476 #define HO_REQUIRED_TRANSFER_DIRECT_FORWARD_PATH_AVAILABILITY_PRESENT (1 << 0)
477 typedef struct
478 {
479         UINT16                                                                  bitMask;
480         DirectForwardPathAvailability_e                 directForwardPathAvailability;//Optional
481 }HoRequiredTransfer_t;
482
483 typedef struct
484 {
485         UINT16                                                                  sessId;
486         HoRequiredTransfer_t                                    HoRequiredTransfer;
487 }HoRequiredPduSessResourcItem_t;
488
489 typedef struct
490 {
491         INT8                                                                    qosFlowId;
492         DataForwardAccepted_e                                   dataForwardAccepted;
493 }QosFlowSetupRspItem_t;
494
495 typedef struct
496 {
497         UINT8                                   qosFlowFailNum;
498     QosFlowIte_t                            qosFlowFailtoSetup[ngap_maxnoofQosFlows];
499 }QosFlowSetupFailItem_t;
500
501 typedef struct
502 {
503         UpTransLayerInfo_t                                              additionDlUpTnlInfo;
504         QosFlowSetupRspItem_t                                   additionQosFlowSetupRsp;
505         UpTransLayerInfo_t                                              additionDlForwardUpTnlInfo;
506 }HoAdditionDlUpTnlInfoItem_t;
507
508 #define DATA_FORWARD_RSP_DRB_DL_NGU_UP_TNL_INFO_PRESENT         (1 << 0)
509 #define DATA_FORWARD_RSP_DRB_UL_NGU_UP_TNL_INFO_PRESENT         (1 << 1)
510 typedef struct
511 {
512         UINT8                                                                   bitMask;
513         UINT8                                                                   drbId;
514         UpTransLayerInfo_t                                              dlNguUpTnlInfo;//Optional
515         UpTransLayerInfo_t                                              ulNguUpTnlInfo;//Optional
516 }DataForwardRspDrb_t;
517
518 #define HO_REQUEST_ACK_TRANSFER_DL_FORWARD_UP_TNL_INFO_PRESENT          (1 << 0)
519 #define HO_REQUEST_ACK_TRANSFER_SECURITY_RESULT_PRESENT                         (1 << 1)
520 typedef struct
521 {
522         UpTransLayerInfo_t                                              dlNguUpTnlInfo;
523         UpTransLayerInfo_t                                              dlForwardUpTnlInfo;//Optinal
524         SecuResult_t                                                    securityResult;//Optional
525         UINT8                                                                   qosFlowRspNum;
526         QosFlowSetupRspItem_t                                   qosFlowSetupRspItem[ngap_maxnoofQosFlows];
527         UINT8                                                                   qosFlowFailNum;
528         QosFlowSetupFailItem_t                                  qosFlowSetupFailItem[ngap_maxnoofQosFlows];
529         UINT8                                                                   drbNum;
530         DataForwardRspDrb_t                                             dataForwardRspDrbItem[ngap_maxnoofDRBs];
531         UINT8                                                                   HoAddDlUpTnlInfoNum;
532         HoAdditionDlUpTnlInfoItem_t                             HoAddDlUpTnlInfoItem[ngap_maxnoofMultiConnectivityMinusOne];
533 }HoRequestAckTransfer_t;
534
535 typedef struct
536 {
537         UINT16                                                                  sessId;
538         HoRequestAckTransfer_t                                  HoRequestAckTransfer;
539 }HoRequestAckPduSessItem_t;
540
541 typedef struct
542 {
543         NgapCause_e                                                             cause;
544 }HoRequestUnsuccTransfer_t;
545
546 typedef struct
547 {
548         UINT16                                                                  sessId;
549         HoRequestUnsuccTransfer_t                               HoRequestUnsuccTransfer;
550 }HoRequestFailPduSessItem_t;
551
552 #define HO_CMD_SUCC_TRANSFER_DATA_FORWARD_RSP_DRB_PRESENT       (1 << 0)
553 typedef struct
554 {
555         UpTransLayerInfo_t                                              dlNguUpTnlInfo;//Optional
556         UINT8                                                                   qosFlowNum;
557         UINT64                                                                  qosFlowIdItem[ngap_maxnoofQosFlows];
558         UINT8                                                                   drbNum;
559         DataForwardRspDrb_t                                             dataForwardRspDrbItem[ngap_maxnoofDRBs];
560         UINT8                                                                   addDlQosFlowNum;
561     QosFlowPerTnlInfo_t                     addDlQosFlowTnlInfo[ngap_maxnoofMultiConnectivityMinusOne];
562 }HoCmdSuccTransfer_t;
563
564 typedef struct
565 {
566         UINT16                                                                  sessId;
567         HoCmdSuccTransfer_t                                             HoCmdSuccTransfer;
568 }HoCmdSuccPduSessResourceItem_t;
569
570 typedef struct
571 {
572         NgapCause_e                                                             cause;
573 }HoCmdFailTransfer_t;
574
575 typedef struct
576 {
577         UINT16                                                                  sessId;
578         HoCmdFailTransfer_t                                             HoCmdFailTranser;
579 }HoCmdFailPduSessResourcItem_t;
580
581 typedef struct
582 {
583         UINT16                                                                  sessId;
584         SNssai_t                                                                sNssai;
585         PduSessSetupReqTransfer_t                               HoRequestTransfer;
586 }HoRequestPduSessResourceItem_t;
587 #define PATH_SWITCH_REQ_TRANSFER_DL_NGU_TNL_INFO_REUSED_PRESENT         (1 << 0)
588 #define PATH_SWITCH_REQ_TRANSFER_USER_PLANE_SECUR_INFO_PRESENT          (1 << 1)
589 typedef struct
590 {
591         UpTransLayerInfo_t                                              dlNguUpTnlInfo;
592         DlNguTnlInfoReused_e                                    dlNguUpTnlInfoReused;//Optional
593         UserPlaneSecurInfo_t                                    userPlaneSecurInfo;//Optional
594         UINT8                                                                   qosFlowNum;
595         UINT64                                                                  qosFlowIdItem[ngap_maxnoofQosFlows];
596         UINT8                                                                   addDlQosFlowNum;
597     QosFlowPerTnlInfo_t                     addDlQosFlowTnlInfo[ngap_maxnoofMultiConnectivityMinusOne];
598 }PathSwitchReqTransfer_t;
599
600 typedef struct
601 {
602         UINT16                                                                  sessId;
603         PathSwitchReqTransfer_t                                 pathSwitchReqTransfer;
604 }PathSwitchReqPduSessItem_t;
605
606 typedef struct
607 {
608         NgapCause_e                                                             cause;
609 }PathSwitchReqFailTransfer_t;
610
611 typedef struct
612 {
613         UINT16                                                                  sessId;
614         PathSwitchReqFailTransfer_t                             pathSwitchReqFailTransfer;
615 }PathSwitchReqFailPduSessItem_t;
616
617 #define PATH_SWITCH_REQ_ACK_TRANSFER_UL_NGU_UP_TNL_INFO_PRESENT         (1 << 0)
618 #define PATH_SWITCH_REQ_ACK_TRANSFER_SECURITY_IND_PRESENT                       (1 << 1)
619 typedef struct
620 {
621         UpTransLayerInfo_t                                              ulNguUpTnlInfo;//Optional
622         SecurIndic_t                                                    securityIndication;//Optional
623         UINT8                                                                   upTransLayerInfoPairItemNum;
624         UpTransLayerInfo_t                                              ulNguUpTnlInfoItem[ngap_maxnoofMultiConnectivityMinusOne];
625         UpTransLayerInfo_t                                              dlNguUpTnlInfoItem[ngap_maxnoofMultiConnectivityMinusOne];
626 }PathSwitchReqAckTransfer_t;
627
628 typedef struct
629 {
630         UINT16                                                                  sessId;
631         PathSwitchReqAckTransfer_t                              pathSwitchReqAckTransfer;
632 }PathSwitchReqAckPduSessItem_t;
633
634 typedef struct
635 {
636         NgapCause_e                                                             cause;
637 }PathSwitchReqUnsuccTransfer_t;
638
639
640 typedef struct
641 {
642         UINT16                                                                  sessId;
643         PathSwitchReqUnsuccTransfer_t                   pathSwitchReqUnsuccTransfer;
644 }PathSwitchRlsPduSessItem_t;
645
646 typedef struct
647 {
648         UINT8                                   numAmf;
649         IpAddress_t                             amfAddr[NGAP_MAX_AMF_NUM];
650         BroadPlmns_t                            broadPlmn[NGAP_MAX_AMF_NUM];
651 }RegisterAmf_t;
652
653 typedef struct
654 {
655         IpAddress_t                             ipAddr;
656         UINT8                                   state;
657         NgapCause_e                             cause;
658         BroadPlmns_t                    bPlmn;
659 }AmfRegistResult_t;
660 typedef struct
661 {
662         UINT8                                   areaIntTaiNUm;
663         Tai_t                                   areaIntTaiItem[ngap_maxnoofTAIinAoI];
664         UINT8                                   areaIntCellNum;
665         CuNrCgi_t                               areaIntCgiItem[ngap_maxnoofCellinAoI];
666         UINT8                                   areaIntRanNodeIdNum;
667         GlobalRanNodeId_t               areaIntRanNodeIdItem[ngap_maxnoofRANNodeinAoI];
668 }AreaInterestItem_t;
669
670 typedef struct
671 {
672         UINT8                                   areaIntItemNum;
673         AreaInterestItem_t              areaIntItem[ngap_maxnoofAoI];
674         UINT8                                   locaReportReferenceId;
675 }AreaInterestListItem_t;
676
677 typedef struct
678 {
679         EventType_e                             eventType;
680         ReportArea_e                    reportArea;
681         UINT8                                   areaIntListItemNum;
682         AreaInterestListItem_t  areaIntListItem[ngap_maxnoofAoI];
683         UINT8                                   locaReportReferenceIdTobeCancel;//Condition
684 }LocationReportRequestType_t;
685
686 /**********************************************************************************
687 ***********************************************************************************
688 *********** CUC --> NGAP                MESSAGE STRUCTURE *************************
689 ***********************************************************************************
690 ***********************************************************************************/
691
692 /* Register Request ( NG Setup Request )*/
693 typedef struct ngapRegistergNBReq
694 {
695     Instance_t                              instance;
696         PlmnId_t                                                                plmnId;
697         gNBId_t                                                                 gnbId;
698         RanName_t                                                               ranName;
699         SupportTas_t                                                    supportTa;
700         PagingDRX_e                                                             ranDefaPagDrx;
701         UINT8                                                                   ueRetInfoFlag;
702         UERetentionInformation_e                                ueRetenInfo;
703         RegisterAmf_t                                                   registerAmfInfo;
704 }NgapRegistergNBReq_t;
705
706 /* First NAS Request (Initial Ue Message)*/
707 #define FIRST_UL_NAS_AMF_REGISTER_PRESENT                               (1 << 0)
708 #define FIRST_UL_NAS_FIVEG_STMSI_PRESENT                        (1 << 1)
709 #define FIRST_UL_NAS_LOCATION_INFO_TIMESTAMP_PRESENT    (1 << 2)
710 #define FIRST_UL_NAS_UE_CONTEXT_REQ_PRESENT                     (1 << 3)
711 typedef struct ngapFirstNasReq
712 {
713         UINT16                                                                  bitMask;
714         NrCellId_t                                                              nrCellId;
715         Instance_t                                                              instance;
716     UINT64                                              ranUeNgapId;
717     PlmnId_t                                plmnId;
718         guamiType_e                                                             guamiType;
719     Guami_t                                 guami;
720         /* e_RRCEstablishmentCause */
721     RrcEstablishmentCause_e                 establishmentCause;
722     NasPdu_t                                nasPdu;
723         CuTac_t                                                 tac;
724         Timestamp_t                                                             timeStamp;
725     FiveGSTmsi_t                            fiveGSTmsi;
726     ueContextRequest_e                      ueReq;
727     SliceList_t                             ranAllowNssai;
728 } NgapFirstNasReq_t;
729
730 /* Ue Radio Capability Check Response */
731 typedef struct ngapUeRadioCapaCheckRsp
732 {
733         Instance_t                                                              instance;
734         UINT64                                          ranUeNgapId;
735     AmfUeNgapId_t                           amfUeNgapId;
736         IMSVoiceSupportInd_e                                    IMSVoiceSupportInd;
737 }NgapUeRadioCapaCheckRsp_t;
738
739 /* UL NAS Transfer */
740 #define UL_NAS_LOCATION_INFO_TIMESTAMP_PRESENT  (1 << 0)
741 typedef struct ngapULNas
742 {
743         UINT16                                                                  bitMask;
744         Instance_t                                                              instance;
745         NrCellId_t                                                              nrCellId;
746     UINT64                                              ranUeNgapId;
747     AmfUeNgapId_t                           amfUeNgapId;
748     NasPdu_t                                nasPdu;
749         PlmnId_t                                                plmnId;
750     CuTac_t                                             tac;
751         Timestamp_t                                                             timeStamp;
752 } NgapULNas_t;
753
754 /*Ue Radio Capability Information Indication*/
755 #define UE_RADIO_CAPABILITY_PAGING_PRESENT              (1 << 0)
756 typedef struct ngapUeRadioCapaInfoIndication
757 {
758         UINT16                                                                  bitMask;
759         Instance_t                                                              instance;
760         UINT64                                          ranUeNgapId;
761     AmfUeNgapId_t                           amfUeNgapId;
762     UeRadioCapability_t                     ueRadioCapability;
763     UeRadioCapaForPag_t                     ueRadioCapabilityForPag;/* optional */
764 }NgapUeRadioCapaInfoIndication_t;
765
766 /* Initial Context Setup Response */
767 typedef struct ngapInitialContextSetupResp
768 {
769         Instance_t                                                              instance;
770         AmfUeNgapId_t                           amfUeNgapId;
771     UINT64                                              ranUeNgapId;
772     UINT8                                   rspFailFlag;
773     NgapCause_e                             failCause;
774     UINT16                                  pduSessSetRspNum;
775     PduSessSetupResp_t                      pduSessSetRspItem[NG_MAX_SESSION_NUM];
776     UINT16                                  pduSessSetFailNum;
777     PduSessSetupFail_t                      pduSessSetFailItem[NG_MAX_SESSION_NUM];
778 } NgapInitialContextSetupResp_t;
779
780 /* PDU Session Resource Setup Response */
781 typedef struct ngapPduSessSetupRsp
782 {
783         Instance_t                                                              instance;
784         AmfUeNgapId_t                           amfUeNgapId;
785     UINT64                                              ranUeNgapId;
786     UINT16                                  pduSessSetRspNum;
787     PduSessSetupResp_t                      pduSessSetRspItem[NG_MAX_SESSION_NUM];
788     UINT16                                  pduSessSetFailNum;
789     PduSessSetupFail_t                      pduSessSetFailItem[NG_MAX_SESSION_NUM];
790 }NgapPduSessSetupRsp_t;
791
792 /* Ue Context Release Request */
793 typedef struct ngapUeCxtReleaseReq
794 {
795         Instance_t                                                              instance;
796     UINT64                                              ranUeNgapId;
797     AmfUeNgapId_t                           amfUeNgapId;
798     UINT16                                  sessRlsNum;
799     UINT16                                          rlsSessId[NG_MAX_SESSION_NUM];
800     NgapCause_e                             cause;
801 } NgapUeCxtReleaseReq_t;
802
803 /* Ue Context Release Complete */
804 #define UE_CONTEXT_RELEASE_COMPLETE_USERLOCATION_TIMESTAMP_PRESENT      (1 << 0)
805 typedef struct ngapUeReleaseComplete
806 {
807         UINT16                                                                  bitMask;
808         Instance_t                                                              instance;
809     UINT64                                              ranUeNgapId;
810     AmfUeNgapId_t                           amfUeNgapId;
811         UINT8                                                                   locationFlag;
812         PlmnId_t                                                                plmnId;
813         NrCellId_t                                                              cellId;
814         CuTac_t                                                                 tac;
815         Timestamp_t                                                             timeStamp;
816     RecommCellforPag_t                      recomCellInfo;
817     RecommRanforPag_t                       recomRanInfo;
818     UINT8                                   rlsSessNum;
819         PduSessResourceItem_t                                   sessResourceItem[NG_MAX_SESSION_NUM];
820     UINT8                                   allSessRlsFlag;
821 } NgapUeReleaseComplete_t;
822
823 #define HANDOVER_REQUIRED_DIRECT_FORWARDING_PATH_AVAILABILITY_PRESENT   (1 << 0)
824 typedef struct ngapHandoverRequired
825 {
826         UINT16                                                                  bitMask;
827         Instance_t                                                              instance;
828     UINT64                                              ranUeNgapId;
829     AmfUeNgapId_t                           amfUeNgapId;
830         HandoverType_e                                                  handoverType;
831         NgapCause_e                                                             cause;
832         PlmnId_t                                                                plmnId;
833         gNBId_t                                                                 gnbId;
834         Tai_t                                                                   tai;
835         DirectForwardPathAvailability_e                 directForwardPathAvailability;//Optional
836         UINT8                                   sessNum;
837         HoRequiredPduSessResourcItem_t                  sessResourceItem[NG_MAX_SESSION_NUM];
838 }NgapHandoverRequired_t;
839
840 typedef struct ngapHandoverRequestAcknowledge
841 {
842         Instance_t                                                              instance;
843     UINT64                                              ranUeNgapId;
844     AmfUeNgapId_t                           amfUeNgapId;
845         UINT8                                                                   ackSessNum;
846         HoRequestAckPduSessItem_t                               HoRequestAckSessItem[NG_MAX_SESSION_NUM];
847         UINT8                                                                   failSessNum;
848         HoRequestFailPduSessItem_t                              HoRequestFailSessItem[NG_MAX_SESSION_NUM];
849 }NgapHandoverRequestAcknowledge_t;
850 typedef struct ngapHandoverFailure
851 {
852         Instance_t                                                              instance;
853     AmfUeNgapId_t                           amfUeNgapId;
854         NgapCause_e                                                             cause;
855 }NgapHandoverFailure_t;
856 #define HANDOVER_NOTIFY_USERLOCATION_TIMESTAMP_PRESENT                  (1 << 0)
857 typedef struct ngapHandoverNotify
858 {
859         Instance_t                                                              instance;
860     UINT64                                              ranUeNgapId;
861     AmfUeNgapId_t                           amfUeNgapId;
862         PlmnId_t                                                                plmnId;
863         NrCellId_t                                                              cellId;
864         CuTac_t                                                                 tac;
865         Timestamp_t                                                             timeStamp;
866 }NgapHandoverNotify_t;
867 /* Handover Cancel */
868 typedef struct ngapHandoverCancel
869 {
870         Instance_t                                                              instance;
871     UINT64                                              ranUeNgapId;
872     AmfUeNgapId_t                           amfUeNgapId;
873         NgapCause_e                                                             cause;
874 }NgapHandoverCancel_t;
875
876 /* Path Switch Request */
877 #define PATH_SWITCH_REQUEST_USERLOCATION_TIMESTAMP_PRESENT              (1 << 0)
878 typedef struct ngapPathSwitchRequest
879 {
880         UINT16                                                                  bitMask;
881         Instance_t                                                              instance;
882     UINT64                                              ranUeNgapId;
883     AmfUeNgapId_t                           sourceAmfUeNgapId;
884         PlmnId_t                                                                plmnId;
885         NrCellId_t                                                              cellId;
886         CuTac_t                                                                 tac;
887         Timestamp_t                                                             timeStamp;
888         UeSecurCapa_t                                                   ueSecurityCapability;
889         UINT8                                                                   switchSessNum;
890         PathSwitchReqPduSessItem_t                              switchPduSessItem[NG_MAX_SESSION_NUM];
891         UINT8                                                                   setupFailSessNum;
892         PathSwitchReqFailPduSessItem_t                  setupFailPduSessItem[NG_MAX_SESSION_NUM];
893 }NgapPathSwitchRequest_t;
894
895 /* RRC Inactive Transition Report */
896 #define RRC_INACTIVE_TRANSITION_REPORT_USERLOCATION_TIMESTAMP_PRESENT   (1 << 0)
897 typedef struct ngapRrcInactiveTransitionReport
898 {
899         Instance_t                                                              instance;
900     UINT64                                              ranUeNgapId;
901     AmfUeNgapId_t                           amfUeNgapId;
902         RrcState_e                                                              rrcState;
903         PlmnId_t                                                                plmnId;
904         NrCellId_t                                                              cellId;
905         CuTac_t                                                                 tac;
906         Timestamp_t                                                             timeStamp;
907 }NgapRrcInactiveTransitionReport_t;
908 /**********************************************************************************
909 ***********************************************************************************
910 *************** NGAP --> CUC                 MESSAGE STRUCTURE ********************
911 ***********************************************************************************
912 ***********************************************************************************/
913 /* Register Confirm (NG Setup Response)*/
914 typedef struct ngapRegistergNBCnf
915 {
916         Instance_t                                                              instance;
917     UINT8                                   numAmf;             /* Number of AMF connected */
918         AmfRegistResult_t                                               registRet[NGAP_MAX_AMF_NUM];
919 } NgapRegistergNBCnf_t;
920
921 /* Deregister Indication */
922 typedef struct ngapDeregisteredgNBInd_t
923 {
924     UINT8                                   numAmf;            /* Number of AMF connected */
925 } NgapDeregisteredgNBInd_t;
926
927 #define UE_RADIO_CAPA_CHECK_REQ_UE_RADIO_CAPA_PRESENT           (1 << 0)
928 /* Ue Radio Capability Check Request */
929 typedef struct ngapUeRadioCapaCheckReq
930 {
931         UINT16                                                                  bitMask;
932         Instance_t                                                              instance;
933     AmfUeNgapId_t                           amfUeNgapId;
934     UINT64                                              ranUeNgapId;
935     UeRadioCapability_t                     ueRadioCapability;//Optional
936 }NgapUeRadioCapaCheckReq_t;
937
938 /* DL NAS Transfer */
939 #define DL_NAS_TRANSFER_OLD_AMF_NAME_PRESENT                 (1 << 0)
940 #define DL_NAS_TRANSFER_RAN_PAGING_PRIORITY_PRESENT          (1 << 1)
941 #define DL_NAS_TRANSFER_MOBILITY_RESTRICTION_PRESENT         (1 << 2)
942 #define DL_NAS_TRANSFER_INDEX_TO_RFSP_PRESENT                (1 << 3)
943 #define DL_NAS_TRANSFER_UE_AMBR_PRESENT                      (1 << 4)
944 #define DL_NAS_TRANSFER_SNSSAI_PRESENT                       (1 << 5)
945 typedef struct ngapDLNas
946 {
947         UINT16                                                                  bitMask;
948         Instance_t                                                              instance;
949     AmfUeNgapId_t                           amfUeNgapId;
950     UINT64                                              ranUeNgapId;
951     AmfName_t                               oldAmfName;
952     INT64                                                   ranPagPriority;
953     NasPdu_t                                nasPdu;
954     MobiRestrInfo_t                         mobiRestrictInfo;
955     INT64                                           indexToRfsp;
956     UINT64                                                                      ueAMBRDl;
957         UINT64                                                                  ueAMBRUl;
958     SliceList_t                             amfSlice;
959 }ngapDLNas_t;
960
961 /* Initial Context Setup Request */
962 #define INITIAL_CXT_SETUP_REQ_OLD_AMFNAME_PRESENT                                       (1 << 0)
963 #define INITIAL_CXT_SETUP_REQ_UE_AGGREGATE_MAX_BITRATE_PRESENT                          (1 << 1)
964 #define INITIAL_CXT_SETUP_REQ_CORE_INFO_PRESENT                                         (1 << 2)
965 #define INITIAL_CXT_SETUP_REQ_PDU_SESSION_RESOURCE_SETUPLIST_CXTREQ_PRESENT     (1 << 3)
966 #define INITIAL_CXT_SETUP_REQ_TRACE_ACTIVATION_PRESENT                                  (1 << 4)
967 #define INITIAL_CXT_SETUP_REQ_MOBI_RESTRICT_PRESENT                                     (1 << 5)
968 #define INITIAL_CXT_SETUP_REQ_UE_RADIO_CAPA_PRESENT                                     (1 << 6)
969 #define INITIAL_CXT_SETUP_REQ_IDX_RFSP_PRESENT                                          (1 << 7)
970 #define INITIAL_CXT_SETUP_REQ_MASK_IMEISV_PRESENT                                       (1 << 8)
971 #define INITIAL_CXT_SETUP_REQ_NASPDU_PRESENT                                            (1 << 9)
972 #define INITIAL_CXT_SETUP_REQ_EMERGENCY_FB_PRESENT                                      (1 << 10)
973 #define INITIAL_CXT_SETUP_REQ_INACT_TRANS_RPT_REQ_PRESENT                               (1 << 11)
974 #define INITIAL_CXT_SETUP_REQ_RADIO_CAPA_FOR_PAG_PRESENT                                (1 << 12)
975 #define INITIAL_CXT_SETUP_REQ_REDIRECTION_FOR_VOICE_EPS_FB_PRESENT              (1 << 13)
976 typedef struct ngapInitialContextSetupReq
977 {
978         UINT16                                                                  bitMask;
979         Instance_t                                                              instance;
980         AmfUeNgapId_t                           amfUeNgapId;
981     UINT64                                              ranUeNgapId;
982     AmfName_t                               oldAmfName;//Optional
983     NgapUeAmber_t                                           ueAMBR;//Optional
984     CoreAssitInfo_t                         coreNetAssistInfo;//Optional
985     Guami_t                                 guami;
986     UINT16                                  pduSessSetupNum;
987     PduSessionSetupReq_t                    pduSessSetReqItem[NG_MAX_SESSION_NUM];
988     SliceList_t                             amfSlice;
989     UeSecurCapa_t                           ueSecurityCapa;
990     SecuKey_t                               securityKey;
991     TraceActiv_t                            traceActivation;//Optional
992     MobiRestrInfo_t                         mobiRestrictInfo;//Optional
993     UeRadioCapability_t                     ueRadioCapability;//Optional
994     INT64                                           indexToRfsp;//Optional
995     MaskedImeiSv_t                          maskedImeisv;//Optional
996     NasPdu_t                                nasPdu;//Optional
997     EmergFbInd_t                            emergencyFallbackIndicator;//Optional
998     INT64                                                                   rrcInactiveTransitionReportRequest;//Optional
999     UeRadioCapaForPag_t                     ueRadioCapabilityForPag;//Optional
1000         INT64                                                                   redirectVoiceFb;//Optional
1001 }NgapInitialContextSetupReq_t;
1002
1003 /* PDU Session Resource Setup Request */
1004 #define PDU_SESS_SETUP_REQ_RAN_PAGING_PRIORITY_PRESENT                  (1 << 0)
1005 #define PDU_SESS_SETUP_REQ_NAS_PDU_PRESENT                                              (1 << 1)
1006 #define PDU_SESS_SETUP_REQ_UE_AMBR_PRESENT                                              (1 << 2)
1007
1008 typedef struct ngapPduSessSetupReq
1009 {
1010         UINT16                                                                  bitMask;
1011         Instance_t                                                              instance;
1012         AmfUeNgapId_t                           amfUeNgapId;
1013     UINT64                                              ranUeNgapId;
1014     INT64                                                   ranPagPriority;//Optional
1015         NasPdu_t                                                                nasPdu;//Optional
1016         UINT16                                  pduSessSetupNum;
1017     PduSessionSetupReq_t                    pduSessSetReqItem[NG_MAX_SESSION_NUM];
1018         UINT64                                                                  ueAMBRDl;//Optional
1019         UINT64                                                                  ueAMBRUl;//Optional
1020 }NgapPduSessSetupReq_t;
1021
1022 /* Ue Context Release Command */
1023 typedef struct ngapUeReleaseCommand
1024 {
1025         /* UE_NGAP_IDs_PR */
1026         Instance_t                                                              instance;
1027         NgapIdType_e                                                    ngapIdType;
1028     INT64                                               ranUeNgapId;
1029     AmfUeNgapId_t                           amfUeNgapId;
1030     NgapCause_e                             cause;
1031 }NgapUeReleaseCommand_t;
1032
1033 /* Handover Command */
1034 #define HANDOVER_COMMAND_NAS_SECURITY_PARAM_FROM_NGRAN_PRESENT  (1 << 0)
1035 typedef struct ngapHandoverCommand
1036 {
1037         UINT16                                                                  bitMask;
1038         Instance_t                                                              instance;
1039         AmfUeNgapId_t                           amfUeNgapId;
1040     UINT64                                              ranUeNgapId;
1041         HandoverType_e                                                  handoverType;
1042         UINT8                                   HoSessNum;
1043         HoCmdSuccPduSessResourceItem_t                  HoSessResourceItem[NG_MAX_SESSION_NUM];
1044         UINT8                                   rlsSessNum;
1045         HoCmdFailPduSessResourcItem_t                   rlsSessResourceItem[NG_MAX_SESSION_NUM];
1046 }NgapHandoverCommand_t;
1047
1048 /* Handover Preparation Failure*/
1049 typedef struct ngapHandoverPreparationFailure
1050 {
1051         UINT16                                                                  bitMask;
1052         Instance_t                                                              instance;
1053         AmfUeNgapId_t                           amfUeNgapId;
1054     UINT64                                              ranUeNgapId;
1055         NgapCause_e                                                             cause;
1056 }NgapHandoverPreparationFailure_t;
1057
1058 /* Handover Request */
1059 #define HANDOVER_REQUEST_CORE_ASSIST_INFO_PRESENT                                       (1 << 0)
1060 #define HANDOVER_REQUEST_NEW_SECURITY_CTX_IND_PRESENT                           (1 << 1)
1061 #define HANDOVER_REQUEST_TRACE_ACTIVATION_PRESENT                                       (1 << 2)
1062 #define HANDOVER_REQUEST_MASKED_IMEISV_PRESENT                                          (1 << 3)
1063 #define HANDOVER_REQUEST_MOBILITY_RESTRICTION_INFO_PRESENT                      (1 << 4)
1064 #define HANDOVER_REQUEST_LOCATION_REPORT_REQUEST_TYPE_PRESENT           (1 << 5)
1065 #define HANDOVER_REQUEST_RRC_INACTIVE_TRANS_REPORT_REQUEST_PRESNET      (1 << 6)
1066 #define HANDOVER_REQUEST_REDIRECT_VOICE_FB_PRESNET                                      (1 << 7)
1067 typedef struct ngapHandoverRequest
1068 {
1069         UINT16                                                                  bitMask;
1070         Instance_t                                                              instance;
1071         AmfUeNgapId_t                           amfUeNgapId;
1072         HandoverType_e                                                  handoverType;
1073         NgapCause_e                                                             cause;
1074     NgapUeAmber_t                                           ueAMBR;
1075     CoreAssitInfo_t                         coreNetAssistInfo;//Optional
1076     UeSecurCapa_t                                                       ueSecurityCapability;
1077         SecurityCtx_t                                                   securityContext;
1078         NewSecurityCtxInd_e                                             newSecurityContextInd;//Optional
1079         NasPdu_t                                                                NASC;
1080         UINT8                                                                   sessNum;
1081         HoRequestPduSessResourceItem_t                  HoRequestSessResourceItem[NG_MAX_SESSION_NUM];
1082     SliceList_t                             amfSlice;
1083     TraceActiv_t                            traceActivation;//Optional
1084     MaskedImeiSv_t                          maskedImeisv;//Optional
1085     MobiRestrInfo_t                         mobiRestrictInfo;//Optional
1086     LocationReportRequestType_t                         locaReportReqType;//Optional
1087     INT64                                                                   rrcInactiveTransitionReportRequest;//Optional
1088     Guami_t                                                                     guami;
1089         INT64                                                                   redirectVoiceFb;//Optional
1090 }NgapHandoverRequest_t;
1091
1092 /* Handover Cancel Acknowledge */
1093 typedef struct ngapHandoverCancelAcknowledge
1094 {
1095         Instance_t                                                              instance;
1096         AmfUeNgapId_t                           amfUeNgapId;
1097     UINT64                                              ranUeNgapId;
1098 }NgapHandoverCancelAcknowledge_t;
1099
1100 /* Paging */
1101 #define PAGING_PAGING_DRX_PRESENT                                               (1 << 0)
1102 #define PAGING_PAGING_PRIORITY_PRESENT                                  (1 << 1)
1103 #define PAGING_UE_RADIO_CAPABILITY_FOR_PAGING_PRESENT   (1 << 2)
1104 #define PAGING_PAGING_ORIGIN_PRESENT                                    (1 << 3)
1105 #define PAGING_ASSIST_DATA_FOR_PAGING                                   (1 << 4)
1106 typedef struct ngapPaging
1107 {
1108         FiveGSTmsi_t                                                    fiveGSTmsi;
1109         PagingDRX_e                                                             pagingDrx;//Optional
1110         UINT8                                                                   taiForPagingNum;
1111         Tai_t                                                                   taiForPagingItem[ngap_maxnoofTAIforPaging];
1112         PagingPriority_e                                                pagingPriority;//Optional
1113         UeRadioCapaForPag_t                                             ueRadioCapabilityForPaging;//Optional
1114         PagingOrigin_e                                                  pagingOrigin;//Optional
1115         AssistDataForPaging_t                                   assistDataForPaging;//Optional
1116 }NgapPaging_t;
1117
1118 /* Path Switch Request Acknowledge */
1119 #define PATH_SWITCH_REQUEST_ACK_UE_SECURITY_CAPABILITY_PRESENT                                  (1 << 0)
1120 #define PATH_SWITCH_REQUEST_ACK_NEW_SECURITY_CTX_IND_PRESENT                                    (1 << 1)
1121 #define PATH_SWITCH_REQUEST_ACK_CORE_NETWORK_ASSIST_INFO_PRESENT                                (1 << 2)
1122 #define PATH_SWITCH_REQUEST_ACK_RRC_INACTIVE_TRANSITION_REPORT_REQUEST_PRESENT  (1 << 3)
1123 #define PATH_SWITCH_REQUEST_ACK_REDIRECT_VOICE_FB_PRESENT                                               (1 << 4)
1124 typedef struct ngapPathSwitchRequestAcknowledge
1125 {
1126         UINT16                                                                  bitMask;
1127         Instance_t                                                              instance;
1128         AmfUeNgapId_t                           amfUeNgapId;
1129     UINT64                                              ranUeNgapId;
1130         UeSecurCapa_t                                                   ueSecurityCapability;//optional
1131         SecurityCtx_t                                                   securityContext;
1132         NewSecurityCtxInd_e                                             newSecurCtxInd;//optional
1133         UINT8                                                                   switchSessNum;
1134         PathSwitchReqAckPduSessItem_t                   switchPduSessItem[NG_MAX_SESSION_NUM];
1135         UINT8                                                                   rlsSessNum;
1136         PathSwitchRlsPduSessItem_t                              rlsPduSessItem[NG_MAX_SESSION_NUM];
1137         UINT8                                                                   SNssaiNum;
1138         SNssai_t                                                                SNssaiItem[ngap_maxnoofAllowedS_NSSAIs];
1139         CoreAssitInfo_t                                                 coreNetworkAssitInfo;//optional
1140     INT64                                                                   rrcInactiveTransitionReportRequest;//Optional
1141         INT64                                                                   redirectVoiceFb;//Optional
1142 }NgapPathSwitchRequestAcknowledge_t;
1143
1144 /* Path Switch Request Failure */
1145 typedef struct ngapPathSwitchRequestFailure
1146 {
1147         Instance_t                                                              instance;
1148         AmfUeNgapId_t                           amfUeNgapId;
1149     UINT64                                              ranUeNgapId;
1150         UINT8                                                                   rlsSessNum;
1151         PathSwitchRlsPduSessItem_t                              rlsPduSessItem[NG_MAX_SESSION_NUM];
1152 }NgapPathSwitchRequestFailure_t;
1153 /**********************************************************************************
1154 ***********************************************************************************
1155 ***************** CUC <--> E1AP               ACCORDING TO STRUCTURE **************
1156 ***********************************************************************************
1157 ***********************************************************************************/
1158 #define MAX_LENGTH_GNBCUCP_NAME         150
1159
1160 typedef struct  gnbCucpName
1161 {
1162     char                                    gnbCucpName[MAX_LENGTH_GNBCUCP_NAME];
1163 }GnbCucpName_t;
1164
1165 #define SECURITY_ALGORITHM_INTERGRITY_PROTECTION_ALGORITHM          (1 << 0)
1166 typedef struct
1167 {
1168         UINT16                                                              bitMask;
1169         CipAlgorithm_e                                  cipheringAlgorithm;
1170         IpAlgorithm_e                                           integrityProtectionAlgorithm    ;/* OPTIONAL */
1171 }SecuAlgorithm_t;
1172
1173 typedef struct
1174 {
1175         UINT32                                                  size;
1176         UINT8                                                   buffer[MAX_SIZE_OF_OCTET_STRING];
1177 }EncrypTionKey_t;
1178
1179 typedef struct
1180 {
1181         UINT32                                                  size;
1182         UINT8                                                   buffer[MAX_SIZE_OF_OCTET_STRING];
1183 }IntegrityProtectKey_t;
1184
1185 #define USER_PLANE_SECURITY_KEY_INTERGRITYPROTECTIONKEY_PRESENT     (1 << 0)
1186 typedef struct
1187 {
1188         UINT16                                                              bitMask;
1189         EncrypTionKey_t                             encryptionKey;
1190         IntegrityProtectKey_t                           integrityProtectionKey;/* OPTIONAL */
1191 }UpSecuritykey_t;
1192
1193 typedef struct
1194 {
1195     SecuAlgorithm_t                                         secuAlgorithm;
1196         UpSecuritykey_t                                         upSecukey;
1197 }SecuInfo_t;
1198
1199 #define GBR_QOS_FLOW_INFO_MAX_PACKET_LOSSRATE_DOWNLINK_PRESENT                  (1 << 0)
1200 #define GBR_QOS_FLOW_INFO_MAX_PACKET_LOSSRATE_UPLINK_PRESENT                (1 << 1)
1201 typedef struct gbrQoSFlowInformation
1202 {
1203     UINT16                                                                  bitMask;
1204     UINT64                                      maxFlowBitRateDownlink;
1205         UINT64                                  maxFlowBitRateUplink;
1206         UINT64                                  guaranteedFlowBitRateDownlink;
1207         UINT64                                  guaranteedFlowBitRateUplink;
1208         UINT64                                  maxPacketLossRateDownlink;/* OPTIONAL */
1209         UINT64                                  maxPacketLossRateUplink;/* OPTIONAL */
1210 } GBRQoSFlowInformation_t;
1211
1212 #define QOS_FLOW_LEVEL_PARA_GBR_QOS_FLOW_INFO_PRESENT           (1 << 0)
1213 #define QOS_FLOW_LEVEL_PARA_REFLECTIVE_QOS_ATTRIBUTE_PRESENT    (1 << 1)
1214 #define QOS_FLOW_LEVEL_PARA_ADDITIONAL_QOS_FLOW_INFO_PRESENT    (1 << 2)
1215 #define QOS_FLOW_LEVEL_PARA_PAGING_POLICY_INDICATOR_PRESENT     (1 << 3)
1216 #define QOS_FLOW_LEVEL_PARA_RDI_PRESENT                             (1 << 4)
1217 typedef struct
1218 {
1219     UINT16                                                                  bitMask;
1220         /* QoS_Characteristics_PR */
1221         QosCharact_t                                                    qosCharacter;
1222     AllocAndRetenPriority_t                         ngRanAllAndRetentionPriority;
1223     GBRQoSFlowInformation_t                 gbrQoSFlowInformation;/* OPTIONAL */
1224         /* e_ReflectiveQosAttribute */
1225     ReflectiveQosAttribute_e                reflectiveQosAttribute;/* OPTIONAL */
1226         /* e_AdditionalQosFlowInformation */
1227     AddQosFlowInfo_e                                    addiQosFlowInfo;/* OPTIONAL */
1228         INT64                                                                   pagingPolicyInd;/* OPTIONAL */
1229         RDI_e                                                                   rDI;/* OPTIONAL */
1230 }QosFlowLevelQosPar_t;
1231
1232 #define QOS_FLOW_QOS_ITEM_QOS_FLOW_MAP_INDICATION_PRESENT       (1 << 0)
1233 typedef struct
1234 {
1235     UINT16                                                                  bitMask;
1236     INT64                                                       qosFlowIdentifier;
1237     QosFlowLevelQosPar_t                    qosFlowLevelQosPar;
1238         /* e_QoS_Flow_Mapping_Indication */
1239         QosFlowMapInd_e                                         qosFlowMapInd;/* OPTIONAL */
1240 }QoSFlowQosItem_t;
1241
1242 #define QOS_FLOW_ITEM_QOS_FLOW_MAP_INDICATION_PRESENT   (1 << 0)
1243 typedef struct qoSFlowItem
1244 {
1245         long                                                qosFlowIdentifier;
1246 }QoSFlowItem_t;
1247
1248 typedef struct qosFlowList
1249 {
1250     UINT8                                   qosFlowItemNum;
1251     QoSFlowItem_t                               qosFlowItem[e1ap_maxnoofQoSFlows];
1252 }QoSFlowList_t;
1253
1254 typedef struct qosFlowMap
1255 {
1256         UINT8                                                                   qosFlowNum;
1257     INT64                                                                       qfi;
1258         UINT8                                                                   qosFlowMapFlag;
1259         /* e_QoS_Flow_Mapping_Indication */
1260         QosFlowMapInd_e                                                 qosFlowMapInd;
1261 }QosFlowMap_t;
1262
1263 #define QOS_FLOW_MAP_IND_PRESENT        (1 << 0)
1264 typedef struct qosFlowMapItem
1265 {
1266     UINT16                                                                  bitMask;
1267     UINT8                                                                       qosFlowIdentifier;
1268         QosFlowMapInd_e                                                 qosFlowMappingInd;/* OPTIONAL */
1269 }QosFlowMapItem_t;
1270
1271 typedef struct qosFlowMapList
1272 {
1273         UINT8                                   qosFlowMapItemNum;
1274     QosFlowMapItem_t                                    qosFlowMapItem[e1ap_maxnoofQoSFlows];
1275 }QosFlowMapList_t;
1276
1277 #define DATA_FORWARDIGN_INFO_REQ_QOS_FLOWS_FORWARD_TUNNELS_PRESENT      (1 << 0)
1278 typedef struct
1279 {
1280         UINT16                                                              bitMask;
1281         /* e_Data_Forwarding_Request */
1282     DataForwardReq_e                                            dataForwardingRequest;
1283         QosFlowMapList_t                                                qosFlowForwardTunnelList;/* OPTIONAL */
1284 }DFIRequest_t;
1285
1286 #define CELL_GROUP_ITEM_UL_CONFIGURATION_PRESENT                (1 << 0)
1287 #define CELL_GROUP_ITEM_DL_TX_STOP_PRESENT                              (1 << 1)
1288 #define CELL_GROUP_ITEM_RAT_TYPE_PRESENT                                (1 << 2)
1289 typedef struct cellGroupItem
1290 {
1291     UINT16                                                                  bitMask;
1292     INT64                                               cellGroupID;
1293         /* e_UL_Configuration */
1294     UlConfig_e                                          ulConfig;/* OPTIONAL */
1295         /* e_DL_TX_Stop */
1296     DlTXStop_e                                                          dlTxStop;/* OPTIONAL */
1297         /* e_RAT_Type */
1298     RatType_e                                                           ratType;/* OPTIONAL */
1299 }CellGroupItem_t;
1300
1301 typedef struct cellGroupInformation
1302 {
1303     UINT8                                   cellGroupNum;
1304     CellGroupItem_t                         cellGroupItem[e1ap_maxnoofCellGroups];
1305 }CellGroupInformation_t;
1306
1307 typedef struct flowMappingInformation
1308 {
1309         QoSFlowList_t                                                   qosFlowList;
1310 }FlowMappingInformation_t;
1311
1312 #define ROHC_CONTINUE_ROHC_PRESENT                              (1 << 0)
1313 typedef struct
1314 {
1315         UINT16                                                                  bitMask;
1316         INT64                                                                   maxCid;
1317         INT64                                                                   rohcProfiles;
1318         /* e_ROHC__continueROHC */
1319         RohcContinueRohc_e                                      continueRohc;/* OPTIONAL */
1320 }Rohc_t;
1321
1322 typedef struct
1323 {
1324         /* ROHC_Parameters_PR */
1325         RohcParaPR_e                                                    rohcType;
1326         Rohc_t                                                                  rohc;
1327         Rohc_t                                                                  ulOnlyRohc;
1328 }RohcPara_t;
1329
1330 #define PDCP_CONFIGURATION_ROHC_PARA_PRESENT                            (1 << 0)
1331 #define PDCP_CONFIGURATION_REORDERING_TIMER_PRESENT             (1 << 1)
1332 #define PDCP_CONFIGURATION_DISCARD_TIMER_PRESENT                        (1 << 2)
1333 #define PDCP_CONFIGURATION_UL_DATA_SPLIT_THRESHOLD_PRESENT      (1 << 3)
1334 #define PDCP_CONFIGURATION_PDCP_DUPLICATION_PRESENT             (1 << 4)
1335 #define PDCP_CONFIGURATION_PDCP_REESTABLISHMENT_PRESENT         (1 << 5)
1336 #define PDCP_CONFIGURATION_PDCP_DATA_RECOVERY_PRESENT           (1 << 6)
1337 #define PDCP_CONFIGURATION_DUPLICATION_ACTIVATION_PRESENT   (1 << 7)
1338 #define PDCP_CONFIGURATION_OUT_OF_ORDER_DELIVERY_PRESENT        (1 << 8)
1339 typedef struct pdcpConfiguration
1340 {
1341         UINT16                                                                  bitMask;
1342         /* e_PDCP_SN_Size */
1343         PdcpSNSize_e                                                    pdcpSNSizeUl;
1344         PdcpSNSize_e                                                    pdcpSNSizeDl;
1345         /* e_RLC_Mode */
1346         CuRlcMode_e                                                             rlcMode;
1347         RohcPara_t                                                              rohcPara;/* OPTIONAL */
1348         /* e_T_Reordering */
1349         TReordering_e                                                   reorderTimer;/* OPTIONAL */
1350         /* e_DiscardTimer */
1351         DiscardTimer_e                                                  discadTimer;/* OPTIONAL */
1352         /* e_ULDataSplitThreshold */
1353         UlDataSplitThreshold_e                                  ulDataSplitThreshold;/* OPTIONAL */
1354     /* e_PDCP_Duplication */
1355         PdcpDuplication_e                                               pdcpDuplication;/* OPTIONAL */
1356         /* e_PDCP_Reestablishment */
1357     PdcpReestablishment_e                                   pdcpReestablishment;/* OPTIONAL */
1358     /* e_PDCP_DataRecovery */
1359         PdcpDataRecovery_e                                              pdcpDataRecovery;/* OPTIONAL */
1360         /* e_Duplication_Activation */
1361         DuplicationActivation_e                                 duplicationAct;/* OPTIONAL */
1362         /* e_OutOfOrderDelivery */
1363         OutOfOrderDelivery_e                                    outofOrderDelivery;/* OPTIONAL */
1364 }PDCPConfiguration_t;
1365
1366 typedef struct
1367 {
1368         /* e_DefaultDRB */
1369         DefaultDRB_e                                                    defaultDrbInd;
1370         /* e_SDAP_Header_UL */
1371         SdapHeader_e                                                    sdapUlHeaderInd;
1372         /* e_SDAP_Header_DL */
1373         SdapHeader_e                                                    sdapDlHeaderInd;
1374 }SdapCfg_t;
1375
1376 typedef struct
1377 {
1378         UINT8                                                                   qosFlowNum;
1379         QoSFlowQosItem_t                                                qosFlowInfo[e1ap_maxnoofQoSFlows];
1380 }QosFlowQosPara_t;
1381
1382 typedef struct
1383 {
1384         INT64                                                                   pdcpSN;
1385         UINT64                                                                  hFN;
1386 }PdcpCount_t;
1387
1388 #define PDCP_SN_STATUS_INFORMATION_RECEIVE_PDCP_SDU_STATUSPRESENT               (1 << 0)
1389 typedef struct
1390 {
1391         UINT16                                                                  bitMask;
1392     UINT64                                                                      receivePdcpSDUBitNum;/* OPTIONAL */
1393         UINT64                                                                  receiveStatusofPdcpSDU[2048]; /*Length: 1 - 131072 */
1394         PdcpCount_t                                                             ulCountValue;
1395 }PdcpUlStatusInfo_t;
1396
1397 typedef struct
1398 {
1399         PdcpCount_t                                                             dlCountValue;
1400 }PdcpDlStatusInfo_t;
1401
1402 typedef struct
1403 {
1404     PdcpUlStatusInfo_t                      pdcpUlStatusInfo;
1405         PdcpDlStatusInfo_t                              pdcpDlStatusInfo;
1406 }PdcpSNStatusInfo_t;
1407
1408 #define DRB_TO_SETUP_ITEM_DRB_DFI_REQUEST_PRESENT                       (1 << 0)
1409 #define DRB_TO_SETUP_ITEM_DRB_INACTIVITY_TIMER_PRESENT          (1 << 1)
1410 #define DRB_TO_SETUP_ITEM_PDCP_SN_STATUS_INFO_PRESENT           (1 << 2)
1411 typedef struct drbToSetupItem
1412 {
1413         UINT16                                                              bitMask;
1414         UINT8                                   drbID;
1415         SdapCfg_t                                                               sdapConfig;
1416         PDCPConfiguration_t                         pdcpConfig;
1417         CellGroupInformation_t                  cellGroupInfo;
1418         QosFlowQosPara_t                                                qosFlowSetup;
1419         DFIRequest_t                                                    drbDataForwardInfoReq;/* OPTIONAL */
1420         INT64                                                           inactivityTimer;/* OPTIONAL */
1421         PdcpSNStatusInfo_t                                              pdcpSNStatusInfo;/* OPTIONAL */
1422 }DRBToSetupItem_t;
1423
1424 typedef struct drbToSetupList
1425 {
1426         UINT8                                   drbToSetupListNum;
1427     DRBToSetupItem_t                        drbToSetupItem[e1ap_maxnoofDRBs];
1428 }DRBToSetupList_t;
1429
1430 #define PDU_SESSION_RESOURCE_SETUP_DL_AMBR_PRESENT                              (1 << 0)
1431 #define PDU_SESSION_RESOURCE_SETUP_DATA_FORWARD_INFORMATION_REQ_PRESENT (1 << 1)
1432 #define PDU_SESSION_RESOURCE_SETUP_INACTIVITY_TIMER_PRESENT                             (1 << 2)
1433 #define PDU_SESSION_RESOURCE_SETUP_DL_UP_TRANSPORT_LAYER_INFO_PRESENT   (1 << 3)
1434 #define PDU_SESSION_RESOURCE_SETUP_NETWORK_INSTANCE_PRESENT                             (1 << 4)
1435 typedef struct pduSessionResourceToSetupItem
1436 {
1437         UINT16                                                              bitMask;
1438         UINT16                                                                  pduSessionId;
1439         PduSessType_e                                           pduSessionType;
1440         SNssai_t                                                                snssai;
1441         SecuInd_t                                               securityIndication;
1442         UINT64                                                                  pduSessionResourceDlAMBR;/* OPTIONAL */
1443     UpTransLayerInfo_t                      ulUpTNLInformation;
1444     DFIRequest_t                                        dataForwardInfoReq;/* OPTIONAL */
1445         INT64                                                           inactTimer;/* OPTIONAL */
1446         UpTransLayerInfo_t                                              existAllocateNgDlUpTnlInfo;/* OPTIONAL */
1447         INT64                                                                   networkInstance;/* OPTIONAL */
1448     DRBToSetupList_t                                            drbToSetupList;
1449 }PduSessionResourceToSetupItem_t;
1450
1451 typedef struct pduSessionResourceToSetupList
1452 {
1453     UINT8                                   sessNum;
1454     PduSessionResourceToSetupItem_t         pduSessionResourceToSetupItem[e1ap_maxnoofPDUSessionResource];
1455 }PduSessionResourceToSetupList_t;
1456
1457 typedef struct upParametersItem
1458 {
1459     UpTransLayerInfo_t                       upTransLayerInfo;
1460     INT64                                                cellGroupID;
1461 } UPParametersItem_t;
1462
1463 typedef struct upParametersList
1464 {
1465     UINT8                                    upParaNum;
1466     UPParametersItem_t                       upParametersItem[e1ap_maxnoofUPParameters];
1467 } UPParametersList_t;
1468
1469 #define DATA_FORWARDIGN_INFO_RSP_UL_DATA_FORWARD_PRESENT        (1 << 0)
1470 #define DATA_FORWARDIGN_INFO_RSP_DL_DATA_FORWARD_PRESENT        (1 << 1)
1471 typedef struct dFIResponse
1472 {
1473         UINT16                                                                   bitMask;
1474         UpTransLayerInfo_t                       ulDataForwarding;/*optional*/
1475         UpTransLayerInfo_t                       dlDataForwarding;/*optional*/
1476 } DFIResponse_t;
1477
1478 #define DRB_TO_MODIFY_ITEM_SDAP_CONFIG_PRESENT                                          (1 << 0)
1479 #define DRB_TO_MODIFY_ITEM_PDCP_CONFIG_PRESENT                                          (1 << 1)
1480 #define DRB_TO_MODIFY_ITEM_DRB_DATA_FORWARD_INFO_RSP_PRESENT            (1 << 2)
1481 #define DRB_TO_MODIFY_ITEM_PDCP_SN_STATUS_REQ_PRESENT                           (1 << 3)
1482 #define DRB_TO_MODIFY_ITEM_PDCP_SN_STATUS_INFO_PRESENT                          (1 << 4)
1483 #define DRB_TO_MODIFY_ITEM_DL_UP_PARA_PRESENT                                           (1 << 5)
1484 #define DRB_TO_MODIFY_ITEM_CELL_GROUP_TO_ADD_PRESENT                            (1 << 6)
1485 #define DRB_TO_MODIFY_ITEM_CELL_GROUP_TO_MODIFY_PRESENT                         (1 << 7)
1486 #define DRB_TO_MODIFY_ITEM_CELL_GROUP_TO_REMOVE_PRESENT                         (1 << 8)
1487 #define DRB_TO_MODIFY_ITEM_FLOW_MAPPING_INFO_PRESENT                            (1 << 9)
1488 #define DRB_TO_MODIFY_ITEM_DRB_INACTIVITY_TIMER_PRESENT                         (1 << 10)
1489 typedef struct drbToModifyItem
1490 {
1491         UINT16                                                              bitMask;
1492         UINT8                                   drb_ID;
1493         SdapCfg_t                                                               sdapConfig;/* OPTIONAL */
1494         PDCPConfiguration_t                         pdcpConfig;/* OPTIONAL */
1495         DFIResponse_t                                                   drbDataForwardInfoRsp;/* OPTIONAL */
1496         PdcpSNStatusRequest_e                                   pdcpSNStatusReq;/* OPTIONAL */
1497         PdcpSNStatusInfo_t                                              pdcpSNStatusInfo;/* OPTIONAL */
1498         UPParametersList_t                      dlUPParameters;/* OPTIONAL */
1499         CellGroupInformation_t                  cellGroupToAdd;/* OPTIONAL */
1500     CellGroupInformation_t                  cellGroupToModify;/* OPTIONAL */
1501     CellGroupInformation_t                  cellGroupToRemove;/* OPTIONAL */
1502         QosFlowQosPara_t                                                flowMappingInfo;/* OPTIONAL */
1503         INT64                                                   drbInactTimer;/* OPTIONAL */
1504 }DRBToModifyItem_t;
1505
1506 typedef struct drbToModifyList
1507 {
1508         UINT8                                   drbToModifyItemNum;
1509     DRBToModifyItem_t                                           drbToModifyItem[e1ap_maxnoofDRBs];
1510 }DRBToModifyList_t;
1511
1512 typedef struct drbToRemoveItem
1513 {
1514     UINT8                                               drb_ID;
1515 }DRBToRemoveItem_t;
1516
1517 typedef struct drbToRemoveList
1518 {
1519         UINT8                                   drbToRemovetemNum;
1520     DRBToRemoveItem_t                                           drbToRemoveItem[e1ap_maxnoofDRBs];
1521 }DRBToRemoveList_t;
1522
1523 #define PDU_SESSION_RESOURCE_TO_MODIFY_SECURITY_INDICATION_PRESENT                      (1 << 0)
1524 #define PDU_SESSION_RESOURCE_TO_MODIFY_DL_AMBR_PRESENT                                                  (1 << 1)
1525 #define PDU_SESSION_RESOURCE_TO_MODIFY_UL_UP_TNL_INFO_PRESENT                                   (1 << 2)
1526 #define PDU_SESSION_RESOURCE_TO_MODIFY_DATA_FORWARD_INFORMATION_REQ_PRESENT                     (1 << 3)
1527 #define PDU_SESSION_RESOURCE_TO_MODIFY_DATA_FORWARD_INFORMATION_RSP_PRESENT                     (1 << 4)
1528 #define PDU_SESSION_RESOURCE_TO_MODIFY_INACTIVITY_TIMER_PRESENT                                         (1 << 5)
1529 #define PDU_SESSION_RESOURCE_TO_MODIFY_NETWORK_INSTANCE_PRESENT                                         (1 << 6)
1530 #define PDU_SESSION_RESOURCE_TO_MODIFY_DRB_TO_SETUP_LIST_PRESENT                                        (1 << 7)
1531 #define PDU_SESSION_RESOURCE_TO_MODIFY_DRB_TO_MODIFY_LIST_PRESENT                                       (1 << 8)
1532 #define PDU_SESSION_RESOURCE_TO_MODIFY_DRB_TO_REMOVE_LIST_PRESENT                                       (1 << 9)
1533 typedef struct pduSessionResourceToModifyItem
1534 {
1535         UINT16                                                                  bitmask;
1536         UINT8                                                                   pduSessionId;
1537         SecuInd_t                                                               secuIndi;/* OPTIONAL */
1538         UINT64                                                                  pduSessionResourceDlAMBR;/* OPTIONAL */
1539         UpTransLayerInfo_t                      ngUlUpTnlInfo;/* OPTIONAL */
1540         DFIRequest_t                                    pduSessionDataForwardInfoReq;/* OPTIONAL */
1541         DFIResponse_t                                   pduSessionDataForwardInfoRsp;/* OPTIONAL */
1542         INT64                                                                   pduSessionInactTimer;/* OPTIONAL */
1543         INT64                                                                   networkInstance;/* OPTIONAL */
1544         DRBToSetupList_t                                                drbToSetupList;/* OPTIONAL */
1545         DRBToModifyList_t                                               drbToModifyList;/* OPTIONAL */
1546         DRBToRemoveList_t                                               drbToRemoveList;/* OPTIONAL */
1547 }PduSessionResourceToModifyItem_t;
1548
1549 typedef struct pduSessionResourceToModifylist
1550 {
1551     UINT8                                   pduSessionResourceToModifyItemNum;
1552     PduSessionResourceToModifyItem_t        pduSessionResourceToModifyItem[e1ap_maxnoofPDUSessionResource];
1553 }PduSessionResourceToModifyList_t;
1554
1555 typedef struct cellGroupList
1556 {
1557     UINT8                                   numCellGroupItem;
1558     CellGroupItem_t                                                 cellGroupItem[e1ap_maxnoofCellGroups];
1559 }CellGroupList_t;
1560
1561 typedef struct pduSessionResourceToRemoveItem
1562 {
1563         UINT16                                  pduSessionID;
1564 }PduSessionResourceToRemoveItem_t;
1565
1566 typedef struct pduSessionResourceToRemoveList
1567 {
1568     UINT8                                   pduSessionResourceToRemoveItemNum;
1569     PduSessionResourceToRemoveItem_t        pduSessionResourceToRemoveItem[e1ap_maxnoofPDUSessionResource];
1570 }PduSessionResourceToRemoveList_t;
1571
1572 typedef struct ieCriticalityDiagnostics
1573 {
1574         Criticality_e                                                    ieCriticality;
1575         E1apProtocolIeId_e                       protocolIEId;
1576         ErrorType_e                                                      typeOfError;
1577 }E1IECriticalityDiagnostics_t;
1578
1579 #define    PROCEDURE_CODE_PRESENT                       (1 << 0)
1580 #define    TRIGGER_MESSAGE_TYPE_PRESENT         (1 << 1)
1581 #define    PROCDURE_CRITICALITY_PRESENT         (1 << 2)
1582 #define    TRANSACTION_ID_PRESENT               (1 << 3)
1583 #define    IE_CRITICALITY_DIAGNOSTICS_PRESENT   (1 << 4)
1584 typedef struct criticalitydiagnostics
1585 {
1586     UINT16                                   bitMask;
1587     E1apProcCode_e                                           procedureCode;/* OPTIONAL */
1588         TriggerMsg_e                                             typeOfMessage;/* OPTIONAL */
1589         Criticality_e                                                    criticality;/* OPTIONAL */
1590         INT64                                                                transactionID;/* OPTIONAL */
1591     UINT8                                    IECriticalityDiagnosticsNum;/* OPTIONAL */
1592         E1IECriticalityDiagnostics_t                 ieCriticalityDiagnostics[e1ap_maxnoofErrors];/* OPTIONAL */
1593 }E1Criticalitydiagnostics_t;
1594
1595 typedef struct e1apCause
1596 {
1597         E1apCausePr_e   present;
1598         union E1apCause_u
1599         {
1600                 E1apCauseRadioNetwork_e         e1apRadioNetwork;
1601                 E1apCauseTransport_e            e1apTransport;
1602                 E1apCauseProtocol_e                     e1apProtocol;
1603                 E1apCauseMisc_e                         e1apMisc;
1604         } choice;
1605 } E1apCause_t;
1606
1607 #define    PART_E1_INTERFACE_GNBCUCPUEID_PRESENT         (1 << 0)
1608 #define    PART_E1_INTERFACE_GNBCUUPUEID_PRESENT         (1 << 1)
1609
1610 typedef struct partE1InterfaceItem
1611 {
1612     UINT16                                   bitMask;
1613     UINT32                                               gnbCucpUeE1apId;/*optional*/
1614     UINT32                                               gnbCuupUeE1apId;/*optional*/
1615 }PartE1InterfaceItem_t;
1616
1617 typedef struct partE1InterfaceList
1618 {
1619     UINT8                                    PartE1InterfaceListNum;
1620         PartE1InterfaceItem_t                        partE1InterfaceItem[e1ap_maxnoofIndividualE1ConnectionsToReset];
1621 }PartE1InterfaceList_t;
1622
1623 typedef struct e1apResetType
1624 {
1625         E1apResetPr_e   present;
1626         union E1apReset_u
1627         {
1628                 INT64                       resetAll;
1629         PartE1InterfaceList_t       PartE1InterfaceList;
1630         } choice;
1631 } E1apResetType_t;
1632
1633 /**********************************************************************************
1634 ***********************************************************************************
1635 ***************** CUC <--> E1AP                MESSAGE STRUCTURE ******************
1636 ***********************************************************************************
1637 ***********************************************************************************/
1638 typedef struct ifmCucpE1apReset
1639 {
1640     UINT64                                  transactionId;
1641     E1apCause_t                             cause;
1642     E1apResetType_t                         e1apResetType;
1643 } IfmCucpE1apReset_t;
1644
1645 #define CUUPE1APRESETACKPARTE1INTERFACE                     (1 << 0)
1646 #define CUUPE1APRESETACKCRITICALDIAGNOSTICS                 (1 << 1)
1647
1648 typedef struct ifmE1apResetAck
1649 {
1650     UINT16                                  bitMask;
1651     UINT64                                  transactionId;
1652     PartE1InterfaceList_t                   PartE1InterfaceList;/*optional*/
1653     E1Criticalitydiagnostics_t              criticalDiagnostics;/*optional*/
1654 } IfmE1apResetAck_t;
1655
1656 #define CUCP_E1AP_SETUP_REQ_GNB_CUCP_NAME_CHOSEN_PRESENT        (1 << 0)
1657 typedef struct ifmCucpE1apSetupReq
1658 {
1659     UINT16                                  bitMask;
1660     UINT64                                  transactionId;
1661     GnbCucpName_t                           gnbCucpName;/*optional*/
1662 } IfmCucpE1apSetupReq_t;
1663
1664 #define CUUPE1APSETUPRSPGNBCUCPNAMECHOSEN                       (1 << 0)
1665 typedef struct ifmCuupE1apSetupRsp
1666 {
1667     UINT16                                  bitMask;
1668     UINT64                                  transactionId;
1669     GnbCucpName_t                           gnbCucpName;/*optional*/
1670 } IfmCuupE1apSetupRsp_t;
1671
1672 #define CUUPE1APSETUPFAILURETIMETOWAIT                          (1 << 0)
1673 #define CUUPE1APSETUPFAILURECRITICALDIAGNOSTICS                 (1 << 1)
1674 typedef struct ifmCuupE1apSetupFailure
1675 {
1676     UINT16                                  bitMask;
1677     long                                    transactionId;
1678     E1apCause_t                             cause;
1679     TimeToWait_e                            timeToWait;/*optional*/
1680     E1Criticalitydiagnostics_t              criticalDiagnostics;/*optional*/
1681 } IfmCuupE1apSetupFailure_t;
1682
1683 typedef struct e1apReleaseReq
1684 {
1685     INT64                                                transactionId;
1686     E1apCause_t                              cause;
1687 } E1apReleaseReq_t;
1688
1689 #define BEARER_CONTEXT_SETUP_UE_DL_MAX_IPDR_PRESENT                                     (1 << 0)
1690 #define BEARER_CONTEXT_SETUP_UE_INACTIVITY_TIMER_PRESENT                (1 << 1)
1691 #define BEARER_CONTEXT_SETUP_BEARER_CONTEXT_STATUS_CHANGE_PRESENT   (1 << 2)
1692 typedef struct e1apBearerContextSetupReq
1693 {
1694     UINT16                                                                      bitMask;
1695         NrCellId_t                                                              cellId;
1696         UINT32                                                                  cucpUeE1apId;
1697     SecuInfo_t                                          secuInfo;
1698         UINT64                                                                  ueDlAMBR;
1699         UINT64                                                                  ueDlMaxIPDR;/*optional*/
1700     PlmnId_t                                servPlmnId;
1701         /* e_ActivityNotificationLevel */
1702     ActNotiLevel_e                                                      actNotiLevel;
1703         /* Inactivity_Timer_t */
1704     INT64                                               inactTimer;/*optional*/
1705         /* e_BearerContextStatusChange */
1706     BearCxtStatusChange_e                                       bearerCxtStatusChg;/*optional*/
1707     PduSessionResourceToSetupList_t         pduSessionResourceToSetupList;
1708 } E1apBearerContextSetupReq_t;
1709
1710 #define DRB_TO_SETUP_MOD_ITEM_DRB_DATA_FORWARD_INFO_REQ_PRESENT                 (1 << 0)
1711 #define DRB_TO_SETUP_MOD_ITEM_DRB_INACTIVITY_TIMER_PRESENT                              (1 << 1)
1712 #define DRB_TO_SETUP_MOD_ITEM_PDCP_UL_COUNT_PRESENT                                             (1 << 2)
1713 #define DRB_TO_SETUP_MOD_ITEM_PDCP_DL_COUNT_PRESENT                                             (1 << 3)
1714 typedef struct drbToSetupModItem
1715 {
1716         UINT16                                                              bitMask;
1717         UINT8                                   drbID;
1718         SdapCfg_t                                                               sdapConfig;
1719         PDCPConfiguration_t                         pdcpConfig;
1720         CellGroupInformation_t                  cellGroupInfo;
1721         QosFlowQosPara_t                                                flowMappingInfo;
1722         DFIRequest_t                                                    drbDataForwardInfoReq;/* OPTIONAL */
1723         INT64                                                                   drbInactTimer;/* OPTIONAL */
1724         PdcpCount_t                                                             pdcpUlCnt;/* OPTIONAL */
1725         PdcpCount_t                                                             pdcpDlCnt;/* OPTIONAL */
1726 }DrbToSetupModItem_t;
1727
1728 typedef struct drbToSetupModList
1729 {
1730         UINT8                                   drbToSetupModListNum;
1731     DrbToSetupModItem_t                         drbToSetupModItem[e1ap_maxnoofDRBs];
1732 }DrbToSetupModList_t;
1733
1734 #define PDU_SESSION_RESOURCE_TO_SETUP_MOD_AMBR_PRESENT                                                  (1 << 0)
1735 #define PDU_SESSION_RESOURCE_TO_SETUP_MOD_DATA_FORWARD_INFORMATION_REQ_PRESENT          (1 << 1)
1736 #define PDU_SESSION_RESOURCE_TO_SETUP_MOD_INACTIVITY_TIMER_PRESENT                                      (1 << 2)
1737 typedef struct pduSessionResourceToSetupModItem
1738 {
1739         UINT16                                                              bitMask;
1740         UINT8                                                                   pduSessionId;
1741         PduSessType_e                                           pduSessionType;
1742         SNssai_t                                                                snssai;
1743         SecuInd_t                                               secuIndi;
1744         UINT64                                                                  pduSessionResourceAMBR;/* OPTIONAL */
1745     UpTransLayerInfo_t                      ngUlUpTnlInfo;
1746     DFIRequest_t                                        pduSessionDataForwardInfoReq;/* OPTIONAL */
1747         INT64                                                                   pduSessionInactTimer;/* OPTIONAL */
1748         DrbToSetupModList_t                                             drbToSetupModList;
1749 }PduSessionResourceToSetupModItem_t;
1750
1751 typedef struct pduSessionResourceToSetupModList
1752 {
1753     UINT8                                   pduSessionResourceToSetupModItemNum;
1754     PduSessionResourceToSetupModItem_t      pduSessionResourceToSetupModItem[e1ap_maxnoofPDUSessionResource];
1755 }PduSessionResourceToSetupModList_t;
1756
1757 #define BEARER_CONTEXT_MODIFY_REQ_PDU_SESSION_RESOURCE_TO_SETUP_MOD_LIST_PRESENT                        (1 << 0)
1758 #define BEARER_CONTEXT_MODIFY_REQ_PDU_SESSION_RESOURCE_TO_MODIFY_LIST_PRESENT                           (1 << 1)
1759 #define BEARER_CONTEXT_MODIFY_REQ_PDU_SESSION_RESOURCE_TO_REMOVE_LIST_PRESENT                           (1 << 2)
1760 typedef struct e1apPduSessionResourceToList
1761 {
1762     UINT16                                   bitMask;
1763     PduSessionResourceToSetupModList_t       pduSessionResourceToSetupModList; ///< Optional field
1764         PduSessionResourceToModifyList_t         pduSessionResourceToModfiyList; ///< Optional field
1765         PduSessionResourceToRemoveList_t         pduSessionResourceToRemoveList; ///< Optional field
1766 } PduSessionResourceList_t;
1767
1768 #define BEARER_CONTEXT_MODIFY_REQ_SECURITY_INFORMATION_PRESENT                                                  (1 << 0)
1769 #define BEARER_CONTEXT_MODIFY_REQ_UE_DL_AMBR_PRESENT                                                            (1 << 1)
1770 #define BEARER_CONTEXT_MODIFY_REQ_UE_DL_MAX_IPDR_PRESENT                                                                (1 << 2)
1771 #define BEARER_CONTEXT_MODIFY_REQ_BEARER_CTX_SATAUS_CHANGE_PRESENT                                                      (1 << 3)
1772 #define BEARER_CONTEXT_MODIFY_REQ_NEW_UL_TNL_INFO_REQ_PRESENT                                                           (1 << 4)
1773 #define BEARER_CONTEXT_MODIFY_REQ_UE_INACTIBITY_TIMER_PRESENT                                                           (1 << 5)
1774 #define BEARER_CONTEXT_MODIFY_REQ_DATA_DISCARD_REQUIRED_PRESENT                                                         (1 << 6)
1775 #define BEARER_CONTEXT_MODIFY_REQ_PDU_SESSION_RESOURCE                                              (1 << 7)
1776 typedef struct e1apBearerContextModReq
1777 {
1778     UINT16                                   bitMask;
1779         NrCellId_t                                                               cellId;
1780     UINT32                                               gnbCucpUeE1apId;
1781     UINT32                                               gnbCuupUeE1apId;
1782         SecuInfo_t                                       secuInfo; ///< Optional field
1783     UINT64                                   ueDlAMBR; ///< Optional field
1784     UINT64                                   ueDlMaxIPDR; ///< Optional field
1785     BearCxtStatusChange_e                  bearerCtxStatusChg; ///< Optional field
1786     NewUlTnlInfoRequire_e                                newUlTnlInfoRequire; ///< Optional field
1787     INT64                                                ueInactTimer; ///< Optional field
1788     DataDisRequire_e                             dataDisRequire; ///< Optional field
1789     PduSessionResourceList_t                 pduSessionResourceList;///< Optional field
1790 } E1apBearerContextModReq_t;
1791
1792 typedef struct e1apBearerContextRelCmd
1793 {
1794     NrCellId_t                                              cellId;//added artifficially
1795         UINT64                                                                  gnbCucpUeE1apId;
1796     UINT64                                                  gnbCuupUeE1apId;
1797     E1apCause_t                             cause;
1798 } E1apBearerContextRelCmd_t;
1799
1800 /**********************************************************************************
1801  ** UPC <--> E1AP               ACCORDING TO STRUCTURE
1802 ***********************************************************************************/
1803 #define MAX_LENGTH_GNBCUUP_NAME         150
1804 typedef struct  gnbCuupName
1805 {
1806     char                                     gnbCuupName[MAX_LENGTH_GNBCUUP_NAME];
1807
1808 }GnbCuupName_t;
1809
1810 #define DATA_FORWARDING_INFO_UL_DATA_FORWARD_PRESENT    (1 << 0)
1811 #define DATA_FORWARDING_INFO_DL_DATA_FORWARD_PRESENT    (1 << 1)
1812 typedef struct qosFlowItemIEs
1813 {
1814     UINT8                                    qosFlowIndicator;
1815     E1apCause_t                              cause;
1816 } QoSFlowItemIEs_t;
1817 typedef struct flowFailedlist
1818 {
1819     UINT8                                    qosFlowNum;
1820     QoSFlowItemIEs_t                         qosFlowItemIEs[e1ap_maxnoofQoSFlows];
1821 } FlowFailedlist_t;
1822
1823 #define DRB_SETUP_ITEM_DATA_FORWARD_INFO_RES_PRESENT    (1 << 0)
1824 #define DRB_SETUP_ITEM_FLOW_FAILED_LIST_PRESENT         (1 << 1)
1825 typedef struct drbSetupItem
1826 {
1827         UINT16                                                                   bitMask;
1828     UINT8                                        drId;
1829     DFIResponse_t                                                dataForwardInfoRsp;/*optional*/
1830     UPParametersList_t                       upPara;
1831     QoSFlowList_t                            flowSetupList;
1832     FlowFailedlist_t                         flowFailedlist;/*optional*/
1833 } DRBSetupItem_t;
1834 typedef struct drbSetupList
1835 {
1836     UINT8                                    drbSetupNum;
1837     DRBSetupItem_t                           drbSetupItem[e1ap_maxnoofDRBs];
1838 } DRBSetupList_t;
1839
1840 typedef struct
1841 {
1842         UINT8                                                                    drbID;
1843         E1apCause_t                                                              cause;
1844 }DRBFailItem_t;
1845
1846 typedef struct drbFailedList
1847 {
1848         UINT8                                                                    drbFailNum;
1849         DRBFailItem_t                                                    drbFailItem[e1ap_maxnoofDRBs];
1850 } DRBFailedList_t;
1851
1852 #define PDU_SESSION_RESOURCE_SETUP_SECURITY_RESULT_PRESENT                      (1 << 0)
1853 #define PDU_SESSION_RESOURCE_SETUP_DATA_FORWARD_INFO_RES_PRESENT        (1 << 1)
1854 #define PDU_SESSION_RESOURCE_SETUP_NG_DL_UP_UNCHANGED_PRESENT           (1 << 2)
1855 #define PDU_SESSION_RESOURCE_SETUP_DRB_FAILED_LIST_PRESENT                  (1 << 3)
1856
1857 typedef struct pduSessionResourceSetupItem
1858 {
1859     UINT16                                                                   bitMask;
1860     INT64                                                pduSessionId;
1861     SecuResult_t                                 securityResult;/* OPTIONAL */
1862     UpTransLayerInfo_t                       ngDlUpTransLayerInfo;
1863     DFIResponse_t                                                    dataForwardingInformationResponse;/* OPTIONAL */
1864         /* e_PDU_Session_Resource_Setup_Item__nG_DL_UP_Unchanged */
1865         NgDlUpUnchange_e                                                 ngDlUpUchange;/* OPTIONAL */
1866     DRBSetupList_t                           drbSetupList;
1867     DRBFailedList_t                          drbFailedList;
1868 }PduSessionResourceSetupItem_t;
1869
1870 typedef struct pduSessionResourceSetupList
1871 {
1872     UINT8                                    sessionResourceSetupNum;
1873     PduSessionResourceSetupItem_t            pduSessionResourceSetupItem[e1ap_maxnoofPDUSessionResource];
1874 }PduSessionResourceSetupList_t;
1875
1876 typedef struct pduSessionResourceFailedItem
1877 {
1878     INT64                                                sessId;
1879         E1apCause_t                                                              cause;
1880 }PduSessionResourceFailedItem_t;
1881
1882 typedef struct pduSessionResourceFailedlist
1883 {
1884     UINT8                                    sessFailNum;
1885     PduSessionResourceFailedItem_t           sessFailItem[e1ap_maxnoofPDUSessionResource];
1886 }PduSessionResourceFailedList_t;
1887
1888 #define DRB_MODIFY_ITEM_UL_UP_TRANSPORT_PARA_PRESENT    (1 << 0)
1889 #define DRB_MODIFY_ITEM_PDCP_SN_STATUS_INFO_PRESENT             (1 << 1)
1890 #define DRB_MODIFY_ITEM_FLOW_SETUP_LIST_PRESENT                 (1 << 2)
1891 #define DRB_MODIFY_ITEM_FLOW_FAILED_LIST_PRESENT                (1 << 3)
1892 typedef struct dRBModifyItem
1893 {
1894         UINT16                                                   bitMask;
1895         UINT8                                                                    drbId;
1896         UPParametersList_t                       ulUpTransPara;/* OPTIONAL */
1897         PdcpSNStatusInfo_t                                               pdcpSNStatusInfo;/* OPTIONAL */
1898         QoSFlowList_t                            flowSetupList;/* OPTIONAL */
1899         FlowFailedlist_t                         flowFailedlist;/* OPTIONAL */
1900 } DRBModifyItem_t;
1901
1902 typedef struct dRBModifyList
1903 {
1904     UINT8                                    drbModifyItemNum;
1905     DRBModifyItem_t                              drbModifyItem[e1ap_maxnoofDRBs];
1906 } DRBModifyList_t;
1907
1908 #define PDU_SESSION_RESOURCE_MODIFY_DL_UP_TNL_INFO_PRESENT              (1 << 0)
1909 #define PDU_SESSION_RESOURCE_MODIFY_SECURITY_RESULT_PRESENT             (1 << 1)
1910 #define PDU_SESSION_RESOURCE_MODIFY_DATA_FORWARD_INFO_RSP_PRESENT               (1 << 2)
1911 #define PDU_SESSION_RESOURCE_MODIFY_DRB_SETUP_LIST_PRESENT                              (1 << 3)
1912 #define PDU_SESSION_RESOURCE_MODIFY_DRB_FAILED_LIST_PRESENT                             (1 << 4)
1913 #define PDU_SESSION_RESOURCE_MODIFY_DRB_MODIFY_LIST_PRESENT                             (1 << 5)
1914 #define PDU_SESSION_RESOURCE_MODIFY_DRB_FAILED_TO_MOD_LIST_PRESENT              (1 << 6)
1915 typedef struct pduSessionResourceModifyItem
1916 {
1917         UINT16                                                                   bitmask;
1918         UINT8                                                                    pduSessionId;
1919         UpTransLayerInfo_t                                               ngDlUpTnlInfo;/* OPTIONAL */
1920         SecuResult_t                             securityResult;/* OPTIONAL */
1921         DFIResponse_t                                                    pduSessionDataForwardInfoRsp;/* OPTIONAL */
1922         DRBSetupList_t                                                   drbSetupList;/* OPTIONAL */
1923         DRBFailedList_t                                                  drbFailedList;/* OPTIONAL */
1924         DRBModifyList_t                                                  drbModifyList;/* OPTIONAL */
1925         DRBFailedList_t                                                  drbFailedToModList;/* OPTIONAL */
1926 }PduSessionResourceModifyItem_t;
1927
1928 typedef struct pduSessionResourceModifyList
1929 {
1930     UINT8                                    pduSessionResourceModifyItemNum;
1931     PduSessionResourceModifyItem_t                   pduSessionResourceModifyItem[e1ap_maxnoofPDUSessionResource];
1932 }PduSessionResourceModifyList_t;
1933
1934 typedef struct  e1apSliceSupportItem
1935 {
1936         SNssai_t                                     snssai;
1937 }E1apsliceSupportItem_t;
1938
1939 typedef struct  e1apSliceSupportList
1940 {
1941     UINT8                                    SliceSupportItemNum;
1942     E1apsliceSupportItem_t                   sliceSupportItem[e1ap_maxnoofSliceItems];
1943 }E1apsliceSupportList_t;
1944
1945 typedef struct  nrCgiSupportItem
1946 {
1947         CuNrCgi_t                                    NrCgi;
1948 }NrCgiSupportItem_t;
1949
1950 typedef struct  nrCgiSupportList
1951 {
1952     UINT8                                    NrCgiSupportItemNum;
1953     NrCgiSupportItem_t                       NrCgiSupportItem[e1ap_maxnoofNRCGI];
1954 }NrCgiSupportList_t;
1955
1956 typedef struct  NGRANQoSSupportItem
1957 {
1958         NonDynamic5QIDescr_t                                 NonDynamic5QIDescr;
1959 }NGRANQoSSupportItem_t;
1960
1961 typedef struct  nGRANQoSSupportList
1962 {
1963     UINT8                                    NGRANQoSSupportItemNum;
1964     NGRANQoSSupportItem_t                                    NGRANQoSSupportItem[e1ap_maxnoofNGRANQOSParameters];
1965 }NGRANQoSSupportList_t;
1966
1967 typedef struct  qosParamtersSupportList
1968 {
1969         UINT16                                                               bitMask;
1970         NGRANQoSSupportList_t                                    NGRANQoSSupportList;
1971 }QosParamtersSupportList_t;
1972
1973 typedef struct supportedPLMNsItem_s
1974 {
1975         PlmnId_t                                                     plmnId;
1976     E1apsliceSupportList_t                   sliceSupportList;/*optional*/
1977         NrCgiSupportList_t                                           nrCgiSupportList;/*optional*/
1978         QosParamtersSupportList_t                qosParamtersSupportList;/*optional*/
1979 }SupportedPLMNsItem_t;
1980
1981 typedef struct supportedPLMNsList_s
1982 {
1983         UINT8                                    supportPlmns;
1984     SupportedPLMNsItem_t                                     SupportedPLMNsItem[e1ap_maxnoofSPLMNs];
1985 }SupportedPLMNsList_t;
1986
1987 typedef struct pduSessionToNotifyItem_s
1988 {
1989         UINT8                                                                    pduSessionId;
1990         QoSFlowList_t                            flowSetupList;
1991 }PduSessionToNotifyItem_t;
1992
1993 typedef struct pduSessionToNotifyList_s
1994 {
1995         UINT8                                    pduSessionToNotifynum;
1996     PduSessionToNotifyItem_t                             pduSessionToNotifyItem[e1ap_maxnoofPDUSessionResource];
1997 }PduSessionToNotifyList_t;
1998
1999 typedef struct e1apUpbPlmnCfgInfo_s
2000 {
2001     PlmnId_t                                                            plmnId;
2002         UINT16                                                                  cgiNum;
2003         CuNrCgi_t                                                       cgi[e1ap_maxnoofNRCGI];/*optional*/
2004         E1apsliceSupportList_t                      sliceSupportList;/*optional*/
2005         UINT32                                                                  qosNum;
2006         NonDynamic5QIDescr_t                                    qosPara[e1ap_maxnoofNGRANQOSParameters];/*optional*/
2007 }E1apUpbPlmnCfgInfo_t;
2008
2009 /**********************************************************************************
2010  ** UPC <--> E1AP                MESSAGE STRUCTURE
2011 ***********************************************************************************/
2012
2013 typedef struct e1apRegistergNBReq
2014 {
2015     Instance_t                              instance;
2016     UINT8                                   state;
2017     GnbCuupName_t                           gnbCuupName;
2018 }E1apRegistergNBReq_t;
2019
2020 /* ����Ϣ�ṹӦ��Ų�� CUUP/INC Ŀ¼��  TBD  */
2021 typedef struct e1apRegistergNBCnf
2022 {
2023     Instance_t                              instance;
2024     UINT8                                   state;
2025     GnbCucpName_t                           gnbCucpName;
2026         int                                                                             successCellNum;
2027         CellIdList_t                                                    successCellList;
2028         int                                                                             failCellNum;
2029         CellIdList_t                                                    failCellList;
2030 } E1apRegistergNBCnf_t;
2031
2032 /* Deregister Indication */
2033 typedef struct e1apDeregisteredgNBInd
2034 {
2035     Instance_t                              instance;
2036 } E1apDeregisteredgNBInd_t;
2037
2038 typedef struct UpbPlmnCfgInfolist
2039 {
2040     UINT32                                                                       bPlmnNum;
2041         E1apUpbPlmnCfgInfo_t                                     bPlmnCfgInfo[e1ap_maxnoofSPLMNs];
2042 } E1apUpbPlmnCfgInfoList_t;
2043
2044 #define E1AP_REGISTER_REQ_UPNAME_PRESENT                (1 << 0)
2045 #define E1AP_REGISTER_REQ_UP_CAPACITY_PRESENT   (1 << 1)
2046 typedef struct e1apRegisterCpReq
2047 {
2048     UINT16                                   bitMask;
2049         Instance_t                               instance;
2050     UINT64                                   transactionId;
2051     UINT64                                   gnbCuupId;
2052     GnbCuupName_t                            gnbCuupName;/*optional*/
2053     CNSupport_e                              cnSupport;
2054     E1apUpbPlmnCfgInfoList_t                 e1apUpbPlmnCfgInfoList;
2055         INT64                                                                    upCapacity;/*optional*/
2056 } E1apRegisterCpReq_t;
2057 #define E1AP_SETUP_RSP_UPNAME_PRESENT           (1 << 0)
2058 #define E1AP_SETUP_RSP_UP_CAPACITY_PRESENT      (1 << 1)
2059 typedef struct e1apSetupRsp
2060 {
2061     UINT16                                   bitMask;
2062         Instance_t                               instance;
2063     UINT64                                   transactionId;
2064     UINT64                                   gnbCuupId;
2065     GnbCuupName_t                            gnbCuupName;/*optional*/
2066     CNSupport_e                              cnSupport;
2067     E1apUpbPlmnCfgInfoList_t                 e1apUpbPlmnCfgInfoList;
2068         INT64                                                                    upCapacity;/*optional*/
2069 } E1apSetupRsp_t;
2070 typedef struct e1apSetupFail
2071 {
2072     UINT16                                  bitMask;
2073     long                                    transactionId;
2074     E1apCause_t                             cause;
2075     TimeToWait_e                            timeToWait;/*optional*/
2076     E1Criticalitydiagnostics_t              criticalDiagnostics;/*optional*/
2077 } E1apSetupFail_t;
2078
2079 typedef struct e1apReleaseRsp
2080 {
2081     INT64                                                 transactionId;
2082 } E1apReleaseRsp_t;
2083
2084 #define E1AP_PDU_SESSION_RESOURCE_FAILED_LIST_PRESENT           (1 << 0)
2085 typedef struct e1apPduSessionResourceSetuplist
2086 {
2087     UINT16                                   bitMask;
2088     PduSessionResourceSetupList_t            pduSessionResourceSetuplist;
2089     PduSessionResourceFailedList_t           pduSessionResourceFailedList; //OPTION
2090 } E1apPduSessionResourceSetupList_t;
2091
2092 typedef struct e1apBearerContextSetupRsp
2093 {
2094     UINT64                                                   gnbCucpUeE1apId;
2095     UINT64                                                   gnbCuupUeE1apId;
2096     E1apPduSessionResourceSetupList_t        e1apPduSessionResourceSetuplist;
2097 } E1apBearerContextSetupRsp_t;
2098
2099 #define BEARER_CONTEXT_MOD_FAIL_CRITICAL_DIAGNOSE_PRESENT               (1 << 0)
2100 typedef struct e1apBearerContextModFail
2101 {
2102     UINT16                      bitMask;
2103     UINT32                      gnbCucpUeE1apId;
2104     UINT32                      gnbCuupUeE1apId;
2105         E1apCause_t                                     cause;
2106         E1Criticalitydiagnostics_t      e1apCriticalDiagnose;
2107 } E1apBearerContextModFail_t;
2108
2109 #define BEARER_CONTEXT_SETUP_FAILURE_CRITICAL_DIAGNOSE_PRESENT  (1 << 0)
2110 typedef struct e1apBearerContextSetupFailure
2111 {
2112         UINT16                                                   bitMask;
2113     UINT64                                                   gnbCucpUeE1apId;
2114     UINT64                                                   gnbCuupUeE1apId;
2115         E1apCause_t                                                              cause;
2116         E1Criticalitydiagnostics_t                               criticalDiagnose; /* Optional field*/
2117 } E1apBearerContextSetupFailure_t;
2118
2119 #define DRB_SETUP_MOD_ITEM_DATA_FORWARD_INFO_RSP_PRESENT        (1 << 0)
2120 #define DRB_SETUP_MOD_ITEM_FLOW_FAILED_LIST_PRESENT                     (1 << 1)
2121 typedef struct dRBSetupModItem
2122 {
2123         UINT16                                                   bitMask;
2124         UINT8                                                                    drbId;
2125         DFIResponse_t                                                    drbDataForwardInfoRsp;/* OPTIONAL */
2126         UPParametersList_t                       ulUpTransPara;
2127     QoSFlowList_t                            flowSetupList;
2128         FlowFailedlist_t                         flowFailedlist;/* OPTIONAL */
2129 } DRBSetupModItem_t;
2130
2131 typedef struct dRBSetupModList
2132 {
2133     UINT8                                    drbSetupModItemNum;
2134     DRBSetupModItem_t                        drbSetupModItem[e1ap_maxnoofDRBs];
2135 } DRBSetupModList_t;
2136
2137 #define PDU_SESSION_RESOURCE_SETUP_MOD_SECURITY_RESULT_PRESENT          (1 << 0)
2138 #define PDU_SESSION_RESOURCE_SETUP_MOD_DATA_FORWARD_INFO_RSP_PRESENT    (1 << 1)
2139 #define PDU_SESSION_RESOURCE_SETUP_MOD_DRB_FAILED_LIST_PRESENT                  (1 << 2)
2140 typedef struct pduSessionResourceSetupModItem
2141 {
2142         UINT16                                                                   bitmask;
2143         UINT8                                                                    pduSessionId;
2144     SecuResult_t                                 securityResult;/* OPTIONAL */
2145         UpTransLayerInfo_t                                               ngDlUpTnlInfo;
2146         DFIResponse_t                                                    pduSessionDataForwardInfoRsp;/* OPTIONAL */
2147         DRBSetupModList_t                        drbSetupModList;
2148         DRBFailedList_t                          drbFailedList;/* OPTIONAL */
2149 }PduSessionResourceSetupModItem_t;
2150
2151 typedef struct pduSessionResourceSetupModList
2152 {
2153     UINT8                                       pduSessionResourceSetupModItemNum;
2154     PduSessionResourceSetupModItem_t            pduSessionResourceSetupModItem[e1ap_maxnoofPDUSessionResource];
2155 }PduSessionResourceSetupModList_t;
2156
2157 #define BEARER_CONTEXT_MODIFY_RSP_PDU_SESSION_RESOURCE_SETUP_MOD_LIST_PRESENT                   (1 << 0)
2158 #define BEARER_CONTEXT_MODIFY_RSP_PDU_SESSION_RESOURCE_FAILED_MOD_LIST_PRESENT                  (1 << 1)
2159 #define BEARER_CONTEXT_MODIFY_RSP_PDU_SESSION_RESOURCE_MODIFY_LIST_PRESENT                              (1 << 2)
2160 #define BEARER_CONTEXT_MODIFY_RSP_PDU_SESSION_RESOURCE_FAILED_TO_MOD_LIST_PRESENT               (1 << 3)
2161 typedef struct e1apBearModPduSessionResource
2162 {
2163         UINT16                                                                   bitmask;
2164         PduSessionResourceSetupModList_t                 pduSessionResourceSetupModList;///< Optional field
2165         PduSessionResourceFailedList_t           pduSessionResourceFailedModList;///< Optional field
2166         PduSessionResourceModifyList_t           pduSessionResourceModfiyList;///< Optional field
2167         PduSessionResourceFailedList_t           pduSessionResourceFailedToModList;///< Optional field
2168 } E1apBearModPduSessionResource_t;
2169
2170 #define BEARER_CONTEXT_MODIFY_RSP_PDU_SESSION_RESOURCE_LIST                                     (1 << 0)
2171 typedef struct e1apBearerContextModRsp
2172 {
2173         UINT16                                                                   bitmask;
2174     UINT64                                               gnbCucpUeE1apId;
2175     UINT64                                               gnbCuupUeE1apId;
2176     E1apBearModPduSessionResource_t          e1apBearModPduSessionResource;/*optional*/
2177 } E1apBearerContextModRsp_t;
2178
2179 #define BREARE_CONTEXT_RELEASE_COMPLETE_CRITICALITY_DIAGNOSTICS_PRESENT                 (1 << 0)
2180 typedef struct e1apBearerContextRlsCmp
2181 {
2182         UINT16                                                                   bitmask;
2183         UINT64                                                   gnbCucpUeE1apId;
2184     UINT64                                                   gnbCuupUeE1apId;
2185     E1Criticalitydiagnostics_t               criticalDiagnostics;/*optional*/
2186 }E1apBearerContextRlsCmp_t;
2187
2188 #define E1AP_DL_DATA_NOTIFY_PPI_PRESENCE                        (1 << 0)
2189 typedef struct e1apDlDataNote
2190 {
2191     UINT16                                   bitmask;
2192     UINT64                                   gnbCucpUeE1apId;
2193     UINT64                                   gnbCuupUeE1apId;
2194     INT64                                    ppi; /*optional*/
2195 }IfmE1apDlDataNotify_t;
2196
2197 typedef struct e1apUlDataNote
2198 {
2199     UINT64                                   gnbCucpUeE1apId;
2200     UINT64                                   gnbCuupUeE1apId;
2201         PduSessionToNotifyList_t                         pduSessionToNotifyList;
2202 }E1apUlDataNote_t;
2203
2204 /* Error Indication */
2205 #define ERROR_INDICATION_CU_CP_UE_E1AP_ID_PRESENT               (1 << 0)
2206 #define ERROR_INDICATION_CU_UP_UE_E1AP_ID_PRESENT               (1 << 1)
2207 #define ERROR_INDICATION_CAUSE_PRESENT                          (1 << 2)
2208 #define ERROR_INDICATION_CRITICALITYDIAGNOSTICS_PRESENT         (1 << 3)
2209 typedef struct E1apErrInd
2210 {
2211         UINT8                                                   bitMask;
2212         UINT64                                                  transId;
2213         UINT64                                                  gnbCucpUeE1apId; /* OPTIONAL */
2214         UINT64                                                  gnbCuupUeE1apId; /* OPTIONAL */
2215         E1apCause_t                                     cause; /* OPTIONAL */
2216         E1Criticalitydiagnostics_t              critiDiag; /* OPTIONAL */
2217 } IfmE1apErrInd_t;
2218
2219 //RRC_INACTIVE Begin
2220 typedef struct e1apDrbActivityItem_s
2221 {
2222     UINT32 drbId;
2223     BOOL   active;
2224 }E1apDrbActivityItem_t;
2225
2226 typedef struct e1apDrbActivityList_s
2227 {
2228     UINT8 numDrbActivityItem;//1~e1ap_maxnoofDRBs
2229     E1apDrbActivityItem_t drbActivityItem[e1ap_maxnoofDRBs];
2230 }E1apDrbActivityList_t;
2231
2232
2233 typedef struct e1apPduSessionActivityItem_s
2234 {
2235     UINT8 pduSessionId;
2236     BOOL  active;
2237 }E1apPduSessionActivityItem_t;
2238 typedef struct e1apPduSessionActivityList_s
2239 {
2240     UINT16 numPduSessionActivityItem;//1~e1ap_maxnoofPDUSessionResource
2241     E1apPduSessionActivityItem_t pduSessionActivityItem[e1ap_maxnoofPDUSessionResource];
2242 }E1apPduSessionActivityList_t;
2243 typedef struct e1apUeActivity_s
2244 {
2245     BOOL active;
2246 }E1apUeActivity_t;
2247
2248 //UPC_E1AP_BEAR_CTX_INACTIVE_NOTIFY
2249 //E1AP_CUC_BEAR_CTX_INACTIVE_NOTIFY
2250 #define TAG_E1AP_BEAR_INAC_DRB_ACTIVITY_LIST            1
2251 #define TAG_E1AP_BEAR_INAC_PDU_SESSION_ACTIVITY_LIST    2
2252 #define TAG_E1AP_BEAR_INAC_UE_ACTIVITY                  3
2253 typedef struct ifmE1apBearCtxInactiveNotify
2254 {
2255     UINT64                          transId;
2256     UINT64                          gnbCucpUeE1apId;
2257     UINT64                          gnbCuupUeE1apId;
2258     UINT8                           tag;
2259     union {
2260         E1apDrbActivityList_t drbActivityList;
2261         E1apPduSessionActivityList_t pduSessionActivityList;
2262         E1apUeActivity_t ueActivity;
2263     }u;
2264 } IfmE1apBearCtxInactiveNotify_t;
2265 #ifdef __cplusplus
2266 }
2267 #endif
2268
2269
2270 #endif  /* __CUMODULEINTERFACEH__*/