-#define P_RNIT 0xFFFE
-
-/* allocate and zero out a static buffer */
-#define SCH_ALLOC(_datPtr, _size) \
-{ \
- S16 _ret; \
- _ret = SGetSBuf(SCH_MEM_REGION, SCH_POOL, \
- (Data **)&_datPtr, _size); \
- if(_ret == ROK) \
- cmMemset((U8*)_datPtr, 0, _size); \
- else \
- _datPtr = NULLP; \
-}
-
-/* free a static buffer */
-#define SCH_FREE(_datPtr, _size) \
- if(_datPtr) \
- SPutSBuf(SCH_MEM_REGION, SCH_POOL, \
- (Data *)_datPtr, _size);
-
-
-#define SCH_FILL_RSP_PST(_rspPst, _inst)\
-{ \
- _rspPst.srcProcId = SFndProcId(); \
- _rspPst.dstProcId = SFndProcId();\
- _rspPst.srcEnt = ENTRG;\
- _rspPst.dstEnt = ENTRG;\
- _rspPst.srcInst = 1;\
- _rspPst.dstInst = 0;\
- _rspPst.selector = MAC_SELECTOR_TC;\
-}
+#define P_RNTI 0xFFFE
+#define DMRS_MAP_TYPE_A 1
+#define NUM_DMRS_SYMBOLS 1
+#define DMRS_ADDITIONAL_POS 0
+#define SCH_DEFAULT_K1 1
+#define SCH_TQ_SIZE 10
+#define SSB_IDX_SUPPORTED 1
+
+#define CRC_FAILED 0
+#define CRC_PASSED 1
+
+#define MAC_HDR_SIZE 3 /* 3 bytes of MAC Header */
+#define UL_GRANT_SIZE 224
+
+#define PRB_BITMAP_IDX_LEN 64
+#define PRB_BITMAP_MAX_IDX ((MAX_NUM_RB + PRB_BITMAP_IDX_LEN-1) / PRB_BITMAP_IDX_LEN)
+
+#define SCH_MAX_NUM_UL_HQ_PROC 16
+#define SCH_MAX_NUM_DL_HQ_PROC 16
+#define SCH_MAX_NUM_MSG3_TX 2
+#define SCH_MAX_NUM_DL_HQ_TX 3
+#define SCH_MAX_NUM_UL_HQ_TX 3
+#define SCH_MAX_NUM_MSG4_TX 2
+#define HQ_ACK 0
+#define HQ_NACK 1
+#define HQ_DTX 2
+
+typedef struct schDlHqProcCb SchDlHqProcCb;
+typedef struct schUlHqEnt SchUlHqEnt;
+typedef struct schRaReq SchRaReq;
+typedef struct schDlHqEnt SchDlHqEnt;
+typedef struct schCellCb SchCellCb;
+typedef struct schUeCb SchUeCb;
+
+typedef enum
+{
+ SCH_NUMEROLOGY_0,
+ SCH_NUMEROLOGY_1,
+ SCH_NUMEROLOGY_2,
+ SCH_NUMEROLOGY_3,
+ SCH_NUMEROLOGY_4
+}SchNumerology;
+
+typedef enum
+{
+ SCH_UE_STATE_INACTIVE,
+ SCH_UE_STATE_ACTIVE,
+ SCH_UE_HANDIN_IN_PROGRESS
+}SchUeState;
+
+typedef enum
+{
+ SCH_RA_STATE_MSG2_HANDLE,
+ SCH_RA_STATE_MSG3_PENDING,
+ SCH_RA_STATE_MSG4_PENDING,
+ SCH_RA_STATE_MSG4_DONE
+}SchRaState;
+
+typedef enum
+{
+ SCH_LC_STATE_INACTIVE,
+ SCH_LC_STATE_ACTIVE
+}SchLcState;
+
+typedef enum
+{
+ WINDOW_YET_TO_START,
+ WITHIN_WINDOW,
+ WINDOW_EXPIRED
+}RaRspWindowStatus;
+
+typedef enum
+{
+ HQ_TB_ACKED=0,
+ HQ_TB_NACKED,
+ HQ_TB_WAITING
+}SchHqTbState;
+
+/*Following structures to keep record and estimations of PRB allocated for each
+ * LC taking into consideration the RRM policies*/
+typedef struct lcInfo
+{
+ uint8_t lcId; /*LCID for which BO are getting recorded*/
+ uint32_t reqBO; /*Size of the BO requested/to be allocated for this LC*/
+ uint32_t allocBO; /*TBS/BO Size which is actually allocated*/
+ uint8_t allocPRB; /*PRB count which is allocated based on RRM policy/FreePRB*/
+}LcInfo;
+
+typedef struct schLcPrbEstimate
+{
+ /* TODO: For Multiple RRMPolicies, Make DedicatedLcInfo as array/Double Pointer
+ * and have separate DedLCInfo for each RRMPolcyMemberList*/
+ /* Dedicated LC List will be allocated, if any available*/
+ CmLListCp dedLcList; /*Contain LCInfo per RRMPolicy*/
+ CmLListCp defLcList; /*Linklist of LC assoc with Default S-NSSAI(s)*/
+ /* SharedPRB number can be used by any LC.
+ * Need to calculate in every Slot based on PRB availability*/
+ uint16_t sharedNumPrb;
+}SchLcPrbEstimate;
+typedef struct schUlHqTbCb
+{
+ uint32_t tbSzReq;
+ uint32_t tbSzAllc;
+ uint8_t ndi;
+ uint8_t rv;
+ uint8_t rvIdx;
+ uint8_t qamOrder;
+ SchMcsTable mcsTable;
+ uint8_t iMcs;
+ uint8_t iMcsInDci;
+ uint8_t numLyrs;
+ uint8_t txCntr;
+ SchHqTbState state;
+ uint8_t cntrRetxAllocFail;
+ uint8_t statsBitmap;
+}SchUlHqTbCb;
+
+typedef struct schDlHqTbCb
+{
+ uint8_t tbIdx;
+ Bool isEnabled;
+ uint32_t tbSzReq;
+ uint8_t txCntr;
+ uint8_t ndi;
+ uint8_t rv;
+ uint8_t rvIdx;
+ uint8_t iMcs;
+ uint8_t iMcsInDci;
+ uint8_t numLyrs;
+ SchHqTbState state;
+ uint8_t isAckNackDtx;
+ uint8_t cntrRetxAllocFail;
+ //InfUeTbInfo tbCompInfo;
+ uint8_t statsBitmap;
+}SchDlHqTbCb;
+
+typedef struct schUlHqProcCb
+{
+ uint8_t procId; /*!< HARQ Process ID */
+ SchUlHqEnt *hqEnt;
+ uint8_t maxHqTxPerHqP;
+ SchUlHqTbCb tbInfo;
+ CmLList ulHqEntLnk;
+ CmLList ulSlotLnk;
+ uint8_t strtSymbl;
+ uint8_t numSymbl;
+ SchLcPrbEstimate ulLcPrbEst; /*UL PRB Alloc Estimate among different LC*/
+ CmLList ulHqProcLink;
+ uint8_t puschResType; /* Resource allocation type */
+ uint16_t puschStartPrb;
+ uint16_t puschNumPrb;
+ uint8_t dmrsMappingType;
+ uint8_t nrOfDmrsSymbols;
+ uint8_t dmrsAddPos;
+}SchUlHqProcCb;
+
+struct schDlHqProcCb
+{
+ uint8_t procId; /*!< HARQ Process ID */
+ SchDlHqEnt *hqEnt;
+ uint8_t maxHqTxPerHqP;
+ CmLList dlHqEntLnk;
+ CmLList ulSlotLnk;
+ SchDlHqTbCb tbInfo[2];
+ uint8_t k1;
+ SchLcPrbEstimate dlLcPrbEst; /*DL PRB Alloc Estimate among different LC*/
+ CmLList dlHqProcLink;
+};
+struct schUlHqEnt
+{
+ SchCellCb *cell; /*!< Contains the pointer to cell*/
+ SchUeCb *ue; /*!< Contains the pointer to ue*/
+ CmLListCp free; /*!< List of free HARQ processes */
+ CmLListCp inUse; /*!< List of in-use HARQ processes */
+ uint8_t maxHqTx; /*!< Maximum number of harq re-transmissions */
+ uint8_t numHqPrcs; /*!< Number of HARQ Processes */
+ SchUlHqProcCb procs[SCH_MAX_NUM_UL_HQ_PROC]; /*!< Uplink harq process info */
+};
+struct schDlHqEnt
+{
+ SchCellCb *cell; /*!< Contains the pointer to cell */
+ SchUeCb *ue; /*!< Contains the pointer to UE */
+ CmLListCp free; /*!< List of free HARQ processes */
+ CmLListCp inUse; /*!< List of in-use HARQ processes */
+ uint8_t maxHqTx; /*!< Maximum number of harq transmissions */
+ uint8_t numHqPrcs; /*!< Number of HARQ Processes */
+ SchDlHqProcCb procs[SCH_MAX_NUM_DL_HQ_PROC];/*!< Downlink harq processes */
+};