return ODU_POST_TASK(pst,mBuf);
}
+
/*******************************************************************
*
* @brief Unpacks UE Reconfig Request received from DU APP
return RFAILED;
}
+
+/*******************************************************************
+ *
+ * @brief Packs and Sends RACH Resource request from DUAPP to MAC
+ *
+ * @details
+ *
+ * Function : packDuMacRachRsrcReq
+ *
+ * Functionality:
+ * Packs and Sends RACH Resource request from DU APP to MAC
+ *
+ *
+ * @params[in] Post structure pointer
+ * MacRachRsrcReq pointer
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t packDuMacRachRsrcReq(Pst *pst, MacRachRsrcReq *rachRsrcReq)
+{
+ Buffer *mBuf = NULLP;
+
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK)
+ {
+ DU_LOG("\nERROR --> MAC : Memory allocation failed at packDuMacRachRsrcReq,");
+ return RFAILED;
+ }
+ /* pack the address of the structure */
+ CMCHKPK(oduPackPointer, (PTR)rachRsrcReq, mBuf);
+ }
+ else
+ {
+ DU_LOG("\nERROR --> MAC: Only LWLC supported for packDuMacRachRsrcReq");
+ return RFAILED;
+ }
+
+ return ODU_POST_TASK(pst,mBuf);
+}
+
+/*******************************************************************
+ *
+ * @brief Unpacks RACH resource Request received from DU APP
+ *
+ * @details
+ *
+ * Function : unpackMacRachRsrcReq
+ *
+ * Functionality:
+ * Unpacks RACH resource Request received from DU APP
+ *
+ * @params[in] Pointer to Handler
+ * Post structure pointer
+ * Message Buffer
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t unpackMacRachRsrcReq(DuMacRachRsrcReq func, Pst *pst, Buffer *mBuf)
+{
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ MacRachRsrcReq *rachRsrcReq;
+
+ /* unpack the address of the structure */
+ CMCHKUNPK(oduUnpackPointer, (PTR *)&rachRsrcReq, mBuf);
+ ODU_PUT_MSG_BUF(mBuf);
+ return (*func)(pst, rachRsrcReq);
+ }
+ else
+ {
+ /* Nothing to do for other selectors */
+ DU_LOG("\nERROR --> DU APP : Only LWLC supported for RACH resource Request ");
+ ODU_PUT_MSG_BUF(mBuf);
+ }
+
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Packs and Sends RACH Resource release from DUAPP to MAC
+ *
+ * @details
+ *
+ * Function : packDuMacRachRsrcRel
+ *
+ * Functionality:
+ * Packs and Sends RACH Resource release from DU APP to MAC
+ *
+ *
+ * @params[in] Post structure pointer
+ * MacRachRsrcRel pointer
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t packDuMacRachRsrcRel(Pst *pst, MacRachRsrcRel *rachRsrcRel)
+{
+ Buffer *mBuf = NULLP;
+
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK)
+ {
+ DU_LOG("\nERROR --> MAC : Memory allocation failed at packDuMacRachRsrcRel");
+ return RFAILED;
+ }
+ /* pack the address of the structure */
+ CMCHKPK(oduPackPointer, (PTR)rachRsrcRel, mBuf);
+ }
+ else
+ {
+ DU_LOG("\nERROR --> MAC: Only LWLC supported for packDuMacRachRsrcRel");
+ return RFAILED;
+ }
+
+ return ODU_POST_TASK(pst,mBuf);
+}
+
+/*******************************************************************
+ *
+ * @brief Unpacks RACH Resource Release received from DU APP
+ *
+ * @details
+ *
+ * Function : unpackMacRachRsrcRel
+ *
+ * Functionality:
+ * Unpacks RACH Resource Release received from DU APP
+ *
+ * @params[in] Pointer to Handler
+ * Post structure pointer
+ * Message Buffer
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t unpackMacRachRsrcRel(DuMacRachRsrcRel func, Pst *pst, Buffer *mBuf)
+{
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ MacRachRsrcRel *rachRsrcRel;
+
+ /* unpack the address of the structure */
+ CMCHKUNPK(oduUnpackPointer, (PTR *)&rachRsrcRel, mBuf);
+ ODU_PUT_MSG_BUF(mBuf);
+ return (*func)(pst, rachRsrcRel);
+ }
+ else
+ {
+ /* Nothing to do for other selectors */
+ DU_LOG("\nERROR --> DU APP : Only LWLC supported for RACH Resource Release ");
+ ODU_PUT_MSG_BUF(mBuf);
+ }
+
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Packs and Sends RACH Resource response from MAC to DU APP
+ *
+ * @details
+ *
+ * Function : packDuMacRachRsrcRsp
+ *
+ * Functionality:
+ * Packs and Sends RACH Resource response from MAC to DU APP
+ *
+ *
+ * @params[in] Post structure pointer
+ * MacRachRsrcRsp pointer
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t packDuMacRachRsrcRsp(Pst *pst, MacRachRsrcRsp *rachRsrcRsp)
+{
+ Buffer *mBuf = NULLP;
+
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK)
+ {
+ DU_LOG("\nERROR --> MAC : Memory allocation failed at packDuMacRachRsrcRsp");
+ return RFAILED;
+ }
+ /* pack the address of the structure */
+ CMCHKPK(oduPackPointer, (PTR)rachRsrcRsp, mBuf);
+ }
+ else
+ {
+ DU_LOG("\nERROR --> MAC: Only LWLC supported for packDuMacRachRsrcRsp");
+ return RFAILED;
+ }
+
+ return ODU_POST_TASK(pst,mBuf);
+}
+
+/*******************************************************************
+ *
+ * @brief Unpacks RACH resource Response received from MAC
+ *
+ * @details
+ *
+ * Function : unpackDuMacRachRsrcRsp
+ *
+ * Functionality:
+ * Unpacks RACH resource Response received from MAC
+ *
+ * @params[in] Pointer to Handler
+ * Post structure pointer
+ * Message Buffer
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t unpackDuMacRachRsrcRsp(MacDuRachRsrcRspFunc func, Pst *pst, Buffer *mBuf)
+{
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ MacRachRsrcRsp *rachRsrcRsp;
+
+ /* unpack the address of the structure */
+ CMCHKUNPK(oduUnpackPointer, (PTR *)&rachRsrcRsp, mBuf);
+ ODU_PUT_MSG_BUF(mBuf);
+ return (*func)(pst, rachRsrcRsp);
+ }
+ else
+ {
+ /* Nothing to do for other selectors */
+ DU_LOG("\nERROR --> DU APP : Only LWLC supported for RACH resource Response ");
+ ODU_PUT_MSG_BUF(mBuf);
+ }
+
+ return RFAILED;
+}
/*******************************************************************
*
* @brief Packs and Sends UE Delete Request from DUAPP to MAC
*
* @details
*
- * Function : packDuMacSliceReCfgRsp
+ * Function : packMacSlotInd
*
* Functionality:
* Pack and send Slot ind from MAC to DU APP
ODU_PUT_MSG_BUF(mBuf);
return RFAILED;
}
+
+/*******************************************************************
+ *
+ * @brief Pack and send Dl Pcch indication to MAC
+ *
+ * @details
+ *
+ * Function : packDuMacDlPcchInd
+ *
+ * Functionality:
+ * Pack and send Dl Pcch indication to MAC
+ *
+ * @params[in] Post structure
+ * MacPcchInd *pcchInd;
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+
+uint8_t packDuMacDlPcchInd(Pst *pst, MacPcchInd *pcchInd)
+{
+ Buffer *mBuf = NULLP;
+
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK)
+ {
+ DU_LOG("\nERROR --> MAC : packDuMacDlPcchInd(): Memory allocation failed ");
+ return RFAILED;
+ }
+ CMCHKPK(oduPackPointer,(PTR)pcchInd, mBuf);
+ return ODU_POST_TASK(pst,mBuf);
+ }
+ else
+ {
+ DU_LOG("\nERROR --> MAC: packDuMacDlPcchInd(): Only LWLC supported ");
+ }
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Unpacks downlink pcch indication received from DU APP
+ *
+ * @details
+ *
+ * Function : unpackMacDlPcchInd
+ *
+ * Functionality:
+ * Unpacks downlink pcch indication received from DU APP
+ *
+ * @params[in] Pointer to Handler
+ * Post structure pointer
+ * Message Buffer
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+
+uint8_t unpackMacDlPcchInd(DuMacDlPcchInd func, Pst *pst, Buffer *mBuf)
+{
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ MacPcchInd *pcchInd=NULLP;
+
+ /* unpack the address of the structure */
+ CMCHKUNPK(oduUnpackPointer, (PTR *)&pcchInd, mBuf);
+ ODU_PUT_MSG_BUF(mBuf);
+ return (*func)(pst, pcchInd);
+ }
+ else
+ {
+ /* Nothing to do for other selectors */
+ DU_LOG("\nERROR --> DU APP : unpackMacDlPcchInd(): Only LWLC supported");
+ ODU_PUT_MSG_BUF(mBuf);
+ }
+
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Searches for first unset bit in ueBitMap
+ *
+ * @details
+ *
+ * Function : getFreeBitFromUeBitMap
+ *
+ * Functionality: Searches for first unset bit in ueBitMap of
+ * a cell. Search starts from LSB to MSB. Returns index of the
+ * free bit, considering LSB at index 0 and increasing index
+ * towards MSB.
+ *
+ * @params[in] Cell Id
+ * @return Index of free bit - success
+ * -1 - failure
+ *
+ * ****************************************************************/
+int8_t getFreeBitFromUeBitMap(uint16_t cellId)
+{
+ uint8_t bitIdx = 0; /* bit position */
+ uint16_t cellIdx = 0; /* Index to acces ueBitMapPerCell[] */
+ uint64_t mask = 1; /* bit mask */
+
+ GET_CELL_IDX(cellId, cellIdx);
+ while(bitIdx < 64)
+ {
+ /* Find the first unset bit in Bit Map */
+ if((ueBitMapPerCell[cellIdx] & (mask << bitIdx)) == 0)
+ {
+ SET_ONE_BIT(bitIdx, ueBitMapPerCell[cellIdx]);
+ return bitIdx;
+ }
+ else
+ bitIdx++;
+ }
+ return -1;
+}
+
+/*******************************************************************
+ *
+ * @brief Unset a previously set bit in UeBitMap
+ *
+ * @details
+ *
+ * Function : unsetBitInUeBitMap
+ *
+ * Functionality: Searches for bit at given index and unset it.
+ *
+ * @params[in] Cell Id
+ * Bit Index
+ * @return void
+ *
+ * ****************************************************************/
+void unsetBitInUeBitMap(uint16_t cellId, uint8_t bitPos)
+{
+ uint16_t cellIdx;
+
+ GET_CELL_IDX(cellId, cellIdx);
+ UNSET_ONE_BIT(bitPos, ueBitMapPerCell[cellIdx]);
+}
+
/**********************************************************************
End of file
**********************************************************************/