typedef enum
{
UE_STATE_INACTIVE,
- UE_STATE_ACTIVE
+ UE_STATE_ACTIVE,
+ UE_HANDIN_IN_PROGRESS
}UeState;
typedef enum
typedef struct macDlSlot
{
DlSchedInfo dlInfo;
+ DlPageAlloc *pageAllocInfo;
}MacDlSlot;
typedef struct macUlSlot
/* UE Cb */
typedef struct macUeCb
{
- uint16_t ueIdx; /* UE Idx assigned by DU APP */
- uint16_t crnti; /* UE CRNTI */
- MacCellCb *cellCb; /* Pointer to cellCb to whihc this UE belongs */
- UeState state; /* Is UE active ? */
- MacRaCbInfo *raCb; /* RA info */
- MacBsrTmrCfg bsrTmrCfg; /* BSR Timer Info */
- UeUlCb ulInfo; /* UE specific UL info */
- UeDlCb dlInfo; /* UE specific DL info */
+ uint16_t ueId; /* UE Id from DU APP */
+ uint16_t crnti; /* UE CRNTI */
+ MacCellCb *cellCb; /* Pointer to cellCb to whihc this UE belongs */
+ UeState state; /* Is UE active ? */
+ MacCfraResource cfraResource; /* CF-RA resource */
+ MacRaCbInfo *raCb; /* RA info */
+ MacBsrTmrCfg bsrTmrCfg; /* BSR Timer Info */
+ UeUlCb ulInfo; /* UE specific UL info */
+ UeDlCb dlInfo; /* UE specific DL info */
+ DataTransmissionAction transmissionAction;
}MacUeCb;
struct macCellCb
{
uint16_t cellId;
CellState state;
- uint8_t crntiMap;
+ uint16_t crntiMap;
MacRaCbInfo macRaCb[MAX_NUM_UE];
MacDlSlot dlSlot[MAX_SLOTS];
MacUlSlot ulSlot[MAX_SLOTS];
typedef struct macCb
{
- Inst macInst;
- ProcId procId;
- uint8_t tmrRes; /*!< Timer resolution */
- CmTqCp tmrTqCp; /*!< Timer Task Queue Cntrl Point */
- CmTqType tmrTq[MAC_TQ_SIZE]; /*!< Timer Task Queue */
- CmTimer tmrBlk[MAX_NUM_TIMER]; /*!< Timer Block */
- MacCellCb *macCell[MAX_NUM_CELL];
+ Inst macInst;
+ ProcId procId;
+ uint8_t tmrRes; /*!< Timer resolution */
+ CmTqCp tmrTqCp; /*!< Timer Task Queue Cntrl Point */
+ CmTqType tmrTq[MAC_TQ_SIZE]; /*!< Timer Task Queue */
+ CmTimer tmrBlk[MAX_NUM_TIMER]; /*!< Timer Block */
+ MacCellCb *macCell[MAX_NUM_CELL];
}MacCb;
/* global variable */
/* Function declarations */
short int macActvTmr(Ent ent,Inst inst);
void fillRarPdu(RarInfo *rarInfo);
-void createMacRaCb(RachIndInfo *rachIndInfo);
void fillMsg4DlData(MacDlData *dlData, uint16_t msg4PduLen, uint8_t *msg4Pdu);
void fillMacCe(MacCeInfo *macCeData, uint8_t *msg3Pdu);
void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint8_t *msg4TxPdu, uint16_t tbSize);
uint8_t macProcShortBsr(uint16_t cellId, uint16_t crnti, uint8_t lcgId, uint32_t bufferSize);
uint8_t macProcUlData(uint16_t cellId, uint16_t rnti, SlotTimingInfo slotInfo, \
uint8_t lcId, uint16_t pduLen, uint8_t *pdu);
-uint8_t sendSchedRptToRlc(DlSchedInfo dlInfo, SlotTimingInfo slotInfo);
+uint8_t sendSchedRptToRlc(DlSchedInfo dlInfo, SlotTimingInfo slotInfo, uint8_t ueIdx, uint8_t schInfoIdx);
+uint8_t macProcLongBsr(uint16_t cellId, uint16_t crnti,uint8_t numLcg,\
+ DataVolInfo dataVolInfo[MAX_NUM_LOGICAL_CHANNEL_GROUPS]);
+void freeMacSliceCfgReq(MacSliceCfgReq *cfgReq,Pst *pst);
#endif
/**********************************************************************
End of file