/******************************************************************************* ################################################################################ # Copyright (c) [2017-2019] [Radisys] # # # # Licensed under the Apache License, Version 2.0 (the "License"); # # you may not use this file except in compliance with the License. # # You may obtain a copy of the License at # # # # http://www.apache.org/licenses/LICENSE-2.0 # # # # Unless required by applicable law or agreed to in writing, software # # distributed under the License is distributed on an "AS IS" BASIS, # # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # # See the License for the specific language governing permissions and # # limitations under the License. # ################################################################################ *******************************************************************************/ /************************************************************************ Name: LTE-MAC layer Type: C source file Desc: C source code for packing/unpacking of INF interface primitives. File: rg_sch_inf.c **********************************************************************/ /* header include files (.h) */ #include "common_def.h" #include "tfu.h" /* RGU defines */ #ifdef LTE_L2_MEAS #include "lrg.h" #endif #include "rg_sch_inf.h" /* RGU Interface defines */ /* header/extern include files (.x) */ #include "tfu.x" /* RGU defines */ #ifdef LTE_L2_MEAS #include "lrg.x" #endif #include "rg_sch_inf.x" /* RGU Interface includes */ #ifdef LCSCH /*Fix: start: Inform UE delete to scheduler*/ /** * @brief This primitive is used to indicate to scheduler * that UE has been deleted at MAC. * * @details * * Function : cmPkMacSchUeDelInd * * @param[in] Pst* pst * @param[in] RgInfUeDelInd* ueDelInd * @return S16 * -# ROK **/ S16 cmPkMacSchUeDelInd(Pst* pst,RgInfUeDelInd* ueDelInd) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } #ifdef MS_MBUF_CORRUPTION MS_BUF_ADD_ALLOC_CALLER(); #endif if(SAddPstMsgMult((Data *)ueDelInd, sizeof(RgInfUeDelInd), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFUEDELIND; return (SPstTsk(pst,mBuf)); } /** * @brief This primitive is used to indicate to scheduler * that UE has been deleted at MAC. * * * @details * * Function : cmUnpkMacSchUeDelInd * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmUnpkMacSchUeDelInd(UeDelInd func,Pst *pst,Buffer *mBuf) { RgInfUeDelInd ueDelInd; if(SRemPreMsgMult((Data *)&ueDelInd, sizeof(RgInfUeDelInd), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, &ueDelInd)); } /*Fix: end: Inform UE delete to scheduler*/ /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmPkMacSchDedBoUpdtReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmPkMacSchDedBoUpdtReq(Pst* pst,RgInfDedBoRpt* boRpt) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } #ifdef MS_MBUF_CORRUPTION MS_BUF_ADD_ALLOC_CALLER(); #endif if(SAddPstMsgMult((Data *)boRpt, sizeof(RgInfDedBoRpt), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFDEDBOUPDTREQ; return (SPstTsk(pst,mBuf)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmUnpkMacSchDedBoUpdtReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmUnpkMacSchDedBoUpdtReq(DedBoUpdtReq func,Pst *pst,Buffer *mBuf) { RgInfDedBoRpt boRpt; if(SRemPreMsgMult((Data *)&boRpt, sizeof(RgInfDedBoRpt), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, &boRpt)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmPkMacSchCmnBoUpdtReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmPkMacSchCmnBoUpdtReq(Pst* pst,RgInfCmnBoRpt* boRpt) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } #ifdef MS_MBUF_CORRUPTION MS_BUF_ADD_ALLOC_CALLER(); #endif if(SAddPstMsgMult((Data *)boRpt, sizeof(RgInfCmnBoRpt), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFCMNBOUPDTREQ; return (SPstTsk(pst,mBuf)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmUnpkMacSchCmnBoUpdtReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmUnpkMacSchCmnBoUpdtReq(CmnBoUpdtReq func,Pst *pst,Buffer *mBuf) { RgInfCmnBoRpt boRpt; if(SRemPreMsgMult((Data *)&boRpt, sizeof(RgInfCmnBoRpt), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, &boRpt)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmPkMacSchSfRecpInd * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmPkMacSchSfRecpInd(Pst* pst,RgInfSfDatInd* datInd) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(oduPackPointer((PTR)datInd, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFSFRECPIND; return (SPstTsk(pst,mBuf)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmUnpkMacSchSfRecpInd * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmUnpkMacSchSfRecpInd(SfRecpInd func,Pst *pst,Buffer *mBuf) { RgInfSfDatInd* datInd; if(oduUnpackPointer((PTR *)&datInd, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); /* Call cmFreeMem(datInd) in scheduler */ return ((*func)(pst, datInd)); } #ifdef LTEMAC_SPS /** * @brief Primitive from MAC to SCH to indicate release of UL SPS for a UE * * @details * * Function : cmPkMacSchSpsRelInd * * @param[in] Pst* pst * @param[in] RgInfSpsRelInfo* relInfo * @return S16 * -# ROK **/ S16 cmPkMacSchSpsRelInd(Pst* pst,RgInfSpsRelInfo* relInfo) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(oduPackPointer((PTR)relInfo, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFSPSRELIND; return (SPstTsk(pst,mBuf)); } /* end of cmPkMacSchSpsRelInd */ /** * @brief Primitive from MAC to SCH to indicate release of UL SPS for a UE * * @details * * Function : cmUnpkMacSchSpsRelInd * * @param[in] SpsRelInd func * @param[in] Pst* pst * @param[in] Buffer *mBuf * @return S16 * -# ROK **/ S16 cmUnpkMacSchSpsRelInd(SpsRelInd func,Pst *pst,Buffer *mBuf) { RgInfSpsRelInfo *relInfo; if(oduUnpackPointer((PTR *)&relInfo, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, relInfo)); } /* end of cmUnpkMacSchSpsRelInd */ #endif /* LTEMAC_SPS */ #endif #ifdef LCRG /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmPkSchMacSfAllocReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmPkSchMacSfAllocReq(Pst* pst,RgInfSfAlloc* resAllocReq) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(oduPackPointer((PTR)resAllocReq, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFSFALLOCREQ; return (SPstTsk(pst,mBuf)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmUnpkSchMacSfAllocReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmUnpkSchMacSfAllocReq(SfAllocReq func,Pst *pst,Buffer *mBuf) { RgInfSfAlloc* resAllocReq; if(oduUnpackPointer((PTR *)&resAllocReq, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, resAllocReq)); } /** * @brief Request from SCH To MAC for harq entity reset * * @details * * Function : cmPkSchMacRstHqEntReq * * @param[in] Pst* pst * @param[in] RgInfResetHqEnt *hqEntInfo * @return S16 * -# ROK **/ S16 cmPkSchMacRstHqEntReq(Pst* pst,RgInfResetHqEnt* hqEntInfo) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(oduPackPointer((PTR)hqEntInfo, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFHQENTRESET; return (SPstTsk(pst,mBuf)); } /** * @brief Request from SCH to MAC for resetting the harqentity * * @details * * Function : cmUnpkSchMacRstHqEntReq * * @param[in] Pst* pst * @param[in] RgInfResetHqEnt *hqEntInfo * @return S16 * -# ROK **/ S16 cmUnpkSchMacRstHqEntReq(RstHqEntReq func,Pst *pst,Buffer *mBuf) { RgInfResetHqEnt* hqEntRstInfo; if(oduUnpackPointer((PTR *)&hqEntRstInfo, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, hqEntRstInfo)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmPkSchMacRlsHqReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmPkSchMacRlsHqReq(Pst* pst,RgInfRlsHqInfo* sfHqInfo) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(oduPackPointer((PTR)sfHqInfo, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFRLSHQREQ; return (SPstTsk(pst,mBuf)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmUnpkSchMacRlsHqReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmUnpkSchMacRlsHqReq(RlsHqReq func,Pst *pst,Buffer *mBuf) { RgInfRlsHqInfo* sfHqInfo; if(oduUnpackPointer((PTR *)&sfHqInfo, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, sfHqInfo)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmPkSchMacRlsRntiReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmPkSchMacRlsRntiReq(Pst* pst,RgInfRlsRnti* rlsRnti) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } #ifdef MS_MBUF_CORRUPTION MS_BUF_ADD_ALLOC_CALLER(); #endif if(SAddPstMsgMult((Data *)rlsRnti, sizeof(RgInfRlsRnti), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFRLSRNTIREQ; return (SPstTsk(pst,mBuf)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmUnpkSchMacRlsRntiReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmUnpkSchMacRlsRntiReq(RlsRntiReq func,Pst *pst,Buffer *mBuf) { RgInfRlsRnti rlsRnti; if(SRemPreMsgMult((Data *)&rlsRnti, sizeof(RgInfRlsRnti), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, &rlsRnti)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmPkSchMacCellRegReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmPkSchMacCellRegReq(Pst* pst,RgInfCellReg* regReq) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } #ifdef MS_MBUF_CORRUPTION MS_BUF_ADD_ALLOC_CALLER(); #endif if(SAddPstMsgMult((Data *)regReq, sizeof(RgInfCellReg), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFCELLREGREQ; return (SPstTsk(pst,mBuf)); } /** * @brief Request from RLC to MAC for forwarding SDUs on * dedicated channel for transmission. * * @details * * Function : cmUnpkSchMacCellRegReq * * @param[in] Pst* pst * @param[in] SpId spId * @param[in] RguDDatReqInfo * datReq * @return S16 * -# ROK **/ S16 cmUnpkSchMacCellRegReq(CellRegReq func,Pst *pst,Buffer *mBuf) { RgInfCellReg regReq; if(SRemPreMsgMult((Data *)®Req, sizeof(RgInfCellReg), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, ®Req)); } /** * @brief Primitive from SCH to MAC to register GBR LCG per UE * * @details * * Function : cmPkSchMacLcgRegReq * * @param[in] Pst* pst * @param[in] RgInfLcgRegReq *lcgRegReq * @return S16 * -# ROK **/ S16 cmPkSchMacLcgRegReq(Pst* pst,RgInfLcgRegReq *lcgRegReq) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(SAddPstMsgMult((Data *)lcgRegReq, sizeof(RgInfLcgRegReq), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFLCGREG; return (SPstTsk(pst,mBuf)); } /* end of cmPkSchMacLcgRegReq */ /** * @brief Primitive from SCH to MAC to register GBR LCG * * @details * * Function : cmUnpkSchMacLcgRegReq * * @param[in] LcgReg func * @param[in] Pst* pst * @param[in] Buffer *mBuf * @return S16 * -# ROK **/ S16 cmUnpkSchMacLcgRegReq(LcgReg func,Pst *pst,Buffer *mBuf) { RgInfLcgRegReq *lcgRegReq; if(oduUnpackPointer((PTR *)&lcgRegReq, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, lcgRegReq)); } /* end of cmUnpkSchMacLcgRegReq */ #ifdef LTEMAC_SPS /** * @brief Primitive from SCH to MAC to register the set of SPS LCs per UE * * @details * * Function : cmPkSchMacSpsLcRegReq * * @param[in] Pst* pst * @param[in] RgInfSpsLcInfo *lcInfo * @return S16 * -# ROK **/ S16 cmPkSchMacSpsLcRegReq(Pst* pst,RgInfSpsLcInfo *lcInfo) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(oduPackPointer((PTR)lcInfo, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFSPSLCREG; return (SPstTsk(pst,mBuf)); } /* end of cmPkSchMacSpsLcRegReq */ /** * @brief Primitive from SCH to MAC to reset SPS Params for the UE * * @details * * Function : cmPkSchMacUlSpsResetReq * * @param[in] Pst* pst * @param[in] RgInfUlSpsReset *ulSpsResetInfo * @return S16 * -# ROK **/ S16 cmPkSchMacUlSpsResetReq(Pst* pst,RgInfUlSpsReset *ulSpsResetInfo) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(oduPackPointer((PTR)ulSpsResetInfo, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFSPSRESET; return (SPstTsk(pst,mBuf)); } /* end of cmPkSchMacUlSpsResetReq */ /** * @brief Primitive from SCH to MAC to register the set of SPS LCs per UE * * @details * * Function : cmUnpkSchMacSpsLcRegReq * * @param[in] SpsLcReg func * @param[in] Pst* pst * @param[in] Buffer *mBuf * @return S16 * -# ROK **/ S16 cmUnpkSchMacSpsLcRegReq(SpsLcReg func,Pst *pst,Buffer *mBuf) { RgInfSpsLcInfo *lcInfo; if(oduUnpackPointer((PTR *)&lcInfo, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, lcInfo)); } /* end of cmUnpkSchMacSpsLcRegReq */ /** * @brief Primitive from SCH to MAC to reset UL SPS params * * @details * * Function : cmUnpkSchMacUlSpsResetReq * * @param[in] UlSpsReset func * @param[in] Pst* pst * @param[in] Buffer *mBuf * @return S16 * -# ROK **/ S16 cmUnpkSchMacUlSpsResetReq(UlSpsReset func,Pst *pst,Buffer *mBuf) { RgInfUlSpsReset *ulSpsResetInfo; if(oduUnpackPointer((PTR *)&ulSpsResetInfo, mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, ulSpsResetInfo)); } /* end of cmUnpkSchMacUlSpsResetReq */ /** * @brief Primitive from SCH to MAC to deregister the set of SPS LCs per UE * * @details * * Function : cmPkSchMacSpsLcDeregReq * * @param[in] Pst* pst * @param[in] CmLteCellId cellId, * @param[in] CmLteRnti crnti * @return S16 * -# ROK **/ S16 cmPkSchMacSpsLcDeregReq(Pst* pst,CmLteCellId cellId,CmLteRnti crnti) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } CMCHKPK(cmPkLteCellId, cellId, mBuf); CMCHKPK(cmPkLteRnti, crnti, mBuf); pst->event = (Event) EVTINFSPSLCDEREG; return (SPstTsk(pst,mBuf)); } /* end of cmPkSchMacSpsLcDeregReq */ /** * @brief Primitive from SCH to MAC to deregister the set of SPS LCs per UE * * @details * * Function : cmUnpkSchMacSpsLcDeregReq * * @param[in] SpsLcDereg func * @param[in] Pst* pst * @param[in] Buffer *mBuf * @return S16 * -# ROK **/ S16 cmUnpkSchMacSpsLcDeregReq(SpsLcDereg func,Pst *pst, Buffer *mBuf) { CmLteCellId cellId; CmLteRnti crnti; CMCHKUNPK(cmUnpkLteRnti, &crnti, mBuf); CMCHKUNPK(cmUnpkLteCellId, &cellId, mBuf); RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, cellId, crnti)); } /* end of cmUnpkSchMacSpsLcDeregReq */ #endif /* LTEMAC_SPS */ #ifdef LTE_L2_MEAS /** * @brief Primitive from SCH to MAC for L2 Measurement * * @details * * Function : cmPkSchMacL2MeasReq * * @param[in] Pst* pst * @param[in] RgInfSpsLcInfo *lcInfo * @return S16 * -# ROK **/ S16 cmPkSchMacL2MeasReq(Pst* pst,RgInfL2MeasReq *measInfo) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(SAddPstMsgMult((Data *)measInfo, sizeof(RgInfL2MeasReq), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFL2MEASREQ; return (SPstTsk(pst,mBuf)); } /* end of cmPkSchMacL2MeasReq */ /** * @brief Primitive from SCH to MAC for L2 Stop Measurement * * @details * * Function : cmPkSchMacL2MeasStopReq * * @param[in] Pst* pst * @param[in] RgInfSpsLcInfo *lcInfo * @return S16 * -# ROK **/ S16 cmPkSchMacL2MeasStopReq(Pst* pst,RgInfL2MeasStopReq *measInfo) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(SAddPstMsgMult((Data *)measInfo, sizeof(RgInfL2MeasStopReq), mBuf) != ROK) { ODU_PUT_MSG_BUF(mBuf); return RFAILED; } pst->event = (Event) EVTINFL2MEASSTOPREQ; return (SPstTsk(pst,mBuf)); } /* end of cmPkSchMacL2MeasStopReq */ /** * @brief Primitive from SCH to MAC for L2 Measurement * Send Request * @details * * Function : cmPkSchMacL2MeasSendReq * * @param[in] Pst* pst * @param[in] RgInfSpsLcInfo *lcInfo * @return S16 * -# ROK **/ S16 cmPkSchMacL2MeasSendReq(Pst* pst,RgInfL2MeasSndReq *measInfo) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(SAddPstMsgMult((Data *)measInfo, sizeof(RgInfL2MeasSndReq), mBuf) != ROK) { ODU_PUT_MSG_BUF(mBuf); return RFAILED; } pst->event = (Event) EVTINFL2MEASSENDREQ; return (SPstTsk(pst,mBuf)); } /* end of cmPkSchMacL2MeasSendReq */ /** * @brief Primitive from SCH to MAC for L2 Measurement request * * @details * * Function : cmUnpkSchMacL2MeasReq * * @param[in] L2MeasReg func * @param[in] Pst* pst * @param[in] Buffer *mBuf * @return S16 * -# ROK **/ S16 cmUnpkSchMacL2MeasReq(L2MeasReq func,Pst *pst,Buffer *mBuf) { RgInfL2MeasReq measInfo; if(SRemPreMsgMult((Data *)&measInfo, sizeof(RgInfL2MeasReq), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, &measInfo)); } /* end of cmUnpkSchMacL2MeasReq */ /** * @brief Primitive from SCH to MAC for L2 Measurement Stop request * * @details * * Function : cmUnpkSchMacL2MeasStopReq * * @param[in] L2MeasReg func * @param[in] Pst* pst * @param[in] Buffer *mBuf * @return S16 * -# ROK **/ S16 cmUnpkSchMacL2MeasStopReq(L2MeasStopReq func,Pst *pst,Buffer *mBuf) { RgInfL2MeasStopReq measInfo; if(SRemPreMsgMult((Data *)&measInfo, sizeof(RgInfL2MeasStopReq), mBuf) != ROK) { ODU_PUT_MSG_BUF(mBuf); return RFAILED; } ODU_PUT_MSG_BUF(mBuf); return ((*func)(pst, &measInfo)); } /* end of cmUnpkSchMacL2MeasReq */ /** * @brief Primitive from SCH to MAC for L2 Measurement request * * @details * * Function : cmUnpkSchMacL2MeasReq * * @param[in] L2MeasReg func * @param[in] Pst* pst * @param[in] Buffer *mBuf * @return S16 * -# ROK **/ S16 cmUnpkSchMacL2MeasSendReq(L2MeasSendReq func,Pst *pst,Buffer *mBuf) { RgInfL2MeasSndReq measInfo; if(SRemPreMsgMult((Data *)&measInfo, sizeof(RgInfL2MeasSndReq), mBuf) != ROK) { ODU_PUT_MSG_BUF(mBuf); return RFAILED; } ODU_PUT_MSG_BUF(mBuf); return ((*func)(pst, &measInfo)); } /* end of cmUnpkSchMacL2MeasSendReq*/ /** * @brief Primitive from MAC to SCH for L2 Measurement * * @details * * Function : cmPkMacSchL2MeasCfm * * @param[in] Pst* pst * @param[in] RgInfL2MeasCfm *measInfo * @return S16 * -# ROK **/ S16 cmPkMacSchL2MeasCfm(Pst* pst,RgInfL2MeasCfm *measCfm) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(SAddPstMsgMult((Data *)measCfm, sizeof(RgInfL2MeasCfm), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } pst->event = (Event) EVTINFL2MEASCFM; return (SPstTsk(pst,mBuf)); } /* end of cmPkMacSchL2MeasCfm */ /** * @brief Primitive from MAC to SCH for L2 Measurement * stop cfm * @details * * Function : cmPkMacSchL2MeasStopCfm * * @param[in] Pst* pst * @param[in] RgInfL2MeasCfm *measInfo * @return S16 * -# ROK **/ S16 cmPkMacSchL2MeasStopCfm(Pst* pst,RgInfL2MeasCfm *measCfm) { Buffer *mBuf = NULLP; if (ODU_GET_MSG_BUF(pst->region, pst->pool, &mBuf) != ROK) { return RFAILED; } if(SAddPstMsgMult((Data *)measCfm, sizeof(RgInfL2MeasCfm), mBuf) != ROK) { ODU_PUT_MSG_BUF(mBuf); return RFAILED; } pst->event = (Event) EVTINFL2MEASSTOPCFM; return (SPstTsk(pst,mBuf)); }/*cmPkMacSchL2MeasStopCfm*/ /** * @brief Primitive from MAC to SCH for L2 Measurement Cfm * * @details * * Function : cmUnpkSchMacL2MeasReq * * @param[in] L2MeasCfm func * @param[in] Pst* pst * @param[in] Buffer *mBuf * @return S16 * -# ROK **/ S16 cmUnpkMacSchL2MeasCfm(L2MeasCfm func,Pst *pst,Buffer *mBuf) { RgInfL2MeasCfm measCfm; if(SRemPreMsgMult((Data *)&measCfm, sizeof(RgInfL2MeasCfm), mBuf) != ROK) { RGSCHINF_FREE_MSG(mBuf); return RFAILED; } RGSCHINF_FREE_MSG(mBuf); return ((*func)(pst, &measCfm)); } /* end of cmUnpkMacSchL2MeasCfm */ /** * @brief Primitive from MAC to SCH for L2 Measurement Stop Cfm * * @details * * Function : cmUnpkMacSchL2MeasStopCfm * * @param[in] L2MeasCfm func * @param[in] Pst* pst * @param[in] Buffer *mBuf * @return S16 * -# ROK **/ S16 cmUnpkMacSchL2MeasStopCfm(L2MeasCfm func,Pst *pst,Buffer *mBuf) { RgInfL2MeasCfm measCfm; if(SRemPreMsgMult((Data *)&measCfm, sizeof(RgInfL2MeasCfm), mBuf) != ROK) { ODU_PUT_MSG_BUF(mBuf); return RFAILED; } ODU_PUT_MSG_BUF(mBuf); return ((*func)(pst, &measCfm)); } /* end of cmUnpkMacSchL2MeasStopCfm */ #endif/* LTE_L2_MEAS */ #endif /********************************************************************** End of file **********************************************************************/