Committing in PDCP code
[o-du/l2.git] / src / 5gnrpdcp / pj_ptui.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:    LTE-PDCP Layer - Upper Interface
22     
23         Type:    C file
24   
25         Desc:    C source code for the upper interface of LTE-PDCP
26  
27         File:    pj_ptui.c
28   
29 *********************************************************************21*/
30
31 /** @file pj_ptui.c
32 @brief PDCP Upper Interface
33 */
34
35 \f
36 /* header (.h) include files */
37 #include "envopt.h"        /* environment options */
38 #include "envdep.h"        /* environment dependent */
39 #include "envind.h"        /* environment independent */
40
41 #include "gen.h"           /* general */
42 #include "ssi.h"           /* system services */
43 #include "cm5.h"           /* common timer defines */
44 #include "cm_tkns.h"       /* common tokens defines */
45 #include "cm_mblk.h"       /* common memory allocation library defines */
46 #include "cm_llist.h"      /* common link list  defines  */
47 #include "cm_hash.h"       /* common hash list  defines */
48 #include "cm_lte.h"        /* common LTE defines */
49 #include "cpj.h"           /* CPJ defines */
50 #include "pju.h"           /* PJU defines */
51 #include "lpj.h"
52
53 #include "pj_err.h"
54 #include "pj_env.h"        /* RLC environment options */
55
56 /* extern (.x) include files */
57 #include "gen.x"           /* general */
58 #include "ssi.x"           /* system services */
59
60 #include "cm5.x"           /* common timer library */
61 #include "cm_tkns.x"       /* common tokens */
62 #include "cm_mblk.x"       /* common memory allocation */
63 #include "cm_llist.x"      /* common link list */
64 #include "cm_hash.x"       /* common hash list */
65 #include "cm_lte.x"        /* common LTE includes */
66 #include "cm_lib.x"        /* common memory allocation library */
67 #include "cpj.x"           /* CPJ defines */
68 #include "pju.x"           /* PJU defines */
69 #include "lpj.x"           /* LPJ defines */
70
71
72 #if !(defined(LCPJUICPJ)  && defined(NH))
73 #define PTPJCPJ
74 #endif
75
76 #if !(defined(LCPJUIPJU) && (defined(PX))) || !(defined(NH))
77 #define PTPJPJU
78 #endif
79
80 #ifdef __cplusplus
81 EXTERN "C" {
82 #endif /* __cplusplus */
83
84 \f  
85 /*********************************************************************
86  *             Forward Declartion for CPJ Porting Functions
87  ********************************************************************/
88 #ifdef PTPJCPJ
89
90 EXTERN S16 PtUiCpjBndCfm ARGS((Pst * pst, SuId suId, U8 status));
91
92 EXTERN S16 PtUiCpjCfgCfm ARGS((Pst * pst, SuId suId, CpjCfgCfmInfo * cfgCfm));
93
94 EXTERN S16 PtUiCpjReEstCfm ARGS((Pst * pst, SuId suId, CpjReEstCfmInfo * reEstCfm));
95
96 EXTERN S16 PtUiCpjSecCfgCfm ARGS((Pst * pst, SuId suId, CpjSecCfgCfmInfo * secCfgCfm));
97
98 EXTERN S16 PtUiCpjUeIdChgCfm ARGS((Pst * pst, SuId suId, U32 transId, CpjUeInfo  * ueInfo, CmStatus status));
99
100 EXTERN S16 PtUiCpjCountCfm ARGS((Pst * pst, SuId suId, CpjCountCfmInfo * countCfm));
101
102 EXTERN S16 PtUiCpjSduStaCfm ARGS((Pst * pst, SuId suId, CpjSduStaCfmInfo * staCfm));
103 EXTERN S16 PtUiCpjKdfCfm ARGS((Pst* pst, SuId suId, CpjCfgTransId transId, CpjKdfCfmInfo *kdfCfmInf,
104 U8 status
105 ));
106 EXTERN S16 PtUiCpjDatResumeCfm ARGS(( Pst *pst, SuId suId, CpjDatResumeCfmInfo *datResumeCfm));
107 #endif /* PTPJCPJ */
108
109 \f  
110 /*********************************************************************
111  *             Forward Declartion for PJU Porting Functions
112  ********************************************************************/
113 #ifdef PTPJPJU
114
115 EXTERN S16 PtUiPjuBndReq ARGS((Pst* pst, SpId spId, SuId suId));
116
117 EXTERN S16 PtUiPjuBndCfm ARGS((Pst* pst, SuId suId, U8 status));
118
119 EXTERN S16 PtUiPjuDatCfm ARGS((Pst* pst, SuId suId, CmLtePdcpId * pdcpId, PjuDatCfmInfo * datCfm));
120
121 EXTERN S16 PtUiPjuDatInd ARGS((Pst* pst, SuId suId, CmLtePdcpId * pdcpId, Buffer * mBuf));
122
123 EXTERN S16 PtUiPjuStaInd ARGS((Pst* pst, SuId suId, CmLtePdcpId * pdcpId, PjuStaIndInfo * staInd, Buffer *mBuf));
124
125 EXTERN S16 PtUiPjuDatFwdInd ARGS((Pst* pst, SuId suId, CmLtePdcpId * pdcpId, PjuDatFwdIndInfo * datFwdInd));
126 #endif /*--#ifdef PTPJPJU--*/
127
128 \f  
129 /*********************************************************************
130  *                         Primitives for CPJ interface 
131  ********************************************************************/
132 PRIVATE CONSTANT CpjBndCfm PjUiCpjBndCfmMt[] =
133 {
134 #ifdef LCPJUICPJ
135    cmPkCpjBndCfm,
136 #else
137    PtUiCpjBndCfm,
138 #endif
139 #ifdef NH
140    NhLiCpjBndCfm,
141 #else
142    PtUiCpjBndCfm,
143 #endif
144 };
145
146
147 PRIVATE CONSTANT CpjCfgCfm PjUiCpjCfgCfmMt[] =
148 {
149 #ifdef LCPJUICPJ
150    cmPkCpjCfgCfm,
151 #else
152    PtUiCpjCfgCfm,
153 #endif
154 #ifdef NH
155    NhLiCpjCfgCfm,
156 #else
157    PtUiCpjCfgCfm,
158 #endif
159 };
160
161
162 PRIVATE CONSTANT CpjReEstCfm PjUiCpjReEstCfmMt[] =
163 {
164 #ifdef LCPJUICPJ
165    cmPkCpjReEstCfm,
166 #else
167    PtUiCpjReEstCfm,
168 #endif
169 #ifdef NH
170    NhLiCpjReEstCfm,
171 #else
172    PtUiCpjReEstCfm,
173 #endif
174 };
175
176
177 PRIVATE CONSTANT CpjSecCfgCfm PjUiCpjSecCfgCfmMt[] =
178 {
179 #ifdef LCPJUICPJ
180    cmPkCpjSecCfgCfm,
181 #else
182    PtUiCpjSecCfgCfm,
183 #endif
184 #ifdef NH
185    NhLiCpjSecCfgCfm,
186 #else
187    PtUiCpjSecCfgCfm,
188 #endif
189 };
190
191
192 PRIVATE CONSTANT CpjUeIdChgCfm PjUiCpjUeIdChgCfmMt[] =
193 {
194 #ifdef LCPJUICPJ
195    cmPkCpjUeIdChgCfm,
196 #else
197    PtUiCpjUeIdChgCfm,
198 #endif
199 #ifdef NH
200    NhLiCpjUeIdChgCfm,
201 #else
202    PtUiCpjUeIdChgCfm,
203 #endif
204 };
205
206
207 PRIVATE CONSTANT CpjCountCfm PjUiCpjCountCfmMt[] =
208 {
209 #ifdef LCPJUICPJ
210    cmPkCpjCountCfm,
211 #else
212    PtUiCpjCountCfm,
213 #endif
214 #ifdef NH
215    NhLiCpjCountCfm,
216 #else
217    PtUiCpjCountCfm,
218 #endif
219 };
220
221
222 PRIVATE CONSTANT CpjSduStaCfm PjUiCpjSduStaCfmMt[] =
223 {
224 #ifdef LCPJUICPJ
225    cmPkCpjSduStaCfm,
226 #else
227    PtUiCpjSduStaCfm,
228 #endif
229 #ifdef NH
230    NhLiCpjSduStaCfm,
231 #else
232    PtUiCpjSduStaCfm,
233 #endif
234 };
235
236 PRIVATE CONSTANT CpjDatResumeCfm PjUiCpjDatResumeCfmMt[] =
237 {
238 #ifdef LCPJUICPJ
239    cmPkCpjDatResumeCfm,
240 #else
241    PtUiCpjDatResumeCfm,
242 #endif
243 #ifdef NH
244    NhLiCpjDatResumeCfm,
245 #else
246    PtUiCpjDatResumeCfm,
247 #endif
248 };
249
250 /** @brief This API is used to receive a Config confirm from PDCP to
251  * Application.
252  */
253 PRIVATE CONSTANT CpjKdfCfm PjUiCpjKdfCfmMt[] =
254 {
255 #ifdef LCPJUICPJ
256    cmPkCpjKdfCfm,
257 #else
258    PtUiCpjKdfCfm,
259 #endif
260 #ifdef NH
261    PtUiCpjKdfCfm
262 #else
263    PtUiCpjKdfCfm
264 #endif
265
266 };
267
268 \f  
269 /****************************************************************************
270  *                         CPJ Interface Mt functions
271  ***************************************************************************/\f
272 #ifdef PJ
273 #ifdef ANSI
274 PUBLIC S16 PjUiCpjBndCfm
275 (
276 Pst * pst,
277 SuId suId,
278 U8 status
279 )
280 #else
281 PUBLIC S16 PjUiCpjBndCfm(pst, suId, status)
282 Pst * pst;
283 SuId suId;
284 U8 status;
285 #endif
286 {
287
288    TRC3(PjUiCpjBndCfm)
289
290    (*PjUiCpjBndCfmMt[pst->selector])(pst, suId, status);
291
292    RETVALUE(ROK);
293 }
294
295 #ifdef ANSI
296 PUBLIC S16 PjUiCpjCfgCfm
297 (
298 Pst * pst,
299 SuId suId,
300 CpjCfgCfmInfo * cfgCfm
301 )
302 #else
303 PUBLIC S16 PjUiCpjCfgCfm(pst, suId, cfgCfm)
304 Pst * pst;
305 SuId suId;
306 CpjCfgCfmInfo * cfgCfm;
307 #endif
308 {
309
310    TRC3(PjUiCpjCfgCfm)
311
312    (*PjUiCpjCfgCfmMt[pst->selector])(pst, suId, cfgCfm);
313
314    RETVALUE(ROK);
315 }
316
317 #ifdef ANSI
318 PUBLIC S16 PjUiCpjReEstCfm
319 (
320 Pst * pst,
321 SuId suId,
322 CpjReEstCfmInfo * reEstCfm
323 )
324 #else
325 PUBLIC S16 PjUiCpjReEstCfm(pst, suId, reEstCfm)
326 Pst * pst;
327 SuId suId;
328 CpjReEstCfmInfo * reEstCfm;
329 #endif
330 {
331
332    TRC3(PjUiCpjReEstCfm)
333
334    (*PjUiCpjReEstCfmMt[pst->selector])(pst, suId, reEstCfm);
335
336    RETVALUE(ROK);
337 }
338
339 #ifdef ANSI
340 PUBLIC S16 PjUiCpjSecCfgCfm
341 (
342 Pst * pst,
343 SuId suId,
344 CpjSecCfgCfmInfo * secCfgCfm
345 )
346 #else
347 PUBLIC S16 PjUiCpjSecCfgCfm(pst, suId, secCfgCfm)
348 Pst * pst;
349 SuId suId;
350 CpjSecCfgCfmInfo * secCfgCfm;
351 #endif
352 {
353
354    TRC3(PjUiCpjSecCfgCfm)
355
356    (*PjUiCpjSecCfgCfmMt[pst->selector])(pst, suId, secCfgCfm);
357
358    RETVALUE(ROK);
359 }
360
361 #ifdef ANSI
362 PUBLIC S16 PjUiCpjUeIdChgCfm
363 (
364 Pst * pst,
365 SuId suId,
366 U32 transId,
367 CpjUeInfo  * ueInfo,
368 CmStatus status
369 )
370 #else
371 PUBLIC S16 PjUiCpjUeIdChgCfm(pst, suId, transId, ueInfo, status)
372 Pst * pst;
373 SuId suId;
374 U32 transId;
375 CpjUeInfo  * ueInfo;
376 CmStatus status;
377 #endif
378 {
379
380    TRC3(PjUiCpjUeIdChgCfm)
381
382    (*PjUiCpjUeIdChgCfmMt[pst->selector])(pst, suId, transId, ueInfo, status);
383
384    RETVALUE(ROK);
385 }
386
387 #ifdef ANSI
388 PUBLIC S16 PjUiCpjCountCfm
389 (
390 Pst * pst,
391 SuId suId,
392 CpjCountCfmInfo * countCfm
393 )
394 #else
395 PUBLIC S16 PjUiCpjCountCfm(pst, suId, countCfm)
396 Pst * pst;
397 SuId suId;
398 CpjCountCfmInfo * countCfm;
399 #endif
400 {
401
402    TRC3(PjUiCpjCountCfm)
403
404    (*PjUiCpjCountCfmMt[pst->selector])(pst, suId, countCfm);
405
406    RETVALUE(ROK);
407 }
408
409 #ifdef ANSI
410 PUBLIC S16 PjUiCpjSduStaCfm
411 (
412 Pst * pst,
413 SuId suId,
414 CpjSduStaCfmInfo * staCfm
415 )
416 #else
417 PUBLIC S16 PjUiCpjSduStaCfm(pst, suId, staCfm)
418 Pst * pst;
419 SuId suId;
420 CpjSduStaCfmInfo * staCfm;
421 #endif
422 {
423
424    TRC3(PjUiCpjSduStaCfm)
425
426    (*PjUiCpjSduStaCfmMt[pst->selector])(pst, suId, staCfm);
427
428    RETVALUE(ROK);
429 }
430
431 #ifdef ANSI
432 PUBLIC S16 PjUiCpjDatResumeCfm
433 (
434 Pst                   *pst,
435 SuId                  suId,
436 CpjDatResumeCfmInfo   *datResCfm
437 )
438 #else
439 PUBLIC S16 PjUiCpjDatResumeCfm(pst, suId, datResCfm)
440 Pst                   *pst;
441 SuId                  suId;
442 CpjDatResumeCfmInfo   *datResCfm;
443 #endif
444 {
445
446    TRC3(PjUiCpjDataResumeCfm)
447
448    (*PjUiCpjDatResumeCfmMt[pst->selector])(pst, suId, datResCfm);
449
450    RETVALUE(ROK);
451 }
452 /**
453 * @brief This API is used to receive a Bind confirm from PDCP to Application.
454 *
455 * @details
456 *
457 *     Function : PjUiCpjKdfCfm
458 *
459 *  @param[in]   pst - Post structure
460 *  @param[in]   suId - Service User Id
461 *  @param[in]   transId - Transaction Id
462 *  @param[in]   kdfCfmInf - Generated keys
463 *  @param[in]   status - status of KDF request
464 *  @return   S16
465 *      -# ROK
466 **/
467 #ifdef ANSI
468 PUBLIC S16 PjUiCpjKdfCfm
469 (
470 Pst* pst,
471 SuId suId,
472 CpjCfgTransId transId,
473 CpjKdfCfmInfo *kdfCfmInf,
474 U8 status
475 )
476 #else
477 PUBLIC S16 PjUiCpjKdfCfm(pst, suId, transId, status)
478 Pst* pst;
479 SuId suId;
480 CpjCfgTransId transId;
481 CpjKdfCfmInfo *kdfCfmInf;
482 U8 status;
483 #endif
484 {
485
486    TRC3(PtUiCpjCfgCfm);
487
488    (*PjUiCpjKdfCfmMt[pst->selector])(pst, suId, transId,kdfCfmInf, status);
489
490    RETVALUE(ROK);
491 }
492 #endif /*--ifdef PJ--*/
493
494 \f  
495 /*************************************************************************
496  *                         CPJ Porting Functions
497  ************************************************************************/
498 #ifdef PTPJCPJ
499
500 #ifdef ANSI
501 PUBLIC S16 PtUiCpjBndCfm
502 (
503 Pst * pst,
504 SuId suId,
505 U8 status
506 )
507 #else
508 PUBLIC S16 PtUiCpjBndCfm(pst, suId, status)
509 Pst * pst;
510 SuId suId;
511 U8 status;
512 #endif
513 {
514
515    TRC3(PtUiCpjBndCfm)
516
517    UNUSED(pst);
518    UNUSED(suId);
519    UNUSED(status);
520
521    RETVALUE(ROK);
522
523 }
524
525
526 #ifdef ANSI
527 PUBLIC S16 PtUiCpjCfgCfm
528 (
529 Pst * pst,
530 SuId suId,
531 CpjCfgCfmInfo * cfgCfm
532 )
533 #else
534 PUBLIC S16 PtUiCpjCfgCfm(pst, suId, cfgCfm)
535 Pst * pst;
536 SuId suId;
537 CpjCfgCfmInfo * cfgCfm;
538 #endif
539 {
540
541    TRC3(PtUiCpjCfgCfm)
542
543    UNUSED(pst);
544    UNUSED(suId);
545    UNUSED(cfgCfm);
546
547    RETVALUE(ROK);
548
549 }
550
551
552 #ifdef ANSI
553 PUBLIC S16 PtUiCpjReEstCfm
554 (
555 Pst * pst,
556 SuId suId,
557 CpjReEstCfmInfo * reEstCfm
558 )
559 #else
560 PUBLIC S16 PtUiCpjReEstCfm(pst, suId, reEstCfm)
561 Pst * pst;
562 SuId suId;
563 CpjReEstCfmInfo *reEstCfm;
564 #endif
565 {
566
567    TRC3(PtUiCpjReEstCfm)
568
569    UNUSED(pst);
570    UNUSED(suId);
571    UNUSED(reEstCfm);
572
573    RETVALUE(ROK);
574
575 }
576
577
578 #ifdef ANSI
579 PUBLIC S16 PtUiCpjSecCfgCfm
580 (
581 Pst * pst,
582 SuId suId,
583 CpjSecCfgCfmInfo * secCfgCfm
584 )
585 #else
586 PUBLIC S16 PtUiCpjSecCfgCfm(pst, suId, secCfgCfm)
587 Pst * pst;
588 SuId suId;
589 CpjSecCfgCfmInfo * secCfgCfm;
590 #endif
591 {
592
593    TRC3(PtUiCpjSecCfgCfm)
594
595    UNUSED(pst);
596    UNUSED(suId);
597    UNUSED(secCfgCfm);
598
599    RETVALUE(ROK);
600
601 }
602
603
604 #ifdef ANSI
605 PUBLIC S16 PtUiCpjUeIdChgCfm
606 (
607 Pst * pst,
608 SuId suId,
609 U32 transId,
610 CpjUeInfo  * ueInfo,
611 CmStatus status
612 )
613 #else
614 PUBLIC S16 PtUiCpjUeIdChgCfm(pst, suId, transId, ueInfo, status)
615 Pst * pst;
616 SuId suId;
617 U32 transId;
618 CpjUeInfo  * ueInfo;
619 CmStatus status;
620 #endif
621 {
622
623    TRC3(PtUiCpjUeIdChgCfm)
624
625    UNUSED(pst);
626    UNUSED(suId);
627    UNUSED(transId);
628    UNUSED(ueInfo);
629    UNUSED(status);
630
631    RETVALUE(ROK);
632
633 }
634
635
636 #ifdef ANSI
637 PUBLIC S16 PtUiCpjCountCfm
638 (
639 Pst * pst,
640 SuId suId,
641 CpjCountCfmInfo * countCfm
642 )
643 #else
644 PUBLIC S16 PtUiCpjCountCfm(pst, suId, countCfm)
645 Pst * pst;
646 SuId suId;
647 CpjCountCfmInfo * countCfm;
648 #endif
649 {
650
651    TRC3(PtUiCpjCountCfm)
652
653    UNUSED(pst);
654    UNUSED(suId);
655    UNUSED(countCfm);
656
657    RETVALUE(ROK);
658
659 }
660
661
662 #ifdef ANSI
663 PUBLIC S16 PtUiCpjSduStaCfm
664 (
665 Pst * pst,
666 SuId suId,
667 CpjSduStaCfmInfo * staCfm
668 )
669 #else
670 PUBLIC S16 PtUiCpjSduStaCfm(pst, suId, staCfm)
671 Pst * pst;
672 SuId suId;
673 CpjSduStaCfmInfo * staCfm;
674 #endif
675 {
676
677    TRC3(PtUiCpjSduStaCfm)
678
679    UNUSED(pst);
680    UNUSED(suId);
681    UNUSED(staCfm);
682
683    RETVALUE(ROK);
684
685 }
686
687 #ifdef ANSI
688 PUBLIC S16 PtUiCpjDatResumeCfm
689 (
690 Pst                   *pst,
691 SuId                  suId,
692 CpjDatResumeCfmInfo   *datResumeCfm
693 )
694 #else
695 PUBLIC S16 PtUiCpjDatResumeCfm(pst, suId, dataResCfm)
696 Pst                    *pst;
697 SuId                   suId;
698 CpjDataResumeCfmInfo   *datResumeCfm;
699 #endif
700 {
701
702    TRC3(PtUiCpjDataResCfm)
703
704    UNUSED(pst);
705    UNUSED(suId);
706    UNUSED(datResumeCfm);
707
708    RETVALUE(ROK);
709
710 }
711
712 /**
713 * @brief This is a portable API for KDF function 
714 *
715 * @details
716 *
717 *     Function : PtUiCpjKdfCfm
718 *
719 *  @param[in]   pst - Post structure
720 *  @param[in]   suId - Service User Id
721 *  @param[in]   transId - Transaction Id
722 *  @param[in]   kdfCfmInf - Generated keys
723 *  @param[in]   status - status of KDF request
724 *  @return   S16
725 *      -# ROK
726 **/
727 #ifdef ANSI
728 PUBLIC S16 PtUiCpjKdfCfm
729 (
730 Pst* pst,
731 SuId suId,
732 CpjCfgTransId transId,
733 CpjKdfCfmInfo *kdfCfmInf,
734 U8 status
735 )
736 #else
737 PUBLIC S16 PtUiCpjKdfCfm(pst, suId, transId, status)
738 Pst* pst;
739 SuId suId;
740 CpjCfgTransId transId;
741 CpjKdfCfmInfo *kdfCfmInf;
742 U8 status;
743 #endif
744 {
745
746    TRC3(PtUiCpjKdfCfm);
747
748    UNUSED(pst);
749    UNUSED(suId);
750    UNUSED(transId);
751    UNUSED(kdfCfmInf);
752    UNUSED(status);
753
754    RETVALUE(ROK);
755 }
756 #endif /*--ifdef PTPJCPJ--*/
757
758 \f  
759 /*********************************************************************
760  *                         Primitives for PJU interface 
761  ********************************************************************/
762
763 PRIVATE CONSTANT PjuBndCfm PjUiPjuBndCfmMt[] =
764 {
765 #ifdef LCPJUIPJU
766    cmPkPjuBndCfm,
767 #else
768    PtUiPjuBndCfm,
769 #endif
770 #ifdef NH
771    NhLiPjuBndCfm,
772 #else
773    PtUiPjuBndCfm,
774 #endif
775 #ifdef PX
776    PxLiPjuBndCfm,
777 #else
778    PtUiPjuBndCfm,
779 #endif
780 };
781
782
783 PRIVATE CONSTANT PjuDatCfm PjUiPjuDatCfmMt[] =
784 {
785 #ifdef LCPJUIPJU
786    cmPkPjuDatCfm,
787 #else
788    PtUiPjuDatCfm,
789 #endif
790 #ifdef NH
791    NhLiPjuDatCfm,
792 #else
793    PtUiPjuDatCfm,
794 #endif
795 #ifdef PX
796    PxLiPjuDatCfm,
797 #else
798    PtUiPjuDatCfm,
799 #endif
800 };
801
802
803 PRIVATE CONSTANT PjuDatInd PjUiPjuDatIndMt[] =
804 {
805 #ifdef SS_RBUF
806 #ifndef TENB_ACC 
807 #ifdef LCPJUIPJU
808    cmPkFpPjuDatInd,
809 #else
810    PtUiPjuDatInd,
811 #endif
812 #endif
813 #else
814 #ifdef LCPJUIPJU
815    cmPkPjuDatInd,
816 #else
817    PtUiPjuDatInd,
818 #endif
819 #endif
820 #ifdef NH
821    NhLiPjuDatInd,
822 #else
823    PtUiPjuDatInd,
824 #endif
825 #ifdef PX
826    PxLiPjuDatInd,
827 #else
828    PtUiPjuDatInd,
829 #endif
830 };
831
832
833 PRIVATE CONSTANT PjuStaInd PjUiPjuStaIndMt[] =
834 {
835 #ifdef LCPJUIPJU
836    cmPkPjuStaInd,
837 #else
838    PtUiPjuStaInd,
839 #endif
840 #ifdef NH
841    NhLiPjuStaInd,
842 #else
843    PtUiPjuStaInd,
844 #endif
845 #ifdef PX
846    PxLiPjuStaInd,
847 #else
848    PtUiPjuStaInd,
849 #endif
850 };
851
852
853 PRIVATE CONSTANT PjuDatFwdInd PjUiPjuDatFwdIndMt[] =
854 {
855 #ifdef LCPJUIPJU
856    cmPkPjuDatFwdInd,
857 #else
858    PtUiPjuDatFwdInd,
859 #endif
860 #ifdef NH
861    NhLiPjuDatFwdInd,
862 #else
863    PtUiPjuDatFwdInd,
864 #endif
865 #ifdef PX
866    PxLiPjuDatFwdInd,
867 #else
868    PtUiPjuDatFwdInd,
869 #endif
870 };
871
872 \f  
873 /****************************************************************************
874  *                         PJU Interface Mt functions
875  ***************************************************************************/\f
876 #ifdef PJ
877
878 #ifdef ANSI
879 PUBLIC S16 PjUiPjuBndCfm
880 (
881 Pst* pst,
882 SuId suId,
883 U8 status
884 )
885 #else
886 PUBLIC S16 PjUiPjuBndCfm(pst, suId, status)
887 Pst* pst;
888 SuId suId;
889 U8 status;
890 #endif
891 {
892
893    TRC3(PjUiPjuBndCfm)
894
895    (*PjUiPjuBndCfmMt[pst->selector])(pst, suId, status);
896
897    RETVALUE(ROK);
898
899 }
900
901
902 #ifdef ANSI
903 PUBLIC S16 PjUiPjuDatCfm
904 (
905 Pst* pst,
906 SuId suId,
907 CmLtePdcpId * pdcpId,
908 PjuDatCfmInfo * datCfm
909 )
910 #else
911 PUBLIC S16 PjUiPjuDatCfm(pst, suId, pdcpId, datCfm)
912 Pst* pst;
913 SuId suId;
914 CmLtePdcpId * pdcpId;
915 PjuDatCfmInfo * datCfm;
916 #endif
917 {
918
919    TRC3(PjUiPjuDatCfm)
920
921    (*PjUiPjuDatCfmMt[pst->selector])(pst, suId, pdcpId, datCfm);
922
923    RETVALUE(ROK);
924
925 }
926
927
928 #ifdef ANSI
929 PUBLIC S16 PjUiPjuDatInd
930 (
931 Pst* pst,
932 SuId suId,
933 CmLtePdcpId * pdcpId,
934 Buffer * mBuf
935 )
936 #else
937 PUBLIC S16 PjUiPjuDatInd(pst, suId, pdcpId, mBuf)
938 Pst* pst;
939 SuId suId;
940 CmLtePdcpId * pdcpId;
941 Buffer * mBuf;
942 #endif
943 {
944
945    TRC3(PjUiPjuDatInd)
946
947    (*PjUiPjuDatIndMt[pst->selector])(pst, suId, pdcpId, mBuf);
948
949    RETVALUE(ROK);
950
951 }
952
953
954 #ifdef ANSI
955 PUBLIC S16 PjUiPjuStaInd
956 (
957 Pst * pst,
958 SuId suId,
959 CmLtePdcpId * pdcpId,
960 PjuStaIndInfo * staInd,
961 Buffer    *mBuf
962 )
963 #else
964 PUBLIC S16 PjUiPjuStaInd(pst, suId, pdcpId, staInd, mBuf)
965 Pst * pst;
966 SuId suId;
967 CmLtePdcpId * pdcpId;
968 PjuStaIndInfo * staInd;
969 Buffer *mBuf;
970 #endif
971 {
972
973    TRC3(PjUiPjuStaInd)
974
975    (*PjUiPjuStaIndMt[pst->selector])(pst, suId, pdcpId, staInd, mBuf);
976
977    RETVALUE(ROK);
978
979 }
980
981
982 #ifdef ANSI
983 PUBLIC S16 PjUiPjuDatFwdInd
984 (
985 Pst* pst,
986 SuId suId,
987 CmLtePdcpId * pdcpId,
988 PjuDatFwdIndInfo * datFwdInd
989 )
990 #else
991 PUBLIC S16 PjUiPjuDatFwdInd(pst, suId, pdcpId, datFwdInd)
992 Pst* pst;
993 SuId suId;
994 CmLtePdcpId * pdcpId;
995 PjuDatFwdIndInfo * datFwdInd;
996 #endif
997 {
998
999    TRC3(PjUiPjuDatFwdInd)
1000
1001    (*PjUiPjuDatFwdIndMt[pst->selector])(pst, suId, pdcpId, datFwdInd);
1002
1003    RETVALUE(ROK);
1004
1005 }
1006 #endif /*--ifdef PJ--*/
1007
1008 \f  
1009 /*************************************************************************
1010  *                         PJU Porting Functions
1011  ************************************************************************/
1012 #ifdef PTPJPJU
1013
1014 #ifdef ANSI
1015 PUBLIC S16 PtUiPjuBndReq
1016 (
1017 Pst* pst,
1018 SpId spId,
1019 SuId suId
1020 )
1021 #else
1022 PUBLIC S16 PtUiPjuBndReq(pst, spId, suId)
1023 Pst* pst;
1024 SpId spId;
1025 SuId suId;
1026 #endif
1027 {
1028
1029    TRC3(PtUiPjuBndReq)
1030
1031    UNUSED(pst);
1032    UNUSED(spId);
1033    UNUSED(suId);
1034
1035    RETVALUE(ROK);
1036
1037 }
1038
1039
1040 #ifdef ANSI
1041 PUBLIC S16 PtUiPjuBndCfm
1042 (
1043 Pst* pst,
1044 SuId suId,
1045 U8 status
1046 )
1047 #else
1048 PUBLIC S16 PtUiPjuBndCfm(pst, suId, status)
1049 Pst* pst;
1050 SuId suId;
1051 U8 status;
1052 #endif
1053 {
1054
1055    TRC3(PtUiPjuBndCfm)
1056
1057    UNUSED(pst);
1058    UNUSED(suId);
1059    UNUSED(status);
1060
1061    RETVALUE(ROK);
1062
1063 }
1064
1065
1066 #ifdef ANSI
1067 PUBLIC S16 PtUiPjuDatCfm
1068 (
1069 Pst* pst,
1070 SuId suId,
1071 CmLtePdcpId * pdcpId,
1072 PjuDatCfmInfo * datCfm
1073 )
1074 #else
1075 PUBLIC S16 PtUiPjuDatCfm(pst, suId, pdcpId, datCfm)
1076 Pst* pst;
1077 SuId suId;
1078 CmLtePdcpId * pdcpId;
1079 PjuDatCfmInfo * datCfm;
1080 #endif
1081 {
1082
1083    TRC3(PtUiPjuDatCfm)
1084
1085    UNUSED(pst);
1086    UNUSED(suId);
1087    UNUSED(pdcpId);
1088    UNUSED(datCfm);
1089
1090    RETVALUE(ROK);
1091
1092 }
1093
1094
1095 #ifdef ANSI
1096 PUBLIC S16 PtUiPjuDatInd
1097 (
1098 Pst* pst,
1099 SuId suId,
1100 CmLtePdcpId * pdcpId,
1101 Buffer * mBuf
1102 )
1103 #else
1104 PUBLIC S16 PtUiPjuDatInd(pst, suId, pdcpId, mBuf)
1105 Pst* pst;
1106 SuId suId;
1107 CmLtePdcpId * pdcpId;
1108 Buffer * mBuf;
1109 #endif
1110 {
1111
1112    TRC3(PtUiPjuDatInd)
1113
1114    UNUSED(pst);
1115    UNUSED(suId);
1116    UNUSED(pdcpId);
1117    UNUSED(mBuf);
1118
1119    RETVALUE(ROK);
1120
1121 }
1122
1123
1124 #ifdef ANSI
1125 PUBLIC S16 PtUiPjuStaInd
1126 (
1127 Pst* pst,
1128 SuId suId,
1129 CmLtePdcpId * pdcpId,
1130 PjuStaIndInfo * staInd,
1131 Buffer *mBuf
1132 )
1133 #else
1134 PUBLIC S16 PtUiPjuStaInd(pst, suId, pdcpId, staInd, mBuf)
1135 Pst* pst;
1136 SuId suId;
1137 CmLtePdcpId * pdcpId;
1138 PjuStaIndInfo * staInd;
1139 Buffer *mBuf;
1140 #endif
1141 {
1142
1143    TRC3(PtUiPjuStaInd)
1144
1145    UNUSED(pst);
1146    UNUSED(suId);
1147    UNUSED(pdcpId);
1148    UNUSED(staInd);
1149
1150    RETVALUE(ROK);
1151
1152 }
1153
1154
1155 #ifdef ANSI
1156 PUBLIC S16 PtUiPjuDatFwdInd
1157 (
1158 Pst* pst,
1159 SuId suId,
1160 CmLtePdcpId * pdcpId,
1161 PjuDatFwdIndInfo * datFwdInd
1162 )
1163 #else
1164 PUBLIC S16 PtUiPjuDatFwdInd(pst, suId, pdcpId, datFwdInd)
1165 Pst* pst;
1166 SuId suId;
1167 CmLtePdcpId * pdcpId;
1168 PjuDatFwdIndInfo * datFwdInd;
1169 #endif
1170 {
1171
1172    TRC3(PtUiPjuDatFwdInd)
1173
1174    UNUSED(pst);
1175    UNUSED(suId);
1176    UNUSED(pdcpId);
1177    UNUSED(datFwdInd);
1178
1179    RETVALUE(ROK);
1180
1181 }
1182 #endif /*--ifdef PTPJPJU--*/
1183
1184 #ifdef __cplusplus
1185 }
1186 #endif /* __cplusplus */
1187 /********************************************************************30**
1188          End of file
1189 **********************************************************************/