Moving all common header file into common_def.h file
[o-du/l2.git] / src / 5gnrmac / mac_msg_hdl.c
index b9df6b0..7ed544a 100644 (file)
 *******************************************************************************/
 
 /* header include files -- defines (.h)  */
-#include "envopt.h"        /* environment options */
-#include "envdep.h"        /* environment dependent */
-#include "envind.h"        /* environment independent */
-#include "gen.h"           /* general layer */
-#include "ssi.h"           /* system services */
-#include "cm5.h"           /* common timers defines */
-#include "cm_hash.h"       /* common hash list defines */
-#include "cm_llist.h"      /* common linked list defines */
-#include "cm_mblk.h"       /* memory management */
-#include "cm_tkns.h"       /* common tokens */
-#include "cm_lte.h"        /* common tokens */
+#include "common_def.h"
 #include "rgu.h"
 #include "tfu.h"
 #include "rg_sch_inf.h"
 #include "lwr_mac.h"
 
 /* header/extern include files (.x) */
-#include "gen.x"           /* general layer typedefs */
-#include "ssi.x"           /* system services typedefs */
-#include "cm5.x"           /* common timers */
-#include "cm_hash.x"       /* common hash list */
-#include "cm_lib.x"        /* common library */
-#include "cm_llist.x"      /* common linked list */
-#include "cm_mblk.x"       /* memory management */
-#include "cm_tkns.x"       /* common tokens */
-#include "cm_lte.x"        /* common tokens */
 #include "rgu.x"
 #include "tfu.x"
 #include "rg_sch_inf.x"
@@ -65,6 +46,7 @@
 extern MacCb  macCb;
 
 extern void sendToLowerMac(uint16_t msgType, uint32_t msgLen, void *msg);
+uint16_t buildMacPdu(RlcMacData *dlData);
 
 /* Function pointer for sending crc ind from MAC to SCH */
 MacSchCrcIndFunc macSchCrcIndOpts[]=
@@ -74,6 +56,40 @@ MacSchCrcIndFunc macSchCrcIndOpts[]=
    packMacSchCrcInd
 };
 
+/* Function pointer for sending DL RLC BO Info from MAC to SCH */
+MacSchDlRlcBoInfoFunc macSchDlRlcBoInfoOpts[]=
+{
+   packMacSchDlRlcBoInfo,
+   macSchDlRlcBoInfo,
+   packMacSchDlRlcBoInfo
+};
+
+/*******************************************************************
+ *
+ * @brief Sends DL BO Info to SCH
+ *
+ * @details
+ *
+ *    Function : sendDlRlcBoInfoMacToSch
+ *
+ *    Functionality:
+ *       Sends DL BO Info to SCH
+ *
+ * @params[in] 
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ ****************************************************************/
+int sendDlRlcBoInfoMacToSch(DlRlcBOInfo *dlBoInfo)
+{
+   Pst pst;
+   fillMacToSchPst(&pst);
+   pst.event = EVENT_DL_RLC_BO_INFO_TO_SCH;
+   return(*macSchDlRlcBoInfoOpts[pst.selector])(&pst, dlBoInfo);
+}
+
 /*******************************************************************
  *
  * @brief Sends CRC Indication to SCH
@@ -156,9 +172,13 @@ uint16_t fapiMacRxDataInd(Pst *pst, RxDataInd *rxDataInd)
    uint16_t pduIdx;
  
    DU_LOG("\nMAC : Received Rx Data indication");
+  
+   /* TODO : compare the handle received in RxDataInd with handle send in PUSCH
+        * PDU, which is stored in raCb */
+
    for(pduIdx = 0; pduIdx < rxDataInd->numPdus; pduIdx++)
    {
-      unpackRxData(rxDataInd->timingInfo, &rxDataInd->pdus[pduIdx]);
+      unpackRxData(&rxDataInd->pdus[pduIdx]);
    }
    return ROK;
 }
@@ -255,10 +275,10 @@ uint16_t MacHdlCellStartReq(Pst *pst, MacCellStartInfo  *cellStartInfo)
  * ****************************************************************/
 uint16_t MacHdlCellStopReq(Pst *pst, MacCellStopInfo  *cellStopInfo)
 {
-   #ifdef FAPI
+#ifdef INTEL_FAPI
    DU_LOG("\nMAC : Sending cell stop request to Lower Mac");
    sendToLowerMac(FAPI_STOP_REQUEST, 0, cellStopInfo);
-   #endif
+#endif
 
    MAC_FREE_SHRABL_BUF(pst->region, pst->pool, cellStopInfo, \
           sizeof(MacCellStopInfo));
@@ -285,10 +305,45 @@ uint16_t MacHdlCellStopReq(Pst *pst, MacCellStopInfo  *cellStopInfo)
  * ****************************************************************/
 uint16_t MacHdlDlCcchInd(Pst *pst, DlCcchIndInfo *dlCcchIndInfo)
 {
+   uint16_t idx;
+   DlRlcBOInfo  dlBoInfo;
+       memset(&dlBoInfo, 0, sizeof(DlRlcBOInfo));
+
    DU_LOG("\nMAC : Handling DL CCCH IND");
+   
+   /* TODO : Fill DL RLC Buffer status info */
+   dlBoInfo.cellId = dlCcchIndInfo->cellId;
+   dlBoInfo.crnti = dlCcchIndInfo->crnti;
+   dlBoInfo.numLc = 0;
+   
+   if(dlCcchIndInfo->msgType == RRC_SETUP)
+   {
+      dlBoInfo.boInfo[dlBoInfo.numLc].lcId = SRB_ID_0;    // SRB ID 0 for msg4
+      dlBoInfo.boInfo[SRB_ID_0].dataVolume = \
+        dlCcchIndInfo->dlCcchMsgLen;
+      dlBoInfo.numLc++;
 
-       MAC_FREE_SHRABL_BUF(pst->region, pst->pool, dlCcchIndInfo->dlCcchMsg, strlen((const char*)dlCcchIndInfo->dlCcchMsg));
-       MAC_FREE_SHRABL_BUF(pst->region, pst->pool, dlCcchIndInfo, sizeof(DlCcchIndInfo));
+      /* storing Msg4 Pdu in raCb */
+      if(macCb.macCell->macRaCb[0].crnti == dlCcchIndInfo->crnti)
+      {
+         macCb.macCell->macRaCb[0].msg4PduLen = dlCcchIndInfo->dlCcchMsgLen;
+         MAC_ALLOC(macCb.macCell->macRaCb[0].msg4Pdu, macCb.macCell->macRaCb[0]\
+         .msg4PduLen);
+         if(macCb.macCell->macRaCb[0].msg4Pdu)
+         {
+                          for(idx = 0; idx < dlCcchIndInfo->dlCcchMsgLen; idx++)
+                               {
+               macCb.macCell->macRaCb[0].msg4Pdu[idx] =\
+                                         dlCcchIndInfo->dlCcchMsg[idx];
+                          }
+         }
+      }
+   }
+   sendDlRlcBoInfoMacToSch(&dlBoInfo);
+   
+   MAC_FREE_SHRABL_BUF(pst->region, pst->pool, dlCcchIndInfo->dlCcchMsg, \
+      dlCcchIndInfo->dlCcchMsgLen);
+   MAC_FREE_SHRABL_BUF(pst->region, pst->pool, dlCcchIndInfo, sizeof(DlCcchIndInfo));
    return ROK;
 
 }
@@ -328,7 +383,7 @@ uint16_t macSendUlCcchInd(uint8_t *rrcContainer, uint16_t cellId, uint16_t crnti
        ulCcchIndInfo->ulCcchMsg = rrcContainer;
 
        /* Fill Pst */
-       pst.selector  = DU_MAC_LWLC;
+       pst.selector  = ODU_SELECTOR_LWLC;
        pst.srcEnt    = ENTRG;
        pst.dstEnt    = ENTDUAPP;
        pst.dstInst   = 0;
@@ -353,8 +408,32 @@ uint16_t macSendUlCcchInd(uint8_t *rrcContainer, uint16_t cellId, uint16_t crnti
        return ret;
 }
 
-
-
+/*******************************************************************
+ *
+ * @brief Handles Ue Create Request from DU APP
+ *
+ * @details
+ *
+ *    Function : MacHdlUeCreateReq
+ *
+ *    Functionality:
+ *      Handles Ue create Request from DU APP
+ *
+ * @params[in] Post structure pointer
+ *             MacUeCfg pointer 
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t MacHdlUeCreateReq(Pst *pst, MacUeCfg *ueCfg)
+{
+   /* TODO : Create MAC UE Context.
+                 Copy Tx Pdu from raCb
+                                Delete RaCb
+                                Send MacUeContext to SCH */
+   MAC_FREE_SHRABL_BUF(pst->region, pst->pool, ueCfg, sizeof(MacUeCfg));
+   return ROK;
+}
 
 /**********************************************************************
          End of file