1 /*******************************************************************************
2 ################################################################################
3 # Copyright (c) [2017-2019] [Radisys] #
5 # Licensed under the Apache License, Version 2.0 (the "License"); #
6 # you may not use this file except in compliance with the License. #
7 # You may obtain a copy of the License at #
9 # http://www.apache.org/licenses/LICENSE-2.0 #
11 # Unless required by applicable law or agreed to in writing, software #
12 # distributed under the License is distributed on an "AS IS" BASIS, #
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
14 # See the License for the specific language governing permissions and #
15 # limitations under the License. #
16 ################################################################################
17 *******************************************************************************/
19 /************************************************************************
25 Desc: C source code SSI Interface Implementation
29 **********************************************************************/
32 @brief This file contains the implementation of callback functions
33 registered with SSI during the LTE MAC Task initialization.
35 /* header include files -- defines (.h) */
36 #include "common_def.h"
37 #include "rgu.h" /* RGU defines */
38 #include "tfu.h" /* RGU defines */
39 #include "lrg.h" /* layer management defines for LTE-MAC */
40 #include "rgr.h" /* layer management defines for LTE-MAC */
41 #include "crg.h" /* CRG interface includes */
42 #include "rg_sch_inf.h" /* SCH interface includes */
43 #include "rg_prg.h" /* PRG interface includes */
44 #include "rg_env.h" /* customisable defines and macros for LTE-MAC */
45 #include "rg.h" /* defines and macros for MAC */
46 #include "rgr.h" /* defines and macros for SCH */
49 /* header/extern include files (.x) */
50 #include "rgu.x" /* RGU types */
51 #include "tfu.x" /* RGU types */
52 #include "lrg.x" /* layer management typedefs for MAC */
53 #include "rgr.x" /* layer management typedefs for MAC */
54 #include "crg.x" /* CRG interface typedes */
55 #include "rg_sch_inf.x" /* SCH interface typedefs */
56 #include "rg_prg.x" /*PRG interface includes*/
57 #include "du_app_mac_inf.h"
58 #include "rg.x" /* typedefs for MAC */
59 #include "rlc_mac_inf.h"
62 * @brief Task Activation callback function Entity SM.
66 * Function : rgHdlSMEvents
68 * Process Messages received from Entity SM
70 * @param[in] Pst *pst, Post structure of the primitive.
71 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
72 * @param[in] Reason reason.
76 PRIVATE INLINE void rgHdlSMEvents
78 Pst *pst, /* post structure */
79 Buffer *mBuf /* message buffer */
82 PRIVATE INLINE void rgHdlSMEvents(pst, mBuf)
83 Pst *pst; /* post structure */
84 Buffer *mBuf; /* message buffer */
91 /* Process a config. request */
92 cmUnpkLrgCfgReq(RgMiLrgCfgReq, pst, mBuf);
94 case EVTMACSCHGENCFGREQ:
95 /* Process a config. request */
96 cmUnpkLrgSchCfgReq(MacSchGenCfgReq, pst, mBuf);
99 /* Process a control request */
100 cmUnpkLrgCntrlReq(RgMiLrgCntrlReq, pst, mBuf);
103 /* Process a status request */
104 cmUnpkLrgStaReq(RgMiLrgStaReq, pst, mBuf);
107 /* Process a statistics request */
108 cmUnpkLrgStsReq(RgMiLrgStsReq, pst, mBuf);
110 #endif /* LCRGMILRG */
111 case EVENT_MAC_CELL_CONFIG_REQ:
112 /* Process MAC cell config */
113 unpackDuMacCellCfg(MacProcCellCfgReq, pst, mBuf);
115 case EVENT_MAC_CELL_START_REQ:
116 /* Process MAC cell start request */
117 unpackMacCellStartReq(MacProcCellStartReq, pst, mBuf);
119 case EVENT_MAC_CELL_STOP_REQ:
120 /* Process MAC cell stop request */
121 unpackMacCellStopReq(MacProcCellStopReq, pst, mBuf);
123 case EVENT_MAC_DL_CCCH_IND:
124 /* Process DL CCCH Ind */
125 unpackMacDlCcchInd(MacProcDlCcchInd, pst, mBuf);
127 case EVENT_MAC_UE_CREATE_REQ:
128 /* Process Ue Create Request */
129 unpackMacUeCreateReq(MacProcUeCreateReq, pst, mBuf);
131 case EVENT_MAC_UE_RECONFIG_REQ:
132 /* Process Ue Reconfig Request */
133 unpackMacUeReconfigReq(MacProcUeReconfigReq, pst, mBuf);
143 * @brief Task Activation callback function Entity NH.
147 * Function : rgHdlNHEvents
149 * Process Messages received from Entity NH
151 * @param[in] Pst *pst, Post structure of the primitive.
152 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
153 * @param[in] Reason reason.
157 PRIVATE INLINE void rgHdlNHEvents
159 Pst *pst, /* post structure */
160 Buffer *mBuf /* message buffer */
163 PRIVATE INLINE void rgHdlNHEvents(pst, mBuf)
164 Pst *pst; /* post structure */
165 Buffer *mBuf; /* message buffer */
172 cmUnpkCrgBndReq(RgUiCrgBndReq, pst, mBuf);
175 cmUnpkCrgUbndReq(RgUiCrgUbndReq, pst, mBuf);
178 cmUnpkCrgCfgReq(RgUiCrgCfgReq, pst, mBuf);
188 * @brief Task Activation callback function Entity KW.
192 * Function : rgHdlKWEvents
194 * Process Messages received from Entity KW
196 * @param[in] Pst *pst, Post structure of the primitive.
197 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
198 * @param[in] Reason reason.
202 PRIVATE INLINE void rgHdlKWEvents
204 Pst *pst, /* post structure */
205 Buffer *mBuf /* message buffer */
208 PRIVATE INLINE void rgHdlKWEvents(pst, mBuf)
209 Pst *pst; /* post structure */
210 Buffer *mBuf; /* message buffer */
217 cmUnpkRguBndReq(RgUiRguBndReq, pst, mBuf);
220 cmUnpkRguUbndReq(RgUiRguUbndReq, pst, mBuf);
222 case EVENT_DL_DATA_TO_MAC:
223 unpackRlcDlData(MacProcRlcDlData, pst, mBuf);
225 case EVENT_BO_STATUS_TO_MAC:
226 unpackRlcBoStatus(MacProcRlcBoStatus, pst, mBuf);
230 case EVTRGUL2MULTHRPMEASREQ:
231 cmUnpkRguL2MUlThrpMeasReq(RgUiRguL2MUlThrpMeasReq, pst,mBuf);
243 * @brief Task Activation callback function Entity TF.
247 * Function : rgHdlTFEvents
249 * Process Messages received from Entity TF
251 * @param[in] Pst *pst, Post structure of the primitive.
252 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
253 * @param[in] Reason reason.
257 PRIVATE INLINE void rgHdlTFEvents
259 Pst *pst, /* post structure */
260 Buffer *mBuf /* message buffer */
263 PRIVATE INLINE void rgHdlTFEvents(pst, mBuf)
264 Pst *pst; /* post structure */
265 Buffer *mBuf; /* message buffer */
270 #if (defined(LCRGLITFU) || defined(LWLCRGLITFU))
272 cmUnpkTfuBndCfm(RgLiTfuBndCfm, pst, mBuf);
275 cmUnpkTfuDatInd(RgLiTfuDatInd, pst, mBuf);
277 #if defined(TENB_T2K3K_SPECIFIC_CHANGES) && defined(LTE_TDD)
279 cmUnpkTfuNonRtInd(RgLiTfuNonRtInd, pst, mBuf);
291 * @brief Task Activation callback function Entity RG SCH.
295 * Function : rgHdlRGEvents
297 * Process Messages received from Entity RG SCH
299 * @param[in] Pst *pst, Post structure of the primitive.
300 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
301 * @param[in] Reason reason.
305 PRIVATE INLINE void rgHdlRGEvents
307 Pst *pst, /* post structure */
308 Buffer *mBuf /* message buffer */
311 PRIVATE INLINE void rgHdlRGEvents(pst, mBuf)
312 Pst *pst; /* post structure */
313 Buffer *mBuf; /* message buffer */
319 case EVTINFCELLREGREQ:
320 cmUnpkSchMacCellRegReq(RgSchMacCellRegReq, pst, mBuf);
322 case EVTINFSFALLOCREQ:
323 cmUnpkSchMacSfAllocReq(RgSchMacSfAllocReq, pst, mBuf);
326 cmUnpkSchMacRlsHqReq(RgSchMacRlsHqReq, pst, mBuf);
328 case EVTINFHQENTRESET:
329 cmUnpkSchMacRstHqEntReq(RgSchMacRstHqEntReq, pst, mBuf);
331 case EVTINFRLSRNTIREQ:
332 cmUnpkSchMacRlsRntiReq(RgSchMacRlsRntiReq, pst, mBuf);
336 cmUnpkSchMacSpsLcRegReq(RgSchMacSpsLcRegReq, pst, mBuf);
338 case EVTINFSPSLCDEREG:
339 cmUnpkSchMacSpsLcDeregReq(RgSchMacSpsLcDeregReq, pst, mBuf);
342 cmUnpkSchMacUlSpsResetReq(RgSchMacUlSpsResetReq, pst, mBuf);
344 #endif /* LTEMAC_SPS */
346 case EVTINFL2MEASREQ:
347 cmUnpkSchMacL2MeasReq(RgSchMacL2MeasReq, pst, mBuf);
349 case EVTINFL2MEASSENDREQ :
350 cmUnpkSchMacL2MeasSendReq(RgSchMacL2MeasSendReq, pst , mBuf);
352 case EVTINFL2MEASSTOPREQ:
353 cmUnpkSchMacL2MeasStopReq(RgSchMacL2MeasStopReq, pst , mBuf);
355 #endif/* LTE_L2_MEAS */
357 cmUnpkSchMacLcgRegReq(RgSchMacLcgRegReq, pst, mBuf);
360 #if defined(LTE_ADV) && defined(LCPRG)
361 case EVTPRGUESCELLCFGREQ:
363 cmUnpkPrgPMacSMacUeSCellCfgReq(RgPrgPMacSMacUeSCellCfgReq, pst, mBuf);
366 case EVTPRGUESCELLCFGCFM:
367 case EVTPRGUESCELLLCHMODCFM:
368 case EVTPRGUESCELLLCHDELCFMDEL:
369 case EVTPRGUESCELLLCHADDCFM:
371 cmUnpkPrgSMacPMacCfgCfm(RgPrgSMacPMacCfgCfm, pst, mBuf);
374 case EVTPRGUESCELLDELREQ:
376 cmUnpkPrgPMacSMacUeSCellDelReq(RgPrgPMacSMacUeSCellDelReq, pst, mBuf);
379 case EVTPRGUESCELLLCHMODREQ:
381 cmUnpkPrgPMacSMacUeSCellLchModReq(RgPrgPMacSMacUeSCellLchModReq, pst,
385 case EVTPRGUESCELLLCHDELREQ:
387 cmUnpkPrgPMacSMacUeSCellLchDelReq(RgPrgPMacSMacUeSCellLchDelReq, pst,
391 case EVTPRGUESCELLLCHADDREQ:
393 cmUnpkPrgPMacSMacUeSCellLchAddReq(RgPrgPMacSMacUeSCellLchAddReq, pst,
411 * @brief Task Activation callback function.
415 * Function : rgActvTsk
417 * Primitives invoked by MAC's users/providers through
418 * a loosely coupled interface arrive here by means of
419 * SSI's message handling. This API is registered with
420 * SSI during the Task Registration of MAC.
422 * @param[in] Pst *pst, Post structure of the primitive.
423 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
424 * @param[in] Reason reason.
431 Pst *pst, /* post structure */
432 Buffer *mBuf /* message buffer */
435 S16 rgActvTsk(pst, mBuf)
436 Pst *pst; /* post structure */
437 Buffer *mBuf; /* message buffer */
442 /* The originator of this message is the stack manager,
443 * unpack and go to the respective primitive processing function */
445 rgHdlSMEvents(pst, mBuf);
448 rgHdlNHEvents(pst, mBuf);
451 rgHdlKWEvents(pst, mBuf);
454 rgHdlTFEvents(pst, mBuf);
456 case ENTMAC: /* When scheduler instance sends msg to MAC */
457 rgHdlRGEvents(pst, mBuf);
465 }/* end of rgActvTsk */
468 /**********************************************************************
471 **********************************************************************/