typedef enum
{
UE_STATE_INACTIVE,
- UE_STATE_ACTIVE
+ UE_STATE_ACTIVE,
+ UE_HANDIN_IN_PROGRESS
}UeState;
typedef enum
MAC_LC_STATE_ACTIVE
}MacLcState;
+typedef struct dlTbInfo
+{
+ SlotTimingInfo txTime;
+ uint16_t tbSize;
+ uint8_t *tb;
+}DlTbInfo;
+
+/* DL HARQ Process Info */
+typedef struct dlHarqProcCb
+{
+ uint8_t procId; /* HARQ Process Id */
+ uint8_t numTb; /* Number of TB */
+ DlTbInfo tbInfo[MAX_NUM_TB_PER_UE]; /* TB information */
+}DlHarqProcCb;
+
typedef struct macDlSlot
{
DlSchedInfo dlInfo;
+ DlPageAlloc *pageAllocInfo;
}MacDlSlot;
typedef struct macUlSlot
uint8_t msg3Pdu[6]; /* used as CRI value during muxing */
uint8_t *msg4Pdu; /* storing DL-CCCH Ind Pdu */
uint16_t msg4PduLen; /* storing DL-CCCH Ind Pdu Len */
- uint8_t *msg4TxPdu; /* muxed Pdu used for re-transmission */
- uint16_t msg4TbSize; /* size required for msg4TxPdu */
+ DlHarqProcCb msg4HqInfo; /* HARQ process info for msg 4 */
}MacRaCbInfo;
typedef struct macCe
MacDlInfo pduInfo[MAX_MAC_DL_PDU];
}MacDlData;
-/* HARQ Process Info */
-typedef struct dlHarqProcCb
-{
- uint8_t procId; /* HARQ Process Id */
-}DlHarqProcCb;
-
/* DL HARQ entity */
typedef struct dlHarqEnt
{
/* 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];
/* 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 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