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