Merge "Cleanup of message sib1"
[o-du/l2.git] / src / 5gnrsch / sch.h
index 2d1220e..efc7851 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 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)                                \
@@ -50,7 +60,6 @@
       SPutSBuf(SCH_MEM_REGION, SCH_POOL,                      \
          (Data *)_datPtr, _size);
 
-
 #define SCH_FILL_RSP_PST(_rspPst, _inst)\
 {                                  \
    _rspPst.srcProcId = SFndProcId(); \
@@ -61,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.
@@ -89,8 +98,29 @@ 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 */
+       bool         puschPres; /*!< PUSCH presence field */
+       SchPuschInfo *schPuschInfo; /*!< PUSCH info */
+}SchUlAlloc;
+
 /**
   * @brief
   * Cell Control block per cell.
@@ -103,7 +133,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;
 
 /**
@@ -121,9 +153,10 @@ typedef struct schCb
 SchCb schCb[SCH_MAX_INST];
 
 /* function declarations */
-uint8_t schCmnDlAlloc(SchCellCb *cell, DlBrdcstAlloc *dlBrdcstAlloc);
+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);
 
 
 /**********************************************************************