<[Epic-ID: ODUHIGH-406][Task-ID: ODUHIGH-421]Paging Message: CU_STUB Trigger and...
[o-du/l2.git] / src / du_app / du_mgr.h
index 39265d6..8678e10 100644 (file)
 #define DU_SET_ZERO(_buf, _size)   \
    memset((_buf), 0, _size);
 
+typedef enum
+{
+   SLICE_INFO_NOT_AVAILABLE,
+   SLICE_CONFIGURED,
+   SLICE_RECONFIGURED
+}SliceCfgState;
+
 typedef enum
 {
    CELL_OUT_OF_SERVICE,
@@ -68,7 +75,9 @@ typedef enum
 typedef enum
 {
    UE_INACTIVE,
-   UE_ACTIVE
+   UE_ACTIVE,
+   UE_HANDIN_IN_PROGRESS,
+   UE_DELETION_IN_PROGRESS
 }UeState;
 
 typedef enum
@@ -76,6 +85,8 @@ typedef enum
    UE_CTXT_UNKNOWN,
    UE_CTXT_SETUP,
    UE_CTXT_MOD,
+   UE_CTXT_RRC_RECFG_COMPLETE,
+   UE_CTXT_CFG_QUERY,
    UE_CTXT_RELEASE
 }UeCtxtActionType;
 
@@ -109,7 +120,7 @@ typedef struct upTnlCfg
 {
    ConfigType configType;
    uint8_t cellId;
-   uint8_t ueIdx;
+   uint8_t ueId;
    uint8_t drbId;
    GtpTnlCfg *tnlCfg1; /* Tunnel 1 */
    GtpTnlCfg *tnlCfg2; /* Tunnel 2 */
@@ -126,6 +137,9 @@ typedef struct duUeCfg
    AmbrCfg *ambrCfg;
    uint8_t numDrb;
    UpTnlCfg upTnlInfo[MAX_NUM_DRB];  /* User plane TNL Info*/
+   uint8_t numDrbSetupMod;        /*No. of DRB Added during Modification*/
+   MacUeCfg copyOfmacUeCfg;
+   DataTransmissionAction dataTransmissionAction; 
 }DuUeCfg;
 
 typedef struct f1UeContextSetup
@@ -158,15 +172,41 @@ typedef struct duUeCb
    RlcUeCfg rlcUeCfg;        /* Rlc Ue Cfg */
 }DuUeCb;
 
+typedef struct  slotInfo
+{
+   uint16_t sfn;
+   uint16_t slot;
+}SlotInfo;
+
+typedef struct pagingMsg
+{
+   /*Note: Paging UEID is extracted from 5gSTMSI as per Spec 38.304, Sec 7.1.
+    *This is not same as DU-UE_F1AP_ID or CU_UE_F1AP_ID*/
+   uint16_t  ueId;              /* UE Identifier from CU*/
+
+   /*TODO: When RAN Inititated Paging will be supported then I-RNTI will be
+    * added as a choice for UE Identity along with S-TMSI*/
+   uint64_t  sTmsi;             /* UE Paging Identity: S-TMSI */
+   bool      pagingDrxPres;     /* flag to indicate paging drx present or not */
+   uint16_t  pagingDrx;         /* UE specific paging drx */
+   uint8_t   pagPriority;       /* Paging priority */
+   uint16_t  pagingFrame;       /* paging frame */
+   uint16_t  pagingFrameOffset; /* paging offset */
+   uint8_t   i_s;               /* Index points to PO from the sub-frame pattern */
+   uint16_t  T;                 /* T is DRX cycle of the UE */
+}DuPagingMsg;
+
 typedef struct duCellCb
 {
-   uint16_t       cellId;           /* Internal cell Id */
-   CellCfgParams  cellInfo;         /* Cell info */
+   uint16_t       cellId;                 /* Internal cell Id */
+   CellCfgParams  cellInfo;               /* Cell info */
    /* pointer to store the address of macCellCfg params used to send du-app to MAC */
-   MacCellCfg    *duMacCellCfg;
-   CellStatus     cellStatus;       /* Cell status */
-   uint32_t       numActvUes;       /* Total Active UEs */
-   DuUeCb         ueCb[MAX_NUM_UE];  /* UE CONTEXT */
+   MacCellCfg     *duMacCellCfg;
+   CellStatus     cellStatus;             /* Cell status */
+   uint32_t       numActvUes;             /* Total Active UEs */
+   DuUeCb         ueCb[MAX_NUM_UE];       /* Stores UE context */
+   SlotInfo       currSlotInfo;
+   DuPagingMsg    tmpPagingInfoOfUe;      /* UE paging information */
 }DuCellCb;
 
 typedef struct duLSapCb
@@ -200,20 +240,22 @@ typedef struct reservedF1apPduInfo
 /* DU APP DB */
 typedef struct duCb
 {
-   Mem           mem;    /* Memory configs */
-   TskInit       init;   /* DU Init */
-   //DuLSapCb      **macSap;  /* MAC SAP */
-   bool          f1Status; /* Status of F1 connection */
-   bool          e2Status; /* Status of E2 connection */
-   uint8_t       numCfgCells; 
-   DuCellCb*     cfgCellLst[MAX_NUM_CELL];     /* List of cells at DU APP of type DuCellCb */
-   uint8_t       numActvCells;
-   DuCellCb*     actvCellLst[MAX_NUM_CELL];    /* List of cells activated/to be activated of type DuCellCb */
-   uint32_t       numUe;            /* current number of UEs */
-   UeCcchCtxt     ueCcchCtxt[MAX_NUM_UE]; /* mapping of gnbDuUeF1apId to CRNTI required for CCCH processing*/
-   uint8_t       numDrb;           /* current number of DRbs*/
-   UpTnlCfg*     upTnlCfg[MAX_NUM_DRB]; /* tunnel info for every Drb */
-   CmLListCp     reservedF1apPduList; /*storing F1AP pdu infomation and transId */
+   Mem           mem;                       /* Memory configs */
+   TskInit       init;                      /* DU Init */
+   bool          f1Status;                  /* Status of F1 connection */
+   bool          e2Status;                  /* Status of E2 connection */
+   uint8_t       numCfgCells;               /* number of configured cells */ 
+   DuCellCb*     cfgCellLst[MAX_NUM_CELL];  /* List of cells at DU APP of type DuCellCb */
+   uint8_t       numActvCells;              /* Number of active cells */
+   DuCellCb*     actvCellLst[MAX_NUM_CELL]; /* List of cells activated/to be activated of type DuCellCb */
+   uint32_t      gnbDuUeF1apIdGenerator;    /* Generating Du Ue F1ap Id */
+   uint32_t      numUe;                     /* current number of UEs */
+   UeCcchCtxt    ueCcchCtxt[MAX_NUM_UE];    /* mapping of gnbDuUeF1apId to CRNTI required for CCCH processing*/
+   uint8_t       numTeId;                   /* current number of TEIDs configured in the system*/
+   UpTnlCfg*     upTnlCfg[MAX_TEID];        /* tunnel info for every Drb */
+   CmLListCp     reservedF1apPduList;       /*storing F1AP pdu infomation and transId */
+   SliceCfgState sliceState;
+   F1SetupMsg    f1SetupReqAndRspMsg;
 }DuCb;