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