2918614b18b6a08352f1b4d917964e32ce3dd43d
[o-du/l2.git] / src / cu_stub / cu_stub.h
1 /*******************************************************************************
2 ################################################################################
3 #   Copyright (c) [2017-2019] [Radisys]                                        #
4 #                                                                              #
5 #   Licensed under the Apache License, Version 2.0 (the "License");            #
6 #   you may not use this file except in compliance with the License.           #
7 #   You may obtain a copy of the License at                                    #
8 #                                                                              #
9 #       http://www.apache.org/licenses/LICENSE-2.0                             #
10 #                                                                              #
11 #   Unless required by applicable law or agreed to in writing, software        #
12 #   distributed under the License is distributed on an "AS IS" BASIS,          #
13 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #
14 #   See the License for the specific language governing permissions and        #
15 #   limitations under the License.                                             #
16 ################################################################################
17 *******************************************************************************/
18
19 #ifndef __CU_MGR_MAIN_H__
20 #define __CU_MGR_MAIN_H__
21
22 #define CU_ID 1
23 #define CU_NAME "ORAN_OAM_CU"
24
25 #define DU_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0001"
26 #define CU_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0011"
27
28 #ifndef O1_ENABLE
29 #define DU_IP_V4_ADDR (char*[]){"192.168.130.81", "192.168.130.83"}
30 #define DU_SCTP_PORT (int[]){38472, 38473}
31
32 #define CU_IP_V4_ADDR "192.168.130.82"
33 #define CU_SCTP_PORT_TO_DU (int[]){38472, 38473}
34 #endif
35
36 #define DU_EGTP_PORT 39001
37 #define CU_EGTP_PORT 39002
38 #define RRC_VER 0
39 #define EXT_RRC_VER 5
40 #define PLMN_MCC0 3
41 #define PLMN_MCC1 1
42 #define PLMN_MCC2 1
43 #define PLMN_MNC0 4
44 #define PLMN_MNC1 8
45 #define PLMN_MNC2 0
46
47 #define CU_DU_NAME_LEN_MAX 30      /* Max length of CU/DU name string */
48
49 #define CU_APP_MEM_REG 1
50 #define CU_POOL 1
51
52 #define MAX_NUM_OF_SLICE 1024 /* As per the spec 38.473, maxnoofSliceItems = 1024*/
53
54 /* allocate and zero out a static buffer */
55
56 #define CU_ALLOC(_datPtr, _size)                             \
57 {                                                            \
58    S16 _ret;                                                 \
59    _ret = SGetSBuf(CU_APP_MEM_REG, CU_POOL,                  \
60                      (Data **)&_datPtr, _size);              \
61    if(_ret == ROK)                                           \
62       memset(_datPtr, 0, _size);                      \
63    else                                                      \
64       _datPtr = NULLP;                                       \
65 }
66  
67 /* free a static buffer */
68 #define CU_FREE(_datPtr, _size)                              \
69    if(_datPtr)                                               \
70    SPutSBuf(CU_APP_MEM_REG, CU_POOL,                         \
71          (Data *)_datPtr, _size);
72
73 typedef struct RrcVersion
74 {
75   uint8_t    rrcVer;     /* Latest RRC Version */
76   uint32_t   extRrcVer;  /* Latest RRC version extended */
77 }RrcVersion;
78
79 typedef struct cuCfgParams
80 {
81    uint32_t         cuId;
82    char             cuName[CU_DU_NAME_LEN_MAX];
83    CuSctpParams     sctpParams;
84    Plmn             plmn;
85    EgtpParams       egtpParams;
86    RrcVersion       rrcVersion;
87 }CuCfgParams;
88
89 typedef struct cuCellCb CuCellCb;
90
91 typedef struct cuUeCb
92 {
93    CuCellCb  *cellCb;
94    uint32_t  crnti;
95    uint8_t   gnbDuUeF1apId;
96    uint8_t   gnbCuUeF1apId;
97    F1apMsgDb f1apMsgDb;
98 }CuUeCb;
99
100 struct cuCellCb
101 {
102    uint32_t nrCellId;
103    uint8_t  numUe;
104    CuUeCb   *ueCb[MAX_NUM_UE];
105 };
106
107 typedef struct duDb
108 {
109    uint32_t duId;
110    char     duName[CU_DU_NAME_LEN_MAX];
111    uint8_t  numCells;
112    CuCellCb cellCb[MAX_NUM_CELL];  
113    uint8_t  numUe;
114    CuUeCb   ueCb[MAX_NUM_CELL * MAX_NUM_UE];
115 }DuDb;
116
117 typedef struct cuGlobalCb
118 {
119    CuCfgParams cuCfgParams;
120    uint8_t     numSnssaiSupported;
121    Snssai      *snssaiList[MAX_NUM_OF_SLICE];
122    uint8_t     numDu;
123    DuDb        duInfo[MAX_DU_SUPPORTED];
124    uint32_t    gnbCuUeF1apIdGenerator;   /* Generating CU UE F1AP ID */
125 }CuGlobalCb;
126
127 CuGlobalCb cuCb;
128
129 void readCuCfg();
130 void cuAppInmsgHdlr(Buffer *mBuf);
131 void sctpNtfyInd(CmInetSctpNotification *ntfy);
132 uint8_t egtpInitReq();
133 void *cuConsoleHandler(void *);
134
135 #endif
136
137 /**********************************************************************
138          End of file
139 **********************************************************************/