X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fdu_app_mac_inf.c;h=385ca1809fee6e94f4dab67c3bb3003fdb337b3b;hb=438594773b3c93b5bbe8d1cb1d16626a02238b8b;hp=1a00339ac057a25cd4a010cbc6c35a1b0c6861ce;hpb=e550b2091fb29289d12a5722b189acbede7862f0;p=o-du%2Fl2.git diff --git a/src/cm/du_app_mac_inf.c b/src/cm/du_app_mac_inf.c index 1a00339ac..385ca1809 100644 --- a/src/cm/du_app_mac_inf.c +++ b/src/cm/du_app_mac_inf.c @@ -14,26 +14,9 @@ # See the License for the specific language governing permissions and # # limitations under the License. # ################################################################################ -*******************************************************************************/ - -#include "envopt.h" /* Environment options */ -#include "envdep.h" /* Environment dependent */ -#include "envind.h" /* Environment independent */ -#include "gen.h" /* General */ -#include "ssi.h" /* System services */ -#include "ss_queue.h" -#include "ss_task.h" -#include "ss_msg.h" - -#include "gen.x" /* general */ -#include "ssi.x" /* system services */ -#include "cm_tkns.x" /* Common Token Definitions */ -#include "cm_llist.x" /* Common Link List Definitions */ -#include "cm_lib.x" /* Common Library Definitions */ -#include "cm_hash.x" /* Common Hash List Definitions */ -#include "cm_lte.x" /* Common LTE Defines */ - -#include "du_cfg.h" + *******************************************************************************/ + +#include "common_def.h" #include "du_app_mac_inf.h" /************************************************************************** @@ -53,28 +36,29 @@ * RFAILED - failure * ***************************************************************************/ -uint16_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg) +uint8_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg) { - if(pst->selector == DU_SELECTOR_LC) + if(pst->selector == ODU_SELECTOR_LC) { /* we are now implemented only light wieght lossely coupled interface */ return RFAILED; } - else if(pst->selector == DU_SELECTOR_LWLC) + else if(pst->selector == ODU_SELECTOR_LWLC) { Buffer *mBuf = NULLP; - if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) + if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { - RETVALUE(RFAILED); + return RFAILED; } /* pack the address of the structure */ - CMCHKPK(cmPkPtr,(PTR)macCellCfg, mBuf); + CMCHKPK(oduPackPointer,(PTR)macCellCfg, mBuf); - DU_LOG("\nDU-APP : MAC CELL config sent"); - RETVALUE(SPstTsk(pst,mBuf)); + DU_LOG("\nDEBUG --> DU-APP : MAC CELL config sent"); + return ODU_POST_TASK(pst,mBuf); } + return ROK; } /************************************************************************** @@ -95,18 +79,15 @@ uint16_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg) * RFAILED - failure * ***************************************************************************/ -void unpackDuMacCellCfg( - DuMacCellCfgReq func, - Pst *pst, - Buffer *mBuf) +uint8_t unpackDuMacCellCfg(DuMacCellCfgReq func, Pst *pst, Buffer *mBuf) { - U16 ret = ROK; + uint16_t ret = ROK; MacCellCfg *macCellCfg; - if(pst->selector == DU_SELECTOR_LWLC) + if(pst->selector == ODU_SELECTOR_LWLC) { /* unpack the address of the structure */ - CMCHKUNPK(cmUnpkPtr, (PTR *)&macCellCfg, mBuf); + CMCHKUNPK(oduUnpackPointer, (PTR *)&macCellCfg, mBuf); ret = (*func)(pst, macCellCfg); } else @@ -114,7 +95,7 @@ void unpackDuMacCellCfg( /* only LWLC is implemented now */ ret = ROK; } - + return ret; } @@ -135,23 +116,23 @@ void unpackDuMacCellCfg( * RFAILED - failure * ***************************************************************************/ -uint16_t packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) +uint8_t packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) { - if(pst->selector == DU_SELECTOR_LC) + if(pst->selector == ODU_SELECTOR_LC) { Buffer *mBuf = NULLP; - if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) + if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { - RETVALUE(RFAILED); + return RFAILED; } /* pack the transaction ID in CNF structure */ - CMCHKPK(SPkU8, macCellCfgCfm->rsp, mBuf); - CMCHKPK(SPkU16, macCellCfgCfm->transId, mBuf); + CMCHKPK(oduUnpackUInt16, macCellCfgCfm->cellId, mBuf); + CMCHKPK(oduUnpackUInt8, macCellCfgCfm->rsp, mBuf); - RETVALUE(SPstTsk(pst,mBuf)); + return ODU_POST_TASK(pst,mBuf); } - else if(pst->selector == DU_SELECTOR_LWLC) + else if(pst->selector == ODU_SELECTOR_LWLC) { /* only LC is supported */ return RFAILED; @@ -176,24 +157,21 @@ uint16_t packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) * RFAILED - failure * ***************************************************************************/ -uint16_t unpackMacCellCfgCfm( - DuMacCellCfgCfm func, - Pst *pst, - Buffer *mBuf) +uint8_t unpackMacCellCfgCfm(DuMacCellCfgCfm func, Pst *pst, Buffer *mBuf) { MacCellCfgCfm macCellCfgCfm; - if(pst->selector == DU_SELECTOR_LC) + if(pst->selector == ODU_SELECTOR_LC) { /* unpack the transaction ID in CNF structure */ - CMCHKUNPK(SUnpkU16, &(macCellCfgCfm.transId), mBuf); - CMCHKUNPK(SUnpkU8, &(macCellCfgCfm.rsp), mBuf); - - RETVALUE((*func)(&macCellCfgCfm)); + CMCHKUNPK(oduPackUInt8, &(macCellCfgCfm.rsp), mBuf); + CMCHKUNPK(oduPackUInt16, &(macCellCfgCfm.cellId), mBuf); + return (*func)(pst, &macCellCfgCfm); } else { /* only loose coupling is suported */ + return ROK; } } @@ -203,40 +181,40 @@ uint16_t unpackMacCellCfgCfm( * * @details * - * Function : packMacCellStartReq + * Function : packMacCellStart * * Functionality: * Packs and Sends Cell Start Request to MAC * * @params[in] Post structure pointer - * MacCellStartInfo pointer + * Cell Id * @return ROK - success * RFAILED - failure * * ****************************************************************/ -uint16_t packMacCellStartReq(Pst *pst, MacCellStartInfo *cellStartInfo) +uint8_t packMacCellStart(Pst *pst, OduCellId *cellId) { - if(pst->selector == DU_SELECTOR_LC) + Buffer *mBuf = NULLP; + + if(pst->selector == ODU_SELECTOR_LC) { /* Loose coupling not supported */ return RFAILED; } - else if(pst->selector == DU_SELECTOR_LWLC) + else if(pst->selector == ODU_SELECTOR_LWLC) { - Buffer *mBuf = NULLP; - if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) + if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { - DU_LOG("\nDU APP : Memory allocation failed for cell start req pack"); - RETVALUE(RFAILED); + DU_LOG("\nERROR --> DU APP : Memory allocation failed for cell start req pack"); + return RFAILED; } /* pack the address of the structure */ - CMCHKPK(cmPkPtr,(PTR)cellStartInfo, mBuf); + CMCHKPK(oduPackPointer,(PTR)cellId, mBuf); - return SPstTsk(pst,mBuf); } - return ROK; + return ODU_POST_TASK(pst,mBuf); } /******************************************************************* @@ -245,33 +223,33 @@ uint16_t packMacCellStartReq(Pst *pst, MacCellStartInfo *cellStartInfo) * * @details * - * Function : unpackMaCellStartReq + * Function : unpackMaCellStart * * Functionality: * Unpacks MAC Cell Start Request from DU APP * * @params[in] Function pointer of cell start request handler * Post structure pointer - * Cell Start Request Info Pointer + * Message Buffer * @return ROK - success * RFAILED - failure * * ****************************************************************/ -uint16_t unpackMacCellStartReq(DuMacCellStartReq func, Pst *pst, Buffer *mBuf) +uint8_t unpackMacCellStart(DuMacCellStart func, Pst *pst, Buffer *mBuf) { - MacCellStartInfo *cellStartInfo; - - if(pst->selector == DU_SELECTOR_LWLC) + OduCellId *cellId; + + if(pst->selector == ODU_SELECTOR_LWLC) { /* unpack the address of the structure */ - CMCHKUNPK(cmUnpkPtr, (PTR *)&cellStartInfo, mBuf); - SPutMsg(mBuf); - return (*func)(pst, cellStartInfo); + CMCHKUNPK(oduUnpackPointer, (PTR *)&cellId, mBuf); + ODU_PUT_MSG_BUF(mBuf); + return (*func)(pst, cellId); } else { /* Nothing to do for loose coupling */ - SPutMsg(mBuf); + ODU_PUT_MSG_BUF(mBuf); return ROK; } } @@ -282,38 +260,38 @@ uint16_t unpackMacCellStartReq(DuMacCellStartReq func, Pst *pst, Buffer *mBuf) * * @details * - * Function : packMacCellStopReq + * Function : packMacCellStop * * Functionality: * Packs and Send cell stop request to MAC * * @params[in] Post structure pointer - * Cell stop info structure + * Cell Id * @return ROK - success * RFAILED - failure * * ****************************************************************/ -uint16_t packMacCellStopReq(Pst *pst, MacCellStopInfo *cellStopInfo) +uint8_t packMacCellStop(Pst *pst, OduCellId *cellId) { - if(pst->selector == DU_SELECTOR_LC) + if(pst->selector == ODU_SELECTOR_LC) { /* Loose coupling not supported */ return RFAILED; } - else if(pst->selector == DU_SELECTOR_LWLC) + else if(pst->selector == ODU_SELECTOR_LWLC) { Buffer *mBuf = NULLP; - - if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) + + if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { - DU_LOG("\nDU APP : Memory allocation failed for cell stop req pack"); - RETVALUE(RFAILED); + DU_LOG("\nERROR --> DU APP : Memory allocation failed for cell stop req pack"); + return RFAILED; } - + /* pack the address of the structure */ - CMCHKPK(cmPkPtr,(PTR)cellStopInfo, mBuf); + CMCHKPK(oduPackPointer,(PTR)cellId, mBuf); - return SPstTsk(pst,mBuf); + return ODU_POST_TASK(pst,mBuf); } return ROK; } @@ -324,7 +302,7 @@ uint16_t packMacCellStopReq(Pst *pst, MacCellStopInfo *cellStopInfo) * * @details * - * Function : unpackMaCellStopReq + * Function : unpackMaCellStop * * Functionality: * Unpacks cell stop request from DU APP @@ -336,78 +314,172 @@ uint16_t packMacCellStopReq(Pst *pst, MacCellStopInfo *cellStopInfo) * RFAILED - failure * * ****************************************************************/ -uint16_t unpackMacCellStopReq(DuMacCellStopReq func, Pst *pst, Buffer *mBuf) +uint8_t unpackMacCellStop(DuMacCellStop func, Pst *pst, Buffer *mBuf) { - MacCellStopInfo *cellStopInfo; - - if(pst->selector == DU_SELECTOR_LWLC) + OduCellId *cellId; + + if(pst->selector == ODU_SELECTOR_LWLC) { /* unpack the address of the structure */ - CMCHKUNPK(cmUnpkPtr, (PTR *)&cellStopInfo, mBuf); - SPutMsg(mBuf); - return (*func)(pst, cellStopInfo); + CMCHKUNPK(oduUnpackPointer, (PTR *)&cellId, mBuf); + ODU_PUT_MSG_BUF(mBuf); + return (*func)(pst, cellId); } else { /* Nothing to do for loose coupling */ - SPutMsg(mBuf); + ODU_PUT_MSG_BUF(mBuf); return ROK; } } /******************************************************************* * - * @brief Packs and Sends slot ind from MAC to DUAPP + * @brief Packs and Sends cell up ind from MAC to DUAPP * * @details * - * Function : packMacSlotInd + * Function : packMacCellUpInd * * Functionality: - * Packs and Sends slot ind from MAC to DUAPP + * Packs and Sends cell up ind from MAC to DUAPP * * @params[in] Post structure pointer - * Slot Info pointer + * Cell Id * @return ROK - success * RFAILED - failure * * ****************************************************************/ -uint16_t packMacSlotInd(Pst *pst, SlotInfo *slotInfo ) +uint8_t packMacCellUpInd(Pst *pst, OduCellId *cellId) { - if(pst->selector == DU_SELECTOR_LC || pst->selector == DU_SELECTOR_TC) + Buffer *mBuf = NULLP; + + if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { - /* Loose coupling not supported */ - DU_LOG("\nDU APP : Only LWLC supported"); + DU_LOG("\nERROR --> DU APP : Memory allocation failed for packMacCellUpInd"); return RFAILED; } - else if(pst->selector == DU_SELECTOR_LWLC) - { - Buffer *mBuf = NULLP; - if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) - { - DU_LOG("\nDU APP : Memory allocation failed for cell start req pack"); - RETVALUE(RFAILED); - } - + if(pst->selector == ODU_SELECTOR_LC) + { + CMCHKPK(oduUnpackUInt16, cellId->cellId, mBuf); + CM_FREE_SHRABL_BUF(pst->region, pst->pool, cellId, sizeof(OduCellId)); + cellId = NULL; + } + else if(pst->selector == ODU_SELECTOR_LWLC) + { /* pack the address of the structure */ - CMCHKPK(cmPkPtr,(PTR)slotInfo, mBuf); + CMCHKPK(oduPackPointer,(PTR)cellId, mBuf); + } + else + { + ODU_PUT_MSG_BUF(mBuf); + } - return SPstTsk(pst,mBuf); + return ODU_POST_TASK(pst, mBuf); +} + +/******************************************************************* + * + * @brief Unpacks cell up indication from MAC + * + * @details + * + * Function : unpackMacCellUpInd + * + * Functionality: + * Unpacks cell up indication from MAC + * + * @params[in] Pointer to Handler + * Post structure pointer + * Message Buffer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t unpackMacCellUpInd(DuMacCellUpInd func, Pst *pst, Buffer *mBuf) +{ + if(pst->selector == ODU_SELECTOR_LWLC) + { + OduCellId *cellId; + + /* unpack the address of the structure */ + CMCHKUNPK(oduUnpackPointer, (PTR *)&cellId, mBuf); + ODU_PUT_MSG_BUF(mBuf); + return (*func)(pst, cellId); + } + else if(pst->selector == ODU_SELECTOR_LC) + { + OduCellId cellId; + CMCHKUNPK(oduPackUInt16, &cellId.cellId, mBuf); + ODU_PUT_MSG_BUF(mBuf); + return (*func)(pst, &cellId); + } + else + { + /* Nothing to do for loose coupling */ + ODU_PUT_MSG_BUF(mBuf); + return ROK; } return ROK; } /******************************************************************* * - * @brief Unpacks slot indication from MAC + * @brief Packs and Sends stop ind from MAC to DUAPP * * @details * - * Function : unpackMacSlotInd + * Function : packMacStopInd * * Functionality: - * Unpacks slot indication from MAC + * Packs and Sends stop ind from MAC to DUAPP + * + * @params[in] Post structure pointer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t packMacStopInd(Pst *pst, OduCellId *cellId) +{ + Buffer *mBuf = NULLP; + + if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) + { + DU_LOG("\nERROR --> DU APP : Memory allocation failed for stop Ind pack"); + return RFAILED; + } + + if(pst->selector == ODU_SELECTOR_LC) + { + /*pack the payload here*/ + CMCHKPK(oduUnpackUInt16, cellId->cellId, mBuf); + CM_FREE_SHRABL_BUF(pst->region, pst->pool, cellId, sizeof(OduCellId)); + cellId = NULL; + } + else if(pst->selector == ODU_SELECTOR_LWLC) + { + /* pack the address of the structure */ + CMCHKPK(oduPackPointer,(PTR)cellId, mBuf); + } + else + { + ODU_PUT_MSG_BUF(mBuf); + } + + return ODU_POST_TASK(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 @@ -416,26 +488,421 @@ uint16_t packMacSlotInd(Pst *pst, SlotInfo *slotInfo ) * RFAILED - failure * * ****************************************************************/ -uint16_t unpackMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf) +uint8_t unpackMacStopInd(DuMacStopInd func, Pst *pst, Buffer *mBuf) { - SlotInfo *slotInfo; - - if(pst->selector == DU_SELECTOR_LWLC) + if(pst->selector == ODU_SELECTOR_LWLC) { + OduCellId *cellId; /* unpack the address of the structure */ - CMCHKUNPK(cmUnpkPtr, (PTR *)&slotInfo, mBuf); - SPutMsg(mBuf); - return (*func)(pst, slotInfo); + CMCHKUNPK(oduUnpackPointer, (PTR *)&cellId, mBuf); + ODU_PUT_MSG_BUF(mBuf); + return (*func)(pst, cellId); + } + else if(pst->selector == ODU_SELECTOR_LC) + { + OduCellId cellId; + CMCHKUNPK(oduPackUInt16, &(cellId.cellId), mBuf); + + ODU_PUT_MSG_BUF(mBuf); + return (*func)(pst, &cellId); + } else { /* Nothing to do for loose coupling */ - SPutMsg(mBuf); + ODU_PUT_MSG_BUF(mBuf); return ROK; } return ROK; } +/******************************************************************* + * + * @brief Packs and Sends UL CCCH Ind from MAC to DUAPP + * + * @details + * + * Function : packMacUlCcchInd + * + * Functionality: + * Packs and Sends UL CCCH Ind from MAC to DUAPP + * + * @params[in] Post structure pointer + * UL CCCH Ind pointer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t packMacUlCcchInd(Pst *pst, UlCcchIndInfo *ulCcchIndInfo) +{ + 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 packMacUlCcchInd"); + return RFAILED; + } + /* pack the address of the structure */ + CMCHKPK(oduPackPointer,(PTR)ulCcchIndInfo, mBuf); + } + else + { + DU_LOG("\nERROR --> MAC: Only LWLC supported for UL CCCH Ind "); + return RFAILED; + } + + return ODU_POST_TASK(pst,mBuf); +} + +/******************************************************************* + * + * @brief Unpacks UL CCCH indication from MAC + * + * @details + * + * Function : unpackMacUlCcchInd + * + * Functionality: + * Unpacks UL CCCH indication from MAC + * + * @params[in] Pointer to Handler + * Post structure pointer + * Message Buffer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t unpackMacUlCcchInd(DuMacUlCcchInd func, Pst *pst, Buffer *mBuf) +{ + if(pst->selector == ODU_SELECTOR_LWLC) + { + UlCcchIndInfo *ulCcchIndInfo; + + /* unpack the address of the structure */ + CMCHKUNPK(oduUnpackPointer, (PTR *)&ulCcchIndInfo, mBuf); + ODU_PUT_MSG_BUF(mBuf); + return (*func)(pst, ulCcchIndInfo); + } + else + { + /* Nothing to do for other selectors */ + DU_LOG("\nERROR --> MAC : Only LWLC supported for UL CCCH Ind "); + ODU_PUT_MSG_BUF(mBuf); + } + return RFAILED; +} + +/******************************************************************* + * + * @brief Packs and Sends DL CCCH Ind from DUAPP to MAC + * + * @details + * + * Function : packMacDlCcchInd + * + * Functionality: + * Packs and Sends DL CCCH Ind from DUAPP to MAC + * + * + * @params[in] Post structure pointer + * DL CCCH Ind pointer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t packMacDlCcchInd(Pst *pst, DlCcchIndInfo *dlCcchIndInfo) +{ + 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 packMacDlCcchInd"); + return RFAILED; + } + /* pack the address of the structure */ + CMCHKPK(oduPackPointer,(PTR)dlCcchIndInfo, mBuf); + } + else + { + DU_LOG("\nERROR --> DU APP : Only LWLC supported for DL CCCH Ind "); + return RFAILED; + } + + return ODU_POST_TASK(pst,mBuf); +} + +/******************************************************************* + * + * @brief Unpacks DL CCCH indication from DU APP + * + * @details + * + * Function : unpackMacDlCcchInd + * + * Functionality: + * Unpacks DL CCCH indication from DU APP + * + * @params[in] Pointer to Handler + * Post structure pointer + * Message Buffer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t unpackMacDlCcchInd(DuMacDlCcchInd func, Pst *pst, Buffer *mBuf) +{ + if(pst->selector == ODU_SELECTOR_LWLC) + { + DlCcchIndInfo *dlCcchIndInfo; + + /* unpack the address of the structure */ + CMCHKUNPK(oduUnpackPointer, (PTR *)&dlCcchIndInfo, mBuf); + ODU_PUT_MSG_BUF(mBuf); + return (*func)(pst, dlCcchIndInfo); + } + else + { + /* Nothing to do for other selectors */ + DU_LOG("\nERROR --> DU APP : Only LWLC supported for DL CCCH Ind "); + ODU_PUT_MSG_BUF(mBuf); + } + + return RFAILED; +} + +/******************************************************************* + * + * @brief Packs and Sends UE create Request from DUAPP to MAC + * + * @details + * + * Function : packDuMacUeCreateReq + * + * Functionality: + * Packs and Sends UE Create Request from DUAPP to MAC + * + * + * @params[in] Post structure pointer + * MacUeCfg pointer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t packDuMacUeCreateReq(Pst *pst, MacUeCfg *ueCfg) +{ + 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 packDuMacUeCreateReq"); + return RFAILED; + } + /* pack the address of the structure */ + CMCHKPK(oduPackPointer,(PTR)ueCfg, mBuf); + } + else + { + DU_LOG("\nERROR --> MAC: Only LWLC supported for packDuMacUeCreateReq"); + return RFAILED; + } + + return ODU_POST_TASK(pst,mBuf); +} + +/******************************************************************* + * + * @brief Unpacks UE Create Request received from DU APP + * + * @details + * + * Function : unpackMacUeCreateReq + * + * 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 unpackMacUeCreateReq(DuMacUeCreateReq func, Pst *pst, Buffer *mBuf) +{ + if(pst->selector == ODU_SELECTOR_LWLC) + { + MacUeCfg *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("\nERROR --> DU APP : Only LWLC supported for UE Create Request "); + ODU_PUT_MSG_BUF(mBuf); + } + + return RFAILED; +} + +/******************************************************************* + * + * @brief Pack and send UE config response from MAC to DU APP + * + * @details + * + * Function : packDuMacUeCfgRsp + * + * Functionality: + * Pack and send UE config response from MAC to DU APP + * + * @params[in] + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t packDuMacUeCfgRsp(Pst *pst, MacUeCfgRsp *cfgRsp) +{ + 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 packDuMacUeCfgRsp"); + return RFAILED; + } + /* pack the address of the structure */ + CMCHKPK(oduPackPointer,(PTR)cfgRsp, mBuf); + } + else + { + DU_LOG("\nERROR --> MAC: Only LWLC supported for packDuMacUeCfgRsp"); + return RFAILED; + } + + return ODU_POST_TASK(pst,mBuf); +} + +/******************************************************************* + * + * @brief Unpack UE Config Response from MAC to DU APP + * + * @details + * + * Function : unpackDuMacUeCfgRsp + * + * Functionality: Unpack UE Config Response from MAC to DU APP + * + * @params[in] + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t unpackDuMacUeCfgRsp(MacDuUeCfgRspFunc func, Pst *pst, Buffer *mBuf) +{ + if(pst->selector == ODU_SELECTOR_LWLC) + { + MacUeCfgRsp *cfgRsp = NULLP; + + /* unpack the address of the structure */ + CMCHKUNPK(oduUnpackPointer, (PTR *)&cfgRsp, mBuf); + ODU_PUT_MSG_BUF(mBuf); + return (*func)(pst, cfgRsp); + } + + ODU_PUT_MSG_BUF(mBuf); + return RFAILED; +} + +/******************************************************************* + * + * @brief Packs and Sends UE Reconig Request from DUAPP to MAC + * + * @details + * + * Function : packDuMacUeReconfigReq + * + * Functionality: + * Packs and Sends UE Reconfig Request from DUAPP to MAC + * + * + * @params[in] Post structure pointer + * MacUeCfg pointer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t packDuMacUeReconfigReq(Pst *pst, MacUeCfg *ueCfg) +{ + 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 packDuMacUeReconfigReq"); + return RFAILED; + } + /* pack the address of the structure */ + CMCHKPK(oduPackPointer,(PTR)ueCfg, mBuf); + } + else + { + DU_LOG("\nERROR --> MAC: Only LWLC supported for packDuMacUeReconfigReq"); + return RFAILED; + } + + return ODU_POST_TASK(pst,mBuf); +} +/******************************************************************* + * + * @brief Unpacks UE Reconfig Request received from DU APP + * + * @details + * + * Function : unpackMacUeReconfigReq + * + * Functionality: + * Unpacks UE Reconfig Request received from DU APP + * + * @params[in] Pointer to Handler + * Post structure pointer + * Message Buffer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint8_t unpackMacUeReconfigReq(DuMacUeReconfigReq func, Pst *pst, Buffer *mBuf) +{ + if(pst->selector == ODU_SELECTOR_LWLC) + { + MacUeCfg *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("\nERROR --> DU APP : Only LWLC supported for UE Create Request "); + ODU_PUT_MSG_BUF(mBuf); + } + + return RFAILED; +} + /********************************************************************** - End of file -**********************************************************************/ + End of file + **********************************************************************/