Optional parameters filling in Du to CU RRC Container
[o-du/l2.git] / src / 5gnrmac / mac.h
index 6af82e3..979381f 100644 (file)
@@ -31,7 +31,8 @@
 #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"
@@ -45,6 +46,7 @@
 #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_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
@@ -69,6 +75,7 @@
 #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
@@ -81,12 +88,48 @@ typedef struct macUlSlot
    UlSchInfo    ulCellInfo;
 }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;
-   RachIndInfo raCb;
-   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
@@ -96,10 +139,15 @@ typedef struct macCb
 }MacCb;
 
 /* global variable */
-EXTERN MacCb macCb;
+MacCb macCb;
 void fillMacToSchPst(Pst *pst);
 void fillRarPdu(RarInfo *rarInfo);
-int unpackRxData(SlotIndInfo timingInfo, RxDataIndPdu *rxDataIndPdu);
+void createMacRaCb(uint16_t cellId, uint16_t crnti);
+void fillMsg4DlData(MacDlData *dlData);
+void fillMacCe(MacCeInfo  *macCeData);
+void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint16_t tbSize);
+int unpackRxData(RxDataIndPdu *rxDataIndPdu);
+uint16_t macSendUlCcchInd(uint8_t *rrcContainer, uint16_t cellId, uint16_t crnti);
 
 #endif
 /**********************************************************************