warning set 4
[o-du/l2.git] / src / 5gnrsch / sch.h
index ae6b8f1..f4b57b2 100644 (file)
 #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_MAX_SSB_BEAM 4 /* since we are supporting only SCS=15KHz */
-#define SCH_SCS_15KHZ 15
+#define SCH_SCS_15KHZ 0 /* numerology 0 and 15Khz */
 #define SCH_SYMBOL_PER_SLOT 14
 #define SCH_SSB_SYMB_DURATION 4
 #define SCH_SSB_PRB_DURATION 20
 #define SCH_MEM_REGION     4
 #define SCH_POOL           1
+#define SCHED_DELTA 1
+#define SCH_MAX_UE 512
+#define SI_RNTI 0xFFFF
+#define P_RNIT  0xFFFE
 
 /* allocate and zero out a static buffer */
 #define SCH_ALLOC(_datPtr, _size)                                \
@@ -60,7 +66,7 @@
    _rspPst.dstInst   = 0;\
        _rspPst.selector  = MAC_SELECTOR_TC;\
 }      
-
+extern int schProcessRachInd(RachIndInfo *rachInd, Inst schInst);
 /**
   * @brief
   * Structure holding LTE MAC's General Configuration information.
@@ -88,8 +94,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;
 }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 */
+}SchUlAlloc;
+
 /**
   * @brief
   * Cell Control block per cell.
@@ -102,7 +127,9 @@ typedef struct schCellCb
        uint8_t       numSlots;         /*!< Number of slots in current frame */
    SlotIndInfo   slotInfo;         /*!< SFN, Slot info being processed*/
    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;
 
 /**
@@ -120,8 +147,9 @@ typedef struct schCb
 SchCb schCb[SCH_MAX_INST];
 
 /* function declarations */
-int schCmnDlAlloc(SchCellCb *cell, DlBrdcstAlloc *dlBrdcstAlloc);
-int schProcessSlotInd(SlotIndInfo *slotInd, Inst inst);
+uint8_t schBroadcastAlloc(SchCellCb *cell, DlBrdcstAlloc *dlBrdcstAlloc,uint16_t slot);
+uint8_t schProcessSlotInd(SlotIndInfo *slotInd, Inst inst);
+uint8_t schUlResAlloc(SchCellCb *cell, Inst schInst);