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 /********************************************************************20**
21 Name: RLC Layer Management interface
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
36 *********************************************************************21*/
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 */
46 #include "kw_env.h" /* RLC environment options */
47 #include "kw.h" /* RLC defines */
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 */
58 #define MAXKWMI 2 /* max. layer management interfaces */
61 /*********************************************************************
62 * Primitives for LKW interface
63 ********************************************************************/
64 /* Configuration confirmation primitive */
66 static RlcConfigCfm rlcMiRlcConfigCfmMt[MAXKWMI] =
69 packRlcConfigCfm, /* 0 - loosely coupled - fc */
70 #endif /* LCRLMILKW */
72 SmMiRlcConfigCfm, /* 1 - tightly coupled layer management*/
76 /* control confirmation primitives */
78 static LkwCntrlCfm kwMiLkwCntrlCfmMt[MAXKWMI] =
81 cmPkLkwCntrlCfm, /* 0 - loosely coupled - fc */
82 #endif /* LCRLMILKW */
84 SmMiLkwCntrlCfm, /* 1 - tightly coupled layer management*/
88 /* Status Indication primitive */
90 static LkwStaInd kwMiLkwStaIndMt[MAXKWMI] =
93 cmPkLkwStaInd, /* 0 - loosely coupled */
94 #endif /* LCKWMILKW */
96 SmMiLkwStaInd, /* 1 - tightly coupled, layer management */
100 /* Status confirm primitive */
102 static LkwStaCfm kwMiLkwStaCfmMt[MAXKWMI] =
105 cmPkLkwStaCfm, /* 0 - loosely coupled */
106 #endif /* LCKWMILKW */
108 SmMiLkwStaCfm, /* 1 - tightly coupled, layer management */
112 /* Statistics confirm primitive */
114 static LkwStsCfm kwMiLkwStsCfmMt[MAXKWMI] =
117 cmPkLkwStsCfm, /* 0 - loosely coupled */
118 #endif /* LCRLMILKW */
120 SmMiLkwStsCfm, /* 1 - tightly coupled, layer management */
124 /* Trace indication primitive */
126 static LkwTrcInd kwMiLkwTrcIndMt[MAXKWMI] =
129 cmPkLkwTrcInd, /* 0 - loosely coupled */
130 #endif /* LCKWMILKW */
132 SmMiLkwTrcInd, /* 1 - tightly coupled, layer management */
136 /* kw005.201 added support for L2 Measurement */
138 static const LkwL2MeasCfm rlcMiLkwL2MeasCfmMt[] =
147 static const LkwL2MeasStopCfm RlcMiLkwL2MeasStopCfmMt[] =
150 cmPkLkwL2MeasStopCfm,
153 SmMiLkwL2MeasStopCfm,
156 #endif /* LTE_L2_MEAS */
158 /****************************************************************************
159 * LKW Interface Mt functions
160 ***************************************************************************/
163 This function is called by the RlcMiRlcConfigReq function for responding
164 to configuration requests.The cfm field in the RlcMngmt structure contains
167 - This function calls the mapping matrix for sending the configuration
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.
177 S16 RlcMiRlcConfigCfm
179 Pst *pst, /* post structure */
180 RlcMngmt *cfm /* Layer Management structure */
184 /* jump to specific primitive depending on configured selector */
185 (*rlcMiRlcConfigCfmMt[pst->selector])(pst, cfm);
193 This function is called by the RlcMiLkwCntrlReq function to send a control confirm to the layer management module.
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.
206 Pst *pst, /* post structure */
207 RlcMngmt *cfm /* configure */
211 /* jump to specific primitive depending on configured selector */
212 (*kwMiLkwCntrlCfmMt[pst->selector])(pst, cfm);
216 } /* end of RlcMiLkwCntrlCfm */
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.
225 - This function calls the mapping matrix for sending the unsolicited status
226 indication.The actual function called depends on the coupling of the
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.
233 - For a tightly coupled interface, the actual function called depends on
234 the layer manager API provided.
238 Pst *pst, /* post structure */
239 RlcMngmt *usta /* unsolicited status */
242 /* jump to specific primitive depending on configured selector */
243 (*kwMiLkwStaIndMt[pst->selector])(pst, usta);
246 } /* end of RlcMiLkwStaInd */
251 - This function is called by the RlcMiLkwStaReq function to send
252 the requested status information to the layer manager.
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.
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.
262 - For a tightly coupled interface, the actual function called depends
263 on the layer manager API provided.
268 Pst *pst, /* post structure */
269 RlcMngmt *cfm /* solicited status confirmation */
273 /* jump to specific primitive depending on configured selector */
274 (*kwMiLkwStaCfmMt[pst->selector])(pst, cfm);
278 } /* end of RlcMiLkwStaCfm */
283 - This function is called by the RlcMiLkwStsReq function for responding
284 to statistics requests.
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.
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.
294 - For a tightly coupled interface, the actual function called depends
295 on the layer manager API provided.
300 Pst *pst, /* post structure */
301 Action action, /* action */
302 RlcMngmt *cfm /* statistics confirmation */
305 /* jump to specific primitive depending on configured selector */
306 (*kwMiLkwStsCfmMt[pst->selector])(pst, action, cfm);
310 } /* end of RlcMiLkwStsCfm */
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.
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.
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.
325 - For a tightly coupled interface, the actual function called depends on
326 the layer manager API provided.
331 Pst *pst, /* post structure */
332 RlcMngmt *trc, /* trace indication */
333 Buffer *mBuf /* message buffer */
336 /* jump to specific primitive depending on configured selector */
337 (*kwMiLkwTrcIndMt[pst->selector])(pst, trc, mBuf);
341 } /* end of RlcMiLkwTrcInd */
344 /* kw005.201 added support for L2 Measurement */
346 S16 RlcMiLkwL2MeasCfm(Pst * pst,RlcL2MeasCfmEvt *measEvt)
349 (*rlcMiLkwL2MeasCfmMt[pst->selector])(pst, measEvt);
354 S16 RlcMiLkwL2MeasStopCfm(Pst *pst,uint8_t measType,uint8_t status)
357 (*RlcMiLkwL2MeasStopCfmMt[pst->selector])(pst, measType,status);
362 #endif /* LTE_L2_MEAS */
364 /********************************************************************30**
367 **********************************************************************/