[Epic-ID: ODUHIGH-406][Task-ID: ODUHIGH-440] Sending and Handling of PAGE REQ at MAC
[o-du/l2.git] / src / cm / du_app_mac_inf.h
index abaaab1..d42617f 100644 (file)
 #define EVENT_MAC_SLICE_RECFG_REQ    218
 #define EVENT_MAC_SLICE_RECFG_RSP    219
 #define EVENT_MAC_SLOT_IND           220
+#define EVENT_MAC_RACH_RESOURCE_REQ  221
+#define EVENT_MAC_RACH_RESOURCE_RSP  222
+#define EVENT_MAC_DL_PCCH_IND        223
 
 #define BSR_PERIODIC_TIMER_SF_10 10
 #define BSR_RETX_TIMER_SF_320 320
 #define BSR_SR_DELAY_TMR_2560 2560
 
-#define GET_PAGING_CYCLE(enmValue, T) {               \
-        if (enmValue == 0) T = 32;                           \
-       else if (enmValue == 1) T = 64;                       \
-       else if (enmValue == 2) T = 128;                      \
-       else if (enmValue == 3) T = 256;                      \
-       else T = 0;                                         \
-}
-
-#define GET_NUM_PAGING_OCC(enmValue, PO) {               \
-        if (enmValue == 0) PO = 4;                            \
-       else if (enmValue == 1) PO = 2;                       \
-       else if (enmValue == 2) PO = 1;                      \
-       else PO = 0;                                         \
-}
-
 #define PAGING_SCHED_DELTA  4
 
 typedef enum
@@ -587,7 +575,9 @@ typedef struct prachCfg
    uint8_t       msg1Fdm;             /* PRACH FDM (1,2,4,8) */
    uint8_t       rootSeqLen;          /* Root sequence length */
    PrachFdmInfo  fdm[8];              /* FDM info */
+   uint8_t       totalNumRaPreamble;  /* Total number of RA preambles */
    uint8_t       ssbPerRach;          /* SSB per RACH occassion */
+   uint8_t       numCbPreamblePerSsb; /* Number of CB preamble per SSB */
    bool          prachMultCarrBand;   /* Multiple carriers in Band */
    uint8_t       prachRestrictedSet; /* Support for PRACH restricted set */
    uint8_t       raContResTmr;        /* RA Contention Resoultion Timer */
@@ -1253,7 +1243,6 @@ typedef struct macUeCfg
 {
    uint16_t cellId;
    uint8_t  ueId;
-   uint8_t  duUeF1apId;
    uint16_t crnti;
    bool macCellGrpCfgPres;
    MacCellGrpCfg macCellGrpCfg;
@@ -1297,7 +1286,7 @@ typedef struct sCellFailInfo
 typedef struct ueCfgRsp
 {
    uint16_t       cellId;
-   uint16_t       duUeF1apId;
+   uint16_t       ueId;
    MacRsp         result;
    uint8_t        numSRBFailed;   /* valid values : 0 to MAX_NUM_SRB */ 
    SRBFailInfo    *failedSRBlisti;
@@ -1307,6 +1296,35 @@ typedef struct ueCfgRsp
    SCellFailInfo  *failedSCellList;
 }MacUeCfgRsp;
 
+typedef struct rachRsrcReq
+{
+   uint16_t cellId;
+   uint16_t ueId;
+   uint8_t  numSsb;
+   uint8_t  ssbIdx[MAX_NUM_SSB];
+}MacRachRsrcReq;
+
+typedef struct macCfraSsbResource
+{
+   uint8_t  ssbIdx;
+   uint8_t  raPreambleIdx;
+}MacCfraSsbResource;
+
+typedef struct macCfraResource
+{
+   uint8_t   numSsb;
+   MacCfraSsbResource ssbResource[MAX_NUM_SSB];
+}MacCfraResource;
+
+typedef struct macRachRsrcRsp
+{
+   uint16_t   cellId;
+   uint16_t   ueId;
+   MacRsp     result;
+   uint16_t   newCrnti;     /* This parameter maps to 3GPP TS 38.331 newUE-Identity */
+   MacCfraResource  cfraResource;
+}MacRachRsrcRsp;
+
 typedef struct ueDelete
 {
     uint16_t cellId;
@@ -1364,7 +1382,16 @@ typedef struct macSliceCfgRsp
    MacSliceRsp  **listOfSliceCfgRsp;
 }MacSliceCfgRsp;
 
-/* Functions for slot Ind from MAC to DU APP*/
+typedef struct macPcchInd
+{
+   uint16_t  cellId;
+   uint16_t  pf;
+   uint8_t   i_s;
+   uint16_t  pduLen;
+   uint8_t  *pcchPdu;
+}MacPcchInd;
+
+/* Functions for CellUp Ind from MAC to DU APP*/
 typedef uint8_t (*DuMacCellUpInd) ARGS((
         Pst       *pst,
         OduCellId *cellId ));
@@ -1431,6 +1458,16 @@ typedef uint8_t (*DuMacUeReconfigReq) ARGS((
         Pst           *pst,
         MacUeCfg      *ueCfg ));
 
+/* RACH Resource Request from DU APP to MAC*/
+typedef uint8_t (*DuMacRachRsrcReq) ARGS((
+    Pst            *pst,
+    MacRachRsrcReq *rachRsrcReq));
+
+/* RACH Resource Response from MAC to DU APP*/
+typedef uint8_t (*MacDuRachRsrcRspFunc) ARGS((
+    Pst            *pst,
+    MacRachRsrcRsp *rachRsrcRsp));
+
 /* UE Delete Request from DU APP to MAC*/
 typedef uint8_t (*DuMacUeDeleteReq) ARGS((
      Pst           *pst,
@@ -1471,6 +1508,12 @@ typedef uint8_t (*MacDuSliceReCfgRspFunc) ARGS((
         Pst           *pst,
         MacSliceCfgRsp   *cfgRsp));
 
+/* Pcch indication from DU APP to MAC*/
+typedef uint8_t (*DuMacDlPcchInd) ARGS((
+     Pst        *pst,
+     MacPcchInd *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);
@@ -1506,6 +1549,12 @@ uint8_t DuProcMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp);
 uint8_t packDuMacUeReconfigReq(Pst *pst, MacUeCfg *ueCfg);
 uint8_t unpackMacUeReconfigReq(DuMacUeReconfigReq func, Pst *pst, Buffer *mBuf);
 uint8_t MacProcUeReconfigReq(Pst *pst, MacUeCfg *ueCfg);
+uint8_t packDuMacRachRsrcReq(Pst *pst, MacRachRsrcReq *rachRsrcReq);
+uint8_t unpackMacRachRsrcReq(DuMacRachRsrcReq func, Pst *pst, Buffer *mBuf);
+uint8_t MacProcRachRsrcReq(Pst *pst, MacRachRsrcReq *rachRsrcReq);
+uint8_t packDuMacRachRsrcRsp(Pst *pst, MacRachRsrcRsp *rachRsrcRsp);
+uint8_t unpackDuMacRachRsrcRsp(MacDuRachRsrcRspFunc func, Pst *pst, Buffer *mBuf);
+uint8_t DuProcMacRachRsrcRsp(Pst *pst, MacRachRsrcRsp *rachRsrcRsp);
 uint8_t packDuMacUeDeleteReq(Pst *pst, MacUeDelete *ueDelete);
 uint8_t MacProcUeDeleteReq(Pst *pst,  MacUeDelete *ueDelete);
 uint8_t unpackMacUeDeleteReq(DuMacUeDeleteReq func, Pst *pst, Buffer *mBuf);
@@ -1533,7 +1582,11 @@ uint8_t unpackDuMacSliceReCfgRsp(MacDuSliceReCfgRspFunc func, Pst *pst, Buffer *
 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 unpackMacDlPcchInd(DuMacDlPcchInd func, Pst *pst, Buffer *mBuf);
+int8_t getFreeBitFromUeBitMap(uint16_t cellId);
+void unsetBitInUeBitMap(uint16_t cellId, uint8_t bitPos);
 #endif