JIRA-ID ODUHIGH-275 classification of logs of RLC part -3
[o-du/l2.git] / src / 5gnrrlc / kw_ptmi.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**
20
21         Name:     RLC Layer Management interface
22
23         Type:     C source file
24
25         Desc:     This file contains source code for RLC layer management
26                   interface primitives. It includes the definition of the
27                   following functions and their portable function
28                   definitions.
29                      -- PjMiLpjCfgCfm
30                      -- PjMiLpjCntrlCfm
31                      -- PjMiLpjStaInd
32
33
34         File:     kw_ptmi.c
35
36 *********************************************************************21*/
37
38 \f
39 /* header (.h) include files */
40 #include "common_def.h"
41 #include "lkw.h"           /* LKW defines */
42 #include "ckw.h"           /* CKW defines */
43 #include "kwu.h"           /* KWU defines */
44 #include "rgu.h"           /* RGU defines */
45
46 #include "kw_env.h"        /* RLC environment options */
47 #include "kw.h"            /* RLC defines */
48
49 /* extern (.x) include files */
50 #include "lkw.x"           /* LKW */
51 #include "ckw.x"           /* CKW */
52 #include "kwu.x"           /* KWU */
53 #include "rgu.x"           /* RGU */
54
55 #include "kw.x"
56
57 /* local defines */
58 #define MAXKWMI 2               /* max. layer management interfaces */
59
60 \f
61 /*********************************************************************
62  *             Primitives for LKW interface 
63  ********************************************************************/
64 /* Configuration confirmation primitive */
65
66 static RlcConfigCfm rlcMiRlcConfigCfmMt[MAXKWMI] =
67 {
68 #ifdef LCKWMILKW
69    packRlcConfigCfm,            /* 0 - loosely coupled - fc */
70 #endif /* LCRLMILKW */
71 #ifdef SM
72    SmMiRlcConfigCfm,            /* 1 - tightly coupled layer management*/
73 #endif /* SM */
74 };
75
76 /* control confirmation primitives */
77
78 static LkwCntrlCfm kwMiLkwCntrlCfmMt[MAXKWMI] =
79 {
80 #ifdef LCKWMILKW 
81    cmPkLkwCntrlCfm,          /* 0 - loosely coupled - fc */
82 #endif /* LCRLMILKW */
83 #ifdef SM
84    SmMiLkwCntrlCfm,          /* 1 - tightly coupled layer management*/
85 #endif /* SM */
86 };
87
88 /* Status Indication primitive */
89
90 static LkwStaInd kwMiLkwStaIndMt[MAXKWMI] =
91 {
92 #ifdef LCKWMILKW 
93    cmPkLkwStaInd,            /* 0 - loosely coupled  */
94 #endif /* LCKWMILKW */
95 #ifdef SM
96    SmMiLkwStaInd,            /* 1 - tightly coupled, layer management */
97 #endif /* SM */
98 };
99
100 /* Status confirm primitive */
101
102 static LkwStaCfm kwMiLkwStaCfmMt[MAXKWMI] =
103 {
104 #ifdef LCKWMILKW 
105    cmPkLkwStaCfm,            /* 0 - loosely coupled  */
106 #endif /* LCKWMILKW */
107 #ifdef SM
108    SmMiLkwStaCfm,            /* 1 - tightly coupled, layer management */
109 #endif /* SM */
110 };
111
112 /* Statistics confirm primitive */
113
114 static LkwStsCfm kwMiLkwStsCfmMt[MAXKWMI] =
115 {
116 #ifdef LCKWMILKW
117    cmPkLkwStsCfm,            /* 0 - loosely coupled  */
118 #endif /* LCRLMILKW */
119 #ifdef SM
120    SmMiLkwStsCfm,            /* 1 - tightly coupled, layer management */
121 #endif /* SM */
122 };
123
124 /* Trace indication primitive */
125
126 static LkwTrcInd kwMiLkwTrcIndMt[MAXKWMI] =
127 {
128 #ifdef LCKWMILKW
129    cmPkLkwTrcInd,            /* 0 - loosely coupled  */
130 #endif /* LCKWMILKW */
131 #ifdef SM
132    SmMiLkwTrcInd,            /* 1 - tightly coupled, layer management */
133 #endif /* SM */
134 };
135
136 /* kw005.201 added support for L2 Measurement */
137 #ifdef LTE_L2_MEAS
138 static const LkwL2MeasCfm rlcMiLkwL2MeasCfmMt[] =
139 {
140 #ifdef LCKWMILKW
141    cmPkLkwL2MeasCfm,
142 #endif
143 #ifdef SM
144    SmMiLkwL2MeasCfm,
145 #endif
146 };
147 static const LkwL2MeasStopCfm RlcMiLkwL2MeasStopCfmMt[] =
148 {
149 #ifdef LCKWMILKW
150    cmPkLkwL2MeasStopCfm,
151 #endif
152 #ifdef SM
153    SmMiLkwL2MeasStopCfm,
154 #endif
155 };
156 #endif /*  LTE_L2_MEAS */
157 \f  
158 /****************************************************************************
159  *                         LKW Interface Mt functions
160  ***************************************************************************/
161 /**
162    @brief
163    This function is called by the RlcMiRlcConfigReq function for responding
164    to configuration requests.The cfm field in the RlcMngmt  structure contains
165  the response value.
166
167    - This function calls the mapping matrix for sending the configuration
168      confirmation.
169    - The actual function called depends on the coupling at the LKW interface.
170    - For a loosely coupled interface, a common packing function is called.
171    - The packing function packs the parameter in a message buffer and posts
172      the message to the target task.
173    - For a tightly coupled interface, the actual function called depends on
174      the layer manager API provided.
175
176 */
177 S16 RlcMiRlcConfigCfm
178 (
179 Pst        *pst,                /* post structure */
180 RlcMngmt    *cfm                 /* Layer Management structure */
181 )
182 {
183
184    /* jump to specific primitive depending on configured selector */
185    (*rlcMiRlcConfigCfmMt[pst->selector])(pst, cfm);
186    
187    return ROK;
188 }
189
190
191 /**
192    @brief
193    This function is called by the RlcMiLkwCntrlReq function to send a control confirm to the layer management module.
194
195    - This function calls the mapping matrix for sending the control confirmation.
196    - Actual function called depends on the coupling of the LKW interface.
197    - For a loosely coupled interface, a common packing function is called.
198    - The packing function packs the parameter in a message buffer and posts the
199      message to the target task.
200    - For a tightly coupled interface, the actual function called depends on the
201      layer manager API provided.
202
203 */
204 S16 RlcMiLkwCntrlCfm
205 (
206 Pst *pst,                    /* post structure */
207 RlcMngmt *cfm                 /* configure */
208 )
209 {
210
211    /* jump to specific primitive depending on configured selector */
212    (*kwMiLkwCntrlCfmMt[pst->selector])(pst, cfm);
213
214    return ROK;
215
216 } /* end of RlcMiLkwCntrlCfm */
217
218 /**
219    @brief
220    Description:
221    - This function can be used by RLC to send unsolicited status information
222      to the layer manager, when the unsolicited status flag is enabled by the
223      layer manager through a previous control request.
224
225    - This function calls the mapping matrix for sending the unsolicited status
226      indication.The actual function called depends on the coupling of the
227      LKW interface.
228
229    - For a loosely coupled interface, a common packing function is called. The
230      packing function packs the parameter in a message buffer and posts the
231      message to the target task.
232
233    - For a tightly coupled interface, the actual function called depends on
234      the layer manager API provided.
235 */
236 S16 RlcMiLkwStaInd
237 (
238 Pst     *pst,                /* post structure */
239 RlcMngmt *usta                /* unsolicited status */
240 )
241 {
242    /* jump to specific primitive depending on configured selector */
243    (*kwMiLkwStaIndMt[pst->selector])(pst, usta);
244
245    return (ROK);
246 } /* end of RlcMiLkwStaInd */
247
248
249 /**
250    @brief
251    - This function is called by the RlcMiLkwStaReq function to send
252       the requested status information to the layer manager.
253
254    - This function calls the mapping matrix for sending the status
255       confirmation. The actual function called depends on the coupling
256       of the LKW interface.
257
258    - For a loosely coupled interface, a common packing function is called.
259       The packing function packs the parameter in a message buffer and
260       posts the message to the target task.
261
262    - For a tightly coupled interface, the actual function called depends
263       on the layer manager API provided.
264
265 */
266 S16 RlcMiLkwStaCfm
267 (
268 Pst *pst,                    /* post structure */
269 RlcMngmt *cfm                 /* solicited status confirmation */
270 )
271 {
272
273    /* jump to specific primitive depending on configured selector */
274    (*kwMiLkwStaCfmMt[pst->selector])(pst, cfm);
275
276    return ROK;
277
278 } /* end of RlcMiLkwStaCfm */
279
280
281 /**
282    @brief
283    - This function is called by the RlcMiLkwStsReq function for responding
284       to statistics requests.
285
286    - This function calls the mapping matrix for sending the statistics
287       confirmation. The actual function called depends on the coupling
288       of the LKW interface.
289
290    - For a loosely coupled interface, a common packing function is called.
291       The packing function packs the parameter in a message buffer and
292       posts the message to the target task.
293
294    - For a tightly coupled interface, the actual function called depends
295       on the layer manager API provided.
296
297 */
298 S16 RlcMiLkwStsCfm
299 (
300 Pst *pst,                    /* post structure */
301 Action action,               /* action */
302 RlcMngmt *cfm                 /* statistics confirmation */
303 )
304 {
305    /* jump to specific primitive depending on configured selector */
306    (*kwMiLkwStsCfmMt[pst->selector])(pst, action, cfm);
307
308    return ROK;
309
310 } /* end of RlcMiLkwStsCfm */
311
312 /**
313    @brief
314    - This function can be used by RLC module to send unsolicited trace
315       indications to the layer manager, when tracing is enabled by the
316       layer manager through a previous control request.
317
318    - This function calls the mapping matrix for sending the trace indication.
319       The actual function called depends on the coupling of the LKW interface.
320
321    - For a loosely coupled interface, a common packing function is called.
322       The packing function packs the parameter in a message buffer and posts
323       the message to the target task.
324
325    - For a tightly coupled interface, the actual function called depends on
326       the layer manager API provided.
327
328 */
329 S16 RlcMiLkwTrcInd
330 (
331 Pst *pst,                    /* post structure */
332 RlcMngmt *trc,                /* trace indication */
333 Buffer *mBuf                 /* message buffer */
334 )
335 {
336    /* jump to specific primitive depending on configured selector */
337    (*kwMiLkwTrcIndMt[pst->selector])(pst, trc, mBuf);
338
339    return ROK;
340
341 } /* end of RlcMiLkwTrcInd */
342
343
344 /* kw005.201 added support for L2 Measurement */
345 #ifdef LTE_L2_MEAS
346 S16 RlcMiLkwL2MeasCfm(Pst * pst,RlcL2MeasCfmEvt *measEvt)
347 {
348
349    (*rlcMiLkwL2MeasCfmMt[pst->selector])(pst, measEvt);
350
351    return ROK;
352
353 }
354 S16 RlcMiLkwL2MeasStopCfm(Pst *pst,uint8_t measType,uint8_t status)
355 {
356
357    (*RlcMiLkwL2MeasStopCfmMt[pst->selector])(pst, measType,status);
358
359    return ROK;
360
361 }
362 #endif /*  LTE_L2_MEAS */
363
364 /********************************************************************30**
365
366          End of file
367 **********************************************************************/