O-CU-UP
[scp/ocu/5gnr.git] / Include / sdapCore.h
1 /******************************************************************************
2 ###############################################################################
3 #   Copyright (c) [2017-2020] [ICT/CAS]                                        #
4 #   Licensed under the ORAN Software License v1.0 (License)             #
5 ###############################################################################
6 ******************************************************************************/
7
8 #ifndef __SDAPCORE_H__
9 #define __SDAPCORE_H__
10
11 #include "vos_types.h"
12 #include "cuModuleInterface.h"
13 #include "upcContext.h"
14 #include "upcCommon.h"
15
16 #define UE_ACTIVITY_NOTIFY_LEVEL                1
17 #define PDU_SESS_ACTIVITY_NOTIFY_LEVEL  2
18 #define DRB_ACTIVITY_NOTIFY_LEVEL               3
19
20 typedef struct
21 {
22         UINT64 ueDataCount;
23 }UeActivityNotify_t;
24
25 typedef struct
26 {
27         UINT64 pduDataCount[256];
28 }PduSessActivityNotify_t;
29
30 typedef struct
31 {
32         UINT64 drbDataCount[33];
33 }DrbActivityNotify_t;
34
35 typedef struct
36 {
37         UINT64  ueE1apId;
38         UINT8   notifyLevel;    /*UE, PDU SESSION, DRB*/
39     union {
40         UeActivityNotify_t                      ueNotify;
41         PduSessActivityNotify_t         pduSessNotify;
42                 DrbActivityNotify_t             drbNotify;
43     }u;
44 }SdapActivityNotify_t;
45
46
47 /* 1、每个实体内的Session  ID、drbID、QosFlowId,都是连续的 
48    2、Session和Qos相关的信息都是以ID作为下标保存的
49    3、DRB是以DRB ID - 1 保存的*/
50
51 /* 实体的配置结果和实体的保存原则是一致的 */
52
53 typedef struct
54 {
55         UINT64                          drbId;
56         UINT16                          QosNum;
57         UINT64                          Qfi[UPC_MAX_QOS_PARA_NUM];
58         UINT64                          failQosNum;
59         UINT64                          failQfi[UPC_MAX_QOS_PARA_NUM];
60         E1apCause_e                     cause[UPC_MAX_QOS_PARA_NUM];
61 }SdapDrbCfgRet_t;
62
63 typedef struct
64 {
65         UINT64                          sessId;
66         E1apCause_e                     sessFailCause;
67
68         /* Setup */
69         UINT16                          actDrbNum;
70         UINT8                           actDrbId[UPC_MAX_DRB_NUM];
71         SdapDrbCfgRet_t         actDrbCfg[UPC_MAX_DRB_NUM];
72         UINT16                          failDrbNum;
73         UINT64                          failDrbId[UPC_MAX_DRB_NUM];
74         E1apCause_e                     cause[UPC_MAX_DRB_NUM];
75
76         /* Modify */
77         UINT16                          modDrbNum;
78         UINT8                           modDrbId[UPC_MAX_DRB_NUM];
79         SdapDrbCfgRet_t         modDrbCfg[UPC_MAX_DRB_NUM];
80         UINT16                          failModDrbNum;
81         UINT64                          failModDrbId[UPC_MAX_DRB_NUM];
82         E1apCause_e                     modCause[UPC_MAX_DRB_NUM];
83 }sdapSessCfgRet_t;
84
85 typedef struct
86 {
87         UINT64                          drbId;
88         SdapCfg_t                       sdapCfg;
89         UINT8                           qfiNum;
90         INT64                           qfi[UPC_MAX_QOS_PARA_NUM];
91         QoSFlowQosItem_t        qosFlowInfo[UPC_MAX_QOS_PARA_NUM];
92 }SdapDrbCfg_t;
93
94 typedef struct
95 {
96         UINT64                          sessId;
97         UINT8                           drbNum;
98         UINT64                          drbId[UPC_MAX_DRB_NUM];
99         SdapDrbCfg_t            drbCfg[UPC_MAX_DRB_NUM];
100 }SdapInstance_t;
101
102 typedef struct
103 {
104         UINT64                          upE1apId;
105         UINT16                          sessNum;
106         UINT16                          sessId[UPC_MAX_SESSION_NUM];
107         SdapInstance_t          sdapInstance[UPC_MAX_SESSION_NUM];
108 }SdapGlobalDtat_t;
109
110 typedef struct
111 {
112         UINT8   QFI :6;
113         UINT8   RQI :1;
114         UINT8   RDI :1;
115 }sdapDlHeader_t;
116
117 typedef struct
118 {
119         UINT8   QFI  :6;
120         UINT8   R    :1;
121         UINT8   TYPE :1;
122 }sdapUlHeader_t;
123
124
125 #define SDAP_HEADER_LEN                 1
126
127 SdapGlobalDtat_t* sdapGetUeGlobalData(UINT64    upE1apId, UINT8 *flag);
128 INT32 sdapCreateInstance(UINT64 upE1apId, upcTempSessInfo_t *pSessTempInfo, sdapSessCfgRet_t *pCfgRet);
129 INT32 sdapModSetupInstance(UINT64       upE1apId, upcTempSessInfo_t *pSessTempInfo, sdapSessCfgRet_t *pCfgRet);
130 INT32 sdapModInstance(UINT64    upE1apId, upcTempSessInfo_t *pSessTempInfo, sdapSessCfgRet_t *pCfgRet);
131 INT32 sdapDeleteDrbInfo(SdapInstance_t *pSdapInstance, UINT8 drbId);
132 INT32 sdapDeleteDrbInfoOfInstance(UINT64 upE1apId, UINT8 sessId, UINT8 drbId);
133 INT32 sdapDeleteInstance(UINT64 upE1apId, UINT16 sessId);
134
135 #endif