X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=Include%2FcuModuleInterface.h;fp=Include%2FcuModuleInterface.h;h=b8f5636d994a4e96f470f5980f02f5d8991e622e;hb=1f71b9a76eacf92b39c1ce6f782f8404a34f60a9;hp=0000000000000000000000000000000000000000;hpb=254694245736881ecfff4eb0d1503bf3f49a21be;p=scp%2Focu%2F5gnr.git diff --git a/Include/cuModuleInterface.h b/Include/cuModuleInterface.h new file mode 100644 index 0000000..b8f5636 --- /dev/null +++ b/Include/cuModuleInterface.h @@ -0,0 +1,2260 @@ +/****************************************************************************** +############################################################################### +# Copyright (c) [2017-2020] [ICT/CAS] # +# Licensed under the ORAN Software License v1.0 (License) # +############################################################################### +******************************************************************************/ + + +#ifndef __CUMODULEINTERFACEH__ +#define __CUMODULEINTERFACEH__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "cuCommon.h" +#include "cuModuleCommon.h" +#include "ngasn_constant.h" +/********************************************************************************** +*********************************************************************************** +**************** CUC <--> NGAP ACCORDING TO STRUCTURE *************** +*********************************************************************************** +***********************************************************************************/ +typedef UINT16 Instance_t; + +#define NGAP_MAX_AMF_NUM 2 +#define NGAP_MAX_UE_NUM MAX_UE_NUM + +#define NG_MAX_TAC_NUM 10 +#define NG_MAX_PLMN_NUM 2 + +#define NG_MAX_GUAMI_NUM 2 +#define NG_MAX_SESSION_NUM 10 + +#define RrcVersionLatestVerEnhancedChosen 0x1 + +#define e1ap_maxnoofErrors 256 +#define e1ap_maxnoofSPLMNs 12 +#define e1ap_maxnoofSliceItems 1024 +#define e1ap_maxnoofIndividualE1ConnectionsToReset 65536 +#define e1ap_maxnoofNGRANQOSParameters 256 +#define e1ap_maxnoofDRBs 32 +#define e1ap_maxnoofNRCGI 512 +#define e1ap_maxnoofPDUSessionResource 256 +#define e1ap_maxnoofQoSFlows 64 +#define e1ap_maxnoofUPParameters 8 +#define e1ap_maxnoofCellGroups 4 + + +typedef struct rrcVersion +{ + UINT16 bitmask; + UINT8 latestRrcVer;//f30版本中 asn的语法描述中是个错误,不应该是bitstring,在f70版本中已经修复 + UINT8 latestRrcVerEn[3]; /* OPTIONAL */ +} RrcVersion_t; + +/* AMF Name */ +typedef RanName_t AmfName_t; + +typedef struct +{ + UINT16 plmnNum; + PlmnId_t plmnId[NG_MAX_PLMN_NUM]; + SliceList_t taiSlice[NG_MAX_PLMN_NUM]; +}BroadPlmns_t; + +typedef struct +{ + UINT16 taNum; + CuTac_t tac[NG_MAX_TAC_NUM]; + BroadPlmns_t bPlmn[NG_MAX_TAC_NUM]; +}SupportTas_t; + +typedef UINT8 AmfRegionId_t; + +typedef struct AmfSetId +{ + UINT16 amfSetId:10; +}AmfSetId_t; + +typedef struct AmfPointer +{ + UINT8 amfPointer:6; +}AmfPointer_t; + +#define GUAMI_PLMNID_PRESENCE (1<<0) +typedef struct guami +{ + UINT8 bitMask; + PlmnId_t plmnId; + AmfRegionId_t amfRegionId; + AmfSetId_t amfSetId; + AmfPointer_t amfPointer; +}Guami_t; + +typedef struct guamiList +{ + UINT8 guamiNum; + Guami_t guAmi[NG_MAX_GUAMI_NUM]; + AmfName_t backupAmfName[NG_MAX_GUAMI_NUM]; /* xycTBD */ +}GuamiList_t; + +#define MAX_SIZE_OF_OCTET_STRING 255 +typedef struct NasPdu +{ + UINT32 size; + UINT8 buffer[MAX_SIZE_OF_OCTET_STRING]; +}NasPdu_t; + +typedef struct FiveGTmsi +{ + UINT8 fivegTmsi[4]; +}FiveGTmsi_t; + +typedef struct FiveGSTmsi +{ + AmfSetId_t amfSetId; + AmfPointer_t amfPointer; + FiveGTmsi_t fiveGTmsi; +}FiveGSTmsi_t; + +typedef UINT64 AmfUeNgapId_t; + +#define EMERGENCY_SERVICE_TARGET_CN_PRESENT (1 << 0) +typedef struct emergFbInd +{ + UINT16 bitMask; + EmergencyFallbackRequestIndicator_e emergencyFallbackRequestIndicator; + EmergencyServiceTargetCN_e emergencyServiceTargetCn; /* OPTIONAL */ +} EmergFbInd_t; + +typedef struct ueRadioCapaForPagOfNr +{ + UINT32 size; + UINT8 buffer[MAX_SIZE_OF_OCTET_STRING]; +}UeRadioCapaForPagOfNr_t; + +#define UE_RADIO_CAPABILITY_PAGING_NR_PRESENT (1 << 0) +#define UE_RADIO_CAPABILITY_PAGING_EUTRA_PRESENT (1 << 1) +typedef struct UeRadioCapaForPag +{ + UINT16 bitMask; + UeRadioCapaForPagOfNr_t ueRadioCapabilityForPagingOfNr; /* OPTIONAL */ + UeRadioCapaForPagOfNr_t ueRadioCapabilityForPagingOfEutra; /* OPTIONAL */ +} UeRadioCapaForPag_t; + +typedef struct UeRadioCapability +{ + UINT32 size; + UINT8 buffer[MAX_SIZE_OF_OCTET_STRING]; +}UeRadioCapability_t; + +typedef struct ngRanTraceId +{ + UINT32 size; + UINT8 buffer[MAX_SIZE_OF_OCTET_STRING]; +}NgRanTraceId_t; + +typedef UINT8 InterToTrace_t; + +typedef struct traceActiv +{ + NgRanTraceId_t ngRanTraceId; + InterToTrace_t interfacesToTrace; + INT64 traceDepth; + TransLayerAddr_t traceCollectionEntityIpAddress; +} TraceActiv_t; + +typedef struct secuKey +{ + UINT8 securityKey[32]; +}SecuKey_t; + +typedef struct +{ + UINT8 nextHopChainingCount; + SecuKey_t nextHopNH; +}SecurityCtx_t; +typedef UINT8 RatRestrInfo_t; + +typedef struct ratRestrItem +{ + PlmnId_t plmnId; + RatRestrInfo_t ratRestrInfo; +} RatRestrItem_t; + +typedef struct mobiRestrInfo +{ + PlmnId_t plmnId; + UINT8 equalPlmnNum; + PlmnId_t ePlmnId[ngap_maxnoofEPLMNs]; + UINT8 ratRestrictNum; + RatRestrItem_t ratRestrictItem[ngap_maxnoofEPLMNsPlusOne]; + UINT8 forbiddenAreaNum; + PlmnId_t forbPlmnId[ngap_maxnoofEPLMNsPlusOne]; + UINT16 forbTacNum[ngap_maxnoofEPLMNsPlusOne]; + CuTac_t forbTac[ngap_maxnoofEPLMNsPlusOne][ngap_maxnoofForbTACs]; + UINT8 servAreaNum; + PlmnId_t servPlmnId[ngap_maxnoofEPLMNsPlusOne]; + UINT8 allowTacNum[ngap_maxnoofEPLMNsPlusOne]; + CuTac_t allowedTac[ngap_maxnoofEPLMNsPlusOne][ngap_maxnoofAllowedAreas]; + UINT8 notAllowTacNum[ngap_maxnoofEPLMNsPlusOne]; + CuTac_t notAllowedTac[ngap_maxnoofEPLMNsPlusOne][ngap_maxnoofAllowedAreas]; +}MobiRestrInfo_t; + +typedef struct ueSecurCapa +{ + UINT16 nrEncryptionAlgorithms; + UINT16 nrIntegrityProtectionAlgorithms; + UINT16 eutraEncryptionAlgorithms; + UINT16 eutraIntegrityProtectionAlgorithms; +} UeSecurCapa_t; + +#define EXPECTED_ACTIVITY_PERIOD_PRESENT (1 << 0) +#define EXPECTED_IDLE_PERIOD_PRESENT (1 << 1) +#define SOURCEOF_UE_ACTIVITY_BEHAVIOUR_INFORMATION_PRESENT (1 << 2) +typedef struct expectedUeActivityBehaviour +{ + UINT16 bitMask; + INT64 expectedActivityPeriod; /* OPTIONAL */ + INT64 expectedIdlePeriod; /* OPTIONAL */ + SourceOfUEActivityBehaviourInformation_e sourceOfUeActivityBehaviourInformation; /* OPTIONAL */ +} ExpectedUeActivityBehaviour_t; + +#define EXPECTEDUEMOVINGTRAJECTORYITEM_TIME_STAYED_IN_CELL_PRESENT (1 << 0) +typedef struct expectedUeMovingTrajectoryItem +{ + UINT16 bitMask; + CuNrCgi_t nrCgi; + INT64 timeStayedInCell; /* OPTIONAL */ +} ExpectedUeMovingTrajectoryItem_t; + +#define EXPECTED_UE_ACTIVITY_BEHAVIOR_PRESENT (1 << 0) +#define EXPECTED_HO_INTERVAL_PRESENT (1 << 1) +#define EXPECTED_UE_MOBILITY_PRESENT (1 << 2) +typedef struct +{ + UINT16 bitMask; + ExpectedUeActivityBehaviour_t expectedUeActivityBehaviour; + INT64 expectedHoInterval; + INT64 expectedUeMobility; + UINT8 expectUeMovTrajectoryNum; + ExpectedUeMovingTrajectoryItem_t expectedUeMovingTrajectory[ngap_maxnoofCellsUEMovingTrajectory]; +}ExpectUeBeHaviour_t; + +#define CORE_ASSISTANCE_INFO_UE_SPECIFIC_DRX_PRESENT (1 << 0) +#define CORE_ASSISTANCE_INFO_MICO_MODE_INDICATION_PRESENT (1 << 1) +#define CORE_ASSISTANCE_INFO_EXPECT_UE_BEHAVIOUR_PRESENT (1 << 2) +typedef struct coreAssitInfo +{ + UINT16 bitMask; + UeIdIdxValue_t ueIdIdxValue; + INT64 ueSpecificDrx; + UINT8 periodicRegistrationUpdateTimer; + INT64 micoModeIndication; + UINT8 inactiveTaiNum; + Tai_t inactiveTai[ngap_maxnoofTAIforInactive]; + ExpectUeBeHaviour_t exceptUeBehaviour; +}CoreAssitInfo_t; + +#define NOTIFICATION_CONTROL_PRESENT (1 << 0) +#define MAX_PACKET_LOSSRATE_DL_PRESENT (1 << 1) +#define MAX_PACKET_LOSSRATE_UL_PRESENT (1 << 2) +typedef struct gbrQosInfo +{ + UINT16 bitMask; + UINT64 maxFlowBitRateDL; + UINT64 maxFlowBitRateUL; + UINT64 guaranteedFlowBitRateDL; + UINT64 guaranteedFlowBitRateUL; + NotificationControl_e notificationControl; /* OPTIONAL */ + INT64 maxPacketLossRateDL; /* OPTIONAL */ + INT64 maxPacketLossRateUL; /* OPTIONAL */ +} GbrQosInfo_t; + +#define GBR_QOS_INFORMATION_PRESENT (1 << 0) +#define REFLECTIVE_QOS_ATTRIBUTE_PRESENT (1 << 1) +#define ADDITIONAL_QOS_FLOW_INFORMATION_PRESENT (1 << 2) +typedef struct qosFlowLevelQosParam +{ + UINT16 bitMask; + QosCharact_t qosCharacteristics; + AllocAndRetenPriority_t allocationAndRetentionPriority; + GbrQosInfo_t gbrQosInformation; /* OPTIONAL */ + ReflectiveQosAttribute_e reflectiveQosAttribute; /* OPTIONAL */ + AddQosFlowInfo_e additionalQosFlowInformation; /* OPTIONAL */ +} QosFlowLevelQosParam_t; + +#define QOS_FLOW_SETUP_REQ_E_RAB_ID_PRESENT (1 << 0) +typedef struct qosFlowSetupReqItem +{ + UINT16 bitMask; + INT64 qosFlowId; + QosFlowLevelQosParam_t qosFlowLevelQosParameters; + INT64 eRabId; /* OPTIONAL */ +} QosFlowSetupReqItem_t; + +#define MAX_INTERITY_PROTECTED_DATARATE_PRESENT (1 << 0) +typedef struct securIndic +{ + UINT16 bitMask; + INT64 integrityProtectionIndication; + INT64 confidentialityProtectionIndication; + INT64 maxIntegrityProtectedDataRate; /* OPTIONAL */ +} SecurIndic_t; + +typedef struct +{ + UINT64 DlSessAMBR; + UINT64 UlSessAmbr; +}NgapPduSessAmber_t; + +#define PDU_SESSION_SETUP_REQ_TRANSFER_SESSION_AMBR_PRESENT (1 << 0) +#define PDU_SESSION_SETUP_REQ_TRANSFER_DATA_FORWARD_NOT_POSSIBLE_PRESENT (1 << 1) +#define PDU_SESSION_SETUP_REQ_TRANSFER_SECURITY_INDICATION_PRESENT (1 << 2) +#define PDU_SESSION_SETUP_REQ_TRANSFER_NET_WORK_INSTANCE_PRESENT (1 << 3) + +typedef struct +{ + UINT16 bitMask; + NgapPduSessAmber_t sessAMBR;//Optional + UpTransLayerInfo_t ulNguUpTnlInfor; + UINT8 additionalUpTnlNum; + UpTransLayerInfo_t additionalUlNguUpTnlInfor[ngap_maxnoofMultiConnectivityMinusOne]; + INT64 dataForwardingNotPossible;//Optional + INT64 pduSessionType; + SecurIndic_t securityIndication;//Optional + INT64 networkInstance;//Optional + UINT8 qosFlowSetupReqNum;// >= 1 + QosFlowSetupReqItem_t qosFlowSetupRequestItems[ngap_maxnoofQosFlows]; +}PduSessSetupReqTransfer_t; + +#define PDU_SESSION_RESOURCE_SETUP_REQUEST_NAS_PDU_PRESENT (1 << 0) +typedef struct pduSessionSetupReq +{ + UINT16 bitMask; + UINT16 pduSessID; + NasPdu_t nasPdu;//Optional + SNssai_t sNSSAI; + PduSessSetupReqTransfer_t pduSetupReqTransfer; +}PduSessionSetupReq_t; + +typedef struct recommRanforPag +{ + UINT8 ranNum; + /* AMFPagingTarget_PR */ + AmfPgType_e amfPgType[ngap_maxnoofRecommendedRANNodes]; + RecomRanGnbId_t gNBId[ngap_maxnoofRecommendedRANNodes]; + Tai_t Tai[ngap_maxnoofRecommendedRANNodes]; +}RecommRanforPag_t; + +#define RECOMMCELLITEM_TIME_STAYED_INCELL_PRESENT (1 << 0) +typedef struct recommCellItem +{ + UINT16 bitMask; + CuNrCgi_t nrCgi; + UINT64 timeStayedInCell; /* OPTIONAL */ +} RecommCellItem_t; + +typedef struct recommCellforPag +{ + UINT8 cellNum; + RecommCellItem_t cellItem[ngap_maxnoofRecommendedCells]; +}RecommCellforPag_t; + + +#define PAGING_ATTEMPT_INFO_NEXT_PAGING_AREA_SCOPE_PRESENT (1 << 0) +typedef struct pagingAttemptInfo +{ + UINT8 pagingAttemptCount; + UINT8 intendNoOfPagingAttempt; + NextPagingAreaScope_e nextPagingAreaScope;//Optional +}PagingAttemptInfo_t; + +#define ASSIST_DATA_FOR_PAGING_RECOMMAND_CELL_PRESENT (1 << 0) +#define ASSIST_DATA_FOR_PAGING_PAGING_ATTEMPT_INFO_PRESENT (1 << 1) +typedef struct assistDataForPaging +{ + RecommCellforPag_t recommandCell;//Optinal + PagingAttemptInfo_t pagingAttemptInfo;//Optional +}AssistDataForPaging_t; +#define QOSFLOW_MAPPING_INDICATION_PRESENT (1 << 0) +typedef struct AssocQosFlowItem +{ + UINT16 bitMask; + INT64 qosFlowId; + QosFlowMapInd_e qosFlowMappingIndication; /* OPTIONAL */ +} AssocQosFlowItem_t; + +typedef struct qosFlowPerTnlInfo +{ + UpTransLayerInfo_t upTransLayerInfo; + UINT8 assocQosFlowNum; + AssocQosFlowItem_t assocQosItem[ngap_maxnoofQosFlows]; +}QosFlowPerTnlInfo_t; + +typedef struct qosFlowIte +{ + INT64 qosFlowId; + NgapCause_e cause; +} QosFlowIte_t; + +#define PDU_SESSION_SETUP_RSP_SECURITY_RESULT_PRESENT (1 << 0) +typedef struct pduSessSetupResp +{ + UINT16 bitMask; + UINT16 pduSessId; + QosFlowPerTnlInfo_t dlQosFlowTnlInfo; + UINT8 addDlQosFlowNum; + QosFlowPerTnlInfo_t addDlQosFlowTnlInfo[ngap_maxnoofMultiConnectivityMinusOne]; + SecuResult_t securityResult; + UINT8 qosFlowFailNum; + QosFlowIte_t qosFlowFailtoSetup[ngap_maxnoofQosFlows]; +}PduSessSetupResp_t; + +typedef struct pduSessSetupFail +{ + UINT16 pduSessId; + NgapCause_e cause; +}PduSessSetupFail_t; + +typedef struct +{ + UINT64 DlUeAMBR; + UINT64 UlUeAmbr; +}NgapUeAmber_t; + +typedef struct +{ + UINT8 timePeriodsNum; + Timestamp_t startTimeStamp[ngap_maxnoofTimePeriods]; + Timestamp_t endTimeStamp[ngap_maxnoofTimePeriods]; + UINT64 usageCountUl[ngap_maxnoofTimePeriods]; + UINT64 usageConutDl[ngap_maxnoofTimePeriods]; +}VolumeTimedRpt_t; + +typedef struct +{ + INT64 ratType; + VolumeTimedRpt_t sessTimedRpt; +}PduSessUsageRpt_t; + +typedef struct +{ + INT64 qfi; + INT64 ratType; + VolumeTimedRpt_t flowTimedRpt; +}QosFlowUsageRptItem_t; + +typedef struct +{ + PduSessUsageRpt_t sessUsageRpt; + UINT8 qosFlowUsageRptNum; + QosFlowUsageRptItem_t qosFlowUsageRptItem; +}SecondRATUsageInfo_t; + +#define PDU_SESSION_RESOURCE_ITEM_SECOND_RAT_USAGE_INFO_PRESENT (1 << 0) +typedef struct +{ + UINT16 sessId; + SecondRATUsageInfo_t secondRatUsageInfo; +}PduSessResourceItem_t; + +#define HO_REQUIRED_TRANSFER_DIRECT_FORWARD_PATH_AVAILABILITY_PRESENT (1 << 0) +typedef struct +{ + UINT16 bitMask; + DirectForwardPathAvailability_e directForwardPathAvailability;//Optional +}HoRequiredTransfer_t; + +typedef struct +{ + UINT16 sessId; + HoRequiredTransfer_t HoRequiredTransfer; +}HoRequiredPduSessResourcItem_t; + +typedef struct +{ + INT8 qosFlowId; + DataForwardAccepted_e dataForwardAccepted; +}QosFlowSetupRspItem_t; + +typedef struct +{ + UINT8 qosFlowFailNum; + QosFlowIte_t qosFlowFailtoSetup[ngap_maxnoofQosFlows]; +}QosFlowSetupFailItem_t; + +typedef struct +{ + UpTransLayerInfo_t additionDlUpTnlInfo; + QosFlowSetupRspItem_t additionQosFlowSetupRsp; + UpTransLayerInfo_t additionDlForwardUpTnlInfo; +}HoAdditionDlUpTnlInfoItem_t; + +#define DATA_FORWARD_RSP_DRB_DL_NGU_UP_TNL_INFO_PRESENT (1 << 0) +#define DATA_FORWARD_RSP_DRB_UL_NGU_UP_TNL_INFO_PRESENT (1 << 1) +typedef struct +{ + UINT8 bitMask; + UINT8 drbId; + UpTransLayerInfo_t dlNguUpTnlInfo;//Optional + UpTransLayerInfo_t ulNguUpTnlInfo;//Optional +}DataForwardRspDrb_t; + +#define HO_REQUEST_ACK_TRANSFER_DL_FORWARD_UP_TNL_INFO_PRESENT (1 << 0) +#define HO_REQUEST_ACK_TRANSFER_SECURITY_RESULT_PRESENT (1 << 1) +typedef struct +{ + UpTransLayerInfo_t dlNguUpTnlInfo; + UpTransLayerInfo_t dlForwardUpTnlInfo;//Optinal + SecuResult_t securityResult;//Optional + UINT8 qosFlowRspNum; + QosFlowSetupRspItem_t qosFlowSetupRspItem[ngap_maxnoofQosFlows]; + UINT8 qosFlowFailNum; + QosFlowSetupFailItem_t qosFlowSetupFailItem[ngap_maxnoofQosFlows]; + UINT8 drbNum; + DataForwardRspDrb_t dataForwardRspDrbItem[ngap_maxnoofDRBs]; + UINT8 HoAddDlUpTnlInfoNum; + HoAdditionDlUpTnlInfoItem_t HoAddDlUpTnlInfoItem[ngap_maxnoofMultiConnectivityMinusOne]; +}HoRequestAckTransfer_t; + +typedef struct +{ + UINT16 sessId; + HoRequestAckTransfer_t HoRequestAckTransfer; +}HoRequestAckPduSessItem_t; + +typedef struct +{ + NgapCause_e cause; +}HoRequestUnsuccTransfer_t; + +typedef struct +{ + UINT16 sessId; + HoRequestUnsuccTransfer_t HoRequestUnsuccTransfer; +}HoRequestFailPduSessItem_t; + +#define HO_CMD_SUCC_TRANSFER_DATA_FORWARD_RSP_DRB_PRESENT (1 << 0) +typedef struct +{ + UpTransLayerInfo_t dlNguUpTnlInfo;//Optional + UINT8 qosFlowNum; + UINT64 qosFlowIdItem[ngap_maxnoofQosFlows]; + UINT8 drbNum; + DataForwardRspDrb_t dataForwardRspDrbItem[ngap_maxnoofDRBs]; + UINT8 addDlQosFlowNum; + QosFlowPerTnlInfo_t addDlQosFlowTnlInfo[ngap_maxnoofMultiConnectivityMinusOne]; +}HoCmdSuccTransfer_t; + +typedef struct +{ + UINT16 sessId; + HoCmdSuccTransfer_t HoCmdSuccTransfer; +}HoCmdSuccPduSessResourceItem_t; + +typedef struct +{ + NgapCause_e cause; +}HoCmdFailTransfer_t; + +typedef struct +{ + UINT16 sessId; + HoCmdFailTransfer_t HoCmdFailTranser; +}HoCmdFailPduSessResourcItem_t; + +typedef struct +{ + UINT16 sessId; + SNssai_t sNssai; + PduSessSetupReqTransfer_t HoRequestTransfer; +}HoRequestPduSessResourceItem_t; +#define PATH_SWITCH_REQ_TRANSFER_DL_NGU_TNL_INFO_REUSED_PRESENT (1 << 0) +#define PATH_SWITCH_REQ_TRANSFER_USER_PLANE_SECUR_INFO_PRESENT (1 << 1) +typedef struct +{ + UpTransLayerInfo_t dlNguUpTnlInfo; + DlNguTnlInfoReused_e dlNguUpTnlInfoReused;//Optional + UserPlaneSecurInfo_t userPlaneSecurInfo;//Optional + UINT8 qosFlowNum; + UINT64 qosFlowIdItem[ngap_maxnoofQosFlows]; + UINT8 addDlQosFlowNum; + QosFlowPerTnlInfo_t addDlQosFlowTnlInfo[ngap_maxnoofMultiConnectivityMinusOne]; +}PathSwitchReqTransfer_t; + +typedef struct +{ + UINT16 sessId; + PathSwitchReqTransfer_t pathSwitchReqTransfer; +}PathSwitchReqPduSessItem_t; + +typedef struct +{ + NgapCause_e cause; +}PathSwitchReqFailTransfer_t; + +typedef struct +{ + UINT16 sessId; + PathSwitchReqFailTransfer_t pathSwitchReqFailTransfer; +}PathSwitchReqFailPduSessItem_t; + +#define PATH_SWITCH_REQ_ACK_TRANSFER_UL_NGU_UP_TNL_INFO_PRESENT (1 << 0) +#define PATH_SWITCH_REQ_ACK_TRANSFER_SECURITY_IND_PRESENT (1 << 1) +typedef struct +{ + UpTransLayerInfo_t ulNguUpTnlInfo;//Optional + SecurIndic_t securityIndication;//Optional + UINT8 upTransLayerInfoPairItemNum; + UpTransLayerInfo_t ulNguUpTnlInfoItem[ngap_maxnoofMultiConnectivityMinusOne]; + UpTransLayerInfo_t dlNguUpTnlInfoItem[ngap_maxnoofMultiConnectivityMinusOne]; +}PathSwitchReqAckTransfer_t; + +typedef struct +{ + UINT16 sessId; + PathSwitchReqAckTransfer_t pathSwitchReqAckTransfer; +}PathSwitchReqAckPduSessItem_t; + +typedef struct +{ + NgapCause_e cause; +}PathSwitchReqUnsuccTransfer_t; + + +typedef struct +{ + UINT16 sessId; + PathSwitchReqUnsuccTransfer_t pathSwitchReqUnsuccTransfer; +}PathSwitchRlsPduSessItem_t; + +typedef struct +{ + UINT8 numAmf; + IpAddress_t amfAddr[NGAP_MAX_AMF_NUM]; + BroadPlmns_t broadPlmn[NGAP_MAX_AMF_NUM]; +}RegisterAmf_t; + +typedef struct +{ + IpAddress_t ipAddr; + UINT8 state; + NgapCause_e cause; + BroadPlmns_t bPlmn; +}AmfRegistResult_t; +typedef struct +{ + UINT8 areaIntTaiNUm; + Tai_t areaIntTaiItem[ngap_maxnoofTAIinAoI]; + UINT8 areaIntCellNum; + CuNrCgi_t areaIntCgiItem[ngap_maxnoofCellinAoI]; + UINT8 areaIntRanNodeIdNum; + GlobalRanNodeId_t areaIntRanNodeIdItem[ngap_maxnoofRANNodeinAoI]; +}AreaInterestItem_t; + +typedef struct +{ + UINT8 areaIntItemNum; + AreaInterestItem_t areaIntItem[ngap_maxnoofAoI]; + UINT8 locaReportReferenceId; +}AreaInterestListItem_t; + +typedef struct +{ + EventType_e eventType; + ReportArea_e reportArea; + UINT8 areaIntListItemNum; + AreaInterestListItem_t areaIntListItem[ngap_maxnoofAoI]; + UINT8 locaReportReferenceIdTobeCancel;//Condition +}LocationReportRequestType_t; + +/********************************************************************************** +*********************************************************************************** +*********** CUC --> NGAP MESSAGE STRUCTURE ************************* +*********************************************************************************** +***********************************************************************************/ + +/* Register Request ( NG Setup Request )*/ +typedef struct ngapRegistergNBReq +{ + Instance_t instance; + PlmnId_t plmnId; + gNBId_t gnbId; + RanName_t ranName; + SupportTas_t supportTa; + PagingDRX_e ranDefaPagDrx; + UINT8 ueRetInfoFlag; + UERetentionInformation_e ueRetenInfo; + RegisterAmf_t registerAmfInfo; +}NgapRegistergNBReq_t; + +/* First NAS Request (Initial Ue Message)*/ +#define FIRST_UL_NAS_AMF_REGISTER_PRESENT (1 << 0) +#define FIRST_UL_NAS_FIVEG_STMSI_PRESENT (1 << 1) +#define FIRST_UL_NAS_LOCATION_INFO_TIMESTAMP_PRESENT (1 << 2) +#define FIRST_UL_NAS_UE_CONTEXT_REQ_PRESENT (1 << 3) +typedef struct ngapFirstNasReq +{ + UINT16 bitMask; + NrCellId_t nrCellId; + Instance_t instance; + UINT64 ranUeNgapId; + PlmnId_t plmnId; + guamiType_e guamiType; + Guami_t guami; + /* e_RRCEstablishmentCause */ + RrcEstablishmentCause_e establishmentCause; + NasPdu_t nasPdu; + CuTac_t tac; + Timestamp_t timeStamp; + FiveGSTmsi_t fiveGSTmsi; + ueContextRequest_e ueReq; + SliceList_t ranAllowNssai; +} NgapFirstNasReq_t; + +/* Ue Radio Capability Check Response */ +typedef struct ngapUeRadioCapaCheckRsp +{ + Instance_t instance; + UINT64 ranUeNgapId; + AmfUeNgapId_t amfUeNgapId; + IMSVoiceSupportInd_e IMSVoiceSupportInd; +}NgapUeRadioCapaCheckRsp_t; + +/* UL NAS Transfer */ +#define UL_NAS_LOCATION_INFO_TIMESTAMP_PRESENT (1 << 0) +typedef struct ngapULNas +{ + UINT16 bitMask; + Instance_t instance; + NrCellId_t nrCellId; + UINT64 ranUeNgapId; + AmfUeNgapId_t amfUeNgapId; + NasPdu_t nasPdu; + PlmnId_t plmnId; + CuTac_t tac; + Timestamp_t timeStamp; +} NgapULNas_t; + +/*Ue Radio Capability Information Indication*/ +#define UE_RADIO_CAPABILITY_PAGING_PRESENT (1 << 0) +typedef struct ngapUeRadioCapaInfoIndication +{ + UINT16 bitMask; + Instance_t instance; + UINT64 ranUeNgapId; + AmfUeNgapId_t amfUeNgapId; + UeRadioCapability_t ueRadioCapability; + UeRadioCapaForPag_t ueRadioCapabilityForPag;/* optional */ +}NgapUeRadioCapaInfoIndication_t; + +/* Initial Context Setup Response */ +typedef struct ngapInitialContextSetupResp +{ + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + UINT64 ranUeNgapId; + UINT8 rspFailFlag; + NgapCause_e failCause; + UINT16 pduSessSetRspNum; + PduSessSetupResp_t pduSessSetRspItem[NG_MAX_SESSION_NUM]; + UINT16 pduSessSetFailNum; + PduSessSetupFail_t pduSessSetFailItem[NG_MAX_SESSION_NUM]; +} NgapInitialContextSetupResp_t; + +/* PDU Session Resource Setup Response */ +typedef struct ngapPduSessSetupRsp +{ + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + UINT64 ranUeNgapId; + UINT16 pduSessSetRspNum; + PduSessSetupResp_t pduSessSetRspItem[NG_MAX_SESSION_NUM]; + UINT16 pduSessSetFailNum; + PduSessSetupFail_t pduSessSetFailItem[NG_MAX_SESSION_NUM]; +}NgapPduSessSetupRsp_t; + +/* Ue Context Release Request */ +typedef struct ngapUeCxtReleaseReq +{ + Instance_t instance; + UINT64 ranUeNgapId; + AmfUeNgapId_t amfUeNgapId; + UINT16 sessRlsNum; + UINT16 rlsSessId[NG_MAX_SESSION_NUM]; + NgapCause_e cause; +} NgapUeCxtReleaseReq_t; + +/* Ue Context Release Complete */ +#define UE_CONTEXT_RELEASE_COMPLETE_USERLOCATION_TIMESTAMP_PRESENT (1 << 0) +typedef struct ngapUeReleaseComplete +{ + UINT16 bitMask; + Instance_t instance; + UINT64 ranUeNgapId; + AmfUeNgapId_t amfUeNgapId; + UINT8 locationFlag; + PlmnId_t plmnId; + NrCellId_t cellId; + CuTac_t tac; + Timestamp_t timeStamp; + RecommCellforPag_t recomCellInfo; + RecommRanforPag_t recomRanInfo; + UINT8 rlsSessNum; + PduSessResourceItem_t sessResourceItem[NG_MAX_SESSION_NUM]; + UINT8 allSessRlsFlag; +} NgapUeReleaseComplete_t; + +#define HANDOVER_REQUIRED_DIRECT_FORWARDING_PATH_AVAILABILITY_PRESENT (1 << 0) +typedef struct ngapHandoverRequired +{ + UINT16 bitMask; + Instance_t instance; + UINT64 ranUeNgapId; + AmfUeNgapId_t amfUeNgapId; + HandoverType_e handoverType; + NgapCause_e cause; + PlmnId_t plmnId; + gNBId_t gnbId; + Tai_t tai; + DirectForwardPathAvailability_e directForwardPathAvailability;//Optional + UINT8 sessNum; + HoRequiredPduSessResourcItem_t sessResourceItem[NG_MAX_SESSION_NUM]; +}NgapHandoverRequired_t; + +typedef struct ngapHandoverRequestAcknowledge +{ + Instance_t instance; + UINT64 ranUeNgapId; + AmfUeNgapId_t amfUeNgapId; + UINT8 ackSessNum; + HoRequestAckPduSessItem_t HoRequestAckSessItem[NG_MAX_SESSION_NUM]; + UINT8 failSessNum; + HoRequestFailPduSessItem_t HoRequestFailSessItem[NG_MAX_SESSION_NUM]; +}NgapHandoverRequestAcknowledge_t; +typedef struct ngapHandoverFailure +{ + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + NgapCause_e cause; +}NgapHandoverFailure_t; +#define HANDOVER_NOTIFY_USERLOCATION_TIMESTAMP_PRESENT (1 << 0) +typedef struct ngapHandoverNotify +{ + Instance_t instance; + UINT64 ranUeNgapId; + AmfUeNgapId_t amfUeNgapId; + PlmnId_t plmnId; + NrCellId_t cellId; + CuTac_t tac; + Timestamp_t timeStamp; +}NgapHandoverNotify_t; +/* Handover Cancel */ +typedef struct ngapHandoverCancel +{ + Instance_t instance; + UINT64 ranUeNgapId; + AmfUeNgapId_t amfUeNgapId; + NgapCause_e cause; +}NgapHandoverCancel_t; + +/* Path Switch Request */ +#define PATH_SWITCH_REQUEST_USERLOCATION_TIMESTAMP_PRESENT (1 << 0) +typedef struct ngapPathSwitchRequest +{ + UINT16 bitMask; + Instance_t instance; + UINT64 ranUeNgapId; + AmfUeNgapId_t sourceAmfUeNgapId; + PlmnId_t plmnId; + NrCellId_t cellId; + CuTac_t tac; + Timestamp_t timeStamp; + UeSecurCapa_t ueSecurityCapability; + UINT8 switchSessNum; + PathSwitchReqPduSessItem_t switchPduSessItem[NG_MAX_SESSION_NUM]; + UINT8 setupFailSessNum; + PathSwitchReqFailPduSessItem_t setupFailPduSessItem[NG_MAX_SESSION_NUM]; +}NgapPathSwitchRequest_t; + +/* RRC Inactive Transition Report */ +#define RRC_INACTIVE_TRANSITION_REPORT_USERLOCATION_TIMESTAMP_PRESENT (1 << 0) +typedef struct ngapRrcInactiveTransitionReport +{ + Instance_t instance; + UINT64 ranUeNgapId; + AmfUeNgapId_t amfUeNgapId; + RrcState_e rrcState; + PlmnId_t plmnId; + NrCellId_t cellId; + CuTac_t tac; + Timestamp_t timeStamp; +}NgapRrcInactiveTransitionReport_t; +/********************************************************************************** +*********************************************************************************** +*************** NGAP --> CUC MESSAGE STRUCTURE ******************** +*********************************************************************************** +***********************************************************************************/ +/* Register Confirm (NG Setup Response)*/ +typedef struct ngapRegistergNBCnf +{ + Instance_t instance; + UINT8 numAmf; /* Number of AMF connected */ + AmfRegistResult_t registRet[NGAP_MAX_AMF_NUM]; +} NgapRegistergNBCnf_t; + +/* Deregister Indication */ +typedef struct ngapDeregisteredgNBInd_t +{ + UINT8 numAmf; /* Number of AMF connected */ +} NgapDeregisteredgNBInd_t; + +#define UE_RADIO_CAPA_CHECK_REQ_UE_RADIO_CAPA_PRESENT (1 << 0) +/* Ue Radio Capability Check Request */ +typedef struct ngapUeRadioCapaCheckReq +{ + UINT16 bitMask; + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + UINT64 ranUeNgapId; + UeRadioCapability_t ueRadioCapability;//Optional +}NgapUeRadioCapaCheckReq_t; + +/* DL NAS Transfer */ +#define DL_NAS_TRANSFER_OLD_AMF_NAME_PRESENT (1 << 0) +#define DL_NAS_TRANSFER_RAN_PAGING_PRIORITY_PRESENT (1 << 1) +#define DL_NAS_TRANSFER_MOBILITY_RESTRICTION_PRESENT (1 << 2) +#define DL_NAS_TRANSFER_INDEX_TO_RFSP_PRESENT (1 << 3) +#define DL_NAS_TRANSFER_UE_AMBR_PRESENT (1 << 4) +#define DL_NAS_TRANSFER_SNSSAI_PRESENT (1 << 5) +typedef struct ngapDLNas +{ + UINT16 bitMask; + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + UINT64 ranUeNgapId; + AmfName_t oldAmfName; + INT64 ranPagPriority; + NasPdu_t nasPdu; + MobiRestrInfo_t mobiRestrictInfo; + INT64 indexToRfsp; + UINT64 ueAMBRDl; + UINT64 ueAMBRUl; + SliceList_t amfSlice; +}ngapDLNas_t; + +/* Initial Context Setup Request */ +#define INITIAL_CXT_SETUP_REQ_OLD_AMFNAME_PRESENT (1 << 0) +#define INITIAL_CXT_SETUP_REQ_UE_AGGREGATE_MAX_BITRATE_PRESENT (1 << 1) +#define INITIAL_CXT_SETUP_REQ_CORE_INFO_PRESENT (1 << 2) +#define INITIAL_CXT_SETUP_REQ_PDU_SESSION_RESOURCE_SETUPLIST_CXTREQ_PRESENT (1 << 3) +#define INITIAL_CXT_SETUP_REQ_TRACE_ACTIVATION_PRESENT (1 << 4) +#define INITIAL_CXT_SETUP_REQ_MOBI_RESTRICT_PRESENT (1 << 5) +#define INITIAL_CXT_SETUP_REQ_UE_RADIO_CAPA_PRESENT (1 << 6) +#define INITIAL_CXT_SETUP_REQ_IDX_RFSP_PRESENT (1 << 7) +#define INITIAL_CXT_SETUP_REQ_MASK_IMEISV_PRESENT (1 << 8) +#define INITIAL_CXT_SETUP_REQ_NASPDU_PRESENT (1 << 9) +#define INITIAL_CXT_SETUP_REQ_EMERGENCY_FB_PRESENT (1 << 10) +#define INITIAL_CXT_SETUP_REQ_INACT_TRANS_RPT_REQ_PRESENT (1 << 11) +#define INITIAL_CXT_SETUP_REQ_RADIO_CAPA_FOR_PAG_PRESENT (1 << 12) +#define INITIAL_CXT_SETUP_REQ_REDIRECTION_FOR_VOICE_EPS_FB_PRESENT (1 << 13) +typedef struct ngapInitialContextSetupReq +{ + UINT16 bitMask; + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + UINT64 ranUeNgapId; + AmfName_t oldAmfName;//Optional + NgapUeAmber_t ueAMBR;//Optional + CoreAssitInfo_t coreNetAssistInfo;//Optional + Guami_t guami; + UINT16 pduSessSetupNum; + PduSessionSetupReq_t pduSessSetReqItem[NG_MAX_SESSION_NUM]; + SliceList_t amfSlice; + UeSecurCapa_t ueSecurityCapa; + SecuKey_t securityKey; + TraceActiv_t traceActivation;//Optional + MobiRestrInfo_t mobiRestrictInfo;//Optional + UeRadioCapability_t ueRadioCapability;//Optional + INT64 indexToRfsp;//Optional + MaskedImeiSv_t maskedImeisv;//Optional + NasPdu_t nasPdu;//Optional + EmergFbInd_t emergencyFallbackIndicator;//Optional + INT64 rrcInactiveTransitionReportRequest;//Optional + UeRadioCapaForPag_t ueRadioCapabilityForPag;//Optional + INT64 redirectVoiceFb;//Optional +}NgapInitialContextSetupReq_t; + +/* PDU Session Resource Setup Request */ +#define PDU_SESS_SETUP_REQ_RAN_PAGING_PRIORITY_PRESENT (1 << 0) +#define PDU_SESS_SETUP_REQ_NAS_PDU_PRESENT (1 << 1) +#define PDU_SESS_SETUP_REQ_UE_AMBR_PRESENT (1 << 2) + +typedef struct ngapPduSessSetupReq +{ + UINT16 bitMask; + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + UINT64 ranUeNgapId; + INT64 ranPagPriority;//Optional + NasPdu_t nasPdu;//Optional + UINT16 pduSessSetupNum; + PduSessionSetupReq_t pduSessSetReqItem[NG_MAX_SESSION_NUM]; + UINT64 ueAMBRDl;//Optional + UINT64 ueAMBRUl;//Optional +}NgapPduSessSetupReq_t; + +/* Ue Context Release Command */ +typedef struct ngapUeReleaseCommand +{ + /* UE_NGAP_IDs_PR */ + Instance_t instance; + NgapIdType_e ngapIdType; + INT64 ranUeNgapId; + AmfUeNgapId_t amfUeNgapId; + NgapCause_e cause; +}NgapUeReleaseCommand_t; + +/* Handover Command */ +#define HANDOVER_COMMAND_NAS_SECURITY_PARAM_FROM_NGRAN_PRESENT (1 << 0) +typedef struct ngapHandoverCommand +{ + UINT16 bitMask; + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + UINT64 ranUeNgapId; + HandoverType_e handoverType; + UINT8 HoSessNum; + HoCmdSuccPduSessResourceItem_t HoSessResourceItem[NG_MAX_SESSION_NUM]; + UINT8 rlsSessNum; + HoCmdFailPduSessResourcItem_t rlsSessResourceItem[NG_MAX_SESSION_NUM]; +}NgapHandoverCommand_t; + +/* Handover Preparation Failure*/ +typedef struct ngapHandoverPreparationFailure +{ + UINT16 bitMask; + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + UINT64 ranUeNgapId; + NgapCause_e cause; +}NgapHandoverPreparationFailure_t; + +/* Handover Request */ +#define HANDOVER_REQUEST_CORE_ASSIST_INFO_PRESENT (1 << 0) +#define HANDOVER_REQUEST_NEW_SECURITY_CTX_IND_PRESENT (1 << 1) +#define HANDOVER_REQUEST_TRACE_ACTIVATION_PRESENT (1 << 2) +#define HANDOVER_REQUEST_MASKED_IMEISV_PRESENT (1 << 3) +#define HANDOVER_REQUEST_MOBILITY_RESTRICTION_INFO_PRESENT (1 << 4) +#define HANDOVER_REQUEST_LOCATION_REPORT_REQUEST_TYPE_PRESENT (1 << 5) +#define HANDOVER_REQUEST_RRC_INACTIVE_TRANS_REPORT_REQUEST_PRESNET (1 << 6) +#define HANDOVER_REQUEST_REDIRECT_VOICE_FB_PRESNET (1 << 7) +typedef struct ngapHandoverRequest +{ + UINT16 bitMask; + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + HandoverType_e handoverType; + NgapCause_e cause; + NgapUeAmber_t ueAMBR; + CoreAssitInfo_t coreNetAssistInfo;//Optional + UeSecurCapa_t ueSecurityCapability; + SecurityCtx_t securityContext; + NewSecurityCtxInd_e newSecurityContextInd;//Optional + NasPdu_t NASC; + UINT8 sessNum; + HoRequestPduSessResourceItem_t HoRequestSessResourceItem[NG_MAX_SESSION_NUM]; + SliceList_t amfSlice; + TraceActiv_t traceActivation;//Optional + MaskedImeiSv_t maskedImeisv;//Optional + MobiRestrInfo_t mobiRestrictInfo;//Optional + LocationReportRequestType_t locaReportReqType;//Optional + INT64 rrcInactiveTransitionReportRequest;//Optional + Guami_t guami; + INT64 redirectVoiceFb;//Optional +}NgapHandoverRequest_t; + +/* Handover Cancel Acknowledge */ +typedef struct ngapHandoverCancelAcknowledge +{ + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + UINT64 ranUeNgapId; +}NgapHandoverCancelAcknowledge_t; + +/* Paging */ +#define PAGING_PAGING_DRX_PRESENT (1 << 0) +#define PAGING_PAGING_PRIORITY_PRESENT (1 << 1) +#define PAGING_UE_RADIO_CAPABILITY_FOR_PAGING_PRESENT (1 << 2) +#define PAGING_PAGING_ORIGIN_PRESENT (1 << 3) +#define PAGING_ASSIST_DATA_FOR_PAGING (1 << 4) +typedef struct ngapPaging +{ + FiveGSTmsi_t fiveGSTmsi; + PagingDRX_e pagingDrx;//Optional + UINT8 taiForPagingNum; + Tai_t taiForPagingItem[ngap_maxnoofTAIforPaging]; + PagingPriority_e pagingPriority;//Optional + UeRadioCapaForPag_t ueRadioCapabilityForPaging;//Optional + PagingOrigin_e pagingOrigin;//Optional + AssistDataForPaging_t assistDataForPaging;//Optional +}NgapPaging_t; + +/* Path Switch Request Acknowledge */ +#define PATH_SWITCH_REQUEST_ACK_UE_SECURITY_CAPABILITY_PRESENT (1 << 0) +#define PATH_SWITCH_REQUEST_ACK_NEW_SECURITY_CTX_IND_PRESENT (1 << 1) +#define PATH_SWITCH_REQUEST_ACK_CORE_NETWORK_ASSIST_INFO_PRESENT (1 << 2) +#define PATH_SWITCH_REQUEST_ACK_RRC_INACTIVE_TRANSITION_REPORT_REQUEST_PRESENT (1 << 3) +#define PATH_SWITCH_REQUEST_ACK_REDIRECT_VOICE_FB_PRESENT (1 << 4) +typedef struct ngapPathSwitchRequestAcknowledge +{ + UINT16 bitMask; + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + UINT64 ranUeNgapId; + UeSecurCapa_t ueSecurityCapability;//optional + SecurityCtx_t securityContext; + NewSecurityCtxInd_e newSecurCtxInd;//optional + UINT8 switchSessNum; + PathSwitchReqAckPduSessItem_t switchPduSessItem[NG_MAX_SESSION_NUM]; + UINT8 rlsSessNum; + PathSwitchRlsPduSessItem_t rlsPduSessItem[NG_MAX_SESSION_NUM]; + UINT8 SNssaiNum; + SNssai_t SNssaiItem[ngap_maxnoofAllowedS_NSSAIs]; + CoreAssitInfo_t coreNetworkAssitInfo;//optional + INT64 rrcInactiveTransitionReportRequest;//Optional + INT64 redirectVoiceFb;//Optional +}NgapPathSwitchRequestAcknowledge_t; + +/* Path Switch Request Failure */ +typedef struct ngapPathSwitchRequestFailure +{ + Instance_t instance; + AmfUeNgapId_t amfUeNgapId; + UINT64 ranUeNgapId; + UINT8 rlsSessNum; + PathSwitchRlsPduSessItem_t rlsPduSessItem[NG_MAX_SESSION_NUM]; +}NgapPathSwitchRequestFailure_t; +/********************************************************************************** +*********************************************************************************** +***************** CUC <--> E1AP ACCORDING TO STRUCTURE ************** +*********************************************************************************** +***********************************************************************************/ +#define MAX_LENGTH_GNBCUCP_NAME 150 + +typedef struct gnbCucpName +{ + char gnbCucpName[MAX_LENGTH_GNBCUCP_NAME]; +}GnbCucpName_t; + +#define SECURITY_ALGORITHM_INTERGRITY_PROTECTION_ALGORITHM (1 << 0) +typedef struct +{ + UINT16 bitMask; + CipAlgorithm_e cipheringAlgorithm; + IpAlgorithm_e integrityProtectionAlgorithm ;/* OPTIONAL */ +}SecuAlgorithm_t; + +typedef struct +{ + UINT32 size; + UINT8 buffer[MAX_SIZE_OF_OCTET_STRING]; +}EncrypTionKey_t; + +typedef struct +{ + UINT32 size; + UINT8 buffer[MAX_SIZE_OF_OCTET_STRING]; +}IntegrityProtectKey_t; + +#define USER_PLANE_SECURITY_KEY_INTERGRITYPROTECTIONKEY_PRESENT (1 << 0) +typedef struct +{ + UINT16 bitMask; + EncrypTionKey_t encryptionKey; + IntegrityProtectKey_t integrityProtectionKey;/* OPTIONAL */ +}UpSecuritykey_t; + +typedef struct +{ + SecuAlgorithm_t secuAlgorithm; + UpSecuritykey_t upSecukey; +}SecuInfo_t; + +#define GBR_QOS_FLOW_INFO_MAX_PACKET_LOSSRATE_DOWNLINK_PRESENT (1 << 0) +#define GBR_QOS_FLOW_INFO_MAX_PACKET_LOSSRATE_UPLINK_PRESENT (1 << 1) +typedef struct gbrQoSFlowInformation +{ + UINT16 bitMask; + UINT64 maxFlowBitRateDownlink; + UINT64 maxFlowBitRateUplink; + UINT64 guaranteedFlowBitRateDownlink; + UINT64 guaranteedFlowBitRateUplink; + UINT64 maxPacketLossRateDownlink;/* OPTIONAL */ + UINT64 maxPacketLossRateUplink;/* OPTIONAL */ +} GBRQoSFlowInformation_t; + +#define QOS_FLOW_LEVEL_PARA_GBR_QOS_FLOW_INFO_PRESENT (1 << 0) +#define QOS_FLOW_LEVEL_PARA_REFLECTIVE_QOS_ATTRIBUTE_PRESENT (1 << 1) +#define QOS_FLOW_LEVEL_PARA_ADDITIONAL_QOS_FLOW_INFO_PRESENT (1 << 2) +#define QOS_FLOW_LEVEL_PARA_PAGING_POLICY_INDICATOR_PRESENT (1 << 3) +#define QOS_FLOW_LEVEL_PARA_RDI_PRESENT (1 << 4) +typedef struct +{ + UINT16 bitMask; + /* QoS_Characteristics_PR */ + QosCharact_t qosCharacter; + AllocAndRetenPriority_t ngRanAllAndRetentionPriority; + GBRQoSFlowInformation_t gbrQoSFlowInformation;/* OPTIONAL */ + /* e_ReflectiveQosAttribute */ + ReflectiveQosAttribute_e reflectiveQosAttribute;/* OPTIONAL */ + /* e_AdditionalQosFlowInformation */ + AddQosFlowInfo_e addiQosFlowInfo;/* OPTIONAL */ + INT64 pagingPolicyInd;/* OPTIONAL */ + RDI_e rDI;/* OPTIONAL */ +}QosFlowLevelQosPar_t; + +#define QOS_FLOW_QOS_ITEM_QOS_FLOW_MAP_INDICATION_PRESENT (1 << 0) +typedef struct +{ + UINT16 bitMask; + INT64 qosFlowIdentifier; + QosFlowLevelQosPar_t qosFlowLevelQosPar; + /* e_QoS_Flow_Mapping_Indication */ + QosFlowMapInd_e qosFlowMapInd;/* OPTIONAL */ +}QoSFlowQosItem_t; + +#define QOS_FLOW_ITEM_QOS_FLOW_MAP_INDICATION_PRESENT (1 << 0) +typedef struct qoSFlowItem +{ + long qosFlowIdentifier; +}QoSFlowItem_t; + +typedef struct qosFlowList +{ + UINT8 qosFlowItemNum; + QoSFlowItem_t qosFlowItem[e1ap_maxnoofQoSFlows]; +}QoSFlowList_t; + +typedef struct qosFlowMap +{ + UINT8 qosFlowNum; + INT64 qfi; + UINT8 qosFlowMapFlag; + /* e_QoS_Flow_Mapping_Indication */ + QosFlowMapInd_e qosFlowMapInd; +}QosFlowMap_t; + +#define QOS_FLOW_MAP_IND_PRESENT (1 << 0) +typedef struct qosFlowMapItem +{ + UINT16 bitMask; + UINT8 qosFlowIdentifier; + QosFlowMapInd_e qosFlowMappingInd;/* OPTIONAL */ +}QosFlowMapItem_t; + +typedef struct qosFlowMapList +{ + UINT8 qosFlowMapItemNum; + QosFlowMapItem_t qosFlowMapItem[e1ap_maxnoofQoSFlows]; +}QosFlowMapList_t; + +#define DATA_FORWARDIGN_INFO_REQ_QOS_FLOWS_FORWARD_TUNNELS_PRESENT (1 << 0) +typedef struct +{ + UINT16 bitMask; + /* e_Data_Forwarding_Request */ + DataForwardReq_e dataForwardingRequest; + QosFlowMapList_t qosFlowForwardTunnelList;/* OPTIONAL */ +}DFIRequest_t; + +#define CELL_GROUP_ITEM_UL_CONFIGURATION_PRESENT (1 << 0) +#define CELL_GROUP_ITEM_DL_TX_STOP_PRESENT (1 << 1) +#define CELL_GROUP_ITEM_RAT_TYPE_PRESENT (1 << 2) +typedef struct cellGroupItem +{ + UINT16 bitMask; + INT64 cellGroupID; + /* e_UL_Configuration */ + UlConfig_e ulConfig;/* OPTIONAL */ + /* e_DL_TX_Stop */ + DlTXStop_e dlTxStop;/* OPTIONAL */ + /* e_RAT_Type */ + RatType_e ratType;/* OPTIONAL */ +}CellGroupItem_t; + +typedef struct cellGroupInformation +{ + UINT8 cellGroupNum; + CellGroupItem_t cellGroupItem[e1ap_maxnoofCellGroups]; +}CellGroupInformation_t; + +typedef struct flowMappingInformation +{ + QoSFlowList_t qosFlowList; +}FlowMappingInformation_t; + +#define ROHC_CONTINUE_ROHC_PRESENT (1 << 0) +typedef struct +{ + UINT16 bitMask; + INT64 maxCid; + INT64 rohcProfiles; + /* e_ROHC__continueROHC */ + RohcContinueRohc_e continueRohc;/* OPTIONAL */ +}Rohc_t; + +typedef struct +{ + /* ROHC_Parameters_PR */ + RohcParaPR_e rohcType; + Rohc_t rohc; + Rohc_t ulOnlyRohc; +}RohcPara_t; + +#define PDCP_CONFIGURATION_ROHC_PARA_PRESENT (1 << 0) +#define PDCP_CONFIGURATION_REORDERING_TIMER_PRESENT (1 << 1) +#define PDCP_CONFIGURATION_DISCARD_TIMER_PRESENT (1 << 2) +#define PDCP_CONFIGURATION_UL_DATA_SPLIT_THRESHOLD_PRESENT (1 << 3) +#define PDCP_CONFIGURATION_PDCP_DUPLICATION_PRESENT (1 << 4) +#define PDCP_CONFIGURATION_PDCP_REESTABLISHMENT_PRESENT (1 << 5) +#define PDCP_CONFIGURATION_PDCP_DATA_RECOVERY_PRESENT (1 << 6) +#define PDCP_CONFIGURATION_DUPLICATION_ACTIVATION_PRESENT (1 << 7) +#define PDCP_CONFIGURATION_OUT_OF_ORDER_DELIVERY_PRESENT (1 << 8) +typedef struct pdcpConfiguration +{ + UINT16 bitMask; + /* e_PDCP_SN_Size */ + PdcpSNSize_e pdcpSNSizeUl; + PdcpSNSize_e pdcpSNSizeDl; + /* e_RLC_Mode */ + CuRlcMode_e rlcMode; + RohcPara_t rohcPara;/* OPTIONAL */ + /* e_T_Reordering */ + TReordering_e reorderTimer;/* OPTIONAL */ + /* e_DiscardTimer */ + DiscardTimer_e discadTimer;/* OPTIONAL */ + /* e_ULDataSplitThreshold */ + UlDataSplitThreshold_e ulDataSplitThreshold;/* OPTIONAL */ + /* e_PDCP_Duplication */ + PdcpDuplication_e pdcpDuplication;/* OPTIONAL */ + /* e_PDCP_Reestablishment */ + PdcpReestablishment_e pdcpReestablishment;/* OPTIONAL */ + /* e_PDCP_DataRecovery */ + PdcpDataRecovery_e pdcpDataRecovery;/* OPTIONAL */ + /* e_Duplication_Activation */ + DuplicationActivation_e duplicationAct;/* OPTIONAL */ + /* e_OutOfOrderDelivery */ + OutOfOrderDelivery_e outofOrderDelivery;/* OPTIONAL */ +}PDCPConfiguration_t; + +typedef struct +{ + /* e_DefaultDRB */ + DefaultDRB_e defaultDrbInd; + /* e_SDAP_Header_UL */ + SdapHeader_e sdapUlHeaderInd; + /* e_SDAP_Header_DL */ + SdapHeader_e sdapDlHeaderInd; +}SdapCfg_t; + +typedef struct +{ + UINT8 qosFlowNum; + QoSFlowQosItem_t qosFlowInfo[e1ap_maxnoofQoSFlows]; +}QosFlowQosPara_t; + +typedef struct +{ + INT64 pdcpSN; + UINT64 hFN; +}PdcpCount_t; + +#define PDCP_SN_STATUS_INFORMATION_RECEIVE_PDCP_SDU_STATUSPRESENT (1 << 0) +typedef struct +{ + UINT16 bitMask; + UINT64 receivePdcpSDUBitNum;/* OPTIONAL */ + UINT64 receiveStatusofPdcpSDU[2048]; /*Length: 1 - 131072 */ + PdcpCount_t ulCountValue; +}PdcpUlStatusInfo_t; + +typedef struct +{ + PdcpCount_t dlCountValue; +}PdcpDlStatusInfo_t; + +typedef struct +{ + PdcpUlStatusInfo_t pdcpUlStatusInfo; + PdcpDlStatusInfo_t pdcpDlStatusInfo; +}PdcpSNStatusInfo_t; + +#define DRB_TO_SETUP_ITEM_DRB_DFI_REQUEST_PRESENT (1 << 0) +#define DRB_TO_SETUP_ITEM_DRB_INACTIVITY_TIMER_PRESENT (1 << 1) +#define DRB_TO_SETUP_ITEM_PDCP_SN_STATUS_INFO_PRESENT (1 << 2) +typedef struct drbToSetupItem +{ + UINT16 bitMask; + UINT8 drbID; + SdapCfg_t sdapConfig; + PDCPConfiguration_t pdcpConfig; + CellGroupInformation_t cellGroupInfo; + QosFlowQosPara_t qosFlowSetup; + DFIRequest_t drbDataForwardInfoReq;/* OPTIONAL */ + INT64 inactivityTimer;/* OPTIONAL */ + PdcpSNStatusInfo_t pdcpSNStatusInfo;/* OPTIONAL */ +}DRBToSetupItem_t; + +typedef struct drbToSetupList +{ + UINT8 drbToSetupListNum; + DRBToSetupItem_t drbToSetupItem[e1ap_maxnoofDRBs]; +}DRBToSetupList_t; + +#define PDU_SESSION_RESOURCE_SETUP_DL_AMBR_PRESENT (1 << 0) +#define PDU_SESSION_RESOURCE_SETUP_DATA_FORWARD_INFORMATION_REQ_PRESENT (1 << 1) +#define PDU_SESSION_RESOURCE_SETUP_INACTIVITY_TIMER_PRESENT (1 << 2) +#define PDU_SESSION_RESOURCE_SETUP_DL_UP_TRANSPORT_LAYER_INFO_PRESENT (1 << 3) +#define PDU_SESSION_RESOURCE_SETUP_NETWORK_INSTANCE_PRESENT (1 << 4) +typedef struct pduSessionResourceToSetupItem +{ + UINT16 bitMask; + UINT16 pduSessionId; + PduSessType_e pduSessionType; + SNssai_t snssai; + SecuInd_t securityIndication; + UINT64 pduSessionResourceDlAMBR;/* OPTIONAL */ + UpTransLayerInfo_t ulUpTNLInformation; + DFIRequest_t dataForwardInfoReq;/* OPTIONAL */ + INT64 inactTimer;/* OPTIONAL */ + UpTransLayerInfo_t existAllocateNgDlUpTnlInfo;/* OPTIONAL */ + INT64 networkInstance;/* OPTIONAL */ + DRBToSetupList_t drbToSetupList; +}PduSessionResourceToSetupItem_t; + +typedef struct pduSessionResourceToSetupList +{ + UINT8 sessNum; + PduSessionResourceToSetupItem_t pduSessionResourceToSetupItem[e1ap_maxnoofPDUSessionResource]; +}PduSessionResourceToSetupList_t; + +typedef struct upParametersItem +{ + UpTransLayerInfo_t upTransLayerInfo; + INT64 cellGroupID; +} UPParametersItem_t; + +typedef struct upParametersList +{ + UINT8 upParaNum; + UPParametersItem_t upParametersItem[e1ap_maxnoofUPParameters]; +} UPParametersList_t; + +#define DATA_FORWARDIGN_INFO_RSP_UL_DATA_FORWARD_PRESENT (1 << 0) +#define DATA_FORWARDIGN_INFO_RSP_DL_DATA_FORWARD_PRESENT (1 << 1) +typedef struct dFIResponse +{ + UINT16 bitMask; + UpTransLayerInfo_t ulDataForwarding;/*optional*/ + UpTransLayerInfo_t dlDataForwarding;/*optional*/ +} DFIResponse_t; + +#define DRB_TO_MODIFY_ITEM_SDAP_CONFIG_PRESENT (1 << 0) +#define DRB_TO_MODIFY_ITEM_PDCP_CONFIG_PRESENT (1 << 1) +#define DRB_TO_MODIFY_ITEM_DRB_DATA_FORWARD_INFO_RSP_PRESENT (1 << 2) +#define DRB_TO_MODIFY_ITEM_PDCP_SN_STATUS_REQ_PRESENT (1 << 3) +#define DRB_TO_MODIFY_ITEM_PDCP_SN_STATUS_INFO_PRESENT (1 << 4) +#define DRB_TO_MODIFY_ITEM_DL_UP_PARA_PRESENT (1 << 5) +#define DRB_TO_MODIFY_ITEM_CELL_GROUP_TO_ADD_PRESENT (1 << 6) +#define DRB_TO_MODIFY_ITEM_CELL_GROUP_TO_MODIFY_PRESENT (1 << 7) +#define DRB_TO_MODIFY_ITEM_CELL_GROUP_TO_REMOVE_PRESENT (1 << 8) +#define DRB_TO_MODIFY_ITEM_FLOW_MAPPING_INFO_PRESENT (1 << 9) +#define DRB_TO_MODIFY_ITEM_DRB_INACTIVITY_TIMER_PRESENT (1 << 10) +typedef struct drbToModifyItem +{ + UINT16 bitMask; + UINT8 drb_ID; + SdapCfg_t sdapConfig;/* OPTIONAL */ + PDCPConfiguration_t pdcpConfig;/* OPTIONAL */ + DFIResponse_t drbDataForwardInfoRsp;/* OPTIONAL */ + PdcpSNStatusRequest_e pdcpSNStatusReq;/* OPTIONAL */ + PdcpSNStatusInfo_t pdcpSNStatusInfo;/* OPTIONAL */ + UPParametersList_t dlUPParameters;/* OPTIONAL */ + CellGroupInformation_t cellGroupToAdd;/* OPTIONAL */ + CellGroupInformation_t cellGroupToModify;/* OPTIONAL */ + CellGroupInformation_t cellGroupToRemove;/* OPTIONAL */ + QosFlowQosPara_t flowMappingInfo;/* OPTIONAL */ + INT64 drbInactTimer;/* OPTIONAL */ +}DRBToModifyItem_t; + +typedef struct drbToModifyList +{ + UINT8 drbToModifyItemNum; + DRBToModifyItem_t drbToModifyItem[e1ap_maxnoofDRBs]; +}DRBToModifyList_t; + +typedef struct drbToRemoveItem +{ + UINT8 drb_ID; +}DRBToRemoveItem_t; + +typedef struct drbToRemoveList +{ + UINT8 drbToRemovetemNum; + DRBToRemoveItem_t drbToRemoveItem[e1ap_maxnoofDRBs]; +}DRBToRemoveList_t; + +#define PDU_SESSION_RESOURCE_TO_MODIFY_SECURITY_INDICATION_PRESENT (1 << 0) +#define PDU_SESSION_RESOURCE_TO_MODIFY_DL_AMBR_PRESENT (1 << 1) +#define PDU_SESSION_RESOURCE_TO_MODIFY_UL_UP_TNL_INFO_PRESENT (1 << 2) +#define PDU_SESSION_RESOURCE_TO_MODIFY_DATA_FORWARD_INFORMATION_REQ_PRESENT (1 << 3) +#define PDU_SESSION_RESOURCE_TO_MODIFY_DATA_FORWARD_INFORMATION_RSP_PRESENT (1 << 4) +#define PDU_SESSION_RESOURCE_TO_MODIFY_INACTIVITY_TIMER_PRESENT (1 << 5) +#define PDU_SESSION_RESOURCE_TO_MODIFY_NETWORK_INSTANCE_PRESENT (1 << 6) +#define PDU_SESSION_RESOURCE_TO_MODIFY_DRB_TO_SETUP_LIST_PRESENT (1 << 7) +#define PDU_SESSION_RESOURCE_TO_MODIFY_DRB_TO_MODIFY_LIST_PRESENT (1 << 8) +#define PDU_SESSION_RESOURCE_TO_MODIFY_DRB_TO_REMOVE_LIST_PRESENT (1 << 9) +typedef struct pduSessionResourceToModifyItem +{ + UINT16 bitmask; + UINT8 pduSessionId; + SecuInd_t secuIndi;/* OPTIONAL */ + UINT64 pduSessionResourceDlAMBR;/* OPTIONAL */ + UpTransLayerInfo_t ngUlUpTnlInfo;/* OPTIONAL */ + DFIRequest_t pduSessionDataForwardInfoReq;/* OPTIONAL */ + DFIResponse_t pduSessionDataForwardInfoRsp;/* OPTIONAL */ + INT64 pduSessionInactTimer;/* OPTIONAL */ + INT64 networkInstance;/* OPTIONAL */ + DRBToSetupList_t drbToSetupList;/* OPTIONAL */ + DRBToModifyList_t drbToModifyList;/* OPTIONAL */ + DRBToRemoveList_t drbToRemoveList;/* OPTIONAL */ +}PduSessionResourceToModifyItem_t; + +typedef struct pduSessionResourceToModifylist +{ + UINT8 pduSessionResourceToModifyItemNum; + PduSessionResourceToModifyItem_t pduSessionResourceToModifyItem[e1ap_maxnoofPDUSessionResource]; +}PduSessionResourceToModifyList_t; + +typedef struct cellGroupList +{ + UINT8 numCellGroupItem; + CellGroupItem_t cellGroupItem[e1ap_maxnoofCellGroups]; +}CellGroupList_t; + +typedef struct pduSessionResourceToRemoveItem +{ + UINT16 pduSessionID; +}PduSessionResourceToRemoveItem_t; + +typedef struct pduSessionResourceToRemoveList +{ + UINT8 pduSessionResourceToRemoveItemNum; + PduSessionResourceToRemoveItem_t pduSessionResourceToRemoveItem[e1ap_maxnoofPDUSessionResource]; +}PduSessionResourceToRemoveList_t; + +typedef struct ieCriticalityDiagnostics +{ + Criticality_e ieCriticality; + E1apProtocolIeId_e protocolIEId; + ErrorType_e typeOfError; +}E1IECriticalityDiagnostics_t; + +#define PROCEDURE_CODE_PRESENT (1 << 0) +#define TRIGGER_MESSAGE_TYPE_PRESENT (1 << 1) +#define PROCDURE_CRITICALITY_PRESENT (1 << 2) +#define TRANSACTION_ID_PRESENT (1 << 3) +#define IE_CRITICALITY_DIAGNOSTICS_PRESENT (1 << 4) +typedef struct criticalitydiagnostics +{ + UINT16 bitMask; + E1apProcCode_e procedureCode;/* OPTIONAL */ + TriggerMsg_e typeOfMessage;/* OPTIONAL */ + Criticality_e criticality;/* OPTIONAL */ + INT64 transactionID;/* OPTIONAL */ + UINT8 IECriticalityDiagnosticsNum;/* OPTIONAL */ + E1IECriticalityDiagnostics_t ieCriticalityDiagnostics[e1ap_maxnoofErrors];/* OPTIONAL */ +}E1Criticalitydiagnostics_t; + +typedef struct e1apCause +{ + E1apCausePr_e present; + union E1apCause_u + { + E1apCauseRadioNetwork_e e1apRadioNetwork; + E1apCauseTransport_e e1apTransport; + E1apCauseProtocol_e e1apProtocol; + E1apCauseMisc_e e1apMisc; + } choice; +} E1apCause_t; + +#define PART_E1_INTERFACE_GNBCUCPUEID_PRESENT (1 << 0) +#define PART_E1_INTERFACE_GNBCUUPUEID_PRESENT (1 << 1) + +typedef struct partE1InterfaceItem +{ + UINT16 bitMask; + UINT32 gnbCucpUeE1apId;/*optional*/ + UINT32 gnbCuupUeE1apId;/*optional*/ +}PartE1InterfaceItem_t; + +typedef struct partE1InterfaceList +{ + UINT8 PartE1InterfaceListNum; + PartE1InterfaceItem_t partE1InterfaceItem[e1ap_maxnoofIndividualE1ConnectionsToReset]; +}PartE1InterfaceList_t; + +typedef struct e1apResetType +{ + E1apResetPr_e present; + union E1apReset_u + { + INT64 resetAll; + PartE1InterfaceList_t PartE1InterfaceList; + } choice; +} E1apResetType_t; + +/********************************************************************************** +*********************************************************************************** +***************** CUC <--> E1AP MESSAGE STRUCTURE ****************** +*********************************************************************************** +***********************************************************************************/ +typedef struct ifmCucpE1apReset +{ + UINT64 transactionId; + E1apCause_t cause; + E1apResetType_t e1apResetType; +} IfmCucpE1apReset_t; + +#define CUUPE1APRESETACKPARTE1INTERFACE (1 << 0) +#define CUUPE1APRESETACKCRITICALDIAGNOSTICS (1 << 1) + +typedef struct ifmE1apResetAck +{ + UINT16 bitMask; + UINT64 transactionId; + PartE1InterfaceList_t PartE1InterfaceList;/*optional*/ + E1Criticalitydiagnostics_t criticalDiagnostics;/*optional*/ +} IfmE1apResetAck_t; + +#define CUCP_E1AP_SETUP_REQ_GNB_CUCP_NAME_CHOSEN_PRESENT (1 << 0) +typedef struct ifmCucpE1apSetupReq +{ + UINT16 bitMask; + UINT64 transactionId; + GnbCucpName_t gnbCucpName;/*optional*/ +} IfmCucpE1apSetupReq_t; + +#define CUUPE1APSETUPRSPGNBCUCPNAMECHOSEN (1 << 0) +typedef struct ifmCuupE1apSetupRsp +{ + UINT16 bitMask; + UINT64 transactionId; + GnbCucpName_t gnbCucpName;/*optional*/ +} IfmCuupE1apSetupRsp_t; + +#define CUUPE1APSETUPFAILURETIMETOWAIT (1 << 0) +#define CUUPE1APSETUPFAILURECRITICALDIAGNOSTICS (1 << 1) +typedef struct ifmCuupE1apSetupFailure +{ + UINT16 bitMask; + long transactionId; + E1apCause_t cause; + TimeToWait_e timeToWait;/*optional*/ + E1Criticalitydiagnostics_t criticalDiagnostics;/*optional*/ +} IfmCuupE1apSetupFailure_t; + +typedef struct e1apReleaseReq +{ + INT64 transactionId; + E1apCause_t cause; +} E1apReleaseReq_t; + +#define BEARER_CONTEXT_SETUP_UE_DL_MAX_IPDR_PRESENT (1 << 0) +#define BEARER_CONTEXT_SETUP_UE_INACTIVITY_TIMER_PRESENT (1 << 1) +#define BEARER_CONTEXT_SETUP_BEARER_CONTEXT_STATUS_CHANGE_PRESENT (1 << 2) +typedef struct e1apBearerContextSetupReq +{ + UINT16 bitMask; + NrCellId_t cellId; + UINT32 cucpUeE1apId; + SecuInfo_t secuInfo; + UINT64 ueDlAMBR; + UINT64 ueDlMaxIPDR;/*optional*/ + PlmnId_t servPlmnId; + /* e_ActivityNotificationLevel */ + ActNotiLevel_e actNotiLevel; + /* Inactivity_Timer_t */ + INT64 inactTimer;/*optional*/ + /* e_BearerContextStatusChange */ + BearCxtStatusChange_e bearerCxtStatusChg;/*optional*/ + PduSessionResourceToSetupList_t pduSessionResourceToSetupList; +} E1apBearerContextSetupReq_t; + +#define DRB_TO_SETUP_MOD_ITEM_DRB_DATA_FORWARD_INFO_REQ_PRESENT (1 << 0) +#define DRB_TO_SETUP_MOD_ITEM_DRB_INACTIVITY_TIMER_PRESENT (1 << 1) +#define DRB_TO_SETUP_MOD_ITEM_PDCP_UL_COUNT_PRESENT (1 << 2) +#define DRB_TO_SETUP_MOD_ITEM_PDCP_DL_COUNT_PRESENT (1 << 3) +typedef struct drbToSetupModItem +{ + UINT16 bitMask; + UINT8 drbID; + SdapCfg_t sdapConfig; + PDCPConfiguration_t pdcpConfig; + CellGroupInformation_t cellGroupInfo; + QosFlowQosPara_t flowMappingInfo; + DFIRequest_t drbDataForwardInfoReq;/* OPTIONAL */ + INT64 drbInactTimer;/* OPTIONAL */ + PdcpCount_t pdcpUlCnt;/* OPTIONAL */ + PdcpCount_t pdcpDlCnt;/* OPTIONAL */ +}DrbToSetupModItem_t; + +typedef struct drbToSetupModList +{ + UINT8 drbToSetupModListNum; + DrbToSetupModItem_t drbToSetupModItem[e1ap_maxnoofDRBs]; +}DrbToSetupModList_t; + +#define PDU_SESSION_RESOURCE_TO_SETUP_MOD_AMBR_PRESENT (1 << 0) +#define PDU_SESSION_RESOURCE_TO_SETUP_MOD_DATA_FORWARD_INFORMATION_REQ_PRESENT (1 << 1) +#define PDU_SESSION_RESOURCE_TO_SETUP_MOD_INACTIVITY_TIMER_PRESENT (1 << 2) +typedef struct pduSessionResourceToSetupModItem +{ + UINT16 bitMask; + UINT8 pduSessionId; + PduSessType_e pduSessionType; + SNssai_t snssai; + SecuInd_t secuIndi; + UINT64 pduSessionResourceAMBR;/* OPTIONAL */ + UpTransLayerInfo_t ngUlUpTnlInfo; + DFIRequest_t pduSessionDataForwardInfoReq;/* OPTIONAL */ + INT64 pduSessionInactTimer;/* OPTIONAL */ + DrbToSetupModList_t drbToSetupModList; +}PduSessionResourceToSetupModItem_t; + +typedef struct pduSessionResourceToSetupModList +{ + UINT8 pduSessionResourceToSetupModItemNum; + PduSessionResourceToSetupModItem_t pduSessionResourceToSetupModItem[e1ap_maxnoofPDUSessionResource]; +}PduSessionResourceToSetupModList_t; + +#define BEARER_CONTEXT_MODIFY_REQ_PDU_SESSION_RESOURCE_TO_SETUP_MOD_LIST_PRESENT (1 << 0) +#define BEARER_CONTEXT_MODIFY_REQ_PDU_SESSION_RESOURCE_TO_MODIFY_LIST_PRESENT (1 << 1) +#define BEARER_CONTEXT_MODIFY_REQ_PDU_SESSION_RESOURCE_TO_REMOVE_LIST_PRESENT (1 << 2) +typedef struct e1apPduSessionResourceToList +{ + UINT16 bitMask; + PduSessionResourceToSetupModList_t pduSessionResourceToSetupModList; ///< Optional field + PduSessionResourceToModifyList_t pduSessionResourceToModfiyList; ///< Optional field + PduSessionResourceToRemoveList_t pduSessionResourceToRemoveList; ///< Optional field +} PduSessionResourceList_t; + +#define BEARER_CONTEXT_MODIFY_REQ_SECURITY_INFORMATION_PRESENT (1 << 0) +#define BEARER_CONTEXT_MODIFY_REQ_UE_DL_AMBR_PRESENT (1 << 1) +#define BEARER_CONTEXT_MODIFY_REQ_UE_DL_MAX_IPDR_PRESENT (1 << 2) +#define BEARER_CONTEXT_MODIFY_REQ_BEARER_CTX_SATAUS_CHANGE_PRESENT (1 << 3) +#define BEARER_CONTEXT_MODIFY_REQ_NEW_UL_TNL_INFO_REQ_PRESENT (1 << 4) +#define BEARER_CONTEXT_MODIFY_REQ_UE_INACTIBITY_TIMER_PRESENT (1 << 5) +#define BEARER_CONTEXT_MODIFY_REQ_DATA_DISCARD_REQUIRED_PRESENT (1 << 6) +#define BEARER_CONTEXT_MODIFY_REQ_PDU_SESSION_RESOURCE (1 << 7) +typedef struct e1apBearerContextModReq +{ + UINT16 bitMask; + NrCellId_t cellId; + UINT32 gnbCucpUeE1apId; + UINT32 gnbCuupUeE1apId; + SecuInfo_t secuInfo; ///< Optional field + UINT64 ueDlAMBR; ///< Optional field + UINT64 ueDlMaxIPDR; ///< Optional field + BearCxtStatusChange_e bearerCtxStatusChg; ///< Optional field + NewUlTnlInfoRequire_e newUlTnlInfoRequire; ///< Optional field + INT64 ueInactTimer; ///< Optional field + DataDisRequire_e dataDisRequire; ///< Optional field + PduSessionResourceList_t pduSessionResourceList;///< Optional field +} E1apBearerContextModReq_t; + +typedef struct e1apBearerContextRelCmd +{ + NrCellId_t cellId;//added artifficially + UINT64 gnbCucpUeE1apId; + UINT64 gnbCuupUeE1apId; + E1apCause_t cause; +} E1apBearerContextRelCmd_t; + +/********************************************************************************** + ** UPC <--> E1AP ACCORDING TO STRUCTURE +***********************************************************************************/ +#define MAX_LENGTH_GNBCUUP_NAME 150 +typedef struct gnbCuupName +{ + char gnbCuupName[MAX_LENGTH_GNBCUUP_NAME]; + +}GnbCuupName_t; + +#define DATA_FORWARDING_INFO_UL_DATA_FORWARD_PRESENT (1 << 0) +#define DATA_FORWARDING_INFO_DL_DATA_FORWARD_PRESENT (1 << 1) +typedef struct qosFlowItemIEs +{ + UINT8 qosFlowIndicator; + E1apCause_t cause; +} QoSFlowItemIEs_t; +typedef struct flowFailedlist +{ + UINT8 qosFlowNum; + QoSFlowItemIEs_t qosFlowItemIEs[e1ap_maxnoofQoSFlows]; +} FlowFailedlist_t; + +#define DRB_SETUP_ITEM_DATA_FORWARD_INFO_RES_PRESENT (1 << 0) +#define DRB_SETUP_ITEM_FLOW_FAILED_LIST_PRESENT (1 << 1) +typedef struct drbSetupItem +{ + UINT16 bitMask; + UINT8 drId; + DFIResponse_t dataForwardInfoRsp;/*optional*/ + UPParametersList_t upPara; + QoSFlowList_t flowSetupList; + FlowFailedlist_t flowFailedlist;/*optional*/ +} DRBSetupItem_t; +typedef struct drbSetupList +{ + UINT8 drbSetupNum; + DRBSetupItem_t drbSetupItem[e1ap_maxnoofDRBs]; +} DRBSetupList_t; + +typedef struct +{ + UINT8 drbID; + E1apCause_t cause; +}DRBFailItem_t; + +typedef struct drbFailedList +{ + UINT8 drbFailNum; + DRBFailItem_t drbFailItem[e1ap_maxnoofDRBs]; +} DRBFailedList_t; + +#define PDU_SESSION_RESOURCE_SETUP_SECURITY_RESULT_PRESENT (1 << 0) +#define PDU_SESSION_RESOURCE_SETUP_DATA_FORWARD_INFO_RES_PRESENT (1 << 1) +#define PDU_SESSION_RESOURCE_SETUP_NG_DL_UP_UNCHANGED_PRESENT (1 << 2) +#define PDU_SESSION_RESOURCE_SETUP_DRB_FAILED_LIST_PRESENT (1 << 3) + +typedef struct pduSessionResourceSetupItem +{ + UINT16 bitMask; + INT64 pduSessionId; + SecuResult_t securityResult;/* OPTIONAL */ + UpTransLayerInfo_t ngDlUpTransLayerInfo; + DFIResponse_t dataForwardingInformationResponse;/* OPTIONAL */ + /* e_PDU_Session_Resource_Setup_Item__nG_DL_UP_Unchanged */ + NgDlUpUnchange_e ngDlUpUchange;/* OPTIONAL */ + DRBSetupList_t drbSetupList; + DRBFailedList_t drbFailedList; +}PduSessionResourceSetupItem_t; + +typedef struct pduSessionResourceSetupList +{ + UINT8 sessionResourceSetupNum; + PduSessionResourceSetupItem_t pduSessionResourceSetupItem[e1ap_maxnoofPDUSessionResource]; +}PduSessionResourceSetupList_t; + +typedef struct pduSessionResourceFailedItem +{ + INT64 sessId; + E1apCause_t cause; +}PduSessionResourceFailedItem_t; + +typedef struct pduSessionResourceFailedlist +{ + UINT8 sessFailNum; + PduSessionResourceFailedItem_t sessFailItem[e1ap_maxnoofPDUSessionResource]; +}PduSessionResourceFailedList_t; + +#define DRB_MODIFY_ITEM_UL_UP_TRANSPORT_PARA_PRESENT (1 << 0) +#define DRB_MODIFY_ITEM_PDCP_SN_STATUS_INFO_PRESENT (1 << 1) +#define DRB_MODIFY_ITEM_FLOW_SETUP_LIST_PRESENT (1 << 2) +#define DRB_MODIFY_ITEM_FLOW_FAILED_LIST_PRESENT (1 << 3) +typedef struct dRBModifyItem +{ + UINT16 bitMask; + UINT8 drbId; + UPParametersList_t ulUpTransPara;/* OPTIONAL */ + PdcpSNStatusInfo_t pdcpSNStatusInfo;/* OPTIONAL */ + QoSFlowList_t flowSetupList;/* OPTIONAL */ + FlowFailedlist_t flowFailedlist;/* OPTIONAL */ +} DRBModifyItem_t; + +typedef struct dRBModifyList +{ + UINT8 drbModifyItemNum; + DRBModifyItem_t drbModifyItem[e1ap_maxnoofDRBs]; +} DRBModifyList_t; + +#define PDU_SESSION_RESOURCE_MODIFY_DL_UP_TNL_INFO_PRESENT (1 << 0) +#define PDU_SESSION_RESOURCE_MODIFY_SECURITY_RESULT_PRESENT (1 << 1) +#define PDU_SESSION_RESOURCE_MODIFY_DATA_FORWARD_INFO_RSP_PRESENT (1 << 2) +#define PDU_SESSION_RESOURCE_MODIFY_DRB_SETUP_LIST_PRESENT (1 << 3) +#define PDU_SESSION_RESOURCE_MODIFY_DRB_FAILED_LIST_PRESENT (1 << 4) +#define PDU_SESSION_RESOURCE_MODIFY_DRB_MODIFY_LIST_PRESENT (1 << 5) +#define PDU_SESSION_RESOURCE_MODIFY_DRB_FAILED_TO_MOD_LIST_PRESENT (1 << 6) +typedef struct pduSessionResourceModifyItem +{ + UINT16 bitmask; + UINT8 pduSessionId; + UpTransLayerInfo_t ngDlUpTnlInfo;/* OPTIONAL */ + SecuResult_t securityResult;/* OPTIONAL */ + DFIResponse_t pduSessionDataForwardInfoRsp;/* OPTIONAL */ + DRBSetupList_t drbSetupList;/* OPTIONAL */ + DRBFailedList_t drbFailedList;/* OPTIONAL */ + DRBModifyList_t drbModifyList;/* OPTIONAL */ + DRBFailedList_t drbFailedToModList;/* OPTIONAL */ +}PduSessionResourceModifyItem_t; + +typedef struct pduSessionResourceModifyList +{ + UINT8 pduSessionResourceModifyItemNum; + PduSessionResourceModifyItem_t pduSessionResourceModifyItem[e1ap_maxnoofPDUSessionResource]; +}PduSessionResourceModifyList_t; + +typedef struct e1apSliceSupportItem +{ + SNssai_t snssai; +}E1apsliceSupportItem_t; + +typedef struct e1apSliceSupportList +{ + UINT8 SliceSupportItemNum; + E1apsliceSupportItem_t sliceSupportItem[e1ap_maxnoofSliceItems]; +}E1apsliceSupportList_t; + +typedef struct nrCgiSupportItem +{ + CuNrCgi_t NrCgi; +}NrCgiSupportItem_t; + +typedef struct nrCgiSupportList +{ + UINT8 NrCgiSupportItemNum; + NrCgiSupportItem_t NrCgiSupportItem[e1ap_maxnoofNRCGI]; +}NrCgiSupportList_t; + +typedef struct NGRANQoSSupportItem +{ + NonDynamic5QIDescr_t NonDynamic5QIDescr; +}NGRANQoSSupportItem_t; + +typedef struct nGRANQoSSupportList +{ + UINT8 NGRANQoSSupportItemNum; + NGRANQoSSupportItem_t NGRANQoSSupportItem[e1ap_maxnoofNGRANQOSParameters]; +}NGRANQoSSupportList_t; + +typedef struct qosParamtersSupportList +{ + UINT16 bitMask; + NGRANQoSSupportList_t NGRANQoSSupportList; +}QosParamtersSupportList_t; + +typedef struct supportedPLMNsItem_s +{ + PlmnId_t plmnId; + E1apsliceSupportList_t sliceSupportList;/*optional*/ + NrCgiSupportList_t nrCgiSupportList;/*optional*/ + QosParamtersSupportList_t qosParamtersSupportList;/*optional*/ +}SupportedPLMNsItem_t; + +typedef struct supportedPLMNsList_s +{ + UINT8 supportPlmns; + SupportedPLMNsItem_t SupportedPLMNsItem[e1ap_maxnoofSPLMNs]; +}SupportedPLMNsList_t; + +typedef struct pduSessionToNotifyItem_s +{ + UINT8 pduSessionId; + QoSFlowList_t flowSetupList; +}PduSessionToNotifyItem_t; + +typedef struct pduSessionToNotifyList_s +{ + UINT8 pduSessionToNotifynum; + PduSessionToNotifyItem_t pduSessionToNotifyItem[e1ap_maxnoofPDUSessionResource]; +}PduSessionToNotifyList_t; + +typedef struct e1apUpbPlmnCfgInfo_s +{ + PlmnId_t plmnId; + UINT16 cgiNum; + CuNrCgi_t cgi[e1ap_maxnoofNRCGI];/*optional*/ + E1apsliceSupportList_t sliceSupportList;/*optional*/ + UINT32 qosNum; + NonDynamic5QIDescr_t qosPara[e1ap_maxnoofNGRANQOSParameters];/*optional*/ +}E1apUpbPlmnCfgInfo_t; + +/********************************************************************************** + ** UPC <--> E1AP MESSAGE STRUCTURE +***********************************************************************************/ + +typedef struct e1apRegistergNBReq +{ + Instance_t instance; + UINT8 state; + GnbCuupName_t gnbCuupName; +}E1apRegistergNBReq_t; + +/* ¸ÃÏûÏ¢½á¹¹Ó¦¸ÃŲµ½ CUUP/INC Ŀ¼Ï TBD */ +typedef struct e1apRegistergNBCnf +{ + Instance_t instance; + UINT8 state; + GnbCucpName_t gnbCucpName; + int successCellNum; + CellIdList_t successCellList; + int failCellNum; + CellIdList_t failCellList; +} E1apRegistergNBCnf_t; + +/* Deregister Indication */ +typedef struct e1apDeregisteredgNBInd +{ + Instance_t instance; +} E1apDeregisteredgNBInd_t; + +typedef struct UpbPlmnCfgInfolist +{ + UINT32 bPlmnNum; + E1apUpbPlmnCfgInfo_t bPlmnCfgInfo[e1ap_maxnoofSPLMNs]; +} E1apUpbPlmnCfgInfoList_t; + +#define E1AP_REGISTER_REQ_UPNAME_PRESENT (1 << 0) +#define E1AP_REGISTER_REQ_UP_CAPACITY_PRESENT (1 << 1) +typedef struct e1apRegisterCpReq +{ + UINT16 bitMask; + Instance_t instance; + UINT64 transactionId; + UINT64 gnbCuupId; + GnbCuupName_t gnbCuupName;/*optional*/ + CNSupport_e cnSupport; + E1apUpbPlmnCfgInfoList_t e1apUpbPlmnCfgInfoList; + INT64 upCapacity;/*optional*/ +} E1apRegisterCpReq_t; +#define E1AP_SETUP_RSP_UPNAME_PRESENT (1 << 0) +#define E1AP_SETUP_RSP_UP_CAPACITY_PRESENT (1 << 1) +typedef struct e1apSetupRsp +{ + UINT16 bitMask; + Instance_t instance; + UINT64 transactionId; + UINT64 gnbCuupId; + GnbCuupName_t gnbCuupName;/*optional*/ + CNSupport_e cnSupport; + E1apUpbPlmnCfgInfoList_t e1apUpbPlmnCfgInfoList; + INT64 upCapacity;/*optional*/ +} E1apSetupRsp_t; +typedef struct e1apSetupFail +{ + UINT16 bitMask; + long transactionId; + E1apCause_t cause; + TimeToWait_e timeToWait;/*optional*/ + E1Criticalitydiagnostics_t criticalDiagnostics;/*optional*/ +} E1apSetupFail_t; + +typedef struct e1apReleaseRsp +{ + INT64 transactionId; +} E1apReleaseRsp_t; + +#define E1AP_PDU_SESSION_RESOURCE_FAILED_LIST_PRESENT (1 << 0) +typedef struct e1apPduSessionResourceSetuplist +{ + UINT16 bitMask; + PduSessionResourceSetupList_t pduSessionResourceSetuplist; + PduSessionResourceFailedList_t pduSessionResourceFailedList; //OPTION +} E1apPduSessionResourceSetupList_t; + +typedef struct e1apBearerContextSetupRsp +{ + UINT64 gnbCucpUeE1apId; + UINT64 gnbCuupUeE1apId; + E1apPduSessionResourceSetupList_t e1apPduSessionResourceSetuplist; +} E1apBearerContextSetupRsp_t; + +#define BEARER_CONTEXT_MOD_FAIL_CRITICAL_DIAGNOSE_PRESENT (1 << 0) +typedef struct e1apBearerContextModFail +{ + UINT16 bitMask; + UINT32 gnbCucpUeE1apId; + UINT32 gnbCuupUeE1apId; + E1apCause_t cause; + E1Criticalitydiagnostics_t e1apCriticalDiagnose; +} E1apBearerContextModFail_t; + +#define BEARER_CONTEXT_SETUP_FAILURE_CRITICAL_DIAGNOSE_PRESENT (1 << 0) +typedef struct e1apBearerContextSetupFailure +{ + UINT16 bitMask; + UINT64 gnbCucpUeE1apId; + UINT64 gnbCuupUeE1apId; + E1apCause_t cause; + E1Criticalitydiagnostics_t criticalDiagnose; /* Optional field*/ +} E1apBearerContextSetupFailure_t; + +#define DRB_SETUP_MOD_ITEM_DATA_FORWARD_INFO_RSP_PRESENT (1 << 0) +#define DRB_SETUP_MOD_ITEM_FLOW_FAILED_LIST_PRESENT (1 << 1) +typedef struct dRBSetupModItem +{ + UINT16 bitMask; + UINT8 drbId; + DFIResponse_t drbDataForwardInfoRsp;/* OPTIONAL */ + UPParametersList_t ulUpTransPara; + QoSFlowList_t flowSetupList; + FlowFailedlist_t flowFailedlist;/* OPTIONAL */ +} DRBSetupModItem_t; + +typedef struct dRBSetupModList +{ + UINT8 drbSetupModItemNum; + DRBSetupModItem_t drbSetupModItem[e1ap_maxnoofDRBs]; +} DRBSetupModList_t; + +#define PDU_SESSION_RESOURCE_SETUP_MOD_SECURITY_RESULT_PRESENT (1 << 0) +#define PDU_SESSION_RESOURCE_SETUP_MOD_DATA_FORWARD_INFO_RSP_PRESENT (1 << 1) +#define PDU_SESSION_RESOURCE_SETUP_MOD_DRB_FAILED_LIST_PRESENT (1 << 2) +typedef struct pduSessionResourceSetupModItem +{ + UINT16 bitmask; + UINT8 pduSessionId; + SecuResult_t securityResult;/* OPTIONAL */ + UpTransLayerInfo_t ngDlUpTnlInfo; + DFIResponse_t pduSessionDataForwardInfoRsp;/* OPTIONAL */ + DRBSetupModList_t drbSetupModList; + DRBFailedList_t drbFailedList;/* OPTIONAL */ +}PduSessionResourceSetupModItem_t; + +typedef struct pduSessionResourceSetupModList +{ + UINT8 pduSessionResourceSetupModItemNum; + PduSessionResourceSetupModItem_t pduSessionResourceSetupModItem[e1ap_maxnoofPDUSessionResource]; +}PduSessionResourceSetupModList_t; + +#define BEARER_CONTEXT_MODIFY_RSP_PDU_SESSION_RESOURCE_SETUP_MOD_LIST_PRESENT (1 << 0) +#define BEARER_CONTEXT_MODIFY_RSP_PDU_SESSION_RESOURCE_FAILED_MOD_LIST_PRESENT (1 << 1) +#define BEARER_CONTEXT_MODIFY_RSP_PDU_SESSION_RESOURCE_MODIFY_LIST_PRESENT (1 << 2) +#define BEARER_CONTEXT_MODIFY_RSP_PDU_SESSION_RESOURCE_FAILED_TO_MOD_LIST_PRESENT (1 << 3) +typedef struct e1apBearModPduSessionResource +{ + UINT16 bitmask; + PduSessionResourceSetupModList_t pduSessionResourceSetupModList;///< Optional field + PduSessionResourceFailedList_t pduSessionResourceFailedModList;///< Optional field + PduSessionResourceModifyList_t pduSessionResourceModfiyList;///< Optional field + PduSessionResourceFailedList_t pduSessionResourceFailedToModList;///< Optional field +} E1apBearModPduSessionResource_t; + +#define BEARER_CONTEXT_MODIFY_RSP_PDU_SESSION_RESOURCE_LIST (1 << 0) +typedef struct e1apBearerContextModRsp +{ + UINT16 bitmask; + UINT64 gnbCucpUeE1apId; + UINT64 gnbCuupUeE1apId; + E1apBearModPduSessionResource_t e1apBearModPduSessionResource;/*optional*/ +} E1apBearerContextModRsp_t; + +#define BREARE_CONTEXT_RELEASE_COMPLETE_CRITICALITY_DIAGNOSTICS_PRESENT (1 << 0) +typedef struct e1apBearerContextRlsCmp +{ + UINT16 bitmask; + UINT64 gnbCucpUeE1apId; + UINT64 gnbCuupUeE1apId; + E1Criticalitydiagnostics_t criticalDiagnostics;/*optional*/ +}E1apBearerContextRlsCmp_t; + +#define E1AP_DL_DATA_NOTIFY_PPI_PRESENCE (1 << 0) +typedef struct e1apDlDataNote +{ + UINT16 bitmask; + UINT64 gnbCucpUeE1apId; + UINT64 gnbCuupUeE1apId; + INT64 ppi; /*optional*/ +}IfmE1apDlDataNotify_t; + +typedef struct e1apUlDataNote +{ + UINT64 gnbCucpUeE1apId; + UINT64 gnbCuupUeE1apId; + PduSessionToNotifyList_t pduSessionToNotifyList; +}E1apUlDataNote_t; + +/* Error Indication */ +#define ERROR_INDICATION_CU_CP_UE_E1AP_ID_PRESENT (1 << 0) +#define ERROR_INDICATION_CU_UP_UE_E1AP_ID_PRESENT (1 << 1) +#define ERROR_INDICATION_CAUSE_PRESENT (1 << 2) +#define ERROR_INDICATION_CRITICALITYDIAGNOSTICS_PRESENT (1 << 3) +typedef struct E1apErrInd +{ + UINT8 bitMask; + UINT64 transId; + UINT64 gnbCucpUeE1apId; /* OPTIONAL */ + UINT64 gnbCuupUeE1apId; /* OPTIONAL */ + E1apCause_t cause; /* OPTIONAL */ + E1Criticalitydiagnostics_t critiDiag; /* OPTIONAL */ +} IfmE1apErrInd_t; + +//RRC_INACTIVE Begin +typedef struct e1apDrbActivityItem_s +{ + UINT32 drbId; + BOOL active; +}E1apDrbActivityItem_t; + +typedef struct e1apDrbActivityList_s +{ + UINT8 numDrbActivityItem;//1~e1ap_maxnoofDRBs + E1apDrbActivityItem_t drbActivityItem[e1ap_maxnoofDRBs]; +}E1apDrbActivityList_t; + + +typedef struct e1apPduSessionActivityItem_s +{ + UINT8 pduSessionId; + BOOL active; +}E1apPduSessionActivityItem_t; +typedef struct e1apPduSessionActivityList_s +{ + UINT16 numPduSessionActivityItem;//1~e1ap_maxnoofPDUSessionResource + E1apPduSessionActivityItem_t pduSessionActivityItem[e1ap_maxnoofPDUSessionResource]; +}E1apPduSessionActivityList_t; +typedef struct e1apUeActivity_s +{ + BOOL active; +}E1apUeActivity_t; + +//UPC_E1AP_BEAR_CTX_INACTIVE_NOTIFY +//E1AP_CUC_BEAR_CTX_INACTIVE_NOTIFY +#define TAG_E1AP_BEAR_INAC_DRB_ACTIVITY_LIST 1 +#define TAG_E1AP_BEAR_INAC_PDU_SESSION_ACTIVITY_LIST 2 +#define TAG_E1AP_BEAR_INAC_UE_ACTIVITY 3 +typedef struct ifmE1apBearCtxInactiveNotify +{ + UINT64 transId; + UINT64 gnbCucpUeE1apId; + UINT64 gnbCuupUeE1apId; + UINT8 tag; + union { + E1apDrbActivityList_t drbActivityList; + E1apPduSessionActivityList_t pduSessionActivityList; + E1apUeActivity_t ueActivity; + }u; +} IfmE1apBearCtxInactiveNotify_t; +#ifdef __cplusplus +} +#endif + + +#endif /* __CUMODULEINTERFACEH__*/ + +