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 "rgr.h" /* layer management defines for LTE-MAC */
51 #include "crg.h" /* CRG interface includes */
52 #include "rg_sch_inf.h" /* SCH interface includes */
53 #include "rg_prg.h" /* PRG interface includes */
54 #include "rg_env.h" /* customisable defines and macros for LTE-MAC */
55 #include "rg.h" /* defines and macros for MAC */
56 #include "rgr.h" /* defines and macros for SCH */
59 /* header/extern include files (.x) */
60 #include "gen.x" /* general layer typedefs */
61 #include "ssi.x" /* system services typedefs */
62 #include "cm5.x" /* common timers */
63 #include "cm_hash.x" /* common hash list */
64 #include "cm_lib.x" /* common library */
65 #include "cm_llist.x" /* common linked list */
66 #include "cm_mblk.x" /* memory management */
67 #include "cm_tkns.x" /* common tokens */
68 #include "cm_lte.x" /* common tokens */
69 #include "rgu.x" /* RGU types */
70 #include "tfu.x" /* RGU types */
71 #include "lrg.x" /* layer management typedefs for MAC */
72 #include "rgr.x" /* layer management typedefs for MAC */
73 #include "crg.x" /* CRG interface typedes */
74 #include "rg_sch_inf.x" /* SCH interface typedefs */
75 #include "rg_prg.x" /*PRG interface includes*/
76 #include "du_app_mac_inf.h"
77 #include "rg.x" /* typedefs for MAC */
78 int unpackDuMacCellCfg(DuMacCellCfgReq func,Pst *pst,Buffer *mBuf);
81 * @brief Task Activation callback function Entity SM.
85 * Function : rgHdlSMEvents
87 * Process Messages received from Entity SM
89 * @param[in] Pst *pst, Post structure of the primitive.
90 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
91 * @param[in] Reason reason.
95 PRIVATE INLINE void rgHdlSMEvents
97 Pst *pst, /* post structure */
98 Buffer *mBuf /* message buffer */
101 PRIVATE INLINE void rgHdlSMEvents(pst, mBuf)
102 Pst *pst; /* post structure */
103 Buffer *mBuf; /* message buffer */
112 /* Process a config. request */
113 cmUnpkLrgCfgReq(RgMiLrgCfgReq, pst, mBuf);
115 case EVTMACSCHGENCFGREQ:
116 /* Process a config. request */
117 cmUnpkLrgSchCfgReq(MacSchGenCfgReq, pst, mBuf);
120 /* Process a control request */
121 cmUnpkLrgCntrlReq(RgMiLrgCntrlReq, pst, mBuf);
124 /* Process a status request */
125 cmUnpkLrgStaReq(RgMiLrgStaReq, pst, mBuf);
128 /* Process a statistics request */
129 cmUnpkLrgStsReq(RgMiLrgStsReq, pst, mBuf);
131 #endif /* LCRGMILRG */
132 case EVENT_MAC_CELL_CONFIG_REQ:
133 /* Process MAC cell config */
134 unpackDuMacCellCfg(MacHdlCellCfgReq, pst, mBuf);
136 case EVENT_MAC_CELL_START_REQ:
137 /* Process MAC cell start request */
138 unpackMacCellStartReq(MacHdlCellStartReq, pst, mBuf);
140 case EVENT_MAC_CELL_STOP_REQ:
141 /* Process MAC cell stop request */
142 unpackMacCellStopReq(MacHdlCellStopReq, pst, mBuf);
144 case EVENT_MAC_DL_CCCH_IND:
145 /* Process DL CCCH Ind */
146 unpackMacDlCcchInd(MacHdlDlCcchInd, pst, mBuf);
148 case EVENT_MAC_UE_CREATE_REQ:
149 /* Process Ue Create Request */
150 unpackMacUeCreateReq(MacHdlUeCreateReq, pst, mBuf);
160 * @brief Task Activation callback function Entity NH.
164 * Function : rgHdlNHEvents
166 * Process Messages received from Entity NH
168 * @param[in] Pst *pst, Post structure of the primitive.
169 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
170 * @param[in] Reason reason.
174 PRIVATE INLINE void rgHdlNHEvents
176 Pst *pst, /* post structure */
177 Buffer *mBuf /* message buffer */
180 PRIVATE INLINE void rgHdlNHEvents(pst, mBuf)
181 Pst *pst; /* post structure */
182 Buffer *mBuf; /* message buffer */
191 cmUnpkCrgBndReq(RgUiCrgBndReq, pst, mBuf);
194 cmUnpkCrgUbndReq(RgUiCrgUbndReq, pst, mBuf);
197 cmUnpkCrgCfgReq(RgUiCrgCfgReq, pst, mBuf);
207 * @brief Task Activation callback function Entity KW.
211 * Function : rgHdlKWEvents
213 * Process Messages received from Entity KW
215 * @param[in] Pst *pst, Post structure of the primitive.
216 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
217 * @param[in] Reason reason.
221 PRIVATE INLINE void rgHdlKWEvents
223 Pst *pst, /* post structure */
224 Buffer *mBuf /* message buffer */
227 PRIVATE INLINE void rgHdlKWEvents(pst, mBuf)
228 Pst *pst; /* post structure */
229 Buffer *mBuf; /* message buffer */
238 cmUnpkRguBndReq(RgUiRguBndReq, pst, mBuf);
241 cmUnpkRguUbndReq(RgUiRguUbndReq, pst, mBuf);
244 unpackDlData(MacRlcProcDlData, pst, mBuf);
247 unpackBOStatus(MacRlcProcBOStatus, pst, mBuf);
251 case EVTRGUL2MULTHRPMEASREQ:
252 cmUnpkRguL2MUlThrpMeasReq(RgUiRguL2MUlThrpMeasReq, pst,mBuf);
264 * @brief Task Activation callback function Entity TF.
268 * Function : rgHdlTFEvents
270 * Process Messages received from Entity TF
272 * @param[in] Pst *pst, Post structure of the primitive.
273 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
274 * @param[in] Reason reason.
278 PRIVATE INLINE void rgHdlTFEvents
280 Pst *pst, /* post structure */
281 Buffer *mBuf /* message buffer */
284 PRIVATE INLINE void rgHdlTFEvents(pst, mBuf)
285 Pst *pst; /* post structure */
286 Buffer *mBuf; /* message buffer */
293 #if (defined(LCRGLITFU) || defined(LWLCRGLITFU))
295 cmUnpkTfuBndCfm(RgLiTfuBndCfm, pst, mBuf);
298 cmUnpkTfuDatInd(RgLiTfuDatInd, pst, mBuf);
300 case EVENT_SLOT_IND_TO_MAC:
301 cmUnpackSlotInd(fapiMacSlotInd, pst, mBuf);
303 #if defined(TENB_T2K3K_SPECIFIC_CHANGES) && defined(LTE_TDD)
305 cmUnpkTfuNonRtInd(RgLiTfuNonRtInd, pst, mBuf);
317 * @brief Task Activation callback function Entity RG SCH.
321 * Function : rgHdlRGEvents
323 * Process Messages received from Entity RG SCH
325 * @param[in] Pst *pst, Post structure of the primitive.
326 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
327 * @param[in] Reason reason.
331 PRIVATE INLINE void rgHdlRGEvents
333 Pst *pst, /* post structure */
334 Buffer *mBuf /* message buffer */
337 PRIVATE INLINE void rgHdlRGEvents(pst, mBuf)
338 Pst *pst; /* post structure */
339 Buffer *mBuf; /* message buffer */
347 case EVTINFCELLREGREQ:
348 cmUnpkSchMacCellRegReq(RgSchMacCellRegReq, pst, mBuf);
350 case EVTINFSFALLOCREQ:
351 cmUnpkSchMacSfAllocReq(RgSchMacSfAllocReq, pst, mBuf);
354 cmUnpkSchMacRlsHqReq(RgSchMacRlsHqReq, pst, mBuf);
356 case EVTINFHQENTRESET:
357 cmUnpkSchMacRstHqEntReq(RgSchMacRstHqEntReq, pst, mBuf);
359 case EVTINFRLSRNTIREQ:
360 cmUnpkSchMacRlsRntiReq(RgSchMacRlsRntiReq, pst, mBuf);
364 cmUnpkSchMacSpsLcRegReq(RgSchMacSpsLcRegReq, pst, mBuf);
366 case EVTINFSPSLCDEREG:
367 cmUnpkSchMacSpsLcDeregReq(RgSchMacSpsLcDeregReq, pst, mBuf);
370 cmUnpkSchMacUlSpsResetReq(RgSchMacUlSpsResetReq, pst, mBuf);
372 #endif /* LTEMAC_SPS */
374 case EVTINFL2MEASREQ:
375 cmUnpkSchMacL2MeasReq(RgSchMacL2MeasReq, pst, mBuf);
377 case EVTINFL2MEASSENDREQ :
378 cmUnpkSchMacL2MeasSendReq(RgSchMacL2MeasSendReq, pst , mBuf);
380 case EVTINFL2MEASSTOPREQ:
381 cmUnpkSchMacL2MeasStopReq(RgSchMacL2MeasStopReq, pst , mBuf);
383 #endif/* LTE_L2_MEAS */
385 cmUnpkSchMacLcgRegReq(RgSchMacLcgRegReq, pst, mBuf);
388 #if defined(LTE_ADV) && defined(LCPRG)
389 case EVTPRGUESCELLCFGREQ:
391 cmUnpkPrgPMacSMacUeSCellCfgReq(RgPrgPMacSMacUeSCellCfgReq, pst, mBuf);
394 case EVTPRGUESCELLCFGCFM:
395 case EVTPRGUESCELLLCHMODCFM:
396 case EVTPRGUESCELLLCHDELCFMDEL:
397 case EVTPRGUESCELLLCHADDCFM:
399 cmUnpkPrgSMacPMacCfgCfm(RgPrgSMacPMacCfgCfm, pst, mBuf);
402 case EVTPRGUESCELLDELREQ:
404 cmUnpkPrgPMacSMacUeSCellDelReq(RgPrgPMacSMacUeSCellDelReq, pst, mBuf);
407 case EVTPRGUESCELLLCHMODREQ:
409 cmUnpkPrgPMacSMacUeSCellLchModReq(RgPrgPMacSMacUeSCellLchModReq, pst,
413 case EVTPRGUESCELLLCHDELREQ:
415 cmUnpkPrgPMacSMacUeSCellLchDelReq(RgPrgPMacSMacUeSCellLchDelReq, pst,
419 case EVTPRGUESCELLLCHADDREQ:
421 cmUnpkPrgPMacSMacUeSCellLchAddReq(RgPrgPMacSMacUeSCellLchAddReq, pst,
439 * @brief Task Activation callback function.
443 * Function : rgActvTsk
445 * Primitives invoked by MAC's users/providers through
446 * a loosely coupled interface arrive here by means of
447 * SSI's message handling. This API is registered with
448 * SSI during the Task Registration of MAC.
450 * @param[in] Pst *pst, Post structure of the primitive.
451 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
452 * @param[in] Reason reason.
459 Pst *pst, /* post structure */
460 Buffer *mBuf /* message buffer */
463 PUBLIC S16 rgActvTsk(pst, mBuf)
464 Pst *pst; /* post structure */
465 Buffer *mBuf; /* message buffer */
472 /* The originator of this message is the stack manager,
473 * unpack and go to the respective primitive processing function */
475 rgHdlSMEvents(pst, mBuf);
478 rgHdlNHEvents(pst, mBuf);
481 rgHdlKWEvents(pst, mBuf);
484 rgHdlTFEvents(pst, mBuf);
486 case ENTRG: /* When scheduler instance sends msg to MAC */
487 rgHdlRGEvents(pst, mBuf);
495 }/* end of rgActvTsk */
498 /**********************************************************************
501 **********************************************************************/