X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fcm%2Fdu_app_mac_inf.c;h=1a00339ac057a25cd4a010cbc6c35a1b0c6861ce;hb=e550b2091fb29289d12a5722b189acbede7862f0;hp=408d395281bd47808c87035a1028cd7a94964f85;hpb=451e626d5ac7c7e7586bab23358161230449af46;p=o-du%2Fl2.git diff --git a/src/cm/du_app_mac_inf.c b/src/cm/du_app_mac_inf.c index 408d39528..1a00339ac 100644 --- a/src/cm/du_app_mac_inf.c +++ b/src/cm/du_app_mac_inf.c @@ -24,7 +24,6 @@ #include "ss_queue.h" #include "ss_task.h" #include "ss_msg.h" -#include "du_cfg.h" #include "gen.x" /* general */ #include "ssi.x" /* system services */ @@ -34,6 +33,7 @@ #include "cm_hash.x" /* Common Hash List Definitions */ #include "cm_lte.x" /* Common LTE Defines */ +#include "du_cfg.h" #include "du_app_mac_inf.h" /************************************************************************** @@ -53,7 +53,7 @@ * RFAILED - failure * ***************************************************************************/ -S16 packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg) +uint16_t packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg) { if(pst->selector == DU_SELECTOR_LC) { @@ -72,6 +72,7 @@ S16 packMacCellCfg(Pst *pst, MacCellCfg *macCellCfg) /* pack the address of the structure */ CMCHKPK(cmPkPtr,(PTR)macCellCfg, mBuf); + DU_LOG("\nDU-APP : MAC CELL config sent"); RETVALUE(SPstTsk(pst,mBuf)); } } @@ -123,7 +124,7 @@ void unpackDuMacCellCfg( * * @details * - * Function : cmPackMacCellCfgCfm + * Function : packMacCellCfgCfm * * Functionality: * packs the transaction ID @@ -134,7 +135,7 @@ void unpackDuMacCellCfg( * RFAILED - failure * ***************************************************************************/ -U16 cmPackMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) +uint16_t packMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) { if(pst->selector == DU_SELECTOR_LC) { @@ -145,6 +146,7 @@ U16 cmPackMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) } /* pack the transaction ID in CNF structure */ + CMCHKPK(SPkU8, macCellCfgCfm->rsp, mBuf); CMCHKPK(SPkU16, macCellCfgCfm->transId, mBuf); RETVALUE(SPstTsk(pst,mBuf)); @@ -154,6 +156,7 @@ U16 cmPackMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) /* only LC is supported */ return RFAILED; } + return ROK; } /************************************************************************** @@ -173,7 +176,7 @@ U16 cmPackMacCellCfgCfm(Pst *pst, MacCellCfgCfm *macCellCfgCfm) * RFAILED - failure * ***************************************************************************/ -S16 unpackMacCellCfgCfm( +uint16_t unpackMacCellCfgCfm( DuMacCellCfgCfm func, Pst *pst, Buffer *mBuf) @@ -184,6 +187,7 @@ S16 unpackMacCellCfgCfm( { /* unpack the transaction ID in CNF structure */ CMCHKUNPK(SUnpkU16, &(macCellCfgCfm.transId), mBuf); + CMCHKUNPK(SUnpkU8, &(macCellCfgCfm.rsp), mBuf); RETVALUE((*func)(&macCellCfgCfm)); } @@ -193,6 +197,245 @@ S16 unpackMacCellCfgCfm( } } +/******************************************************************* + * + * @brief Packs and Send Cell Start Request to MAC + * + * @details + * + * Function : packMacCellStartReq + * + * Functionality: + * Packs and Sends Cell Start Request to MAC + * + * @params[in] Post structure pointer + * MacCellStartInfo pointer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t packMacCellStartReq(Pst *pst, MacCellStartInfo *cellStartInfo) +{ + if(pst->selector == DU_SELECTOR_LC) + { + /* Loose coupling not supported */ + 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); + } + + /* pack the address of the structure */ + CMCHKPK(cmPkPtr,(PTR)cellStartInfo, mBuf); + + return SPstTsk(pst,mBuf); + } + return ROK; +} + +/******************************************************************* + * + * @brief Unpacks MAC Cell Start Request from DU APP + * + * @details + * + * Function : unpackMaCellStartReq + * + * 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 + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t unpackMacCellStartReq(DuMacCellStartReq func, Pst *pst, Buffer *mBuf) +{ + MacCellStartInfo *cellStartInfo; + + if(pst->selector == DU_SELECTOR_LWLC) + { + /* unpack the address of the structure */ + CMCHKUNPK(cmUnpkPtr, (PTR *)&cellStartInfo, mBuf); + SPutMsg(mBuf); + return (*func)(pst, cellStartInfo); + } + else + { + /* Nothing to do for loose coupling */ + SPutMsg(mBuf); + return ROK; + } +} + +/******************************************************************* + * + * @brief Packs and Send cell stop request to MAC + * + * @details + * + * Function : packMacCellStopReq + * + * Functionality: + * Packs and Send cell stop request to MAC + * + * @params[in] Post structure pointer + * Cell stop info structure + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t packMacCellStopReq(Pst *pst, MacCellStopInfo *cellStopInfo) +{ + if(pst->selector == DU_SELECTOR_LC) + { + /* Loose coupling not supported */ + 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 stop req pack"); + RETVALUE(RFAILED); + } + + /* pack the address of the structure */ + CMCHKPK(cmPkPtr,(PTR)cellStopInfo, mBuf); + + return SPstTsk(pst,mBuf); + } + return ROK; +} + +/******************************************************************* + * + * @brief Unpacks cell stop request from DU APP + * + * @details + * + * Function : unpackMaCellStopReq + * + * Functionality: + * Unpacks cell stop request from DU APP + * + * @params[in] Handler function pointer + * Post structure pointer + * Message Buffer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t unpackMacCellStopReq(DuMacCellStopReq func, Pst *pst, Buffer *mBuf) +{ + MacCellStopInfo *cellStopInfo; + + if(pst->selector == DU_SELECTOR_LWLC) + { + /* unpack the address of the structure */ + CMCHKUNPK(cmUnpkPtr, (PTR *)&cellStopInfo, mBuf); + SPutMsg(mBuf); + return (*func)(pst, cellStopInfo); + } + else + { + /* Nothing to do for loose coupling */ + SPutMsg(mBuf); + return ROK; + } +} + +/******************************************************************* + * + * @brief Packs and Sends slot ind from MAC to DUAPP + * + * @details + * + * Function : packMacSlotInd + * + * Functionality: + * Packs and Sends slot ind from MAC to DUAPP + * + * @params[in] Post structure pointer + * Slot Info pointer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t packMacSlotInd(Pst *pst, SlotInfo *slotInfo ) +{ + if(pst->selector == DU_SELECTOR_LC || pst->selector == DU_SELECTOR_TC) + { + /* Loose coupling not supported */ + DU_LOG("\nDU APP : Only LWLC supported"); + 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); + } + + /* pack the address of the structure */ + CMCHKPK(cmPkPtr,(PTR)slotInfo, mBuf); + + return SPstTsk(pst,mBuf); + } + return ROK; +} + +/******************************************************************* + * + * @brief Unpacks slot indication from MAC + * + * @details + * + * Function : unpackMacSlotInd + * + * Functionality: + * Unpacks slot indication from MAC + * + * @params[in] Pointer to Handler + * Post structure pointer + * Message Buffer + * @return ROK - success + * RFAILED - failure + * + * ****************************************************************/ +uint16_t unpackMacSlotInd(DuMacSlotInd func, Pst *pst, Buffer *mBuf) +{ + SlotInfo *slotInfo; + + if(pst->selector == DU_SELECTOR_LWLC) + { + /* unpack the address of the structure */ + CMCHKUNPK(cmUnpkPtr, (PTR *)&slotInfo, mBuf); + SPutMsg(mBuf); + return (*func)(pst, slotInfo); + } + else + { + /* Nothing to do for loose coupling */ + SPutMsg(mBuf); + return ROK; + } + return ROK; +} + /********************************************************************** End of file **********************************************************************/