#define EVENT_MAC_SLICE_RECFG_REQ 218
#define EVENT_MAC_SLICE_RECFG_RSP 219
#define EVENT_MAC_SLOT_IND 220
+#define EVENT_MAC_RACH_RESOURCE_REQ 221
+#define EVENT_MAC_RACH_RESOURCE_RSP 222
+#define EVENT_MAC_RACH_RESOURCE_REL 223
+#define EVENT_MAC_DL_PCCH_IND 224
#define BSR_PERIODIC_TIMER_SF_10 10
#define BSR_RETX_TIMER_SF_320 320
#define BSR_SR_DELAY_TMR_2560 2560
-#define GET_PAGING_CYCLE(enmValue, T) { \
- if (enmValue == 0) T = 32; \
- else if (enmValue == 1) T = 64; \
- else if (enmValue == 2) T = 128; \
- else if (enmValue == 3) T = 256; \
- else T = 0; \
-}
-
-#define GET_NUM_PAGING_OCC(enmValue, PO) { \
- if (enmValue == 0) PO = 4; \
- else if (enmValue == 1) PO = 2; \
- else if (enmValue == 2) PO = 1; \
- else PO = 0; \
-}
-
#define PAGING_SCHED_DELTA 4
typedef enum
typedef enum
{
- SUCCESS,
+ DEL_SUCCESSFUL,
CELLID_INVALID,
UEID_INVALID
}UeDeleteStatus;
RSRC_RRC_CONNECTED_USERS
}ResourceType;
+typedef enum
+{
+ TRANSMISSION_ALLOWED,
+ STOP_TRANSMISSION,
+ RESTART_TRANSMISSION
+}DataTransmissionAction;
+
typedef struct failureCause
{
CauseGrp type;
uint8_t msg1Fdm; /* PRACH FDM (1,2,4,8) */
uint8_t rootSeqLen; /* Root sequence length */
PrachFdmInfo fdm[8]; /* FDM info */
+ uint8_t totalNumRaPreamble; /* Total number of RA preambles */
uint8_t ssbPerRach; /* SSB per RACH occassion */
+ uint8_t numCbPreamblePerSsb; /* Number of CB preamble per SSB */
bool prachMultCarrBand; /* Multiple carriers in Band */
uint8_t prachRestrictedSet; /* Support for PRACH restricted set */
uint8_t raContResTmr; /* RA Contention Resoultion Timer */
Snssai **snssai; /* List of supporting snssai*/
}PlmnInfoList;
+#ifdef NR_DRX
+/* The following list of structures is taken from the DRX-Config section of specification 33.331. */
+typedef struct drxOnDurationTimer
+{
+ bool onDurationTimerValInMs;
+ union
+ {
+ uint8_t subMilliSeconds;
+ uint16_t milliSeconds;
+ }onDurationtimerValue;
+}DrxOnDurationTimer;
+
+typedef struct drxLongCycleStartOffset
+{
+ uint16_t drxLongCycleStartOffsetChoice;
+ uint16_t drxLongCycleStartOffsetVal;
+}DrxLongCycleStartOffset;
+
+typedef struct shortDrx
+{
+ uint16_t drxShortCycle;
+ uint8_t drxShortCycleTimer;
+}ShortDrx;
+
+typedef struct drxCfg
+{
+ DrxOnDurationTimer drxOnDurationTimer;
+ uint16_t drxInactivityTimer;
+ uint8_t drxHarqRttTimerDl;
+ uint8_t drxHarqRttTimerUl;
+ uint16_t drxRetransmissionTimerDl;
+ uint16_t drxRetransmissionTimerUl;
+ DrxLongCycleStartOffset drxLongCycleStartOffset;
+ bool shortDrxPres;
+ ShortDrx shortDrx;
+ uint8_t drxSlotOffset;
+}DrxCfg;
+#endif
+
typedef struct macCellCfg
{
uint16_t cellId; /* Cell Id */
BsrTmrCfg bsrTmrCfg;
bool phrCfgSetupPres; /* true/false: phrCfgSetup/phrCfgRelease */
PhrCfg phrCfg;
+#ifdef NR_DRX
+ DrxCfg drxCfg;
+#endif
}MacCellGrpCfg;
typedef struct phyCellGrpCfg
uint8_t numLcs;
LcCfg lcCfgList[MAX_NUM_LC];
UeCfgState macUeCfgState; /* InActive / Completed */
+ DataTransmissionAction transmissionAction;
}MacUeCfg;
typedef struct nrcgi
SCellFailInfo *failedSCellList;
}MacUeCfgRsp;
+typedef struct rachRsrcReq
+{
+ uint16_t cellId;
+ uint16_t ueId;
+ uint8_t numSsb;
+ uint8_t ssbIdx[MAX_NUM_SSB];
+}MacRachRsrcReq;
+
+typedef struct macCfraSsbResource
+{
+ uint8_t ssbIdx;
+ uint8_t raPreambleIdx;
+}MacCfraSsbResource;
+
+typedef struct macCfraResource
+{
+ uint8_t numSsb;
+ MacCfraSsbResource ssbResource[MAX_NUM_SSB];
+}MacCfraResource;
+
+typedef struct macRachRsrcRsp
+{
+ uint16_t cellId;
+ uint16_t ueId;
+ MacRsp result;
+ uint16_t newCrnti; /* This parameter maps to 3GPP TS 38.331 newUE-Identity */
+ MacCfraResource cfraResource;
+}MacRachRsrcRsp;
+
+typedef struct macRachRsrcRel
+{
+ uint16_t cellId;
+ uint16_t ueId;
+ uint16_t crnti;
+}MacRachRsrcRel;
+
typedef struct ueDelete
{
uint16_t cellId;
MacSliceRsp **listOfSliceCfgRsp;
}MacSliceCfgRsp;
-/* Functions for slot Ind from MAC to DU APP*/
+typedef struct macPcchInd
+{
+ uint16_t cellId;
+ uint16_t pf;
+ uint8_t i_s;
+ uint16_t pduLen;
+ uint8_t *pcchPdu;
+}MacPcchInd;
+
+/* Functions for CellUp Ind from MAC to DU APP*/
typedef uint8_t (*DuMacCellUpInd) ARGS((
Pst *pst,
OduCellId *cellId ));
Pst *pst,
MacUeCfgRsp *cfgRsp));
-/* UE Reconfig Request from DU APP to MAC*/
+/* UE Reconfig Request from DU APP to MAC */
typedef uint8_t (*DuMacUeReconfigReq) ARGS((
Pst *pst,
MacUeCfg *ueCfg ));
+/* RACH Resource Request from DU APP to MAC */
+typedef uint8_t (*DuMacRachRsrcReq) ARGS((
+ Pst *pst,
+ MacRachRsrcReq *rachRsrcReq));
+
+/* RACH Resource Response from MAC to DU APP */
+typedef uint8_t (*MacDuRachRsrcRspFunc) ARGS((
+ Pst *pst,
+ MacRachRsrcRsp *rachRsrcRsp));
+
+/* RACH Resource Release from DU APP to MAC */
+typedef uint8_t (*DuMacRachRsrcRel) ARGS((
+ Pst *pst,
+ MacRachRsrcRel *rachRsrcRel));
+
/* UE Delete Request from DU APP to MAC*/
typedef uint8_t (*DuMacUeDeleteReq) ARGS((
Pst *pst,
Pst *pst,
MacSliceCfgRsp *cfgRsp));
+/* Pcch indication from DU APP to MAC*/
+typedef uint8_t (*DuMacDlPcchInd) ARGS((
+ Pst *pst,
+ MacPcchInd *pcchInd));
+
+uint64_t ueBitMapPerCell[MAX_NUM_CELL]; /* Bit Map to store used/free UE-IDX per Cell */
uint8_t packMacCellUpInd(Pst *pst, OduCellId *cellId);
uint8_t unpackMacCellUpInd(DuMacCellUpInd func, Pst *pst, Buffer *mBuf);
uint8_t packDuMacUeReconfigReq(Pst *pst, MacUeCfg *ueCfg);
uint8_t unpackMacUeReconfigReq(DuMacUeReconfigReq func, Pst *pst, Buffer *mBuf);
uint8_t MacProcUeReconfigReq(Pst *pst, MacUeCfg *ueCfg);
+uint8_t packDuMacRachRsrcReq(Pst *pst, MacRachRsrcReq *rachRsrcReq);
+uint8_t unpackMacRachRsrcReq(DuMacRachRsrcReq func, Pst *pst, Buffer *mBuf);
+uint8_t MacProcRachRsrcReq(Pst *pst, MacRachRsrcReq *rachRsrcReq);
+uint8_t packDuMacRachRsrcRsp(Pst *pst, MacRachRsrcRsp *rachRsrcRsp);
+uint8_t unpackDuMacRachRsrcRsp(MacDuRachRsrcRspFunc func, Pst *pst, Buffer *mBuf);
+uint8_t DuProcMacRachRsrcRsp(Pst *pst, MacRachRsrcRsp *rachRsrcRsp);
+uint8_t packDuMacRachRsrcRel(Pst *pst, MacRachRsrcRel *rachRsrcRel);
+uint8_t unpackMacRachRsrcRel(DuMacRachRsrcRel func, Pst *pst, Buffer *mBuf);
+uint8_t MacProcRachRsrcRel(Pst *pst, MacRachRsrcRel *rachRsrcRel);
uint8_t packDuMacUeDeleteReq(Pst *pst, MacUeDelete *ueDelete);
uint8_t MacProcUeDeleteReq(Pst *pst, MacUeDelete *ueDelete);
uint8_t unpackMacUeDeleteReq(DuMacUeDeleteReq func, Pst *pst, Buffer *mBuf);
uint8_t duHandleSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo);
uint8_t packMacSlotInd(Pst *pst, SlotTimingInfo *slotIndInfo);
uint8_t unpackDuMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf);
-
+uint8_t packDuMacDlPcchInd(Pst *pst, MacPcchInd *pcchInd);
+uint8_t MacProcDlPcchInd(Pst *pst, MacPcchInd *pcchInd);
+uint8_t unpackMacDlPcchInd(DuMacDlPcchInd func, Pst *pst, Buffer *mBuf);
+int8_t getFreeBitFromUeBitMap(uint16_t cellId);
+void unsetBitInUeBitMap(uint16_t cellId, uint8_t bitPos);
#endif