Added missing triggers and state params for cell up
[o-du/l2.git] / src / du_app / du_mgr.h
index 8e5c68c..35ef06a 100644 (file)
@@ -36,8 +36,8 @@
 #include "cm_inet.h"
 #include "lkw.h"
 #include "lrg.h"
-
-#include "du_common.h"
+#include "legtp.h"
+#include "du_app_mac_inf.h"
 
 #include "gen.x"           /* General */
 #include "ssi.x"           /* System services */
 #include "lkw.x"
 #include "lrg.x"
 
+#include "du_cfg.h"
+
 #define DU_PROC  0
 /* Memory related configs */
-#define DU_APP_MEM_REGION    1
+#define DU_APP_MEM_REGION    0
 #define RLC_UL_MEM_REGION     1
 #define RLC_DL_MEM_REGION     4
 #define RG_MEM_REGION     4
 
 /* Events */
 #define EVTCFG 0
-#define EVTSCTPSTRT 1
-#define EVTSCTPDATA 2
-#define EVTSCTPNTFY 3
+#define EVTSCTPSTRT  1
+#define EVENT_CU_DATA  2
+#define EVENT_SCTP_NTFY  3
+#define EVTSRVOPENREQ  4
+#define EVTSRVOPENCFM  5
+#define EVTTNLMGMTREQ  6
+#define EVTTNLMGMTCFM  7
+#define EVTSLOTIND    8
+#define EVTSTARTPOLL  9
+#define EVENT_RIC_DATA  10
 
 /* Selector */
 #define DU_SELECTOR_LC   0
 #define DU_SELECTOR_LWLC 2
 
 /* SAP IDs */
-#define DU_RG_SUID 0
-#define DU_RG_SPID 0
+#define DU_MAC_SUID 0
+#define DU_MAC_SPID 0
 
 /* Instance */
 #define RLC_UL_INST 0
 #define RLC_DL_INST 1
 
+/* SAP state */
+#define DU_SAP_UNBOUND 1
+#define DU_SAP_BINDING 2
+#define DU_SAP_BOUND   3
+
 #define DU_ZERO_VAL 0
 
 /* Macros */
-#define DEFAULT_CELLS    1
+
+#define ADD 0
+#define DEL 1
 
 #define RLC_GEN_CFG      1
 #define RLC_MAC_SAP_CFG  2
 #define DU_SET_ZERO(_buf, _size)   \
    cmMemset((U8 *)(_buf), 0, _size);
 
+/* allocate and zero out a static buffer */
+#define DU_ALLOC(_datPtr, _size)                                \
+{                                                               \
+   S16 _ret;                                                    \
+   _ret = SGetSBuf(DU_APP_MEM_REGION, DU_POOL,                  \
+                    (Data **)&_datPtr, _size);                  \
+   if(_ret == ROK)                                              \
+      cmMemset((U8*)_datPtr, 0, _size);                         \
+   else                                                         \
+      _datPtr = NULLP;                                          \
+}
+
+/* free a static buffer */
+#define DU_FREE(_datPtr, _size)                                 \
+   if(_datPtr)                                                  \
+      SPutSBuf(DU_APP_MEM_REGION, DU_POOL,                      \
+         (Data *)_datPtr, _size);
+
+/* Free shared memory, received through LWLC */
+#define DU_FREE_MEM(_region, _pool, _datPtr, _size)             \
+   if(_datPtr)                                                  \
+          SPutSBuf(_region, _pool,(Data *)_datPtr, _size);          \
+   _datPtr = NULL;
+
+typedef enum
+{
+   CELL_OUT_OF_SERVICE,
+   ACTIVATION_IN_PROGRESS,
+   ACTIVATED,
+   DELETION_IN_PROGRESS
+}CellStatus;
+
+typedef struct cellCfgParams
+{
+   NrEcgi      nrEcgi;         /* ECGI */
+   U16         nrPci;          /* PCI */
+   U16         fiveGsTac;         /* 5gSTac */
+   Plmn      plmn[MAX_PLMN]; /* List of serving PLMN IDs */
+   U32         maxUe;          /* max UE per slot */
+}CellCfgParams;
+
+
+typedef struct duCellCb
+{
+   U32            cellId;      /* Internal cell Id */
+   CellCfgParams  cellInfo;    /* Cell info */
+   Bool           firstSlotIndRcvd;
+   CellStatus     cellStatus;  /*Cell status */
+}DuCellCb;
+
+typedef struct duLSapCb
+{
+   Pst pst;
+   SuId        suId;
+   SpId        spId;
+   State       sapState;
+   Mem         mem;
+   CmTimer     timer;
+   U8          bndRetryCnt;
+   U8          maxBndRetry;
+   TmrCfg      bndTmr;
+}DuLSapCb;
 
 /* DU APP DB */
 typedef struct duCb
 {
-   Mem      mem;
-   TskInit  init;
-   Bool     sctpStatus;
-   Bool     f1Status;
-   Bool     duStatus;
-
+   Mem           mem;    /* Memory configs */
+   TskInit       init;   /* DU Init */
+   //DuLSapCb      **macSap;  /* MAC SAP */
+   Bool          f1Status; /* Status of F1 connection */
+   Bool          e2Status; /* Status of E2 connection */
+   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 */
 }DuCb;
 
+
 typedef struct duLSapCfg
 {
    SuId        suId;
@@ -137,7 +219,7 @@ typedef struct duLSapCfg
 
 /* global variables */
 DuCb duCb;
-DuCfgParams duCfgParam;
+//DuCfgParams duCfgParam;
 
 /* DU Cell Functions */
 S16 duActvInit(Ent entity, Inst inst, Region region, Reason reason);
@@ -156,8 +238,22 @@ S16 duBuildMacGenCfg();
 S16 duBuildMacUsapCfg(SpId sapId);
 S16 duHdlMacCfgComplete(Pst *pst, RgMngmt *cfm);
 S16 duBindUnbindRlcToMacSap(U8 inst, U8 action);
+S16 duProcCfgComplete();
+S16 duSendSchCfg();
 S16 duSctpStartReq();
 S16 duSctpNtfyHdl(Buffer *mBuf, CmInetSctpNotification *ntfy);
+
+S16 duBuildEgtpCfgReq();
+S16 duHdlEgtpCfgComplete(CmStatus cfm);
+S16 duSendEgtpSrvOpenReq();
+S16 duHdlEgtpSrvOpenComplete(CmStatus cfm);
+S16 duSendEgtpTnlMgmtReq(U8 action, U32 lclTeid, U32 remTeid);
+S16 duHdlEgtpTnlMgmtCfm(EgtpTnlEvt tnlEvtCfm);
+S16 duSendEgtpTestData();
+S16 duSendEgtpDatInd(Buffer *mBuf);
+S16 duHdlSchCfgComplete(Pst *pst, RgMngmt *cfm);
+uint16_t duBuildAndSendMacCellStartReq();
+
 #endif
 
 /**********************************************************************