#define MAX_ZERO_CORR_CFG_IDX 16 /* max zero correlation config index */
#define MAC_TQ_SIZE 10 /* Timing Queue Size */
#define MAX_NUM_TIMER 1 /* MAX number of MAC timers */
+#define MAX_PENDING_STATS_RSP 5 /* Maximum number of statistics request for which response is pending */
#define DEFAULT_CELLS 1
#define SI_RNTI 0xFFFF
#define LC_ID_SIZE 6
#define TIMING_ADVANCE_SIZE 12
#define T_CRNTI_SIZE 16
+
/* UL Grant is of size = 27 bits. Refer to Spec 38.213, Table 8.2-1 for
* contents of UL grant in RAR */
#define FREQ_HOP_FLAG_SIZE 1
uint8_t *msg4Pdu; /* storing DL-CCCH Ind Pdu */
uint16_t msg4PduLen; /* storing DL-CCCH Ind Pdu Len */
DlHarqProcCb msg4HqInfo; /* HARQ process info for msg 4 */
+ bool *macMsg4Status;
}MacRaCbInfo;
typedef struct macCe
struct macCellCb
{
- uint16_t cellId;
- uint16_t numOfSlots;
- MacCellStatus state;
- uint16_t crntiMap;
- MacRaCbInfo macRaCb[MAX_NUM_UE];
- MacDlSlot dlSlot[MAX_SLOTS];
- MacUlSlot ulSlot[MAX_SLOTS];
- uint16_t numActvUe;
- MacUeCfg *ueCfgTmpData[MAX_NUM_UE];
- MacUeRecfg *ueRecfgTmpData[MAX_NUM_UE];
- MacUeCb ueCb[MAX_NUM_UE];
- MacCellCfg macCellCfg;
- SlotTimingInfo currTime;
+ uint16_t cellId;
+ uint16_t numOfSlots;
+ MacCellStatus state;
+ uint16_t crntiMap;
+ MacRaCbInfo macRaCb[MAX_NUM_UE];
+ MacDlSlot dlSlot[MAX_SLOTS];
+ MacUlSlot ulSlot[MAX_SLOTS];
+ uint16_t numActvUe;
+ MacUeCreateReq *ueCfgTmpData[MAX_NUM_UE];
+ MacUeRecfg *ueRecfgTmpData[MAX_NUM_UE];
+ MacUeCb ueCb[MAX_NUM_UE];
+ MacCellCfg macCellCfg;
+ uint8_t numerology;
+ SlotTimingInfo currTime;
};
+typedef struct macStatistics
+{
+ uint8_t numPendingStatsRsp;
+ MacStatsRsp pendingStatsRsp[MAX_PENDING_STATS_RSP];
+
+ /* This structure can be developed in future to add details of
+ * the statistics to be calculated at MAC */
+}MacStatistics;
+
typedef struct macCb
{
Inst macInst;
CmTqType tmrTq[MAC_TQ_SIZE]; /*!< Timer Task Queue */
CmTimer tmrBlk[MAX_NUM_TIMER]; /*!< Timer Block */
MacCellCb *macCell[MAX_NUM_CELL];
+ MacStatistics statistics;
}MacCb;
/* global variable */
void fillMacCe(MacCeInfo *macCeData, uint8_t *msg3Pdu);
void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint8_t *msg4TxPdu, uint16_t tbSize);
uint8_t unpackRxData(uint16_t cellId, SlotTimingInfo slotInfo, RxDataIndPdu *rxDataIndPdu);
-void fillMg4Pdu(DlMsgAlloc *msg4Alloc);
+void fillMg4Pdu(DlMsgSchInfo *msg4Alloc);
void buildAndSendMuxPdu(SlotTimingInfo currTimingInfo);
uint8_t macProcUlCcchInd(uint16_t cellId, uint16_t crnti, uint16_t rrcContSize, uint8_t *rrcContainer);
uint8_t macProcShortBsr(uint16_t cellId, uint16_t crnti, uint8_t lcgId, uint32_t bufferSize);
uint8_t MacProcSchRachRsrcRsp(Pst *pst, SchRachRsrcRsp *schRachRsrcRsp);
uint8_t MacProcDlPageAlloc(Pst *pst, DlPageAlloc *dlPageAlloc);
uint8_t MacProcSchCellDeleteRsp(Pst *pst, SchCellDeleteRsp *schCellDeleteRsp);
+
+uint8_t MacProcSchStatsRsp(Pst *pst, SchStatsRsp *schStatsRsp);
+uint8_t MacProcSchStatsInd(Pst *pst, SchStatsInd *schStatsInd);
+uint8_t MacProcSchStatsDeleteRsp(Pst *pst, SchStatsDeleteRsp *schStatsDeleteRsp);
+
#endif
/**********************************************************************
End of file