UE CB creation at MAC and SCH [Issue-ID: ODUHIGH-177]
[o-du/l2.git] / src / du_app / du_mgr.h
index f229b1b..e818fe5 100644 (file)
 /* This file contains message handling functionality for DU cell management */
 #ifndef __DU_MGR_H__
 #define __DU_MGR_H__
-
-#include "stdio.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 "cm5.h"           /* Common timer defines */
-#include "cm_tkns.h"       /* Common tokens defines */
-#include "cm_mblk.h"       /* Common memory allocation library defines */
-#include "cm_llist.h"      /* Common link list  defines  */
-#include "cm_hash.h"       /* Common hashlist  defines */
-#include "cm_lte.h"
-#include "cm_inet.h"
-#include "lkw.h"
-#include "lrg.h"
-#include "legtp.h"
-#include "du_app_mac_inf.h"
-
-#include "gen.x"           /* General */
-#include "ssi.x"           /* System services */
-
-#include "cm5.x"           /* Common timer library */
-#include "cm_tkns.x"       /* Common tokens */
-#include "cm_mblk.x"       /* Common memory allocation */
-#include "cm_llist.x"      /* Common link list */
-#include "cm_hash.x"       /* Common hashlist */
-#include "cm_lte.x"
-#include "cm_inet.x"
-#include "cm_lib.x"
-#include "lkw.x"
-#include "lrg.x"
-
-#include "du_cfg.h"
-
 #define DU_PROC  0
+
 /* Memory related configs */
 #define DU_APP_MEM_REGION    0
-#define RLC_UL_MEM_REGION     1
-#define RLC_DL_MEM_REGION     4
-#define RG_MEM_REGION     4
+#define RLC_UL_MEM_REGION    1
+#define RLC_DL_MEM_REGION    4
+#define MAC_MEM_REGION       4
 
 #define DU_POOL  1
 #define RLC_POOL  1
 #define EVTSTARTPOLL  9
 #define EVENT_RIC_DATA  10
 
-/* Selector */
-#define DU_SELECTOR_LC   0
-#define DU_SELECTOR_TC   1
-#define DU_SELECTOR_LWLC 2
 
 /* SAP IDs */
 #define DU_MAC_SUID 0
 #define DU_ZERO_VAL 0
 
 /* Macros */
-
 #define ADD 0
 #define DEL 1
 
       SPutSBuf(DU_APP_MEM_REGION, DU_POOL,                      \
          (Data *)_datPtr, _size);
 
+/* Allocate shared memory to be used for LWLC 
+ * during inter-layer communication */
+#define DU_ALLOC_SHRABL_BUF(_buf, _size)                     \
+{                                                            \
+   if(SGetStaticBuffer(DU_APP_MEM_REGION, DU_POOL,           \
+      (Data **)&_buf, (Size) _size, 0) == ROK)               \
+   {                                                         \
+      cmMemset((U8 *)(_buf), 0, _size);                      \
+   }                                                         \
+   else                                                      \
+   {                                                         \
+      (_buf) = NULLP;                                        \
+   }                                                         \
+}
+
 /* Free shared memory, received through LWLC */
-#define DU_FREE_MEM(_region, _pool, _datPtr, _size)             \
-   if(_datPtr)                                                  \
-          SPutSBuf(_region, _pool,(Data *)_datPtr, _size);          \
-   _datPtr = NULL;
+#define DU_FREE_SHRABL_BUF(_region, _pool,_buf, _size)          \
+{                                                               \
+   if (_buf != NULLP)                                           \
+   {                                                            \
+      (Void) SPutStaticBuffer(_region, _pool,                   \
+           (Data *) _buf, (Size) _size, 0);                     \
+       _buf = NULLP;                                            \
+   }                                                            \
+}
+
 
 typedef enum
 {
@@ -153,6 +134,12 @@ typedef enum
    DELETION_IN_PROGRESS
 }CellStatus;
 
+typedef enum
+{
+   UE_INACTIVE,
+       UE_ACTIVE
+}UeState;
+
 typedef struct cellCfgParams
 {
    NrEcgi      nrEcgi;         /* ECGI */
@@ -162,12 +149,22 @@ typedef struct cellCfgParams
    U32         maxUe;          /* max UE per slot */
 }CellCfgParams;
 
+typedef struct duUeCb
+{
+   uint32_t gnbDuUeF1apId; /* GNB DU UE F1AP ID */
+   uint32_t gnbCuUeF1apId; /* GNB CU UE F1AP ID */
+   UeState  ueState;
+   MacUeCfg macUeCfg;
+}DuUeCb;
 
 typedef struct duCellCb
 {
-   U32            cellId;      /* Internal cell Id */
-   CellCfgParams  cellInfo;    /* Cell info */
-   CellStatus     cellStatus;  /*Cell status */
+   uint16_t       cellId;           /* Internal cell Id */
+   CellCfgParams  cellInfo;         /* Cell info */
+   Bool           firstSlotIndRcvd;
+   CellStatus     cellStatus;       /* Cell status */
+       uint32_t       numActvUes;       /* Total Active UEs */
+   DuUeCb         ueCb[DU_MAX_UE];  /* UE CONTEXT */
 }DuCellCb;
 
 typedef struct duLSapCb
@@ -183,6 +180,14 @@ typedef struct duLSapCb
    TmrCfg      bndTmr;
 }DuLSapCb;
 
+typedef struct ueCcchCtxt
+{
+   uint32_t gnbDuUeF1apId; /* GNB DU UE F1AP ID */
+   uint16_t crnti;         /* CRNTI */
+   uint16_t cellId;        /* Cell Id */
+}UeCcchCtxt;
+
+
 /* DU APP DB */
 typedef struct duCb
 {
@@ -194,7 +199,9 @@ typedef struct duCb
    DuCellCb*     cfgCellLst[DU_MAX_CELLS];     /* List of cells at DU APP of type DuCellCb */
    DuCellCb*     actvCellLst[DU_MAX_CELLS];    /* List of cells activated/to be activated of type DuCellCb */
    /* pointer to store the address of macCellCfg params used to send du-app to MAC */
-   MacCellCfg     *duMacCellCfg;     /* pointer to store params while sending DU-APP to MAC */
+   MacCellCfg    *duMacCellCfg;         /* pointer to store params while sending DU-APP to MAC */
+   uint32_t       numUe;            /* current number of UEs */
+   UeCcchCtxt     ueCcchCtxt[DU_MAX_UE]; /* mapping of gnbDuUeF1apId to CRNTI required for CCCH processing*/
 }DuCb;
 
 
@@ -252,6 +259,7 @@ S16 duSendEgtpTestData();
 S16 duSendEgtpDatInd(Buffer *mBuf);
 S16 duHdlSchCfgComplete(Pst *pst, RgMngmt *cfm);
 uint16_t duBuildAndSendMacCellStartReq();
+uint16_t duBuildAndSendMacCellStopReq();
 
 #endif