#include "du_cfg.h"
#include "du_app_mac_inf.h"
+#include "cm.h"
/**************************************************************************
* @brief Function to pack Loose Coupled
* ****************************************************************/
uint16_t packMacSlotInd(Pst *pst, SlotInfo *slotInfo )
{
- if(pst->selector == DU_SELECTOR_LC || pst->selector == DU_SELECTOR_TC)
+ Buffer *mBuf = NULLP;
+
+ if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK)
{
- /* Loose coupling not supported */
- DU_LOG("\nDU APP : Only LWLC supported");
+ DU_LOG("\nDU APP : Memory allocation failed for cell start req pack");
return RFAILED;
}
- else if(pst->selector == DU_SELECTOR_LWLC)
+
+ if(pst->selector == DU_SELECTOR_LC)
{
- Buffer *mBuf = NULLP;
+ CMCHKPK(SPkU16, slotInfo->cellId, mBuf);
+ CMCHKPK(SPkU16, slotInfo->sfn, mBuf);
+ CMCHKPK(SPkU16, slotInfo->slot, mBuf);
- if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK)
- {
- DU_LOG("\nDU APP : Memory allocation failed for cell start req pack");
- return RFAILED;
- }
-
+ CM_FREE_SHRABL_BUF(pst->region, pst->pool, slotInfo, sizeof(SlotInfo));
+ slotInfo = NULL;
+ }
+ else if(pst->selector == DU_SELECTOR_LWLC)
+ {
/* pack the address of the structure */
CMCHKPK(cmPkPtr,(PTR)slotInfo, mBuf);
-
- return SPstTsk(pst,mBuf);
}
- return ROK;
+ else
+ {
+ SPutMsg(mBuf);
+ }
+
+ return SPstTsk(pst,mBuf);
}
/*******************************************************************
* ****************************************************************/
uint16_t unpackMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf)
{
- SlotInfo *slotInfo;
-
if(pst->selector == DU_SELECTOR_LWLC)
{
+ SlotInfo *slotInfo;
+
/* unpack the address of the structure */
CMCHKUNPK(cmUnpkPtr, (PTR *)&slotInfo, mBuf);
SPutMsg(mBuf);
return (*func)(pst, slotInfo);
}
+ else if(pst->selector == DU_SELECTOR_LC)
+ {
+ SlotInfo slotInfo;
+
+ CMCHKUNPK(SUnpkU16, &(slotInfo.slot), mBuf);
+ CMCHKUNPK(SUnpkU16, &(slotInfo.sfn), mBuf);
+ CMCHKUNPK(SUnpkU16, &(slotInfo.cellId), mBuf);
+
+ SPutMsg(mBuf);
+ return (*func)(pst, &slotInfo);
+
+ }
else
{
/* Nothing to do for loose coupling */
return ROK;
}
+/*******************************************************************
+ *
+ * @brief Packs and Sends stop ind from MAC to DUAPP
+ *
+ * @details
+ *
+ * Function : packMacStopInd
+ *
+ * Functionality:
+ * Packs and Sends stop ind from MAC to DUAPP
+ *
+ * @params[in] Post structure pointer
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint16_t packMacStopInd(Pst *pst, MacCellStopInfo *cellStopId)
+{
+ Buffer *mBuf = NULLP;
+
+ if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK)
+ {
+ DU_LOG("\nDU APP : Memory allocation failed for stop Ind pack");
+ return RFAILED;
+ }
+
+ if(pst->selector == DU_SELECTOR_LC)
+ {
+ /*pack the payload here*/
+ DU_LOG("\nDU APP : Packed CellId");
+ CMCHKPK(SPkU16, cellStopId->cellId, mBuf);
+ CM_FREE_SHRABL_BUF(pst->region, pst->pool, cellStopId, sizeof(MacCellStopInfo));
+ cellStopId = NULL;
+ }
+ else if(pst->selector == DU_SELECTOR_LWLC)
+ {
+ /* pack the address of the structure */
+ CMCHKPK(cmPkPtr,(PTR)cellStopId, mBuf);
+ }
+ else
+ {
+ SPutMsg(mBuf);
+ }
+
+ return SPstTsk(pst,mBuf);
+}
+
+/*******************************************************************
+ *
+ * @brief Unpacks stop indication from MAC
+ *
+ * @details
+ *
+ * Function : unpackMacStopInd
+ *
+ * Functionality:
+ * Unpacks stop indication from MAC
+ *
+ * @params[in] Pointer to Handler
+ * Post structure pointer
+ * Message Buffer
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint16_t unpackMacStopInd(DuMacStopInd func, Pst *pst, Buffer *mBuf)
+{
+ if(pst->selector == DU_SELECTOR_LWLC)
+ {
+ MacCellStopInfo *cellStopId;
+ /* unpack the address of the structure */
+ CMCHKUNPK(cmUnpkPtr, (PTR *)&cellStopId, mBuf);
+ SPutMsg(mBuf);
+ return (*func)(pst, cellStopId);
+ }
+ else if(pst->selector == DU_SELECTOR_LC)
+ {
+ MacCellStopInfo cellStopId;
+ CMCHKUNPK(SUnpkU16, &(cellStopId.cellId), mBuf);
+
+ SPutMsg(mBuf);
+ return (*func)(pst, &cellStopId);
+
+ }
+ else
+ {
+ /* Nothing to do for loose coupling */
+ SPutMsg(mBuf);
+ return ROK;
+ }
+ return ROK;
+}
/**********************************************************************
End of file
**********************************************************************/