[Epic-ID: ODUHIGH-405][Task-ID: ODUHIGH-414]Storing UE context per Cell per DU at...
[o-du/l2.git] / src / cu_stub / cu_stub.h
index b3a2e58..2918614 100644 (file)
 #ifndef __CU_MGR_MAIN_H__
 #define __CU_MGR_MAIN_H__
 
+#define CU_ID 1
+#define CU_NAME "ORAN_OAM_CU"
+
+#define DU_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0001"
+#define CU_IP_V6_ADDR "0000:0000:0000:0000:0000:0000:0000:0011"
+
+#ifndef O1_ENABLE
+#define DU_IP_V4_ADDR (char*[]){"192.168.130.81", "192.168.130.83"}
+#define DU_SCTP_PORT (int[]){38472, 38473}
+
+#define CU_IP_V4_ADDR "192.168.130.82"
+#define CU_SCTP_PORT_TO_DU (int[]){38472, 38473}
+#endif
+
+#define DU_EGTP_PORT 39001
+#define CU_EGTP_PORT 39002
+#define RRC_VER 0
+#define EXT_RRC_VER 5
+#define PLMN_MCC0 3
+#define PLMN_MCC1 1
+#define PLMN_MCC2 1
+#define PLMN_MNC0 4
+#define PLMN_MNC1 8
+#define PLMN_MNC2 0
 
-#include "stdio.h"
-#include "stdlib.h"
-#include "string.h"
-#include "stdbool.h"
-#include "ctype.h"
-#include "envopt.h"        /* Environment options */
-#include "envdep.h"        /* Environment dependent */
-#include "envind.h"        /* Environment independent */
-
-#include "gen.h"           /* General */
-#include "ssi.h"           /* System services */
-#include "ss_queue.h"
-#include "ss_task.h"
-#include "ss_msg.h"
-#include "cm_inet.h"
-#include "cm_llist.h"      /* Common link list  defines  */
-#include "cm_hash.h"       /* Common hashlist  defines */
-
-#include "gen.x"           /* General */
-#include "ssi.x"   /* System services */
-#include "ss_queue.x"
-#include "ss_task.x"
-#include "ss_msg.x"
-#include "cm_lib.x"
-#include "cm_inet.x"
-#include "cm_llist.x"      /* Common link list  defines  */
-#include "cm_hash.x"       /* Common hashlist  defines */
-
-#include "du_log.h"
-#define MAX_IPV6_LEN 16
 #define CU_DU_NAME_LEN_MAX 30      /* Max length of CU/DU name string */
 
 #define CU_APP_MEM_REG 1
 #define CU_POOL 1
 
+#define MAX_NUM_OF_SLICE 1024 /* As per the spec 38.473, maxnoofSliceItems = 1024*/
+
 /* allocate and zero out a static buffer */
-#define CU_ALLOC(_datPtr, _size)                                \
-{                                                               \
-   S16 _ret;                                                    \
+
+#define CU_ALLOC(_datPtr, _size)                             \
+{                                                            \
+   S16 _ret;                                                 \
    _ret = SGetSBuf(CU_APP_MEM_REG, CU_POOL,                  \
-                     (Data **)&_datPtr, _size);                  \
-   if(_ret == ROK)                                              \
-      cmMemset((U8*)_datPtr, 0, _size);                         \
-   else                                                         \
-      _datPtr = NULLP;                                          \
+                     (Data **)&_datPtr, _size);              \
+   if(_ret == ROK)                                           \
+      memset(_datPtr, 0, _size);                      \
+   else                                                      \
+      _datPtr = NULLP;                                       \
 }
  
 /* free a static buffer */
-#define CU_FREE(_datPtr, _size)                                 \
+#define CU_FREE(_datPtr, _size)                              \
+   if(_datPtr)                                               \
    SPutSBuf(CU_APP_MEM_REG, CU_POOL,                         \
          (Data *)_datPtr, _size);
 
-
-typedef struct ipAddr
-{
- Bool ipV4Pres;
- U32  ipV4Addr;
- Bool ipV6Pres;
- U8   ipV6Addr[MAX_IPV6_LEN];
-}SctpIpAddr;
-
 typedef struct RrcVersion
 {
-  U8    rrcVer;     /* Latest RRC Version */
-  U32   extRrcVer;  /* Latest RRC version extended */
+  uint8_t    rrcVer;     /* Latest RRC Version */
+  uint32_t   extRrcVer;  /* Latest RRC version extended */
 }RrcVersion;
 
-typedef struct egtpParams
-{
-   SctpIpAddr  localIp;
-   U16         localPort;
-   SctpIpAddr  destIp;
-   U16         destPort;
-   U32       minTunnelId;
-   U32       maxTunnelId;
-}EgtpParams;
-
-typedef struct sctpParams
-{
-   SctpIpAddr  duIpAddr;
-   U16         duPort;
-   SctpIpAddr  cuIpAddr;
-   U16         cuPort;
-}SctpParams;
-
-typedef struct fPLMN
-{
-   U8 mcc[3];
-   U8 mnc[3];
-}Plmn;
-
-
 typedef struct cuCfgParams
 {
-   U32              cuId;
+   uint32_t         cuId;
    char             cuName[CU_DU_NAME_LEN_MAX];
-   SctpParams       sctpParams;
-   Plmn            plmn;
+   CuSctpParams     sctpParams;
+   Plmn             plmn;
    EgtpParams       egtpParams;
    RrcVersion       rrcVersion;
 }CuCfgParams;
-CuCfgParams cuCfgParams; //global variable to hold all configs
+
+typedef struct cuCellCb CuCellCb;
+
+typedef struct cuUeCb
+{
+   CuCellCb  *cellCb;
+   uint32_t  crnti;
+   uint8_t   gnbDuUeF1apId;
+   uint8_t   gnbCuUeF1apId;
+   F1apMsgDb f1apMsgDb;
+}CuUeCb;
+
+struct cuCellCb
+{
+   uint32_t nrCellId;
+   uint8_t  numUe;
+   CuUeCb   *ueCb[MAX_NUM_UE];
+};
+
+typedef struct duDb
+{
+   uint32_t duId;
+   char     duName[CU_DU_NAME_LEN_MAX];
+   uint8_t  numCells;
+   CuCellCb cellCb[MAX_NUM_CELL];  
+   uint8_t  numUe;
+   CuUeCb   ueCb[MAX_NUM_CELL * MAX_NUM_UE];
+}DuDb;
+
+typedef struct cuGlobalCb
+{
+   CuCfgParams cuCfgParams;
+   uint8_t     numSnssaiSupported;
+   Snssai      *snssaiList[MAX_NUM_OF_SLICE];
+   uint8_t     numDu;
+   DuDb        duInfo[MAX_DU_SUPPORTED];
+   uint32_t    gnbCuUeF1apIdGenerator;   /* Generating CU UE F1AP ID */
+}CuGlobalCb;
+
+CuGlobalCb cuCb;
 
 void readCuCfg();
 void cuAppInmsgHdlr(Buffer *mBuf);
 void sctpNtfyInd(CmInetSctpNotification *ntfy);
+uint8_t egtpInitReq();
+void *cuConsoleHandler(void *);
 
 #endif