O-CU-UP
[scp/ocu/5gnr.git] / Include / upcContext.h
diff --git a/Include/upcContext.h b/Include/upcContext.h
new file mode 100644 (file)
index 0000000..c7bd320
--- /dev/null
@@ -0,0 +1,339 @@
+/******************************************************************************
+###############################################################################
+#   Copyright (c) [2017-2020] [ICT/CAS]                                        #
+#   Licensed under the ORAN Software License v1.0 (License)             #
+###############################################################################
+******************************************************************************/
+
+#ifndef __UPCCONTEXT_H__
+#define __UPCCONTEXT_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "gnbCommon.h"
+#include "cuModuleInterface.h"
+
+
+
+#define UPC_MAX_IP_NUM                 5
+#define UPC_MAX_UP_NUM                 1
+#define UPC_MAX_PLMN_NUM        2
+#define UPC_MAX_SLICE_NUM       3
+#define UPC_MAX_QOS_PARA_NUM    10
+#define UPC_MAX_UE_NUM          MAX_UE_NUM
+#define UPC_MAX_SESSION_NUM     10
+#define UPC_MAX_DRB_NUM                        2
+
+typedef struct
+{
+       INT64                           sessId;
+       E1apCause_e                     cause;
+}SessFailitem_t;
+
+typedef struct
+{
+       INT16                           drbId;
+       E1apCause_e                     cause;
+}DrbFailitem_t;
+
+typedef struct
+{
+       UINT8                           qosFlowId;
+       E1apCause_e                     cause;
+}qosFailitem_t;
+
+typedef struct
+{
+       UINT8                                           qosSetupAllowed;
+       UINT8                                           qosModAllowed;
+
+       UINT8                                           qosFlowId;
+
+       /* QOS Info Begin */
+       QosFlowLevelQosPar_t        qosPara;
+       
+       UINT8                                           qosMapFlag;
+       QosFlowMapInd_e                 qosFlowMapInd;
+       /* QOS Info End */
+
+       E1apCause_e                                     qosSetFailCause;
+       E1apCause_e                                     qosModFailCause;
+}upcTempQosInfo_t;
+
+typedef struct
+{
+       UINT8                                           drbSetupAllowed;
+       UINT8                                           drbModAllowed;
+
+       UINT8                                           drbId;
+
+       UINT16                                          qosSetupNum;
+       UINT16                                          qosSetupSuccNum;/* 最终建立成功的个数 */
+       UINT16                                          qosSetupFailNum;/* 最终建立失败的个数 */
+
+       UINT16                                          qosModNum;
+       UINT16                                          qosModSuccNum;/* 最终建立成功的个数 */
+       UINT16                                          qosModFailNum;/* 最终建立失败的个数 */
+
+       upcTempQosInfo_t                        *pQosSetupList;
+       upcTempQosInfo_t                        *pQosModList;
+
+       /* DRB Info --Begin */
+
+       UINT8                                           sdapFlag;/* Only Mod Optional */
+       SdapCfg_t                                       sdapConfig;
+
+       UINT8                                           pdcpFlag;/* Only Mod Optional */
+       PDCPConfiguration_t             pdcpConfig;
+       CellGroupInformation_t      cellGroupInfo;
+
+       CellGroupInformation_t      cellGroupToAdd;/* Only Mod Optional */
+       CellGroupInformation_t      cellGroupToMod;/* Only Mod Optional */
+       CellGroupInformation_t      cellGroupToRemove;/* Only Mod Optional */
+
+       UINT8                                           DFIReqFlag;
+       DFIRequest_t                            drbDFIReq;
+       UINT8                                           DFIRspFlag;/* Only Mod Optional */
+       DFIResponse_t                           drbDFIRsp;
+
+       UINT8                                           inactTimeFlag;
+       INT64                                   inactivityTimer;
+
+       UINT8                                           pdcpSNStatuFlag;
+       PdcpSNStatusInfo_t                      pdcpSNStatusInfo;
+
+       PdcpSNStatusRequest_e           pdcpSNStatusReq;
+
+       UPParametersList_t                      f1UlUpPara;
+       UINT8                                           f1DlUpParaFlag;/* Only Mod Optional */
+       UPParametersList_t                      f1DlUpPara;
+
+       UINT8                                           pdcpUlCntFlag;
+       PdcpCount_t                                     pdcpUlCount;
+
+       UINT8                                           pdcpDlCntFlag;
+       PdcpCount_t                                     pdcpDlConut;
+
+       /* DRB Info -- end */
+
+       E1apCause_e                                     drbSetFailCause;
+       E1apCause_e                                     drbModFailCause;
+}upcTempDrbInfo_t;
+
+typedef struct
+{
+       UINT8                                           sessSetupAllowed;
+       UINT8                                           sessModAllowed;
+
+       UINT16                                          pduSessId;
+
+       UINT16                                          drbSetupNum;
+       UINT16                                          drbSetupSuccNum;/* 最终建立成功的个数 */
+       UINT16                                          drbSetupFailNum;/* 最终建立失败的个数 */
+
+       UINT16                                          drbModNum; /* 最初请求修改的个数 */
+       UINT16                                          drbModSuccNum;  /* 最终修改成功的个数 */
+       UINT16                                          drbModFailNum; /* 最终修改失败的个数 */
+
+       UINT8                                           drbRemoveNum;
+       UINT8                                           drbRemoveId[UPC_MAX_DRB_NUM];
+
+       upcTempDrbInfo_t                        *pTempDrbSetupList;
+       upcTempDrbInfo_t                        *pTempDrbModList;
+
+       /* Session Info --Begin */
+       PduSessType_e                           pduSessionType;
+       SNssai_t                                        snssai;
+
+       UINT8                                           secuIndiFlag;/* Only Mod Optional */
+       SecuInd_t                                   secuIndi;
+       SecuResult_t                securityResult;
+
+       UINT8                                           ulUpChgFlag;/* Only Mod Optional */
+       UpTransLayerInfo_t          ulUpTNLInfo;
+
+       UINT8                                           dlAMBRFlag;
+       UINT64                                          sessDlAMBR;
+       
+       UINT8                                           DFIReqFlag;
+    DFIRequest_t                           DFIInfoReq;
+       UINT8                                           DFIRspFlag;/* Only Mod Optional */
+       DFIResponse_t                           DFIInfoRsp;
+
+       UINT8                                           InactTimerFlag;
+       INT64                                   inactTimer;
+
+       UINT8                                           dlNGupTnlFlag;
+       UpTransLayerInfo_t                      dlNgUpTnlInfo;
+       UINT8                                           dlNgUpChgFlag;
+
+       UINT8                                           InstanceFlag;
+       INT64                                           networkInstance;
+       /* session Info --End */
+
+       E1apCause_e                                     sessSetFailCause;
+       E1apCause_e                                     sessModFailCause;
+}upcTempSessInfo_t;
+
+
+typedef struct
+{
+       struct upUeCb                           *pUeCb;
+
+       UINT16                                          sessSetupNum;   /* 最初请求建立的个数 */
+       UINT16                                          sessSetupSuccNum;/* 最终建立成功的个数 */
+       UINT16                                          sessSetupFailNum;/* 最终建立失败的个数 */
+
+       UINT16                                          sessModNum; /* 最初请求修改的个数 */
+       UINT16                                          sessModSuccNum; /* 最终修改成功的个数 */
+       UINT16                                          sessModFailNum; /* 最终修改失败的个数 */
+
+       upcTempSessInfo_t                       *pTempSessSetupList;
+       upcTempSessInfo_t                       *pTempSessModList;
+
+       
+       /* Content      --Begin */
+       UINT8                                           secuInfoFlag;/* Only Mod Optional */
+       SecuInfo_t                                      secuInfo;
+
+       UINT8                                           dlAmbrFlag;/* Only Mod Optional */
+       UINT64                                          ueDlAMBR;
+       
+       PlmnId_t                                        servPlmnId;
+       ActNotiLevel_e                          actNotiLevel;   
+       
+       UINT8                                           dlIPDRFlag;
+       UINT64                                          ueDlMaxIPDR;
+
+       UINT8                                           inactTimeFlag;
+       INT64                                           inactTimer;
+
+       UINT8                                           bearStaChageFlag;
+       BearCxtStatusChange_e           bearerCxtStatusChg;
+
+       UINT8                                           newTnlInfoReqFlag;/* Only Mod Optional */
+       NewUlTnlInfoRequire_e           newTnlInfoReq;
+
+       UINT8                                           dataDisFlag;/* Only Mod Optional */
+       DataDisRequire_e            dataDisRequire;
+       /* Content      --End */
+}upcTempInfo_t;
+
+
+struct upSessCb;
+struct upUeCb;
+struct upInstance;
+typedef struct upDrbCb
+{
+       UINT8                                           useFlag;
+    INT64                          drbId;
+       
+    SdapCfg_t                                  sdapConfig;
+       PDCPConfiguration_t             pdcpConfig;
+       UPParametersList_t                      f1UlUpPara;
+       UPParametersList_t                      f1DlUpPara;
+       CellGroupInformation_t      cellGroupInfo;
+
+       /* QOS INFO */
+       QosFlowQosPara_t                        qosFlowPara;
+
+       UINT8                                           DFIFlag;
+    DFIRequest_t                       dataForInfoReq;
+
+
+       PdcpSNStatusInfo_t                      pdcpSNStatusInfo;
+    struct upSessCb             *pSessionCb;
+}UpDrbCb_t;
+
+typedef struct upSessCb
+{
+       UINT8                                           useFlag;
+    UINT16                             sessId;
+    PduSessType_e                  sessType;
+    SNssai_t                    sNSsai;
+
+    SecuInd_t                  secuInd;
+       SecuResult_t                            securityResult;
+
+    UINT64                             dlAMBR;
+
+    UpTransLayerInfo_t          ngUlUpTransInfo;
+       UpTransLayerInfo_t          ngDlUpTransInfo;
+
+    DFIRequest_t                       dataForInfoReq;
+
+
+       INT64                                           networkInstance;
+       
+       UINT8                       drbNum;
+    UpDrbCb_t                   *pDrbCb[UPC_MAX_DRB_NUM];
+
+       struct upUeCb                           *pUeCb;
+}UpSessCb_t;
+
+typedef enum upUeState_e
+{
+    UP_UE_INIT,
+    UP_UE_ACTIVE,
+    UP_UE_WAITING_INACTIVE,
+    UP_UE_INACTIVE
+}UpUeState_e;
+
+typedef struct upUeCb
+{
+       UINT8                                           useFlag;
+    UINT64                                     cpE1apId;
+    UINT64                                     upE1apId;
+
+    UpUeState_e                 ueState;
+    SecuInfo_t                                 secuInfo;
+    UINT64                         ueDlAMBR;
+       UINT64                                          ueDlMaxIPDR;
+    PlmnId_t                    plmnId;
+       
+    INT64                                  inActTimer;
+               
+       UINT16                                          sessNum;/* current session num */
+    UpSessCb_t                  *pSessCb[UPC_MAX_SESSION_NUM];
+       struct upInstance           *pUpInstance;
+}UpUeCb_t;
+
+typedef struct upInstance
+{
+    Instance_t                  instance;
+       UINT32                                          moduleId;
+       UINT32                                          state;
+    UINT64                      upId;
+    GnbCuupName_t               upName;
+    GnbCucpName_t               cpName;
+       INT8                                            upAddrNum;
+    IpAddress_t                 upAddr[UPC_MAX_IP_NUM];
+       INT8                                            cpAddrNum;
+       IpAddress_t                                     cpAddr[UPC_MAX_IP_NUM];
+    INT64                                      upCapa;
+    UINT32                                             bPlmnNum;
+       E1apUpbPlmnCfgInfo_t            bPlmnCfgInfo[e1ap_maxnoofSPLMNs];
+    UINT32                      ueNum;
+    UpUeCb_t                    *pUeCb[UPC_MAX_UE_NUM];
+}UpInstance_t;
+
+UpInstance_t *upcGetInstance();
+UpUeCb_t* upcAllocUeCb(UpInstance_t *pInstance, UINT64 cuCpE1apId);
+INT32 upcSetSessionCb(UpUeCb_t * pUeCb, PduSessionResourceToSetupList_t *pPduSessionSetupList);
+void upcSetUeCb(UpUeCb_t       * pUeCb, E1apBearerContextSetupReq_t *pBearerCxtSetupReq);
+UpUeCb_t* upcGetUeCbByUpUeE1apId(UpInstance_t *pInstance, UINT64       cuUpE1apId);
+void upcRemoveSessionCb(UpUeCb_t       * pUeCb, PduSessionResourceToRemoveList_t *pRemoveList);
+UpSessCb_t *upcGetSessCb(UpUeCb_t *pUeCb, UINT8 pduSessId);
+UpDrbCb_t *upcGetDrbCb(UpSessCb_t *pSessCb, UINT8 drbId);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+