RLC BO, BO response and DL Data handling. [Issue-ID: ODUHIGH-181]
[o-du/l2.git] / src / 5gnrrlc / kw_udx_ptul.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-RLC ULDL Interface
22   
23      Type:     C source file
24   
25      Desc:     C source code for INF Interface Module 
26   
27      File:     kw_udx_ptul.c
28   
29 **********************************************************************/
30
31 /** @file kw_udx_ptul.c
32 */
33
34 /* header include files (.h) */
35 #include "common_def.h"
36 #include "lkw.h"           /* LKW defines */
37 #include "ckw.h"           /* CKW defines */
38 #include "kwu.h"           /* KWU defines */
39 #include "rgu.h"           /* RGU defines */
40 #include "kw_err.h"        /* Err defines */
41 #include "kw_env.h"        /* RLC environment options */
42
43 #include "kw.h"            /* RLC defines */
44 #include "kw_udx.h"
45 #include "kw_dl.h"
46
47 /* extern (.x) include files */
48 #include "lkw.x"           /* LKW */
49 #include "ckw.x"           /* CKW */
50 #include "kwu.x"           /* KWU */
51 #include "rgu.x"           /* RGU */
52
53 #include "kw.x"
54 #include "kw_udx.x"
55 #include "kw_dl.x"
56
57
58 #ifndef LCKWULUDX
59 PRIVATE S16 PtUlUdxBndReq ARGS((Pst* pst, SuId suId,SpId  spId ));
60 PRIVATE S16 PtUlUdxUbndReq ARGS((Pst* pst, SuId suId,Reason reason));
61 PRIVATE S16 PtUlUdxCfgReq ARGS((Pst *pst, SpId spId, RlcCfgInfo *cfgInfo));
62 PRIVATE S16 PtUlUdxStaUpdReq ARGS((Pst* pst,SpId spId,CmLteRlcId *rlcId,
63                                 RlcUdxStaPdu         *pStaPdu ));
64 PRIVATE S16 PtUlUdxUeIdChgReq ARGS((Pst *pst, SpId spId, U32 transId, 
65                                    CkwUeInfo *ueInfo, CkwUeInfo *newUeInfo));
66 PRIVATE S16 PtUlUdxStaPduReq ARGS(( Pst* pst,SpId  spId, CmLteRlcId *rlcId,
67                              RlcUdxDlStaPdu  *pStaPdu ));
68 #ifdef ANSI
69 PRIVATE S16 PtUlUdxBndReq
70 (
71 Pst *pst,                       /* post structure */
72 SuId suId,                      /* Service User Id */
73 SpId spId                    /* Status */
74 )
75 #else
76 PRIVATE S16 PtUlUdxBndReq(pst, suId,spId)
77 Pst *pst;                       /* post structure */
78 SuId suId;                      /* Service User Id */
79 SpId spId;                    /* Status */
80 #endif
81 {
82    TRC3(PtUlUdxBndReq)
83
84    return ROK;
85
86 } /* end of rlcDlUdxBndReq */
87
88 /**
89  *
90  * @brief 
91  *
92  *        Handler for confirming  the bind request received from KWU
93  *        interface.
94  *
95  * @b Description:
96  *
97  *        This function send the bind confirm primitive to the RLC user,
98  *        when it receives a bind request from its service user.
99  *
100  *  @param[in] pst     Post structure  
101  *  @param[in] suId    Service user SAP ID 
102  *  @param[in] status  Status of Confirmation 
103  *
104  *  @return  S16
105  *      -# ROK 
106  *
107  */
108 #ifdef ANSI
109 PRIVATE S16 PtUlUdxUbndReq
110 (
111 Pst *pst,                       /* post structure */
112 SpId spId,                      /* Service User Id */
113 Reason   reason                     /* Status */
114 )
115 #else
116 PRIVATE S16 PtUlUdxUbndReq(pst, suId, status)
117 Pst *pst;                       /* post structure */
118 SpId spId;                      /* Service User Id */
119 Reason Reason;                    /* Status */
120 #endif
121 {
122    TRC3(PtUlUdxUbndReq)
123
124    return ROK;
125
126 } /* end of PtDlUdxBndReq */
127
128 #ifdef ANSI
129 PRIVATE S16 PtUlUdxCfgReq
130 (
131 Pst *pst,                       /* post structure */
132 SpId spId,                      /* Service User Id */
133 RlcCfgInfo *cfmInfo             /* Config Info */
134 )
135 #else
136 PRIVATE S16 PtUlUdxCfgReq(pst, spId, status)
137 Pst *pst;                       /* post structure */
138 SpId spId;                      /* Service User Id */
139 RlcCfgInfo *cfmInfo;              /* Config Info */
140 #endif
141 {
142    TRC3(PtUlUdxCfgReq)
143
144    return ROK;
145
146 } /* end of rlcDlUdxCfgReq */
147
148 #ifdef ANSI
149 PRIVATE S16 PtUlUdxUeIdChgReq
150 (
151 Pst *pst,                      /* post structure */
152 SpId spId,                     /* Service User Id */
153 U32      transId,              /* transaction Id */
154 CkwUeInfo *ueInfo,             /* Config Info */
155 CkwUeInfo *newUeInfo           /* Config Info */
156 )
157 #else
158 PRIVATE S16 PtUlUdxUeIdChgReq(pst, spId,transId, ueInfo, newUeInfo)
159 Pst *pst;                      /* post structure */
160 SpId spId;                     /* Service User Id */
161 U32      transId;              /* transaction Id */
162 CkwUeInfo *ueInfo;             /* Config Info */
163 CkwUeInfo *newUeInfo;          /* Config Info */
164 #endif
165 {
166    TRC3(PtUlUdxUeIdChgReq)
167
168
169    return ROK;
170
171 } /* end of rlcDlUdxCfgReq */
172
173
174 PRIVATE S16  PtUlUdxStaPduReq
175 (
176 Pst*                pst,
177 SpId                spId,
178 CmLteRlcId          *rlcId,
179 RlcUdxDlStaPdu       *pStaPdu
180 )
181 {
182    TRC3(PtUlUdxStaPduReq);
183
184    return ROK;
185 }
186
187 /**
188 * @brief Request from ULM to DLM for UE Status
189 *
190 * @details
191 *
192 *     Function : KwUdxUdxStatUpd
193 *
194 *  @param[in]   Pst*           pst
195
196 *  @return   S16
197 *      -# ROK
198 **/
199 #ifdef ANSI
200 PRIVATE S16  PtUlUdxStaUpdReq
201 (
202 Pst*                pst,
203 SpId                spId,
204 CmLteRlcId          *rlcId,
205 RlcUdxStaPdu       *pStaPdu
206 )
207 #else
208 PRIVATE S16 PtUlUdxStaUpdReq(pst, rlcId, pStaPdu)
209 Pst*                pst;
210 SpId                spId;
211 CmLteRlcId          *rlcId;
212 RlcUdxDlStaPdu       *pStaPdu;
213 #endif
214 {
215
216    TRC3(PtUlUdxStaUpdReq);
217
218    return ROK;
219 } /* end of RlcUlmDlmStaUpd*/
220
221 #ifdef LTE_L2_MEAS
222 /**
223 * @brief Request from ULM to DLM for Measurement
224 *
225 * @details
226 *
227 *     Function : KwUdxUdxL2MeasReq
228 *
229 *  @param[in]   Pst*           pst
230
231 *  @return   S16
232 *      -# ROK
233 **/
234 #ifdef ANSI
235 PRIVATE S16  PtUlUdxL2MeasReq
236 (
237 Pst*                pst,
238 RlcL2MeasReqEvt      *measReqEvt
239 )
240 #else
241 PRIVATE S16 PtUlUdxL2MeasReq(pst, measReqEvt )
242 Pst*                pst;
243 RlcL2MeasReqEvt      *measReqEvt;
244 #endif
245 {
246
247    TRC3(PtUlUdxL2MeasReq);
248
249    return ROK;
250
251
252 /**
253 * @brief Request from ULM to DLM for Measurement
254 *
255 * @details
256 *
257 *     Function : KwUdxUdxL2MeasSendReq
258 *
259 *  @param[in]   Pst*           pst
260
261 *  @return   S16
262 *      -# ROK
263 **/
264 #ifdef ANSI
265 PRIVATE S16  PtUlUdxL2MeasSendReq
266 (
267 Pst*                pst,
268 U8                  status
269 )
270 #else
271 PRIVATE S16 PtUlUdxL2MeasSendReq(pst, status )
272 Pst*                pst;
273 U8                  status
274 #endif
275 {
276
277    TRC3(PtUlUdxL2MeasSendReq);
278
279    return ROK;
280 }
281
282 /**
283 * @brief Request from ULM to DLM for Measurement
284 *
285 * @details
286 *
287 *     Function : KwUdxUdxL2MeasStopReq
288 *
289 *  @param[in]   Pst*           pst
290
291 *  @return   S16
292 *      -# ROK
293 **/
294 #ifdef ANSI
295 PRIVATE S16  PtUlUdxL2MeasStopReq
296 (
297 Pst*                pst,
298 U8                  status
299 )
300 #else
301 PRIVATE S16 PtUlUdxL2MeasStopReq(pst, status )
302 Pst*                pst;
303 U8                  status
304 #endif
305 {
306
307    TRC3(PtUlUdxL2MeasStopReq);
308
309    return ROK;
310 }
311 #endif
312 #endif
313
314 PRIVATE UdxBndReq rlcUlUdxBndReqMt[] =
315 {
316 #ifdef LCKWULUDX
317    cmPkUdxBndReq,            /* 0 - loosely coupled */
318 #else
319    PtUlUdxBndReq,            /* 0 - loosely coupled, portable  */
320 #endif /* LCKWUIKWU */
321 #ifdef LWLCKWULUDX
322    cmPkUdxBndReq,            /* 1 - loosely coupled */
323 #else
324    PtUlUdxBndReq,            /* 1 - loosely coupled, portable  */
325 #endif /* LCKWUIKWU */
326 #ifdef KW
327    rlcDlUdxBndReq,            /* 2 - tightly coupled, RRC  */
328 #else
329    PtUlUdxBndReq,            /* 2 - tightly coupled, portable */
330 #endif /* KW */
331 };
332
333 PRIVATE UdxUbndReq rlcUlUdxUbndReqMt[] =
334 {
335 #ifdef LCKWULUDX
336    cmPkUdxUbndReq,            /* 0 - loosely coupled */
337 #else
338    PtUlUdxUbndReq,            /* 0 - loosely coupled, portable  */
339 #endif /* LCKWUIKWU */
340 #ifdef LWLCKWULUDX
341    cmPkUdxUbndReq,            /* 1 - loosely coupled */
342 #else
343    PtUlUdxUbndReq,            /* 1 - loosely coupled, portable  */
344 #endif /* LCKWUIKWU */
345 #ifdef KW
346    rlcDlUdxUbndReq,            /* 2 - tightly coupled, RRC  */
347 #else
348    PtUlUdxUbndReq,            /* 2 - tightly coupled, portable */
349 #endif /* KW */
350 };
351
352
353 PRIVATE UdxCfgReq rlcUlUdxCfgReqMt[] =
354 {
355 #ifdef LCKWULUDX
356    cmPkUdxCfgReq,            /* 0 - loosely coupled */
357 #else
358    PtUlUdxCfgReq,            /* 0 - loosely coupled, portable  */
359 #endif /* LCKWUIKWU */
360 #ifdef LWLCKWULUDX
361    cmPkUdxCfgReq,            /* 1 - loosely coupled */
362 #else
363    PtUlUdxCfgReq,            /* 1 - loosely coupled, portable  */
364 #endif /* LCKWUIKWU */
365 #ifdef KW
366    rlcDlUdxCfgReq,            /* 2 - tightly coupled, RRC  */
367 #else
368    PtUlUdxCfgReq,            /* 2 - tightly coupled, portable */
369 #endif /* KW */
370 };
371
372 PRIVATE UdxUeIdChgReq rlcUlUdxUeIdChgReqMt[] =
373 {
374 #ifdef LCKWULUDX
375    cmPkUdxUeIdChgReq,            /* 0 - loosely coupled */
376 #else
377    PtUlUdxUeIdChgReq,            /* 0 - loosely coupled, portable  */
378 #endif /* LCKWUIKWU */
379 #ifdef LWLCKWULUDX
380    cmPkUdxUeIdChgReq,            /* 1 - loosely coupled */
381 #else
382    PtUlUdxUeIdChgReq,            /* 1 - loosely coupled, portable  */
383 #endif /* LCKWUIKWU */
384 #ifdef KW
385    rlcDlUdxUeIdChgReq,            /* 2 - tightly coupled, RRC  */
386 #else
387    PtUlUdxUeIdChgReq,            /* 2 - tightly coupled, portable */
388 #endif /* KW */
389 };
390
391
392 PRIVATE CONSTANT UdxStaUpdReq rlcUlUdxStaUpdReqMt[RLC_MAX_UDX] =
393 {
394 #ifdef LCKWULUDX
395    cmPkUdxStaUpdReq,            /* 0 - loosely coupled */
396 #else
397    PtUlUdxStaUpdReq,            /* 0 - loosely coupled, portable  */
398 #endif /* LCKWUIKWU */
399 #ifdef LWLCKWULUDX
400    cmPkUdxStaUpdReq,            /* 1 - loosely coupled */
401 #else
402    PtUlUdxStaUpdReq,            /* 1 - loosely coupled, portable  */
403 #endif /* LCKWUIKWU */
404 #ifdef KW
405    rlcDlUdxStaUpdReq,            /* 2 - tightly coupled, RRC  */
406 #else
407    PtUlUdxStaUpdReq,            /* 2 - tightly coupled, portable */
408 #endif /* KW */
409 };
410
411 PRIVATE CONSTANT UdxStaPduReq rlcUlUdxStaPduReqMt[RLC_MAX_UDX] =
412 {
413 #ifdef LCKWULUDX
414    cmPkUdxStaPduReq,            /* 0 - loosely coupled */
415 #else
416    PtUlUdxStaPduReq,            /* 0 - loosely coupled, portable  */
417 #endif /* LCKWUIKWU */
418 #ifdef LWLCKWULUDX
419    cmPkUdxStaPduReq,            /* 1 - loosely coupled */
420 #else
421    PtUlUdxStaPduReq,            /* 1 - loosely coupled, portable  */
422 #endif /* LCKWUIKWU */
423 #ifdef KW
424    rlcDlUdxStaPduReq,            /* 2 - tightly coupled, RRC  */
425 #else
426    PtUlUdxStaPduReq,            /* 2 - tightly coupled, portable */
427 #endif /* KW */
428 };
429 #ifdef LTE_L2_MEAS
430 PRIVATE CONSTANT UdxL2MeasReq rlcUlUdxL2MeasReqMt[RLC_MAX_UDX] =
431 {
432 #ifdef LCKWULUDX
433    cmPkUdxL2MeasReq,            /* 0 - loosely coupled */
434 #else
435    PtUlUdxL2MeasReq,            /* 0 - loosely coupled, portable  */
436 #endif /* LCKWUIKWU */
437 #ifdef LWLCKWULUDX
438    cmPkUdxL2MeasReq,            /* 1 - loosely coupled */
439 #else
440    PtUlUdxL2MeasReq,            /* 1 - loosely coupled, portable  */
441 #endif /* LCKWUIKWU */
442 #ifdef KW
443    rlcDlUdxL2MeasReq,            /* 2 - tightly coupled, RRC  */
444 #else
445    PtUlUdxL2MeasReq,            /* 2 - tightly coupled, portable */
446 #endif /* KW */
447 };
448
449 PRIVATE CONSTANT UdxL2MeasSendReq rlcUlUdxL2MeasSendReqMt[RLC_MAX_UDX] =
450 {
451 #ifdef LCKWULUDX
452    cmPkUdxL2MeasSendReq,            /* 0 - loosely coupled */
453 #else
454    PtUlUdxL2MeasSendReq,            /* 0 - loosely coupled, portable  */
455 #endif /* LCKWUIKWU */
456 #ifdef LWLCKWULUDX
457    cmPkUdxL2MeasSendReq,            /* 1 - loosely coupled */
458 #else
459    PtUlUdxL2MeasSendReq,            /* 1 - loosely coupled, portable  */
460 #endif /* LCKWUIKWU */
461 #ifdef KW
462    rlcDlUdxL2MeasSendReq,            /* 2 - tightly coupled, RRC  */
463 #else
464    PtUlUdxL2MeasSendReq,            /* 2 - tightly coupled, portable */
465 #endif /* KW */
466 };
467
468 PRIVATE CONSTANT UdxL2MeasStopReq rlcUlUdxL2MeasStopReqMt[RLC_MAX_UDX] =
469 {
470 #ifdef LCKWULUDX
471    cmPkUdxL2MeasStopReq,            /* 0 - loosely coupled */
472 #else
473    PtUlUdxL2MeasStopReq,            /* 0 - loosely coupled, portable  */
474 #endif /* LCKWUIKWU */
475 #ifdef LWLCKWULUDX
476    cmPkUdxL2MeasStopReq,            /* 1 - loosely coupled */
477 #else
478    PtUlUdxL2MeasStopReq,            /* 1 - loosely coupled, portable  */
479 #endif /* LCKWUIKWU */
480 #ifdef KW
481    rlcDlUdxL2MeasStopReq,            /* 2 - tightly coupled, RRC  */
482 #else
483    PtUlUdxL2MeasStopReq,            /* 2 - tightly coupled, portable */
484 #endif /* KW */
485 };
486 #endif
487 /**
488  *
489  * @brief 
490  *
491  *        Handler for confirming  the bind request received from KWU
492  *        interface.
493  *
494  * @b Description:
495  *
496  *        This function send the bind confirm primitive to the RLC user,
497  *        when it receives a bind request from its service user.
498  *
499  *  @param[in] pst     Post structure  
500  *  @param[in] suId    Service user SAP ID 
501  *  @param[in] status  Status of Confirmation 
502  *
503  *  @return  S16
504  *      -# ROK 
505  *
506  */
507 #ifdef ANSI
508 S16 rlcUlUdxBndReq
509 (
510 Pst *pst,                       /* post structure */
511 SuId suId,                      /* Service User Id */
512 SpId spId                     /* Status */
513 )
514 #else
515 S16 rlcUlUdxBndReq(pst, suId, status)
516 Pst *pst;                       /* post structure */
517 SuId suId;                      /* Service User Id */
518 SpId spId;                    /* Status */
519 #endif
520 {
521    TRC3(rlcUlUdxBndReq)
522
523    /* jump to specific primitive depending on configured selector */
524    (*rlcUlUdxBndReqMt[pst->selector])(pst, suId, spId);
525
526    return ROK;
527
528 } /* end of rlcDlUdxBndReq */
529
530 /**
531  *
532  * @brief 
533  *
534  *        Handler for confirming  the bind request received from KWU
535  *        interface.
536  *
537  * @b Description:
538  *
539  *        This function send the bind confirm primitive to the RLC user,
540  *        when it receives a bind request from its service user.
541  *
542  *  @param[in] pst     Post structure  
543  *  @param[in] suId    Service user SAP ID 
544  *  @param[in] status  Status of Confirmation 
545  *
546  *  @return  S16
547  *      -# ROK 
548  *
549  */
550 #ifdef ANSI
551 S16 rlcUlUdxUbndReq
552 (
553 Pst *pst,                       /* post structure */
554 SpId spId,                      /* Service User Id */
555 Reason   reason                     /* Status */
556 )
557 #else
558 S16 rlcUlUdxUbndReq(pst, suId, status)
559 Pst *pst;                       /* post structure */
560 SpId spId;                      /* Service User Id */
561 Reason Reason;                    /* Status */
562 #endif
563 {
564    TRC3(rlcUlUdxUbndReq)
565
566    /* jump to specific primitive depending on configured selector */
567    (*rlcUlUdxUbndReqMt[pst->selector])(pst, spId,reason );
568
569    return ROK;
570
571 } /* end of rlcDlUdxBndReq */
572
573 #ifdef ANSI
574 S16 rlcUlUdxCfgReq
575 (
576 Pst *pst,                       /* post structure */
577 SpId spId,                      /* Service User Id */
578 RlcCfgInfo *cfmInfo             /* Config Info */
579 )
580 #else
581 S16 rlcUlUdxCfgReq(pst, suId, status)
582 Pst *pst;                       /* post structure */
583 SuId spId;                      /* Service User Id */
584 RlcCfgInfo *cfmInfo;              /* Config Info */
585 #endif
586 {
587    TRC3(rlcUlUdxCfgReq)
588
589    /* jump to specific primitive depending on configured selector */
590    (*rlcUlUdxCfgReqMt[pst->selector])(pst, spId, cfmInfo);
591
592    return ROK;
593
594 } /* end of rlcDlUdxCfgReq */
595
596 #ifdef ANSI
597 S16 rlcUlUdxUeIdChgReq
598 (
599 Pst *pst,                      /* post structure */
600 SpId spId,                     /* Service User Id */
601 U32      transId,              /* transaction Id */
602 CkwUeInfo *ueInfo,             /* Config Info */
603 CkwUeInfo *newUeInfo           /* Config Info */
604 )
605 #else
606 S16 rlcUlUdxUeIdChgReq(pst, spId,transId, ueInfo, newUeInfo)
607 Pst *pst;                      /* post structure */
608 SpId spId;                     /* Service User Id */
609 U32      transId;              /* transaction Id */
610 CkwUeInfo *ueInfo;             /* Config Info */
611 CkwUeInfo *newUeInfo;          /* Config Info */
612 #endif
613 {
614    TRC3(rlcUlUdxUeIdChgReq)
615
616    /* jump to specific primitive depending on configured selector */
617    (*rlcUlUdxUeIdChgReqMt[pst->selector])(pst, spId,transId,ueInfo,newUeInfo);
618
619    return ROK;
620
621 } /* end of rlcDlUdxCfgReq */
622
623
624
625 uint8_t rlcUlUdxStaPduReq(Pst* pst, SpId spId, CmLteRlcId *rlcId, RlcUdxDlStaPdu *pStaPdu)
626 {
627    return ((*rlcUlUdxStaPduReqMt[pst->selector])(pst,spId, rlcId, pStaPdu));
628 }
629
630 /**
631 * @brief Request from ULM to DLM for UE Status
632 *
633 * @details
634 *
635 *     Function : KwUdxUdxStatUpd
636 *
637 *  @param[in]   Pst*           pst
638
639 *  @return   S16
640 *      -# ROK
641 **/
642 uint8_t rlcUlUdxStaUpdReq(Pst* pst, SpId spId, CmLteRlcId *rlcId, RlcUdxStaPdu *pStaPdu)
643 {
644    return ((*rlcUlUdxStaUpdReqMt[pst->selector])(pst,spId, rlcId, pStaPdu));
645 } /* end of RlcUlmDlmStaUpd*/
646
647 #ifdef LTE_L2_MEAS
648 /**
649 * @brief Request from ULM to DLM for MeasReq 
650 *
651 * @details
652 *
653 *     Function : rlcUlUdxL2MeasReq
654 *
655 *  @param[in]   Pst*           pst
656
657 *  @return   S16
658 *      -# ROK
659 **/
660 #ifdef ANSI
661 S16  rlcUlUdxL2MeasReq
662 (
663 Pst*                pst,
664 RlcL2MeasReqEvt      *measReqEvt 
665 )
666 #else
667 S16 rlcUlUdxL2MeasReq(pst,measReqEvt)
668 Pst*                pst;
669 RlcL2MeasReqEvt      *measReqEvt; 
670 #endif
671 {
672
673    TRC3(rlcUlUdxStaUpdReq);
674
675    return ((*rlcUlUdxL2MeasReqMt[pst->selector])(pst,measReqEvt));
676 } /* end of rlcUlUdxL2MeasReq*/
677
678 /**
679 * @brief Request from ULM to DLM for MeasSendReq 
680 *
681 * @details
682 *
683 *     Function : rlcUlUdxMeasSendReq
684 *
685 *  @param[in]   Pst*           pst
686
687 *  @return   S16
688 *      -# ROK
689 **/
690 #ifdef ANSI
691 S16  rlcUlUdxL2MeasSendReq
692 (
693 Pst*                pst,
694 U8                  measType
695 )
696 #else
697 S16 rlcUlUdxL2MeasSendReq(pst,measReqEvt)
698 Pst*                pst;
699 U8                  measType;
700 #endif
701 {
702
703    TRC3(rlcUlUdxStaUpdReq);
704
705    return ((*rlcUlUdxL2MeasSendReqMt[pst->selector])(pst,measType));
706 } /* end of rlcUlUdxMesReq*/
707
708 /**
709 * @brief Request from ULM to DLM for MeasStopReq 
710 *
711 * @details
712 *
713 *     Function : rlcUlUdxL2MeasStopReq
714 *
715 *  @param[in]   Pst*           pst
716
717 *  @return   S16
718 *      -# ROK
719 **/
720 #ifdef ANSI
721 S16  rlcUlUdxL2MeasStopReq
722 (
723 Pst*                pst,
724 U8                  measType
725 )
726 #else
727 S16 rlcUlUdxL2MeasStopReq(pst,measReqEvt)
728 Pst*                pst;
729 U8                  measType;
730 #endif
731 {
732
733    TRC3(rlcUlUdxStaUpdReq);
734
735    return ((*rlcUlUdxL2MeasStopReqMt[pst->selector])(pst,measType));
736 } /* end of rlcUlUdxMesReq*/
737 #endif
738 /**********************************************************************
739  
740          End of file
741 **********************************************************************/