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"
60 #include "lwr_mac_upr_inf.h"
63 * @brief Task Activation callback function Entity SM.
67 * Function : rgHdlSMEvents
69 * Process Messages received from Entity SM
71 * @param[in] Pst *pst, Post structure of the primitive.
72 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
73 * @param[in] Reason reason.
76 static inline void rgHdlSMEvents
78 Pst *pst, /* post structure */
79 Buffer *mBuf /* message buffer */
86 /* Process a config. request */
87 cmUnpkLrgCfgReq(RgMiLrgCfgReq, pst, mBuf);
89 case EVTMACSCHGENCFGREQ:
90 /* Process a config. request */
91 cmUnpkLrgSchCfgReq(MacSchGenCfgReq, pst, mBuf);
94 /* Process a control request */
95 cmUnpkLrgCntrlReq(RgMiLrgCntrlReq, pst, mBuf);
98 /* Process a status request */
99 cmUnpkLrgStaReq(RgMiLrgStaReq, pst, mBuf);
102 /* Process a statistics request */
103 cmUnpkLrgStsReq(RgMiLrgStsReq, pst, mBuf);
105 #endif /* LCRGMILRG */
106 case EVENT_MAC_CELL_CONFIG_REQ:
107 /* Process MAC cell config */
108 unpackDuMacCellCfg(MacProcCellCfgReq, pst, mBuf);
110 case EVENT_MAC_CELL_START:
111 /* Process MAC cell start request */
112 unpackMacCellStart(MacProcCellStart, pst, mBuf);
114 case EVENT_MAC_CELL_STOP:
115 /* Process MAC cell stop request */
116 unpackMacCellStop(MacProcCellStop, pst, mBuf);
118 case EVENT_MAC_DL_CCCH_IND:
119 /* Process DL CCCH Ind */
120 unpackMacDlCcchInd(MacProcDlCcchInd, pst, mBuf);
122 case EVENT_MAC_UE_CREATE_REQ:
123 /* Process Ue Create Request */
124 unpackMacUeCreateReq(MacProcUeCreateReq, pst, mBuf);
126 case EVENT_MAC_UE_RECONFIG_REQ:
127 /* Process Ue Reconfig Request */
128 unpackMacUeReconfigReq(MacProcUeReconfigReq, pst, mBuf);
130 case EVENT_MAC_UE_DELETE_REQ:
132 unpackMacUeDeleteReq(MacProcUeDeleteReq, pst, mBuf);
135 case EVENT_MAC_CELL_DELETE_REQ:
137 unpackMacCellDeleteReq(MacProcCellDeleteReq, pst, mBuf);
148 * @brief Task Activation callback function Entity NH.
152 * Function : rgHdlNHEvents
154 * Process Messages received from Entity NH
156 * @param[in] Pst *pst, Post structure of the primitive.
157 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
158 * @param[in] Reason reason.
161 static inline void rgHdlNHEvents
163 Pst *pst, /* post structure */
164 Buffer *mBuf /* message buffer */
171 cmUnpkCrgBndReq(RgUiCrgBndReq, pst, mBuf);
174 cmUnpkCrgUbndReq(RgUiCrgUbndReq, pst, mBuf);
177 cmUnpkCrgCfgReq(RgUiCrgCfgReq, pst, mBuf);
187 * @brief Task Activation callback function Entity KW.
191 * Function : rgHdlKWEvents
193 * Process Messages received from Entity KW
195 * @param[in] Pst *pst, Post structure of the primitive.
196 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
197 * @param[in] Reason reason.
200 static inline void rgHdlKWEvents
202 Pst *pst, /* post structure */
203 Buffer *mBuf /* message buffer */
210 cmUnpkRguBndReq(RgUiRguBndReq, pst, mBuf);
213 cmUnpkRguUbndReq(RgUiRguUbndReq, pst, mBuf);
215 case EVENT_DL_DATA_TO_MAC:
216 unpackRlcDlData(MacProcRlcDlData, pst, mBuf);
218 case EVENT_BO_STATUS_TO_MAC:
219 unpackRlcBoStatus(MacProcRlcBoStatus, pst, mBuf);
223 case EVTRGUL2MULTHRPMEASREQ:
224 cmUnpkRguL2MUlThrpMeasReq(RgUiRguL2MUlThrpMeasReq, pst,mBuf);
236 * @brief Task Activation callback function Entity TF.
240 * Function : rgHdlTFEvents
242 * Process Messages received from Entity TF
244 * @param[in] Pst *pst, Post structure of the primitive.
245 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
246 * @param[in] Reason reason.
249 static inline void rgHdlTFEvents
251 Pst *pst, /* post structure */
252 Buffer *mBuf /* message buffer */
257 case EVENT_SLOT_IND_TO_MAC:
258 unpackSlotInd(fapiMacSlotInd, pst, mBuf);
260 case EVENT_STOP_IND_TO_MAC:
261 unpackStopInd(fapiMacStopInd, pst, mBuf);
263 case EVENT_RACH_IND_TO_MAC:
264 unpackRachInd(fapiMacRachInd, pst, mBuf);
266 case EVENT_CRC_IND_TO_MAC:
267 unpackCrcInd(fapiMacCrcInd, pst, mBuf);
269 case EVENT_RX_DATA_IND_TO_MAC:
270 unpackRxDataInd(fapiMacRxDataInd, pst, mBuf);
272 case EVENT_UCI_IND_TO_MAC:
273 unpackUciInd(FapiMacUciInd, pst, mBuf);
283 * @brief Task Activation callback function Entity RG SCH.
287 * Function : rgHdlRGEvents
289 * Process Messages received from Entity RG SCH
291 * @param[in] Pst *pst, Post structure of the primitive.
292 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
293 * @param[in] Reason reason.
296 static inline void rgHdlRGEvents
298 Pst *pst, /* post structure */
299 Buffer *mBuf /* message buffer */
305 case EVTINFCELLREGREQ:
306 cmUnpkSchMacCellRegReq(RgSchMacCellRegReq, pst, mBuf);
308 case EVTINFSFALLOCREQ:
309 cmUnpkSchMacSfAllocReq(RgSchMacSfAllocReq, pst, mBuf);
312 cmUnpkSchMacRlsHqReq(RgSchMacRlsHqReq, pst, mBuf);
314 case EVTINFHQENTRESET:
315 cmUnpkSchMacRstHqEntReq(RgSchMacRstHqEntReq, pst, mBuf);
317 case EVTINFRLSRNTIREQ:
318 cmUnpkSchMacRlsRntiReq(RgSchMacRlsRntiReq, pst, mBuf);
322 cmUnpkSchMacSpsLcRegReq(RgSchMacSpsLcRegReq, pst, mBuf);
324 case EVTINFSPSLCDEREG:
325 cmUnpkSchMacSpsLcDeregReq(RgSchMacSpsLcDeregReq, pst, mBuf);
328 cmUnpkSchMacUlSpsResetReq(RgSchMacUlSpsResetReq, pst, mBuf);
330 #endif /* LTEMAC_SPS */
332 case EVTINFL2MEASREQ:
333 cmUnpkSchMacL2MeasReq(RgSchMacL2MeasReq, pst, mBuf);
335 case EVTINFL2MEASSENDREQ :
336 cmUnpkSchMacL2MeasSendReq(RgSchMacL2MeasSendReq, pst , mBuf);
338 case EVTINFL2MEASSTOPREQ:
339 cmUnpkSchMacL2MeasStopReq(RgSchMacL2MeasStopReq, pst , mBuf);
341 #endif/* LTE_L2_MEAS */
343 cmUnpkSchMacLcgRegReq(RgSchMacLcgRegReq, pst, mBuf);
346 #if defined(LTE_ADV) && defined(LCPRG)
347 case EVTPRGUESCELLCFGREQ:
349 cmUnpkPrgPMacSMacUeSCellCfgReq(RgPrgPMacSMacUeSCellCfgReq, pst, mBuf);
352 case EVTPRGUESCELLCFGCFM:
353 case EVTPRGUESCELLLCHMODCFM:
354 case EVTPRGUESCELLLCHDELCFMDEL:
355 case EVTPRGUESCELLLCHADDCFM:
357 cmUnpkPrgSMacPMacCfgCfm(RgPrgSMacPMacCfgCfm, pst, mBuf);
360 case EVTPRGUESCELLDELREQ:
362 cmUnpkPrgPMacSMacUeSCellDelReq(RgPrgPMacSMacUeSCellDelReq, pst, mBuf);
365 case EVTPRGUESCELLLCHMODREQ:
367 cmUnpkPrgPMacSMacUeSCellLchModReq(RgPrgPMacSMacUeSCellLchModReq, pst,
371 case EVTPRGUESCELLLCHDELREQ:
373 cmUnpkPrgPMacSMacUeSCellLchDelReq(RgPrgPMacSMacUeSCellLchDelReq, pst,
377 case EVTPRGUESCELLLCHADDREQ:
379 cmUnpkPrgPMacSMacUeSCellLchAddReq(RgPrgPMacSMacUeSCellLchAddReq, pst,
397 * @brief Task Activation callback function.
401 * Function : rgActvTsk
403 * Primitives invoked by MAC's users/providers through
404 * a loosely coupled interface arrive here by means of
405 * SSI's message handling. This API is registered with
406 * SSI during the Task Registration of MAC.
408 * @param[in] Pst *pst, Post structure of the primitive.
409 * @param[in] Buffer *mBuf, Packed primitive parameters in the buffer.
410 * @param[in] Reason reason.
416 Pst *pst, /* post structure */
417 Buffer *mBuf /* message buffer */
422 /* The originator of this message is the stack manager,
423 * unpack and go to the respective primitive processing function */
425 rgHdlSMEvents(pst, mBuf);
428 rgHdlNHEvents(pst, mBuf);
431 rgHdlKWEvents(pst, mBuf);
434 rgHdlTFEvents(pst, mBuf);
436 case ENTMAC: /* When scheduler instance sends msg to MAC */
437 rgHdlRGEvents(pst, mBuf);
445 }/* end of rgActvTsk */
448 /**********************************************************************
451 **********************************************************************/