*******************************************************************************/
/* 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"
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[]=
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
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;
}
* ****************************************************************/
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));
* ****************************************************************/
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;
}
ulCcchIndInfo->ulCcchMsg = rrcContainer;
/* Fill Pst */
- pst.selector = DU_MAC_LWLC;
+ pst.selector = ODU_SELECTOR_LWLC;
pst.srcEnt = ENTRG;
pst.dstEnt = ENTDUAPP;
pst.dstInst = 0;
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