/****************************************************************************** ############################################################################### # 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__*/