Merge "[Epic-ID: ODUHIGH-462][Task-ID: ODUHIGH-472] Handling of drx timer in SCH...
[o-du/l2.git] / src / cm / du_app_mac_inf.h
index 113eb0c..06515e6 100644 (file)
 
 #define PAGING_SCHED_DELTA  4
 
-#ifdef NR_DRX
-/* Macros for Drx configuration */
-#define DRX_ONDURATION_TIMER_VALUE_PRESENT_IN_MS true
-#define DRX_ONDURATION_TIMER_VALUE_IN_SUBMS 32
-#define DRX_ONDURATION_TIMER_VALUE_IN_MS 1
-#define DRX_INACTIVITY_TIMER 2
-#define DRX_HARQ_RTT_TIMER_DL 56
-#define DRX_HARQ_RTT_TIMER_UL 56
-#define DRX_RETRANSMISSION_TIMER_DL 4
-#define DRX_RETRANSMISSION_TIMER_UL 4
-#define DRX_LONG_CYCLE_START_OFFSET_CHOICE 20
-#define DRX_LONG_CYCLE_START_OFFSET_VAL 8
-#define DRX_SHORT_CYCLE 2
-#define DRX_SHORT_CYCLE_TIMER 2
-#define DRX_SLOT_OFFSET 0
-#endif
-
 typedef enum
 {
    MAC_DU_APP_RSP_NOK,
@@ -740,7 +723,7 @@ typedef struct shortDrx
    uint8_t    drxShortCycleTimer;
 }ShortDrx;
 
-typedef struct drxInfo
+typedef struct drxCfg
 {
    DrxOnDurationTimer       drxOnDurationTimer;   
    uint16_t                 drxInactivityTimer;
@@ -749,9 +732,10 @@ typedef struct drxInfo
    uint16_t                 drxRetransmissionTimerDl;
    uint16_t                 drxRetransmissionTimerUl;
    DrxLongCycleStartOffset  drxLongCycleStartOffset;
+   bool                     shortDrxPres;
    ShortDrx                 shortDrx;
-   uint8_t  drxSlotOffset;
-}DrxInfo;
+   uint8_t                  drxSlotOffset;
+}DrxCfg;
 #endif
 
 typedef struct macCellCfg
@@ -776,9 +760,6 @@ typedef struct macCellCfg
    uint8_t        dmrsTypeAPos;     /* DMRS Type A position */
    PlmnInfoList   plmnInfoList;     /* Consits of PlmnId and Snssai list */
    //RrmPolicy      *rrmPolicy;       /* RRM policy details */ 
-#ifdef NR_DRX
-   DrxInfo        drxInfo;           /* Drx info */
-#endif
 }MacCellCfg;
 
 typedef struct macCellCfgCfm
@@ -861,6 +842,10 @@ typedef struct macCellGrpCfg
    BsrTmrCfg   bsrTmrCfg;
    bool        phrCfgSetupPres;   /* true/false: phrCfgSetup/phrCfgRelease */
    PhrCfg      phrCfg;
+#ifdef NR_DRX
+   bool        drxCfgPresent;
+   DrxCfg      drxCfg;
+#endif
 }MacCellGrpCfg;
 
 typedef struct phyCellGrpCfg
@@ -1316,6 +1301,9 @@ typedef struct macUeCfg
    LcCfg lcCfgList[MAX_NUM_LC];
    UeCfgState macUeCfgState;    /* InActive / Completed */
    DataTransmissionAction transmissionAction;
+#ifdef NR_DRX   
+   bool     drxConfigIndicatorRelease;
+#endif
 }MacUeCfg;
 
 typedef struct nrcgi
@@ -1405,10 +1393,10 @@ typedef struct ueDeleteRsp
    UeDeleteStatus result;
 }MacUeDeleteRsp;
 
-typedef struct macCellDelete
+typedef struct macCellDeleteReq
 {
    uint16_t cellId;
-}MacCellDelete;
+}MacCellDeleteReq;
 
 typedef struct macCellDeleteRsp
 {
@@ -1448,14 +1436,27 @@ typedef struct macSliceCfgRsp
    MacSliceRsp  **listOfSliceCfgRsp;
 }MacSliceCfgRsp;
 
-typedef struct macPcchInd
+/*As per ORAN-WG8, Slice Cfg and ReCfg are same structures*/
+typedef struct macSliceCfgReq MacSliceRecfgReq;
+typedef struct macSliceCfgRsp MacSliceRecfgRsp;
+
+typedef struct dlPcchInd
 {
    uint16_t  cellId;
    uint16_t  pf;
    uint8_t   i_s;
    uint16_t  pduLen;
    uint8_t  *pcchPdu;
-}MacPcchInd;
+}DlPcchInd;
+
+typedef struct cellInfo
+{
+    SlotTimingInfo slotInfo;
+    uint16_t       cellId;
+}CellInfo;
+
+typedef struct cellInfo CellStartInfo;
+typedef struct cellInfo CellStopInfo;
 
 /* Functions for CellUp Ind from MAC to DU APP*/
 typedef uint8_t (*DuMacCellUpInd) ARGS((
@@ -1475,12 +1476,12 @@ typedef uint8_t (*DuMacStopInd) ARGS((
 /* Functions for mac cell start req */
 typedef uint8_t (*DuMacCellStart) ARGS((
         Pst        *pst, 
-        OduCellId  *cellId));
+        CellStartInfo  *cellId));
 
 /* Functions for mac cell stop request */
 typedef uint8_t (*DuMacCellStop) ARGS((
         Pst        *pst,
-        OduCellId  *cellId ));
+        CellStopInfo  *cellId ));
 
 /* Function pointers for packing macCellCfg Request and Confirm */
 typedef uint8_t (*packMacCellCfgReq) ARGS((
@@ -1552,7 +1553,7 @@ typedef uint8_t (*MacDuUeDeleteRspFunc) ARGS((
 /* Cell Delete Request from DU APP to MAC*/
 typedef uint8_t (*DuMacCellDeleteReq) ARGS((
      Pst           *pst,
-     MacCellDelete *cellDelete ));
+     MacCellDeleteReq *cellDelete ));
 
 /* Cell Delete Response from MAC to DU APP*/
 typedef uint8_t (*MacDuCellDeleteRspFunc) ARGS((
@@ -1572,29 +1573,29 @@ typedef uint8_t (*MacDuSliceCfgRspFunc) ARGS((
 /* Slice ReReCfg Request from DU APP to MAC*/
 typedef uint8_t (*DuMacSliceRecfgReq) ARGS((
      Pst           *pst,
-     MacSliceCfgReq *CfgReq));
+     MacSliceRecfgReq *CfgReq));
 
 /* Slice ReReCfg Response from MAC to DU APP */
-typedef uint8_t (*MacDuSliceReCfgRspFunc) ARGS((
+typedef uint8_t (*MacDuSliceRecfgRspFunc) ARGS((
         Pst           *pst,
-        MacSliceCfgRsp   *cfgRsp));
+        MacSliceRecfgRsp   *cfgRsp));
 
 /* Pcch indication from DU APP to MAC*/
 typedef uint8_t (*DuMacDlPcchInd) ARGS((
      Pst        *pst,
-     MacPcchInd *pcchInd));
+     DlPcchInd *pcchInd));
 
 uint64_t ueBitMapPerCell[MAX_NUM_CELL]; /* Bit Map to store used/free UE-IDX per Cell */
 
 uint8_t packMacCellUpInd(Pst *pst, OduCellId *cellId);
 uint8_t unpackMacCellUpInd(DuMacCellUpInd func, Pst *pst, Buffer *mBuf);
 uint8_t duHandleCellUpInd(Pst *pst, OduCellId *cellId);
-uint8_t packMacCellStart(Pst *pst, OduCellId *cellId);
+uint8_t packMacCellStart(Pst *pst, CellStartInfo *cellStartInfo);
 uint8_t unpackMacCellStart(DuMacCellStart func, Pst *pst, Buffer *mBuf);
-uint8_t MacProcCellStart(Pst *pst, OduCellId *cellId);
-uint8_t packMacCellStop(Pst *pst, OduCellId *cellId);
+uint8_t MacProcCellStart(Pst *pst, CellStartInfo *cellStartInfo);
+uint8_t packMacCellStop(Pst *pst, CellStopInfo *cellStopInfo);
 uint8_t unpackMacCellStop(DuMacCellStop func, Pst *pst, Buffer *mBuf);
-uint8_t MacProcCellStop(Pst *pst, OduCellId *cellId);
+uint8_t MacProcCellStop(Pst *pst, CellStopInfo *cellStopInfo);
 uint8_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg);
 uint8_t unpackDuMacCellCfg(DuMacCellCfgReq func,  Pst *pst,  Buffer *mBuf);
 uint8_t MacProcCellCfgReq(Pst *pst, MacCellCfg *macCellCfg);
@@ -1635,8 +1636,8 @@ uint8_t unpackMacUeDeleteReq(DuMacUeDeleteReq func, Pst *pst, Buffer *mBuf);
 uint8_t packDuMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp);
 uint8_t DuProcMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp);
 uint8_t unpackDuMacUeDeleteRsp(MacDuUeDeleteRspFunc func, Pst *pst, Buffer *mBuf);
-uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDelete *cellDelete);
-uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDelete *cellDelete);
+uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete);
+uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete);
 uint8_t unpackMacCellDeleteReq(DuMacCellDeleteReq func, Pst *pst, Buffer *mBuf);
 uint8_t packDuMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp);
 uint8_t DuProcMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp);
@@ -1647,17 +1648,17 @@ uint8_t unpackMacSliceCfgReq(DuMacSliceCfgReq func, Pst *pst, Buffer *mBuf);
 uint8_t DuProcMacSliceCfgRsp(Pst *pst,  MacSliceCfgRsp *cfgRsp);
 uint8_t packDuMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
 uint8_t unpackDuMacSliceCfgRsp(MacDuSliceCfgRspFunc func, Pst *pst, Buffer *mBuf);
-uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq);
-uint8_t MacProcSliceReCfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq);
-uint8_t unpackMacSliceReCfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf);
-uint8_t DuProcMacSliceReCfgRsp(Pst *pst,  MacSliceCfgRsp *cfgRsp);
-uint8_t packDuMacSliceReCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
-uint8_t unpackDuMacSliceReCfgRsp(MacDuSliceReCfgRspFunc func, Pst *pst, Buffer *mBuf);
+uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq);
+uint8_t MacProcSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq);
+uint8_t unpackMacSliceRecfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf);
+uint8_t DuProcMacSliceRecfgRsp(Pst *pst,  MacSliceRecfgRsp *sliceRecfgRsp);
+uint8_t packDuMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *sliceRecfgRsp);
+uint8_t unpackDuMacSliceRecfgRsp(MacDuSliceRecfgRspFunc func, Pst *pst, Buffer *mBuf);
 uint8_t duHandleSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo);
 uint8_t packMacSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo);
 uint8_t unpackDuMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf);
-uint8_t packDuMacDlPcchInd(Pst *pst, MacPcchInd *pcchInd);
-uint8_t MacProcDlPcchInd(Pst *pst, MacPcchInd *pcchInd);
+uint8_t packDuMacDlPcchInd(Pst *pst, DlPcchInd *pcchInd);
+uint8_t MacProcDlPcchInd(Pst *pst, DlPcchInd *pcchInd);
 uint8_t unpackMacDlPcchInd(DuMacDlPcchInd func, Pst *pst, Buffer *mBuf);
 int8_t getFreeBitFromUeBitMap(uint16_t cellId);
 void unsetBitInUeBitMap(uint16_t cellId, uint8_t bitPos);