#include "cm_hash.h" /* Common Hash List Defines */
#include "cm_lte.h" /* Common LTE Defines */
#include "cm_mblk.h" /* Common LTE Defines */
-#include "tfu.h" /* RGU Interface defines */
+#include "rgu.h" /* RGU interface includes*/
+#include "tfu.h" /* TFU Interface defines */
#include "lrg.h"
#include "du_app_mac_inf.h"
#include "mac_sch_interface.h"
#include "cm_hash.x" /* Common Hash List Definitions */
#include "cm_lte.x" /* Common LTE Defines */
#include "cm_mblk.x" /* Common LTE Defines */
+#include "rgu.x"
#include "tfu.x" /* RGU Interface includes */
#include "lrg.x"
#define MAX_SLOT_SUPPORTED 10 /* numerology 0 15Khz */
#define MAX_ZERO_CORR_CFG_IDX 16 /* max zero correlation config index */
+#define SI_RNTI 0xFFFF
+#define P_RNTI 0xFFFE
+#define MAX_MAC_CE 6
+#define MAX_UE 1
+#define MAX_CRI_SIZE 6
+#define MAX_MAC_DL_PDU 10
+
+#define MAC_LCID_CCCH 0
+#define MAC_DEDLC_MIN_LCID 1
+#define MAC_DEDLC_MAX_LCID 32
+#define MAC_LCID_RESERVED_MIN 33
+#define MAC_LCID_RESERVED_MAX 51
+#define MAC_LCID_CCCH_48BIT 52
+#define MAC_LCID_BIT_RATE_QUERY 53
+#define MAC_LCID_MULT_PHR_FOUR_OCT 54
+#define MAC_LCID_CFG_GRANT_CFM 55
+#define MAC_LCID_MULT_PHR_ONE_OCT 56
+#define MAC_LCID_SINGLE_PHR 57
+#define MAC_LCID_CRNTI 58
+#define MAC_LCID_SHORT_TRUNC_BSR 59
+#define MAC_LCID_LONG_TRUNC_BSR 60
+#define MAC_LCID_SHORT_BSR 61
+#define MAC_LCID_LONG_BSR 62
+#define MAC_LCID_CRI 62
+#define MAC_LCID_PADDING 63
typedef struct macDlSlot
{
- DlBrdcstAlloc cellBroadcastInfo;
-
+ DlSchedInfo dlInfo;
}MacDlSlot;
typedef struct macUlSlot
{
- UlSchInfo ulCellInfo;
+ UlSchedInfo ulInfo;
}MacUlSlot;
+typedef struct macCbInfo
+{
+ uint16_t cellId;
+ uint16_t crnti;
+ 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 */
+}MacRaCbInfo;
+
+typedef struct macCe
+{
+ uint16_t macCeLcid;
+ uint8_t macCeValue[6];
+}MacCe;
+
+typedef struct macCeInfo
+{
+ uint16_t numCes;
+ MacCe macCe[MAX_MAC_CE];
+}MacCeInfo;
+
+typedef struct macDlInfo
+{
+ uint16_t lcId;
+ uint16_t pduLen;
+ uint8_t *dlPdu;
+}MacDlInfo;
+
+typedef struct macDlData
+{
+ uint16_t numPdu;
+ MacDlInfo pduInfo[MAX_MAC_DL_PDU];
+}MacDlData;
+
typedef struct macCellCb
{
- uint16_t cellId;
- MacDlSlot dlSlot[MAX_SLOT_SUPPORTED];
- MacUlSlot ulSlot[MAX_SLOT_SUPPORTED];
+ uint16_t cellId;
+ MacRaCbInfo macRaCb[MAX_UE];
+ MacDlSlot dlSlot[MAX_SLOT_SUPPORTED];
+ MacUlSlot ulSlot[MAX_SLOT_SUPPORTED];
}MacCellCb;
typedef struct macCb
}MacCb;
/* global variable */
-EXTERN MacCb macCb;
+MacCb macCb;
+void fillMacToSchPst(Pst *pst);
+void fillRarPdu(RarInfo *rarInfo);
+void createMacRaCb(uint16_t cellId, uint16_t crnti);
+void fillMsg4DlData(MacDlData *dlData, uint8_t *msg4Pdu);
+void fillMacCe(MacCeInfo *macCeData, uint8_t *msg3Pdu);
+void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint8_t *msg4TxPdu, uint16_t tbSize);
+int unpackRxData(RxDataIndPdu *rxDataIndPdu);
+uint16_t macSendUlCcchInd(uint8_t *rrcContainer, uint16_t cellId, uint16_t crnti);
+void BuildAndSendMsg4MuxPdu(Msg4Alloc *msg4Alloc);
#endif
/**********************************************************************