#define EVENT_SLICE_CFG_RSP_TO_MAC 22
#define EVENT_SLICE_RECFG_REQ_TO_SCH 23
#define EVENT_SLICE_RECFG_RSP_TO_MAC 24
-
+#define EVENT_RACH_RESOURCE_REQUEST_TO_SCH 25
+#define EVENT_RACH_RESOURCE_RESPONSE_TO_MAC 26
+#define EVENT_RACH_RESOURCE_RELEASE_TO_SCH 27
+#define EVENT_PAGING_IND_TO_SCH 28
+#define EVENT_DL_PAGING_ALLOC 29
+#define EVENT_DL_REL_HQ_PROC 30
+#define EVENT_DL_HARQ_IND_TO_SCH 31
/*macros*/
#define MAX_SSB_IDX 1 /* forcing it as 1 for now. Right value is 64 */
#define SCH_SSB_MASK_SIZE 1
#define MAX_NUMBER_OF_CRC_IND_BITS 1
#define MAX_NUMBER_OF_UCI_IND_BITS 1
#define MAX_SR_BITS_IN_BYTES 1
+#define MAX_HARQ_BITS_IN_BYTES 1
#define MAX_NUM_LOGICAL_CHANNEL_GROUPS 8
#define MAX_NUM_SR_CFG_PER_CELL_GRP 8 /* Max number of scheduling request config per cell group */
#define MAX_NUM_TAGS 4 /* Max number of timing advance groups */
uint16_t rootSeqIdx; /* Root sequence index */
uint8_t numRootSeq; /* Number of root sequences required for FD */
uint16_t k1; /* Frequency Offset for each FD */
+ uint8_t totalNumRaPreamble; /* Total number of RA preambles */
uint8_t ssbPerRach; /* SSB per RACH occassion */
+ uint8_t numCbPreamblePerSsb; /* Number of CB preamble per SSB */
uint8_t prachMultCarrBand; /* Presence of Multiple carriers in Band */
uint8_t raContResTmr; /* RA Contention Resoultion Timer */
uint8_t rsrpThreshSsb; /* RSRP Threshold SSB */
uint8_t raRspWindow; /* RA Response Window */
+ uint8_t maxMsg3Tx; /* MAximum num of msg3 tx*/
}SchRachCfg;
typedef struct schBwpParams
Snssai **snssai; /* List of supporting snssai*/
}SchPlmnInfoList;
+typedef struct schHqCfgParam
+{
+ uint8_t maxDlDataHqTx;
+ uint8_t maxMsg4HqTx;
+ uint8_t maxUlDataHqTx;
+}SchHqCfg;
+
+#ifdef NR_DRX
+/* The following list of structures is taken from the DRX-Config section of specification 33.331. */
+
+typedef struct schDrxOnDurationTimer
+{
+ bool onDurationTimerValInMs;
+ union
+ {
+ uint8_t subMilliSeconds;
+ uint16_t milliSeconds;
+ }onDurationtimerValue;
+}SchDrxOnDurationTimer;
+
+typedef struct schDrxLongCycleStartOffset
+{
+ uint16_t drxLongCycleStartOffsetChoice;
+ uint16_t drxLongCycleStartOffsetVal;
+}SchDrxLongCycleStartOffset;
+
+typedef struct schShortDrx
+{
+ uint16_t drxShortCycle;
+ uint8_t drxShortCycleTimer;
+}SchShortDrx;
+
+typedef struct schDrxCfg
+{
+ SchDrxOnDurationTimer drxOnDurationTimer;
+ uint16_t drxInactivityTimer;
+ uint8_t drxHarqRttTimerDl;
+ uint8_t drxHarqRttTimerUl;
+ uint16_t drxRetransmissionTimerDl;
+ uint16_t drxRetransmissionTimerUl;
+ SchDrxLongCycleStartOffset drxLongCycleStartOffset;
+ bool shortDrxPres;
+ SchShortDrx shortDrx;
+ uint8_t drxSlotOffset;
+}SchDrxCfg;
+#endif
+
typedef struct schCellCfg
{
uint16_t cellId; /* Cell Id */
SchBwpDlCfg schInitialDlBwp; /* Initial DL BWP */
SchBwpUlCfg schInitialUlBwp; /* Initial UL BWP */
SchPlmnInfoList plmnInfoList; /* Consits of PlmnId and Snssai list */
+ SchHqCfg schHqCfg;
#ifdef NR_TDD
TDDCfg tddCfg; /* TDD Cfg */
-#endif
+#endif
}SchCellCfg;
typedef struct schCellCfgCfm
{
uint16_t cellId; /* Cell Id */
- SchMacRsp rsp;
+ SchMacRsp rsp;
+ SchFailureCause cause;
}SchCellCfgCfm;
typedef struct ssbInfo
typedef struct dlMsgSchedInfo
{
+ bool isRetx;
uint8_t numLc;
LcSchInfo lcSchInfo[MAX_NUM_LC]; /* Scheduled LC info */
BwpCfg bwp;
}DlSchedInfo;
+typedef struct dlPageAlloc
+{
+ uint16_t cellId;
+ SlotTimingInfo dlPageTime;
+ uint8_t ssbIdx;
+ bool shortMsgInd;
+ uint8_t shortMsg;
+ BwpCfg bwp;
+ PdcchCfg pagePdcchCfg;
+ PdschCfg pagePdschCfg;
+ uint16_t dlPagePduLen;
+ uint8_t *dlPagePdu;
+}DlPageAlloc;
+
typedef struct tbInfo
{
uint8_t qamOrder; /* Modulation Order */
SchSchedReqCfg schedReqCfg;
SchTagCfg tagCfg;
SchPhrCfg phrCfg; /* To be used only if phrCfgSetupPres is true */
+#ifdef NR_DRX
+ SchDrxCfg drxCfg; /* Drx configuration */
+#endif
}SchMacCellGrpCfg;
/* Physical Cell Group Configuration */
SchFailureCause cause;
}SchUeCfgRsp;
+typedef struct schRachRsrcReq
+{
+ SlotTimingInfo slotInd;
+ uint16_t cellId;
+ uint16_t crnti;
+ uint8_t numSsb;
+ uint8_t ssbIdx[MAX_NUM_SSB];
+}SchRachRsrcReq;
+
+typedef struct schCfraSsbResource
+{
+ uint8_t ssbIdx;
+ uint8_t raPreambleIdx;
+}SchCfraSsbResource;
+
+typedef struct schCfraRsrc
+{
+ uint8_t numSsb;
+ SchCfraSsbResource ssbResource[MAX_NUM_SSB];
+}SchCfraResource;
+
+typedef struct schRachRsrcRsp
+{
+ uint16_t cellId;
+ uint16_t crnti;
+ SchMacRsp result;
+ SchCfraResource cfraResource;
+}SchRachRsrcRsp;
+
+typedef struct schRachRsrcRel
+{
+ SlotTimingInfo slotInd;
+ uint16_t cellId;
+ uint16_t crnti;
+ SchCfraResource cfraResource;
+}SchRachRsrcRel;
+
typedef struct schUeDelete
{
uint16_t cellId;
ErrorCause cause;
}SchUeDeleteRsp;
-typedef struct schCellDelete
+typedef struct schCellDeleteReq
{
uint16_t cellId;
-}SchCellDelete;
+}SchCellDeleteReq;
typedef struct schCellDeleteRsp
{
- uint16_t cellId;
- SchMacRsp rsp;
+ uint16_t cellId;
+ SchMacRsp rsp;
+ SchFailureCause cause;
}SchCellDeleteRsp;
typedef struct dataVolInfo
uint8_t srPayload[MAX_SR_BITS_IN_BYTES];
}SrUciIndInfo;
+typedef struct dlHarqInd
+{
+ uint16_t cellId;
+ uint16_t crnti;
+ SlotTimingInfo slotInd;
+ uint8_t numHarq;
+ uint8_t harqPayload[MAX_HARQ_BITS_IN_BYTES];
+}DlHarqInd;
+
typedef struct schRrmPolicyRatio
{
uint8_t policyMaxRatio;
RspCause cause;
}SliceRsp;
-typedef struct schSliceRsp
+typedef struct schSliceCfgRsp
{
uint8_t numSliceCfgRsp;
SliceRsp **listOfSliceCfgRsp;
}SchSliceCfgRsp;
+/*As per ORAN-WG8, Slice Cfg and ReCfg are same structures*/
+typedef struct schSliceCfgReq SchSliceRecfgReq;
+typedef struct schSliceCfgRsp SchSliceRecfgRsp;
+
+typedef struct schPageInd
+{
+ uint16_t cellId;
+ uint16_t pf;
+ uint8_t i_s;
+ uint16_t pduLen;
+ uint8_t *pagePdu;
+}SchPageInd;
+
+typedef struct schUeHqInfo
+{
+ uint16_t crnti;
+ uint8_t hqProcId;
+}SchUeHqInfo;
+
+typedef struct schRlsHqInfo
+{
+ uint16_t cellId;
+ uint8_t numUes;
+ SchUeHqInfo *ueHqInfo;
+}SchRlsHqInfo;
+
/* function pointers */
typedef uint8_t (*SchCellCfgCfmFunc) ARGS((
Pst *pst, /* Post Structure */
DlSchedInfo *dlSchedInfo /* dl allocation Info */
));
+typedef uint8_t (*SchMacDlPageAllocFunc) ARGS((
+ Pst *pst, /* Post Structure */
+ DlPageAlloc *dlPageAlloc /* dl Page allocation Info */
+ ));
+
typedef uint8_t (*SchMacUlSchInfoFunc) ARGS((
Pst *pst, /* Post Structure */
UlSchedInfo *ulSchedInfo /* UL Alloc Sch Info */
UlBufferStatusRptInd *bsrInd
));
+typedef uint8_t (*MacSchDlHarqIndFunc) ARGS((
+ Pst *pst, /* Post structure */
+ DlHarqInd *dlHarqInd)); /* Dl HARQ IND Info */
+
typedef uint8_t (*MacSchSrUciIndFunc) ARGS((
Pst *pst, /* Post structure */
SrUciIndInfo *uciInd)); /* UCI IND Info */
Pst *pst, /* Post structure */
SchUeCfgRsp *cfgRsp)); /* Scheduler UE Cfg response */
+typedef uint8_t (*MacSchRachRsrcReqFunc) ARGS((
+ Pst *pst, /* Post structure */
+ SchRachRsrcReq *schRachRsrcReq)); /* RACH resource request to SCH */
+
+typedef uint8_t (*SchRachRsrcRspFunc) ARGS((
+ Pst *pst, /* Post structure */
+ SchRachRsrcRsp *schRachRsrcRsp)); /* RACH resource request to MAC */
+
+typedef uint8_t (*MacSchRachRsrcRelFunc) ARGS((
+ Pst *pst, /* Post structure */
+ SchRachRsrcRel *schRachRsrcRel)); /* RACH resource release to SCH */
+
typedef uint8_t (*MacSchUeDeleteReqFunc) ARGS((
Pst *pst, /* Post structure */
SchUeDelete *schUeDel)); /*Scheduler UE Del*/
typedef uint8_t (*MacSchCellDeleteReqFunc) ARGS((
Pst *pst, /* Post structure */
- SchCellDelete *schCellDelete)); /*Scheduler UE Del*/
+ SchCellDeleteReq *schCellDelete)); /*Scheduler UE Del*/
typedef uint8_t (*SchCellDeleteRspFunc) ARGS((
Pst *pst, /* Post structure */
SchSliceCfgRsp *schSliceCfgRsp /* Cell Cfg Cfm */
));
-typedef uint8_t (*MacSchSliceReCfgReqFunc) ARGS((
+typedef uint8_t (*MacSchSliceRecfgReqFunc) ARGS((
Pst *pst, /* Post structure */
- SchSliceCfgReq *schSliceReCfgReq)); /* Scheduler Slice ReCfg Req */
+ SchSliceRecfgReq *schSliceRecfgReq)); /* Scheduler Slice ReCfg Req */
-typedef uint8_t (*SchSliceReCfgRspFunc) ARGS((
+typedef uint8_t (*SchSliceRecfgRspFunc) ARGS((
Pst *pst, /* Post Structure */
- SchSliceCfgRsp *schSliceReCfgRsp /* Cell ReCfg Cfm */
+ SchSliceRecfgRsp *schSliceRecfgRsp /* Cell ReCfg Cfm */
));
+
+typedef uint8_t (*MacSchPagingIndFunc) ARGS((
+ Pst *pst, /* Post structure */
+ SchPageInd *schPagingInd)); /* Paging Indication */
+
+typedef uint8_t (*SchMacDlReleaseHarqFunc) ARGS((
+ Pst *pst, /* Post structure */
+ SchRlsHqInfo *rlsHqInfo)); /* Release Harq proc */
+
/* function declarations */
uint8_t packMacSchSlotInd(Pst *pst, SlotTimingInfo *slotInd);
uint8_t packSchMacDlAlloc(Pst *pst, DlSchedInfo *dlSchedInfo);
uint8_t packMacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd);
uint8_t MacSchBsr(Pst *pst, UlBufferStatusRptInd *bsrInd);
uint8_t packMacSchSrUciInd(Pst *pst, SrUciIndInfo *uciInd);
+uint8_t packMacSchDlHarqInd(Pst *pst, DlHarqInd *dlHarqInd);
+uint8_t MacSchDlHarqInd(Pst *pst, DlHarqInd *dlHarqInd);
uint8_t MacSchSrUciInd(Pst *pst, SrUciIndInfo *uciInd);
uint8_t packMacSchModUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch);
uint8_t MacSchModUeConfigReq(Pst *pst, SchUeCfg *ueCfgToSch);
uint8_t packSchUeReconfigRsp(Pst *pst, SchUeCfgRsp *cfgRsp);
uint8_t MacProcSchUeReconfigRsp(Pst *pst, SchUeCfgRsp *cfgRsp);
+uint8_t packMacSchRachRsrcReq(Pst *pst, SchRachRsrcReq *schRachRsrcReq);
+uint8_t MacSchRachRsrcReq(Pst *pst, SchRachRsrcReq *schRachRsrcReq);
+uint8_t packSchRachRsrcRsp(Pst *pst, SchRachRsrcRsp *schRachRsrcRsp);
+uint8_t MacProcSchRachRsrcRsp(Pst *pst, SchRachRsrcRsp *schRachRsrcRsp);
+uint8_t packMacSchRachRsrcRel(Pst *pst, SchRachRsrcRel *schRachRsrcRel);
+uint8_t MacSchRachRsrcRel(Pst *pst, SchRachRsrcRel *schRachRsrcRel);
uint8_t packMacSchUeDeleteReq(Pst *pst, SchUeDelete *schUeDel);
uint8_t MacSchUeDeleteReq(Pst *pst, SchUeDelete *ueDelete);
uint8_t packSchUeDeleteRsp(Pst *pst, SchUeDeleteRsp *delRsp);
uint8_t MacProcSchUeDeleteRsp(Pst *pst, SchUeDeleteRsp *schUeDelRsp);
-uint8_t packMacSchCellDeleteReq(Pst *pst, SchCellDelete *schCellDelete);
-uint8_t MacSchCellDeleteReq(Pst *pst, SchCellDelete *schCellDelete);
+uint8_t packMacSchCellDeleteReq(Pst *pst, SchCellDeleteReq *schCellDelete);
+uint8_t MacSchCellDeleteReq(Pst *pst, SchCellDeleteReq *schCellDelete);
uint8_t packSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp *schCellDeleteRsp);
uint8_t MacProcSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp *schCellDeleteRsp);
uint8_t packMacSchSliceCfgReq(Pst *pst, SchSliceCfgReq *cfgReq);
uint8_t MacSchSliceCfgReq(Pst *pst, SchSliceCfgReq *schSliceCfgReq);
uint8_t packSchSliceCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp);
uint8_t MacProcSchSliceCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp);
-uint8_t packMacSchSliceReCfgReq(Pst *pst, SchSliceCfgReq *cfgReq);
-uint8_t MacSchSliceReCfgReq(Pst *pst, SchSliceCfgReq *schSliceCfgReq);
-uint8_t packSchSliceReCfgRsp(Pst *pst, SchSliceCfgRsp *cfgRsp);
-uint8_t MacProcSchSliceReCfgRsp(Pst *pst, SchSliceCfgRsp *sliceReCfgrsp);
+uint8_t packMacSchSliceRecfgReq(Pst *pst, SchSliceRecfgReq *recfgReq);
+uint8_t MacSchSliceRecfgReq(Pst *pst, SchSliceRecfgReq *schSliceRecfgReq);
+uint8_t packSchSliceRecfgRsp(Pst *pst, SchSliceRecfgRsp *schSliceRecfgRsp);
+uint8_t MacProcSchSliceRecfgRsp(Pst *pst, SchSliceRecfgRsp *sliceRecfgrsp);
+uint8_t packMacSchPagingInd(Pst *pst, SchPageInd *pageInd);
+uint8_t MacSchPagingInd(Pst *pst, SchPageInd *pageInd);
+uint8_t packSchMacDlPageAlloc(Pst *pst, DlPageAlloc *dlPageAlloc);
+uint8_t MacProcDlPageAlloc(Pst *pst, DlPageAlloc *dlPageAlloc);
+uint8_t packSchMacDlReleaseHarq(Pst *pst, SchRlsHqInfo *rlsHqInfo);
+uint8_t MacSchReleaseDlHarqProc(Pst *pst, SchRlsHqInfo *rlsHqInfo);
/**********************************************************************
End of file
**********************************************************************/