[Epic-ID: ODUHIGH-405][Task-ID: ODUHIGH-420] GNB-DU Configuration Query and response
[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 enum
74 {
75    IDLE,
76    ATTACH_IN_PROGRESS,
77    ACTIVE,
78    HANDOVER_IN_PROGRESS
79 }UeState;
80
81 typedef struct RrcVersion
82 {
83   uint8_t    rrcVer;     /* Latest RRC Version */
84   uint32_t   extRrcVer;  /* Latest RRC version extended */
85 }RrcVersion;
86
87 typedef struct cuCfgParams
88 {
89    uint32_t         cuId;
90    char             cuName[CU_DU_NAME_LEN_MAX];
91    CuSctpParams     sctpParams;
92    Plmn             plmn;
93    EgtpParams       egtpParams;
94    RrcVersion       rrcVersion;
95 }CuCfgParams;
96
97 typedef struct cuCellCb CuCellCb;
98
99 typedef struct cuUeCb
100 {
101    CuCellCb  *cellCb;
102    uint32_t  crnti;
103    uint8_t   gnbDuUeF1apId;
104    uint8_t   gnbCuUeF1apId;
105    F1apMsgDb f1apMsgDb;
106    UeState   state;
107 }CuUeCb;
108
109 struct cuCellCb
110 {
111    uint32_t nrCellId;
112    uint8_t  numUe;
113    CuUeCb   *ueCb[MAX_NUM_UE];
114 };
115
116 typedef struct duDb
117 {
118    uint32_t duId;
119    char     duName[CU_DU_NAME_LEN_MAX];
120    uint8_t  numCells;
121    CuCellCb cellCb[MAX_NUM_CELL];  
122    uint8_t  numUe;
123    CuUeCb   ueCb[MAX_NUM_CELL * MAX_NUM_UE];
124 }DuDb;
125
126 typedef struct cuGlobalCb
127 {
128    CuCfgParams cuCfgParams;
129    uint8_t     numSnssaiSupported;
130    Snssai      *snssaiList[MAX_NUM_OF_SLICE];
131    uint8_t     numDu;
132    DuDb        duInfo[MAX_DU_SUPPORTED];
133    uint32_t    gnbCuUeF1apIdGenerator;   /* Generating CU UE F1AP ID */
134 }CuGlobalCb;
135
136 CuGlobalCb cuCb;
137
138 void readCuCfg();
139 void cuAppInmsgHdlr(Buffer *mBuf);
140 void sctpNtfyInd(CmInetSctpNotification *ntfy);
141 uint8_t egtpInitReq();
142 void *cuConsoleHandler(void *);
143
144 #endif
145
146 /**********************************************************************
147          End of file
148 **********************************************************************/