+/*******************************************************************
+ *
+ * @brief Pack and post DL RRC Message from DU APP to RLC
+ *
+ * @details
+ *
+ * Function : packDlRrcMsgToRlc
+ *
+ * Functionality: Pack and post DL RRC Message from DU APP to RLC
+ *
+ * @params[in] Post structure
+ * DL RRC Message info
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t packDlRrcMsgToRlc(Pst *pst, RlcDlRrcMsgInfo *dlRrcMsgInfo)
+{
+ Buffer *mBuf = NULLP;
+
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK)
+ {
+ DU_LOG("\nRLC : Memory allocation failed at packRlcDlRrcMsgToRlc");
+ return RFAILED;
+ }
+ /* pack the address of the structure */
+ CMCHKPK(oduPackPointer,(PTR)dlRrcMsgInfo, mBuf);
+ return ODU_POST_TASK(pst,mBuf);
+ }
+ else
+ {
+ DU_LOG("\nRLC: Only LWLC supported for packDlRrcMsgToRlc");
+ }
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Unpacks DL RRC Message info received at RLC from DU APP
+ *
+ * @details
+ *
+ * Function : unpackDlRrcMsgToRlc
+ *
+ * Functionality:
+ * Unpacks the DL RRC Message info received at RLC from DU APP
+ *
+ * @params[in] Pointer to handler function
+ * Post structure
+ * Messae buffer to be unpacked
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t unpackDlRrcMsgToRlc(DuDlRrcMsgToRlcFunc func, Pst *pst, Buffer *mBuf)
+{
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ RlcDlRrcMsgInfo *dlRrcMsgInfo;
+ /* unpack the address of the structure */
+ CMCHKUNPK(oduUnpackPointer, (PTR *)&dlRrcMsgInfo, mBuf);
+ ODU_PUT_MSG_BUF(mBuf);
+ return (*func)(pst, dlRrcMsgInfo);
+ }
+ else
+ {
+ /* Nothing to do for other selectors */
+ DU_LOG("\nRLC: Only LWLC supported for UL RRC Message transfer ");
+ ODU_PUT_MSG_BUF(mBuf);
+ }
+ return RFAILED;
+}
+
+/*******************************************************************
+*
+* @brief packs RRC delivery report sending from RLC to DU APP
+*
+* @details
+*
+* Function : packRrcDeliveryReportToDu
+*
+* Functionality:
+* Unpacks the DL RRC Message info received at RLC from DU APP
+*
+* @params[in] Pointer to handler function
+* Post structure
+* Messae buffer to be unpacked
+* @return ROK - success
+* RFAILED - failure
+*
+* ****************************************************************/
+uint8_t packRrcDeliveryReportToDu(Pst *pst, RrcDeliveryReport *rrcDeliveryReport)
+{
+ Buffer *mBuf = NULLP;
+
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK)
+ {
+ DU_LOG("\nRLC : Memory allocation failed at packRrcDeliveryReportToDu");
+ return RFAILED;
+ }
+ /* pack the address of the structure */
+ CMCHKPK(oduPackPointer,(PTR)rrcDeliveryReport, mBuf);
+ return ODU_POST_TASK(pst,mBuf);
+ }
+ else
+ {
+ DU_LOG("\nRLC: Only LWLC supported for packRrcDeliveryReportToDu");
+ }
+ return RFAILED;
+ }
+
+/*******************************************************************
+*
+* @brief Unpacks RRC Delivery Report info received at DU APP from RIC
+*
+* @details
+*
+* Function : unpackRrcDeliveryReportToDu
+*
+* Functionality:
+* Unpacks RRC Delivery Report info received at DU APP from RIC
+*
+* @params[in] Pointer to handler function
+* Post structure
+* Messae buffer to be unpacked
+* @return ROK - success
+* RFAILED - failure
+*
+* ****************************************************************/
+uint8_t unpackRrcDeliveryReportToDu(RlcRrcDeliveryReportToDuFunc func, Pst *pst, Buffer *mBuf)
+{
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ RrcDeliveryReport *rrcDeliveryReport;
+ /* unpack the address of the structure */
+ CMCHKUNPK(oduUnpackPointer, (PTR *)&rrcDeliveryReport, mBuf);
+ ODU_PUT_MSG_BUF(mBuf);
+ return (*func)(pst, rrcDeliveryReport);
+ }
+ else
+ {
+ /* Nothing to do for other selectors */
+ DU_LOG("\nRLC: Only LWLC supported for RRC delivery Message transfer ");
+ ODU_PUT_MSG_BUF(mBuf);
+ }
+
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Packs and Sends UE Reconfig Request from DUAPP to RLC
+ *
+ * @details
+ *
+ * Function : packDuRlcUeReconfigReq
+ *
+ * Functionality:
+ * Packs and Sends UE Reconfig Request from DUAPP to RLC
+ *
+ *
+ * @params[in] Post structure pointer
+ * RlcUeCfg pointer
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t packDuRlcUeReconfigReq(Pst *pst, RlcUeCfg *ueCfg)
+{
+ Buffer *mBuf = NULLP;
+
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK)
+ {
+ DU_LOG("\nRLC : Memory allocation failed at packDuRlcUeReconfigReq");
+ return RFAILED;
+ }
+ /* pack the address of the structure */
+ CMCHKPK(oduPackPointer,(PTR)ueCfg, mBuf);
+ }
+ else
+ {
+ DU_LOG("\nRLC: Only LWLC supported for packDuRlcUeReconfigReq");
+ return RFAILED;
+ }
+
+ return ODU_POST_TASK(pst,mBuf);
+}
+
+/*******************************************************************
+ * @brief Unpacks UE Reconfig Request received from DU APP
+ *
+ * @details
+ *
+ * Function : unpackRlcUeReconfigReq
+ *
+ * Functionality:
+ * Unpacks UE Create Request received from DU APP
+ *
+ * @params[in] Pointer to Handler
+ * Post structure pointer
+ * Message Buffer
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t unpackRlcUeReconfigReq(DuRlcUeReconfigReq func, Pst *pst, Buffer *mBuf)
+{
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ RlcUeCfg *ueCfg;
+ /* unpack the address of the structure */
+ CMCHKUNPK(oduUnpackPointer, (PTR *)&ueCfg, mBuf);
+ ODU_PUT_MSG_BUF(mBuf);
+ return (*func)(pst, ueCfg);
+ }
+ else
+ {
+ /* Nothing to do for other selectors */
+ DU_LOG("\nRLC: Only LWLC supported for UE Create Request ");
+ ODU_PUT_MSG_BUF(mBuf);
+ }
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Pack and send DL RRC message Response from RLC to DU APP
+ *
+ * @details
+ *
+ * Function : packRlcDlRrcMsgRspToDu
+ *
+ * Functionality:
+ * Pack and send DL RRC message Response from RLC to DU APP
+ *
+ * @params[in] Post structure
+ * DL RRC Msg Response
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t packRlcDlRrcMsgRspToDu(Pst *pst, RlcDlRrcMsgRsp *dlRrcMsgRsp)
+{
+ Buffer *mBuf = NULLP;
+
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK)
+ {
+ DU_LOG("\nRLC : Memory allocation failed at packRlcDlRrcMsgRspToDu");
+ return RFAILED;
+ }
+ /* pack the address of the structure */
+ CMCHKPK(oduPackPointer,(PTR)dlRrcMsgRsp, mBuf);
+ return ODU_POST_TASK(pst,mBuf);
+ }
+ else
+ {
+ DU_LOG("\nRLC: Only LWLC supported for packRlcDlRrcMsgRspToDu");
+ }
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Unpack DL RRC Msg Response received at DU APP from RLC
+ *
+ * @details
+ *
+ * Function : unpackRlcDlRrcMsgRspToDu
+ *
+ * Functionality:
+ * Unpack DL RRC Msg Response received at DU APP from RLC
+ *
+ * @params[in]
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t unpackRlcDlRrcMsgRspToDu(RlcDlRrcMsgRspToDuFunc func, Pst *pst, Buffer *mBuf)
+{
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ RlcDlRrcMsgRsp *dlRrcMsgRsp;
+ /* unpack the address of the structure */
+ CMCHKUNPK(oduUnpackPointer, (PTR *)&dlRrcMsgRsp, mBuf);
+ ODU_PUT_MSG_BUF(mBuf);
+ return (*func)(pst, dlRrcMsgRsp);
+ }
+ else
+ {
+ /* Nothing to do for other selectors */
+ DU_LOG("\nRLC: Only LWLC supported for DL RRC Message transfer ");
+ ODU_PUT_MSG_BUF(mBuf);
+ }
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Pack and send UL user data from RLC to DU APP
+ *
+ * @details
+ *
+ * Function : packRlcUlUserDataToDu
+ *
+ * Functionality:
+ * Pack and send UL User Data from RLC to DU APP
+ *
+ * @params[in] Post structure
+ * UL user data
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t packRlcUlUserDataToDu(Pst *pst, RlcUlUserDatInfo *ulUserData)
+{
+ Buffer *mBuf = NULLP;
+
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK)
+ {
+ DU_LOG("\nERROR --> RLC UL: Memory allocation failed at packRlcUlUserDataToDu");
+ return RFAILED;
+ }
+ /* pack the address of the structure */
+ CMCHKPK(oduPackPointer,(PTR)ulUserData, mBuf);
+ return ODU_POST_TASK(pst,mBuf);
+ }
+ else
+ {
+ DU_LOG("\nERROR --> RLC UL: Only LWLC supported for packRlcUlUserDataToDu");
+ }
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Unpack UL user data received at DU APP from RLC
+ *
+ * @details
+ *
+ * Function : unpackRlcUlUserDataToDu
+ *
+ * Functionality:
+ * Unpack UL user data received at DU APP from RLC
+ *
+ * @params[in]
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t unpackRlcUlUserDataToDu(RlcUlUserDataToDuFunc func, Pst *pst, Buffer *mBuf)
+{
+ if(pst->selector == ODU_SELECTOR_LWLC)
+ {
+ RlcUlUserDatInfo *ulUserData;
+ /* unpack the address of the structure */
+ CMCHKUNPK(oduUnpackPointer, (PTR *)&ulUserData, mBuf);
+ ODU_PUT_MSG_BUF(mBuf);
+ return (*func)(pst, ulUserData);
+ }
+ else
+ {
+ /* Nothing to do for other selectors */
+ DU_LOG("\nERROR --> DU APP: Only LWLC supported for UL User data transfer ");
+ ODU_PUT_MSG_BUF(mBuf);
+ }
+
+ return RFAILED;
+}