Merge "Cleanup of message sib1"
[o-du/l2.git] / src / 5gnrsch / sch.h
index 80f873d..efc7851 100644 (file)
@@ -21,6 +21,7 @@
 #define SCH_MAX_CELLS 1
 #define SCH_MAX_INST 1
 #define SCH_NUM_SLOTS 10 /*forcing this to 10 */
+#define SCH_MAX_SFN 1024
 #define MAX_NUM_RB 106 /* value for numerology 0 15Khz */
 #define SCH_MIB_TRANS 80 
 #define SCH_NUM_SC_PRB 12 /* number of SCs in a PRB */
 #define SCH_MEM_REGION     4
 #define SCH_POOL           1
 #define SCHED_DELTA 1
+#define RAR_DELAY   1
+#define SCH_MAX_UE  1
+#define PUSCH_START_RB 15
+#define SI_RNTI 0xFFFF
+#define P_RNTI  0xFFFE
+
+#define CRC_FAILED 0
+#define CRC_PASSED 1
 
 /* allocate and zero out a static buffer */
 #define SCH_ALLOC(_datPtr, _size)                                \
@@ -51,7 +60,6 @@
       SPutSBuf(SCH_MEM_REGION, SCH_POOL,                      \
          (Data *)_datPtr, _size);
 
-
 #define SCH_FILL_RSP_PST(_rspPst, _inst)\
 {                                  \
    _rspPst.srcProcId = SFndProcId(); \
@@ -62,7 +70,7 @@
    _rspPst.dstInst   = 0;\
        _rspPst.selector  = MAC_SELECTOR_TC;\
 }      
-
+extern uint8_t schProcessRachInd(RachIndInfo *rachInd, Inst schInst);
 /**
   * @brief
   * Structure holding LTE MAC's General Configuration information.
@@ -90,17 +98,27 @@ typedef struct schDlAlloc
    bool        ssbPres;    /*!< Flag to determine if SSB is present in this slot */
    uint8_t     ssbIdxSupported;  /*!< Max SSB index */
        SsbInfo     ssbInfo[MAX_SSB_IDX]; /*!< SSB info */
+       bool        sib1Pres;
+       bool        rarPres;
+       RarInfo     rarInfo;
+   Msg4Info    *msg4Info;
 }SchDlAlloc;
 
+typedef struct schRaCb
+{
+   uint16_t tcrnti;
+}SchRaCb;
+
 /**
   * @brief
   * scheduler allocationsfor UL per cell.
   */
 typedef struct schUlAlloc
 {
-       uint16_t    totalPrb;  /*!< Number of RBs in the cell */
-       uint16_t    assignedPrb[SCH_SYMBOL_PER_SLOT]; /*!< Num RBs and corresponding symbols allocated */
-       uint8_t     prachStartSymb; /*!< Start symbol for PRACH */
+       uint16_t     totalPrb;  /*!< Number of RBs in the cell */
+       uint16_t     assignedPrb[SCH_SYMBOL_PER_SLOT]; /*!< Num RBs and corresponding symbols allocated */
+       bool         puschPres; /*!< PUSCH presence field */
+       SchPuschInfo *schPuschInfo; /*!< PUSCH info */
 }SchUlAlloc;
 
 /**
@@ -117,6 +135,7 @@ typedef struct schCellCb
    SchDlAlloc    *dlAlloc[SCH_NUM_SLOTS]; /*!< SCH resource allocations in DL */
    SchUlAlloc    *ulAlloc[SCH_NUM_SLOTS]; /*!< SCH resource allocations in UL */
        SchCellCfg    cellCfg;                /*!< Cell ocnfiguration */
+       SchRaCb       raCb[SCH_MAX_UE];
 }SchCellCb;
 
 /**
@@ -134,10 +153,10 @@ typedef struct schCb
 SchCb schCb[SCH_MAX_INST];
 
 /* function declarations */
-uint8_t schCmnDlAlloc(SchCellCb *cell, DlBrdcstAlloc *dlBrdcstAlloc);
-int     schProcessSlotInd(SlotIndInfo *slotInd, Inst inst);
-int schUlResAlloc(SchCellCb *cell, Inst schInst);
-
+uint8_t schBroadcastAlloc(SchCellCb *cell, DlBrdcstAlloc *dlBrdcstAlloc,uint16_t slot);
+uint8_t schProcessSlotInd(SlotIndInfo *slotInd, Inst inst);
+uint8_t schUlResAlloc(SchCellCb *cell, Inst schInst);
+uint8_t schDlRsrcAllocMsg4(Msg4Alloc *msg4Alloc, SchCellCb *cell, uint16_t slot);
 
 
 /**********************************************************************