O-CU-UP
[scp/ocu/5gnr.git] / Include / sdapCore.h
diff --git a/Include/sdapCore.h b/Include/sdapCore.h
new file mode 100644 (file)
index 0000000..320ff5a
--- /dev/null
@@ -0,0 +1,135 @@
+/******************************************************************************
+###############################################################################
+#   Copyright (c) [2017-2020] [ICT/CAS]                                        #
+#   Licensed under the ORAN Software License v1.0 (License)             #
+###############################################################################
+******************************************************************************/
+
+#ifndef __SDAPCORE_H__
+#define __SDAPCORE_H__
+
+#include "vos_types.h"
+#include "cuModuleInterface.h"
+#include "upcContext.h"
+#include "upcCommon.h"
+
+#define UE_ACTIVITY_NOTIFY_LEVEL               1
+#define PDU_SESS_ACTIVITY_NOTIFY_LEVEL         2
+#define DRB_ACTIVITY_NOTIFY_LEVEL              3
+
+typedef struct
+{
+       UINT64 ueDataCount;
+}UeActivityNotify_t;
+
+typedef struct
+{
+       UINT64 pduDataCount[256];
+}PduSessActivityNotify_t;
+
+typedef struct
+{
+       UINT64 drbDataCount[33];
+}DrbActivityNotify_t;
+
+typedef struct
+{
+       UINT64  ueE1apId;
+       UINT8   notifyLevel;    /*UE, PDU SESSION, DRB*/
+    union {
+        UeActivityNotify_t                     ueNotify;
+        PduSessActivityNotify_t        pduSessNotify;
+               DrbActivityNotify_t             drbNotify;
+    }u;
+}SdapActivityNotify_t;
+
+
+/* 1、每个实体内的Session  ID、drbID、QosFlowId,都是连续的 
+   2、Session和Qos相关的信息都是以ID作为下标保存的
+   3、DRB是以DRB ID - 1 保存的*/
+
+/* 实体的配置结果和实体的保存原则是一致的 */
+
+typedef struct
+{
+       UINT64                          drbId;
+       UINT16                          QosNum;
+       UINT64                          Qfi[UPC_MAX_QOS_PARA_NUM];
+       UINT64                          failQosNum;
+       UINT64                          failQfi[UPC_MAX_QOS_PARA_NUM];
+       E1apCause_e                     cause[UPC_MAX_QOS_PARA_NUM];
+}SdapDrbCfgRet_t;
+
+typedef struct
+{
+       UINT64                          sessId;
+       E1apCause_e                     sessFailCause;
+
+       /* Setup */
+       UINT16                          actDrbNum;
+       UINT8                           actDrbId[UPC_MAX_DRB_NUM];
+       SdapDrbCfgRet_t         actDrbCfg[UPC_MAX_DRB_NUM];
+       UINT16                          failDrbNum;
+       UINT64                          failDrbId[UPC_MAX_DRB_NUM];
+       E1apCause_e                     cause[UPC_MAX_DRB_NUM];
+
+       /* Modify */
+       UINT16                          modDrbNum;
+       UINT8                           modDrbId[UPC_MAX_DRB_NUM];
+       SdapDrbCfgRet_t         modDrbCfg[UPC_MAX_DRB_NUM];
+       UINT16                          failModDrbNum;
+       UINT64                          failModDrbId[UPC_MAX_DRB_NUM];
+       E1apCause_e                     modCause[UPC_MAX_DRB_NUM];
+}sdapSessCfgRet_t;
+
+typedef struct
+{
+       UINT64                          drbId;
+       SdapCfg_t                       sdapCfg;
+       UINT8                           qfiNum;
+       INT64                           qfi[UPC_MAX_QOS_PARA_NUM];
+       QoSFlowQosItem_t        qosFlowInfo[UPC_MAX_QOS_PARA_NUM];
+}SdapDrbCfg_t;
+
+typedef struct
+{
+       UINT64                          sessId;
+       UINT8                           drbNum;
+       UINT64                          drbId[UPC_MAX_DRB_NUM];
+       SdapDrbCfg_t            drbCfg[UPC_MAX_DRB_NUM];
+}SdapInstance_t;
+
+typedef struct
+{
+       UINT64                          upE1apId;
+       UINT16                          sessNum;
+       UINT16                          sessId[UPC_MAX_SESSION_NUM];
+       SdapInstance_t          sdapInstance[UPC_MAX_SESSION_NUM];
+}SdapGlobalDtat_t;
+
+typedef struct
+{
+       UINT8   QFI :6;
+       UINT8   RQI :1;
+       UINT8   RDI :1;
+}sdapDlHeader_t;
+
+typedef struct
+{
+       UINT8   QFI  :6;
+       UINT8   R    :1;
+       UINT8   TYPE :1;
+}sdapUlHeader_t;
+
+
+#define SDAP_HEADER_LEN                        1
+
+SdapGlobalDtat_t* sdapGetUeGlobalData(UINT64   upE1apId, UINT8 *flag);
+INT32 sdapCreateInstance(UINT64        upE1apId, upcTempSessInfo_t *pSessTempInfo, sdapSessCfgRet_t *pCfgRet);
+INT32 sdapModSetupInstance(UINT64      upE1apId, upcTempSessInfo_t *pSessTempInfo, sdapSessCfgRet_t *pCfgRet);
+INT32 sdapModInstance(UINT64   upE1apId, upcTempSessInfo_t *pSessTempInfo, sdapSessCfgRet_t *pCfgRet);
+INT32 sdapDeleteDrbInfo(SdapInstance_t *pSdapInstance, UINT8 drbId);
+INT32 sdapDeleteDrbInfoOfInstance(UINT64 upE1apId, UINT8 sessId, UINT8 drbId);
+INT32 sdapDeleteInstance(UINT64        upE1apId, UINT16 sessId);
+
+#endif