#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
typedef enum
{
- SUCCESS,
+ DEL_SUCCESSFUL,
CELLID_INVALID,
UEID_INVALID
}UeDeleteStatus;
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
MacCfraResource cfraResource;
}MacRachRsrcRsp;
+typedef struct macRachRsrcRel
+{
+ uint16_t cellId;
+ uint16_t ueId;
+ uint16_t crnti;
+}MacRachRsrcRel;
+
typedef struct ueDelete
{
uint16_t cellId;
UeDeleteStatus result;
}MacUeDeleteRsp;
-typedef struct macCellDelete
+typedef struct macCellDeleteReq
{
uint16_t cellId;
-}MacCellDelete;
+}MacCellDeleteReq;
typedef struct macCellDeleteRsp
{
MacSliceRsp **listOfSliceCfgRsp;
}MacSliceCfgRsp;
-typedef struct macPageReq
+/*As per ORAN-WG8, Slice Cfg and ReCfg are same structures*/
+typedef struct macSliceCfgReq MacSliceRecfgReq;
+typedef struct macSliceCfgRsp MacSliceRecfgRsp;
+
+typedef struct dlPcchInd
{
uint16_t cellId;
uint16_t pf;
uint8_t i_s;
uint16_t pduLen;
- uint8_t *pagePdu;
-}MacPageReq;
+ uint8_t *pcchPdu;
+}DlPcchInd;
+
+typedef struct cellInfo
+{
+ SlotTimingInfo slotInfo;
+ uint16_t cellId;
+}CellInfo;
+
+typedef struct cellInfo CellStartInfo;
+typedef struct cellInfo CellStopInfo;
/* Functions for CellUp Ind from MAC to DU APP*/
typedef uint8_t (*DuMacCellUpInd) ARGS((
/* Functions for mac cell start req */
typedef uint8_t (*DuMacCellStart) ARGS((
Pst *pst,
- OduCellId *cellId));
+ CellStartInfo *cellId));
/* Functions for mac cell stop request */
typedef uint8_t (*DuMacCellStop) ARGS((
Pst *pst,
- OduCellId *cellId ));
+ CellStopInfo *cellId ));
/* Function pointers for packing macCellCfg Request and Confirm */
typedef uint8_t (*packMacCellCfgReq) ARGS((
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*/
+/* 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*/
+/* 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,
/* Cell Delete Request from DU APP to MAC*/
typedef uint8_t (*DuMacCellDeleteReq) ARGS((
Pst *pst,
- MacCellDelete *cellDelete ));
+ MacCellDeleteReq *cellDelete ));
/* Cell Delete Response from MAC to DU APP*/
typedef uint8_t (*MacDuCellDeleteRspFunc) ARGS((
/* Slice ReReCfg Request from DU APP to MAC*/
typedef uint8_t (*DuMacSliceRecfgReq) ARGS((
Pst *pst,
- MacSliceCfgReq *CfgReq));
+ MacSliceRecfgReq *CfgReq));
/* Slice ReReCfg Response from MAC to DU APP */
-typedef uint8_t (*MacDuSliceReCfgRspFunc) ARGS((
+typedef uint8_t (*MacDuSliceRecfgRspFunc) ARGS((
Pst *pst,
- MacSliceCfgRsp *cfgRsp));
+ MacSliceRecfgRsp *cfgRsp));
+
+/* Pcch indication from DU APP to MAC*/
+typedef uint8_t (*DuMacDlPcchInd) ARGS((
+ Pst *pst,
+ DlPcchInd *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 duHandleCellUpInd(Pst *pst, OduCellId *cellId);
-uint8_t packMacCellStart(Pst *pst, OduCellId *cellId);
+uint8_t packMacCellStart(Pst *pst, CellStartInfo *cellStartInfo);
uint8_t unpackMacCellStart(DuMacCellStart func, Pst *pst, Buffer *mBuf);
-uint8_t MacProcCellStart(Pst *pst, OduCellId *cellId);
-uint8_t packMacCellStop(Pst *pst, OduCellId *cellId);
+uint8_t MacProcCellStart(Pst *pst, CellStartInfo *cellStartInfo);
+uint8_t packMacCellStop(Pst *pst, CellStopInfo *cellStopInfo);
uint8_t unpackMacCellStop(DuMacCellStop func, Pst *pst, Buffer *mBuf);
-uint8_t MacProcCellStop(Pst *pst, OduCellId *cellId);
+uint8_t MacProcCellStop(Pst *pst, CellStopInfo *cellStopInfo);
uint8_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg);
uint8_t unpackDuMacCellCfg(DuMacCellCfgReq func, Pst *pst, Buffer *mBuf);
uint8_t MacProcCellCfgReq(Pst *pst, MacCellCfg *macCellCfg);
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 packDuMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp);
uint8_t DuProcMacUeDeleteRsp(Pst *pst, MacUeDeleteRsp *deleteRsp);
uint8_t unpackDuMacUeDeleteRsp(MacDuUeDeleteRspFunc func, Pst *pst, Buffer *mBuf);
-uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDelete *cellDelete);
-uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDelete *cellDelete);
+uint8_t packDuMacCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete);
+uint8_t MacProcCellDeleteReq(Pst *pst, MacCellDeleteReq *cellDelete);
uint8_t unpackMacCellDeleteReq(DuMacCellDeleteReq func, Pst *pst, Buffer *mBuf);
uint8_t packDuMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp);
uint8_t DuProcMacCellDeleteRsp(Pst *pst, MacCellDeleteRsp *cellDeleteRsp);
uint8_t DuProcMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
uint8_t packDuMacSliceCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
uint8_t unpackDuMacSliceCfgRsp(MacDuSliceCfgRspFunc func, Pst *pst, Buffer *mBuf);
-uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq);
-uint8_t MacProcSliceReCfgReq(Pst *pst, MacSliceCfgReq *sliceReCfgReq);
-uint8_t unpackMacSliceReCfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf);
-uint8_t DuProcMacSliceReCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
-uint8_t packDuMacSliceReCfgRsp(Pst *pst, MacSliceCfgRsp *cfgRsp);
-uint8_t unpackDuMacSliceReCfgRsp(MacDuSliceReCfgRspFunc func, Pst *pst, Buffer *mBuf);
+uint8_t packDuMacSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq);
+uint8_t MacProcSliceRecfgReq(Pst *pst, MacSliceRecfgReq *sliceRecfgReq);
+uint8_t unpackMacSliceRecfgReq(DuMacSliceRecfgReq func, Pst *pst, Buffer *mBuf);
+uint8_t DuProcMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *sliceRecfgRsp);
+uint8_t packDuMacSliceRecfgRsp(Pst *pst, MacSliceRecfgRsp *sliceRecfgRsp);
+uint8_t unpackDuMacSliceRecfgRsp(MacDuSliceRecfgRspFunc 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, DlPcchInd *pcchInd);
+uint8_t MacProcDlPcchInd(Pst *pst, DlPcchInd *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