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 "envopt.h" /* environment options */
37 #include "envdep.h" /* environment dependent */
38 #include "envind.h" /* environment independent */
39 #include "gen.h" /* general layer */
40 #include "ssi.h" /* system services */
41 #include "cm5.h" /* common timers defines */
42 #include "cm_hash.h" /* common hash list defines */
43 #include "cm_llist.h" /* common linked list defines */
44 #include "cm_mblk.h" /* memory management */
45 #include "cm_tkns.h" /* common tokens */
46 #include "cm_lte.h" /* common tokens */
47 #include "rgu.h" /* RGU defines */
48 #include "tfu.h" /* RGU defines */
49 #include "lrg.h" /* layer management defines for LTE-MAC */
50 #include "crg.h" /* CRG interface includes */
51 #include "rg_sch_inf.h" /* SCH interface includes */
52 #include "rg_prg.h" /* PRG interface includes */
53 #include "rg_env.h" /* customisable defines and macros for LTE-MAC */
54 #include "rg.h" /* defines and macros for MAC */
57 /* header/extern include files (.x) */
58 #include "gen.x" /* general layer typedefs */
59 #include "ssi.x" /* system services typedefs */
60 #include "cm5.x" /* common timers */
61 #include "cm_hash.x" /* common hash list */
62 #include "cm_lib.x" /* common library */
63 #include "cm_llist.x" /* common linked list */
64 #include "cm_mblk.x" /* memory management */
65 #include "cm_tkns.x" /* common tokens */
66 #include "cm_lte.x" /* common tokens */
67 #include "rgu.x" /* RGU types */
68 #include "tfu.x" /* RGU types */
69 #include "lrg.x" /* layer management typedefs for MAC */
70 #include "crg.x" /* CRG interface typedes */
71 #include "rg_sch_inf.x" /* SCH interface typedefs */
72 #include "rg_prg.x" /*PRG interface includes*/
73 #include "rg.x" /* typedefs for MAC */
77 * @brief Task Activation callback function Entity SM.
81 * Function : rgHdlSMEvents
83 * Process Messages received from Entity SM
85 * @param[in] Pst *pst, Post structure of the primitive.
86 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
87 * @param[in] Reason reason.
91 PRIVATE INLINE void rgHdlSMEvents
93 Pst *pst, /* post structure */
94 Buffer *mBuf /* message buffer */
97 PRIVATE INLINE void rgHdlSMEvents(pst, mBuf)
98 Pst *pst; /* post structure */
99 Buffer *mBuf; /* message buffer */
108 /* Process a config. request */
109 cmUnpkLrgCfgReq(RgMiLrgCfgReq, pst, mBuf);
112 /* Process a control request */
113 cmUnpkLrgCntrlReq(RgMiLrgCntrlReq, pst, mBuf);
116 /* Process a status request */
117 cmUnpkLrgStaReq(RgMiLrgStaReq, pst, mBuf);
120 /* Process a statistics request */
121 cmUnpkLrgStsReq(RgMiLrgStsReq, pst, mBuf);
123 #endif /* LCRGMILRG */
132 * @brief Task Activation callback function Entity NH.
136 * Function : rgHdlNHEvents
138 * Process Messages received from Entity NH
140 * @param[in] Pst *pst, Post structure of the primitive.
141 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
142 * @param[in] Reason reason.
146 PRIVATE INLINE void rgHdlNHEvents
148 Pst *pst, /* post structure */
149 Buffer *mBuf /* message buffer */
152 PRIVATE INLINE void rgHdlNHEvents(pst, mBuf)
153 Pst *pst; /* post structure */
154 Buffer *mBuf; /* message buffer */
163 cmUnpkCrgBndReq(RgUiCrgBndReq, pst, mBuf);
166 cmUnpkCrgUbndReq(RgUiCrgUbndReq, pst, mBuf);
169 cmUnpkCrgCfgReq(RgUiCrgCfgReq, pst, mBuf);
179 * @brief Task Activation callback function Entity KW.
183 * Function : rgHdlKWEvents
185 * Process Messages received from Entity KW
187 * @param[in] Pst *pst, Post structure of the primitive.
188 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
189 * @param[in] Reason reason.
193 PRIVATE INLINE void rgHdlKWEvents
195 Pst *pst, /* post structure */
196 Buffer *mBuf /* message buffer */
199 PRIVATE INLINE void rgHdlKWEvents(pst, mBuf)
200 Pst *pst; /* post structure */
201 Buffer *mBuf; /* message buffer */
210 cmUnpkRguBndReq(RgUiRguBndReq, pst, mBuf);
213 cmUnpkRguUbndReq(RgUiRguUbndReq, pst, mBuf);
216 cmUnpkRguCDatReq(RgUiRguCDatReq, pst, mBuf);
219 cmUnpkRguDDatReq(RgUiRguDDatReq, pst, mBuf);
222 cmUnpkRguCStaRsp(RgUiRguCStaRsp, pst, mBuf);
225 cmUnpkRguDStaRsp(RgUiRguDStaRsp, pst, mBuf);
229 case EVTRGUL2MULTHRPMEASREQ:
230 cmUnpkRguL2MUlThrpMeasReq(RgUiRguL2MUlThrpMeasReq, pst,mBuf);
242 * @brief Task Activation callback function Entity TF.
246 * Function : rgHdlTFEvents
248 * Process Messages received from Entity TF
250 * @param[in] Pst *pst, Post structure of the primitive.
251 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
252 * @param[in] Reason reason.
256 PRIVATE INLINE void rgHdlTFEvents
258 Pst *pst, /* post structure */
259 Buffer *mBuf /* message buffer */
262 PRIVATE INLINE void rgHdlTFEvents(pst, mBuf)
263 Pst *pst; /* post structure */
264 Buffer *mBuf; /* message buffer */
271 #if (defined(LCRGLITFU) || defined(LWLCRGLITFU))
273 cmUnpkTfuBndCfm(RgLiTfuBndCfm, pst, mBuf);
276 cmUnpkTfuDatInd(RgLiTfuDatInd, pst, mBuf);
279 cmUnpkTfuTtiInd(RgLiTfuTtiInd, pst, mBuf);
281 #if defined(TENB_T2K3K_SPECIFIC_CHANGES) && defined(LTE_TDD)
283 cmUnpkTfuNonRtInd(RgLiTfuNonRtInd, pst, mBuf);
295 * @brief Task Activation callback function Entity RG SCH.
299 * Function : rgHdlRGEvents
301 * Process Messages received from Entity RG SCH
303 * @param[in] Pst *pst, Post structure of the primitive.
304 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
305 * @param[in] Reason reason.
309 PRIVATE INLINE void rgHdlRGEvents
311 Pst *pst, /* post structure */
312 Buffer *mBuf /* message buffer */
315 PRIVATE INLINE void rgHdlRGEvents(pst, mBuf)
316 Pst *pst; /* post structure */
317 Buffer *mBuf; /* message buffer */
325 case EVTINFCELLREGREQ:
326 cmUnpkSchMacCellRegReq(RgSchMacCellRegReq, pst, mBuf);
328 case EVTINFSFALLOCREQ:
329 cmUnpkSchMacSfAllocReq(RgSchMacSfAllocReq, pst, mBuf);
332 cmUnpkSchMacRlsHqReq(RgSchMacRlsHqReq, pst, mBuf);
334 case EVTINFHQENTRESET:
335 cmUnpkSchMacRstHqEntReq(RgSchMacRstHqEntReq, pst, mBuf);
337 case EVTINFRLSRNTIREQ:
338 cmUnpkSchMacRlsRntiReq(RgSchMacRlsRntiReq, pst, mBuf);
342 cmUnpkSchMacSpsLcRegReq(RgSchMacSpsLcRegReq, pst, mBuf);
344 case EVTINFSPSLCDEREG:
345 cmUnpkSchMacSpsLcDeregReq(RgSchMacSpsLcDeregReq, pst, mBuf);
348 cmUnpkSchMacUlSpsResetReq(RgSchMacUlSpsResetReq, pst, mBuf);
350 #endif /* LTEMAC_SPS */
352 case EVTINFL2MEASREQ:
353 cmUnpkSchMacL2MeasReq(RgSchMacL2MeasReq, pst, mBuf);
355 case EVTINFL2MEASSENDREQ :
356 cmUnpkSchMacL2MeasSendReq(RgSchMacL2MeasSendReq, pst , mBuf);
358 case EVTINFL2MEASSTOPREQ:
359 cmUnpkSchMacL2MeasStopReq(RgSchMacL2MeasStopReq, pst , mBuf);
361 #endif/* LTE_L2_MEAS */
363 cmUnpkSchMacLcgRegReq(RgSchMacLcgRegReq, pst, mBuf);
366 #if defined(LTE_ADV) && defined(LCPRG)
367 case EVTPRGUESCELLCFGREQ:
369 cmUnpkPrgPMacSMacUeSCellCfgReq(RgPrgPMacSMacUeSCellCfgReq, pst, mBuf);
372 case EVTPRGUESCELLCFGCFM:
373 case EVTPRGUESCELLLCHMODCFM:
374 case EVTPRGUESCELLLCHDELCFMDEL:
375 case EVTPRGUESCELLLCHADDCFM:
377 cmUnpkPrgSMacPMacCfgCfm(RgPrgSMacPMacCfgCfm, pst, mBuf);
380 case EVTPRGUESCELLDELREQ:
382 cmUnpkPrgPMacSMacUeSCellDelReq(RgPrgPMacSMacUeSCellDelReq, pst, mBuf);
385 case EVTPRGUESCELLLCHMODREQ:
387 cmUnpkPrgPMacSMacUeSCellLchModReq(RgPrgPMacSMacUeSCellLchModReq, pst,
391 case EVTPRGUESCELLLCHDELREQ:
393 cmUnpkPrgPMacSMacUeSCellLchDelReq(RgPrgPMacSMacUeSCellLchDelReq, pst,
397 case EVTPRGUESCELLLCHADDREQ:
399 cmUnpkPrgPMacSMacUeSCellLchAddReq(RgPrgPMacSMacUeSCellLchAddReq, pst,
417 * @brief Task Activation callback function.
421 * Function : rgActvTsk
423 * Primitives invoked by MAC's users/providers through
424 * a loosely coupled interface arrive here by means of
425 * SSI's message handling. This API is registered with
426 * SSI during the Task Registration of MAC.
428 * @param[in] Pst *pst, Post structure of the primitive.
429 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
430 * @param[in] Reason reason.
437 Pst *pst, /* post structure */
438 Buffer *mBuf /* message buffer */
441 PUBLIC S16 rgActvTsk(pst, mBuf)
442 Pst *pst; /* post structure */
443 Buffer *mBuf; /* message buffer */
450 /* The originator of this message is the stack manager,
451 * unpack and go to the respective primitive processing function */
453 rgHdlSMEvents(pst, mBuf);
456 rgHdlNHEvents(pst, mBuf);
459 rgHdlKWEvents(pst, mBuf);
462 rgHdlTFEvents(pst, mBuf);
464 case ENTRG: /* When scheduler instance sends msg to MAC */
465 rgHdlRGEvents(pst, mBuf);
473 }/* end of rgActvTsk */
476 /**********************************************************************
479 **********************************************************************/