Adding release file
[o-du/l2.git] / src / 5gnrmac / rg_sch_ex_ms.c
1 /*******************************************************************************
2 ################################################################################
3 #   Copyright (c) [2017-2019] [Radisys]                                        #
4 #                                                                              #
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                                    #
8 #                                                                              #
9 #       http://www.apache.org/licenses/LICENSE-2.0                             #
10 #                                                                              #
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 *******************************************************************************/
18
19 /************************************************************************
20  
21      Name:     LTE-MAC layer
22   
23      Type:     C source file
24   
25      Desc:     C source code SSI Interface Implementation
26   
27      File:     rg_sch_ex_ms.c 
28   
29 **********************************************************************/
30
31 /** @file rg_ex_ms.c
32 @brief This file contains the implementation of callback functions 
33 registered with SSI during the LTE MAC Task initialization.
34 */
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 "tfu.h"           /* RGU defines */
48 #include "lrg.h"           /* layer management defines for LTE-MAC */
49 #include "rgr.h"           /* layer management defines for LTE-MAC */
50 #include "rgm.h"           /* layer management defines for LTE-MAC */
51 #include "rg_env.h"        /* customisable defines and macros for LTE-MAC */
52 #include "rg_sch_err.h"        /* defines and macros for Scheduler */
53 #include "rg_sch_inf.h"        /* defines and macros for Scheduler */
54 #include "rg_sch.h"        /* defines and macros for Scheduler */
55
56
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 "tfu.x"           /* RGU types */
68 #include "lrg.x"           /* layer management typedefs for MAC */
69 #include "rgr.x"           /* layer management typedefs for MAC */
70 #include "rgm.x"           /* layer management typedefs for MAC */
71 #include "rg_sch_inf.x"        /* typedefs for Scheduler */
72 #include "rg_sch.x"        /* typedefs for Scheduler */
73
74
75
76 \f
77 /**
78  * @brief Task Activation callback function. 
79  *
80  * @details
81  *
82  *     Function : schActvTsk
83  *     
84  *     Primitives invoked by MAC's users/providers through
85  *     a loosely coupled interface arrive here by means of 
86  *     SSI's message handling. This API is registered with
87  *     SSI during the Task Registration of MAC.
88  *     
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.
92  *  @return  S16
93  *      -# ROK
94  **/
95 #ifdef ANSI
96 PUBLIC S16 schActvTsk
97 (
98 Pst     *pst,                       /* post structure       */
99 Buffer  *mBuf                       /* message buffer       */
100 )
101 #else
102 PUBLIC S16 schActvTsk(pst, mBuf)
103 Pst     *pst;                       /* post structure       */
104 Buffer  *mBuf;                      /* message buffer       */
105 #endif
106 {
107    TRC2(schActvTsk)
108
109    switch(pst->srcEnt)
110    {
111       /* The originator of this message is the stack manager,
112        * unpack and go to the respective primitive processing function */
113       case ENTSM:
114          switch(pst->event)
115          {
116 #ifdef LCRGMILRG
117             case EVTLRGSCHCFGREQ:
118                /* Process a config. request */
119                cmUnpkLrgSchCfgReq(RgMiLrgSchCfgReq, pst, mBuf);
120                break;
121             case EVTLRGSCHCNTRLREQ:
122                /* Process a control request */
123                cmUnpkLrgSchCntrlReq(RgMiLrgSchCntrlReq, pst, mBuf);
124                break;
125             case EVTLRGSCHSTAIND:
126                /* Process a control request */
127                cmUnpkLrgSchStaInd(RgMiLrgSchStaInd, pst, mBuf);
128                break;
129 #ifdef LTE_L2_MEAS
130             case EVTLRGSCHL2MEASREQ:
131                /* Process L2 Measurement request */
132                cmUnpkLrgSchL2MeasReq(RgMiLrgSchL2MeasReq, pst, mBuf);
133                break;
134             case EVTLRGSCHL2MEASSTOPREQ:
135                /* Process L2 Measurement Stop request */
136                cmUnpkLrgSchL2MeasStopReq(RgMiLrgSchL2MeasStopReq, pst, mBuf);
137                break;
138             case EVTLRGSCHL2MEASSENDREQ:
139                /* Process L2 Measurement Send  request */
140                cmUnpkLrgSchL2MeasSendReq(RgMiLrgSchL2MeasSendReq, pst, mBuf);
141                break;
142 #endif
143 #endif /* LCRGMILRG */
144             default:
145                RGSCH_FREE_MSG(mBuf);
146                break;
147          }
148          break;
149      case ENTNX:
150          switch(pst->event)
151          {
152 #ifdef LCRGUIRGR
153             case EVTRGRBNDREQ:
154                cmUnpkRgrBndReq(RgUiRgrBndReq, pst, mBuf);
155                break;
156             case EVTRGRUBNDREQ:
157                cmUnpkRgrUbndReq(RgUiRgrUbndReq, pst, mBuf);
158                break;
159             case EVTRGRCFGREQ:
160                cmUnpkRgrCfgReq(RgUiRgrCfgReq, pst, mBuf);
161                break;
162 #ifdef RGR_SI_SCH
163             case EVTRGRSICFGREQ:
164                cmUnpkRgrSiCfgReq(RgUiRgrSiCfgReq, pst, mBuf);
165                break;
166             case EVTRGRWARNINGSICFGREQ:
167                cmUnpkRgrWarningSiCfgReq(RgUiRgrWarningSiCfgReq, pst, mBuf);
168                break;
169
170             case EVTRGRWARNINGSISTOPREQ:
171                cmUnpkRgrWarningSiStopReq(RgUiRgrWarningSiStopReq, pst, mBuf);
172                break;
173 #endif/*RGR_SI_SCH */
174                /* LTE_ADV_FLAG_REMOVED_START */
175             case EVTRGRLOADINFREQ:
176                cmUnpkRgrLoadInfReq(RgUiRgrLoadInfReq, pst, mBuf);
177                break;
178                /* LTE_ADV_FLAG_REMOVED_END */
179 #endif            
180             default:
181                RGSCH_FREE_MSG(mBuf);
182                break;
183          }
184          break;
185       case ENTTF:
186          switch(pst->event)
187          {
188 /*#ifdef LCRGLITFU L2Split */
189 #if (defined(LCRGLITFU) || defined(LWLCRGLITFU)) 
190             case EVTTFUSCHBNDCFM:
191                cmUnpkTfuBndCfm(RgLiTfuSchBndCfm, pst, mBuf);
192                break;
193             case EVTTFURAREQIND:
194                cmUnpkTfuRaReqInd(RgLiTfuRaReqInd, pst, mBuf);
195                break;
196             case EVTTFUULCQIIND:
197                cmUnpkTfuUlCqiInd(RgLiTfuUlCqiInd, pst, mBuf);
198                break;
199             case EVTTFUHQIND:
200                cmUnpkTfuHqInd(RgLiTfuHqInd, pst, mBuf);
201                break;
202             case EVTTFUSRIND:
203                cmUnpkTfuSrInd(RgLiTfuSrInd, pst, mBuf);
204                break;
205             case EVTTFUDLCQIIND:
206                cmUnpkTfuDlCqiInd(RgLiTfuDlCqiInd, pst, mBuf);
207                break;
208             case EVTTFUCRCIND:
209                /*cmUnpkTfuCrcIndInfo(RgLiTfuCrcInd, pst, mBuf); */
210                cmUnpkTfuCrcInd(RgLiTfuCrcInd, pst, mBuf);
211                break;
212             case EVTTFUTIMINGADVIND:
213                cmUnpkTfuTimingAdvInd(RgLiTfuTimingAdvInd, pst, mBuf);
214                break;
215             case EVTTFUSCHTTIIND:
216                cmUnpkTfuSchTtiInd(RgLiTfuSchTtiInd, pst, mBuf);
217                break;
218             case EVTTFUPUCCHDELPWR:
219                cmUnpkTfuPucchDeltaPwr(RgLiTfuPucchDeltaPwrInd, pst, mBuf);
220                break;
221             case EVTTFUDOAIND:
222                cmUnpkTfuDoaInd(RgLiTfuDoaInd, pst, mBuf);
223                break;
224 #ifdef TFU_UPGRADE
225             case EVTTFURAWCQIIND:
226                cmUnpkTfuRawCqiInd(RgLiTfuRawCqiInd, pst, mBuf);
227                break;
228             case EVTTFUSRSIND:
229                cmUnpkTfuSrsInd(RgLiTfuSrsInd, pst, mBuf);
230                break;
231 #endif 
232                /*LAA: Error Indication on SCell*/
233             case EVTTFUERRIND:
234                cmUnpkTfuErrInd(RgLiTfuErrInd, pst, mBuf);
235                break;
236 #endif            
237             default:
238                RGSCH_FREE_MSG(mBuf);
239                break;
240          }
241          break;
242       case ENTRG: /* When MAC sends a msg to Scheduler instance */
243          switch(pst->event)
244          {
245 #ifdef LCSCH
246             case EVTINFDEDBOUPDTREQ:
247                cmUnpkMacSchDedBoUpdtReq(RgMacSchDedBoUpdtReq, pst, mBuf);
248                break;
249             case EVTINFCMNBOUPDTREQ:
250                cmUnpkMacSchCmnBoUpdtReq(RgMacSchCmnBoUpdtReq, pst, mBuf);
251                break;   
252             case EVTINFSFRECPIND:
253                cmUnpkMacSchSfRecpInd(RgMacSchSfRecpInd, pst, mBuf);
254                break;
255                /*Fix: start: Inform UE delete to scheduler*/
256             case EVTINFUEDELIND:
257                cmUnpkMacSchUeDelInd(RgMacSchUeDelInd, pst, mBuf);
258                break;
259             /*Fix: end: Inform UE delete to scheduler*/
260 #ifdef LTE_L2_MEAS
261             case EVTINFL2MEASCFM:
262                cmUnpkMacSchL2MeasCfm(RgMacSchL2MeasCfm, pst, mBuf);
263                break;
264             case EVTINFL2MEASSTOPCFM:
265                cmUnpkMacSchL2MeasCfm(RgMacSchL2MeasStopCfm, pst, mBuf);
266                break;
267 #endif
268 #endif            
269             default:
270                RGSCH_FREE_MSG(mBuf);
271                break;
272          }
273          break;
274       case ENTRM: /* When RRM sends msg to scheduler */
275          switch(pst->event)
276          {
277             case EVTRGMBNDREQ:
278                cmUnpkRgmBndReq(RgUiRgmBndReq, pst, mBuf); 
279                break;
280             case EVTRGMUBNDREQ:
281                cmUnpkRgmUbndReq(RgUiRgmUbndReq, pst, mBuf); 
282                break;
283             case EVTRGMCFGPRBRPRT:
284                cmUnpkRgmCfgPrbRprt(RgUiRgmCfgPrbRprt, pst, mBuf);
285                break;
286             default:
287                RGSCH_FREE_MSG(mBuf);
288                break;
289          }
290          break;
291       default:
292           RGSCH_FREE_MSG(mBuf);
293           break;
294    }
295    SExitTsk();
296    RETVALUE(ROK);
297 }/* end of schActvTsk */
298
299 \f
300 /**********************************************************************
301  
302          End of file
303 **********************************************************************/