Committing in PDCP code
[o-du/l2.git] / src / 5gnrpdcp / pj_udx.x
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 Interface  
22     
23         Type:    C include file
24   
25         Desc:    This file contains the Data structures for LTE PDCP Interface
26  
27         File:   pj_udx.x
28   
29 *********************************************************************21*/
30 #ifndef __PJ_UDX_X__
31 #define __PJ_UDX_X__
32
33 #ifdef __cplusplus
34 EXTERN "C" {
35 #endif  /*for extern "C"*/
36
37 /**
38  * @file 
39  * @brief UDX Interface file
40  */
41
42 /*************************************************************************
43  *                      START OF STRUCTURES
44  ************************************************************************/
45 /**
46  * @brief
47  * Cipher Key type information.
48  */
49 typedef U8        UdxCipherKey;
50
51 /**
52  * @brief
53  * Integrity Key type information.
54  */
55 typedef U8        UdxIntegrityKey;
56
57 /**
58   * @brief
59   * RLC Parameter Information in AM mode.
60  */
61 typedef struct udxRlcAm
62 {
63    Bool           statusRepReqd; /*!< Status report required */
64    U8             pdcpSNSize; /*!< Length of PDCP sequence number */
65 }UdxRlcAm;
66
67 /**
68  * @brief
69  * RLC Parameter Information in UM mode.
70  */
71 typedef struct udxRlcUm
72 {
73    U8             pdcpSNSize; /*!< Length of PDCP sequence number */
74 }UdxRlcUm;
75
76 /**
77  * @brief
78  * Mapped RLC Entity Information in RLC for the PDCP Entity
79  */
80 typedef struct udxRlcInfo
81 {
82    U8             dir;       /*!< UPLINK/DOWNLINK/BOTH */
83    U8             mode;      /*!< RLC Mode */ 
84    union
85    {
86       UdxRlcAm    rlcAm;     /*!< RLC in AM mode */
87       UdxRlcUm    rlcUm;     /*!< RLC in UM mode */
88    }m;
89 }UdxRlcInfo;
90
91
92 /**
93  * @brief
94  * Ciphering Information to be configured per UE in PDCP.
95  */
96 typedef struct udxCipherInfo         
97 {
98    UdxCipherKey   ctrlplnKey[UDX_CIPHER_KEY_LEN];   /*!< Control plane
99                                                         ciphering key */
100    UdxCipherKey   usrplnKey[UDX_CIPHER_KEY_LEN];    /*!< User plane
101                                                         ciphering key */
102    U8             algoType;                         /*!< Algorithm type.
103                                                     Allowed values are:
104                                                     -# UDX_SEC_ALG_NULL 
105                                                     -# UDX_SEC_ALG_SNOW3G
106                                                     -# UDX_SEC_ALG_AES
107                                                     */
108 }UdxCipherInfo;
109
110 /**
111  * @brief
112  * Integrity protection paramater information. 
113 */
114 typedef struct udxIntegInfo
115 {
116    U8                algoType;                  /*!< Algorithm type.
117                                                    Allowed values are:
118                                                    -# UDX_SEC_ALG_AES
119                                                    -# UDX_SEC_ALG_SNOW3G
120                                                    */
121    UdxIntegrityKey   intKey[UDX_INTG_KEY_LEN];  /*!< Integrity key */
122 } UdxIntegInfo;
123
124 /**
125  * @brief
126  * PDCP Security configuration parameter.
127  */
128 typedef struct udxSecCfg 
129 {
130    Bool           selSecAct;        /*!< Selective security activation flag.
131
132    PDCP applies only Integrity algorithm for the first UL and first DL
133    messages (security activation procedure), applies both Integrity and
134    ciphering for all the other messages (including handover which involves
135    reconfiguration messages). selSecAct enables to identify whether
136    PDCP needs to selectively apply only Integrity for first UL/DL message.
137    */
138    Bool           isHo;             /*!< Will be set true in case of HO > */
139    UdxIntegInfo   integInfo;        /*!< Integrity configuration */
140    UdxCipherInfo  cipherInfo;       /*!< Ciphering configuration */
141 } UdxSecCfg;
142
143 /**
144  * @brief
145  * ROHC Compression protocol information structure. 
146  */
147 typedef struct udxRohcInfo
148 {
149    U16            maxCid;                          /*!< Maximum CID */
150    Bool           profLst[UDX_MAX_ROHC_PROF_LIST]; /*!< ROHC profile
151                                                      information */
152 }UdxRohcInfo;
153
154 /**
155  * @brief
156  * ROHC Configuration information for PDCP entity. 
157  */
158 typedef struct udxHdrCompCfg
159 {
160    Bool           hdrCompUsed;   /*!< Header Compression Used/Not */
161    UdxRohcInfo    rohcInfo;      /*!< ROHC configuration information */
162 }UdxHdrCompCfg;
163
164 /**
165  * @brief
166  * Handover Information for RB.
167  */
168 typedef struct udxHoInfo
169 {
170    U8             isHoPres;   /*!< Last 2bits (from LSB)is used to convey handover information is present or
171                                 not. @n Allowed values are:
172                                     -# UDX_HO_NOT_PRSNT  00
173                                     -# UDX_HO_UL         01
174                                     -# UDX_HO_DL         10
175                                     */
176    U8             snLen;         /*!< PDCP-SN length 12/15 bits */
177    U32            dlCount;       /*!< DL COUNT to assign for new SDUs */
178    U32            ulCount;       /*!< UL First Missing SN */
179    U16             numBits;       /*!< Number of bits in UL bitmap */
180    U8             *ulBitMap;     /*!< UL SN bitmap excluding FMS to be used 
181                                       as status report */
182 } UdxHoInfo;
183
184 /**
185  * @brief
186  * Configuraiton Structure to add an RB.
187  */
188 typedef struct udxAddCfgEnt
189 {        
190    Bool           discReqd;   /*!< Discard required/not for PDUs
191                                 with Integrity Verification failure */
192    Bool           cfmReqd;    /*!< Confirm required/not for SDUs 
193                                 received by the peer PDCP entity. */
194   /* cpj_x_001.main_3 added support for L2 Measurement */
195 #ifdef LTE_L2_MEAS
196    U8             qci;        /*!< qCI value Associated with that RB */
197 #endif /* LTE_L2_MEAS */
198
199    UdxRlcInfo     rlcInfo;    /*!< Corresponding RLC entity information. */
200    S16            discardTmr; /*!< Discard timer. @n The value for this parameter
201                                 is expected in milli seconds. @n Value of infinity
202                                 is also allowed and -1 must be passed for
203                                 the same. */
204    U16            reOrdTmrVal; /*!< t-Reorder Timer Value in ms */
205    UdxHdrCompCfg  hdrCompCfg; /*!< PDCP compression information */
206 }UdxAddCfgEnt;         
207          
208 /**
209  * @brief
210  * Configuraiton Structure to modify an RB.
211  */
212 typedef struct udxModCfgEnt
213 {
214       
215    U8             bitFlag;     /*!< List of Modified Elements 
216                                    Each bit respresents one element  */
217
218    Bool           discReqd;   /*!< Discard required/not for PDUs
219                                 with Integrity Verification failure.
220                                 bitFlag=0x01 */
221    Bool           cfmReqd;    /*!< Confirm required/not for SDUs 
222                                 received by the peer PDCP entity.
223                                 bitFlag=0x02 */
224    UdxHdrCompCfg  hdrCompCfg; /*!< PDCP compression information */
225    UdxHoInfo      hoInfo;     /*!< Handover Information */
226    U16            reOrdTmrVal; /*!< t-Reorder Timer Value in ms */
227 }UdxModCfgEnt;
228
229
230 /**
231  * @brief
232  * Configuration structure for PDCP entity. 
233  */
234 typedef struct udxCfgEnt
235 {
236    U8             rbId;       /*!< PDCP ID. */
237    U8             cfgType;    /*!< Configuration request type -
238                                 -# UDX_CFG_ADD,
239                                 -# UDX_CFG_MODIFY,
240                                 -# UDX_CFG_DELETE,
241                                 -# UDX_REESTABLISH,
242                                 -# UDX_CFG_DELETE_UE */
243    U8             rbType;     /*!< RB type.  
244                                 -# CM_LTE_SRB
245                                 -# CM_LTE_DRB */
246
247    union{
248         UdxAddCfgEnt     addCfg; /*!< Configuration parameters for
249                                     cfgType UDX_CFG_ADD */
250         UdxModCfgEnt     modCfg; /*!< Configuration parameters for
251                                     cfgType UDX_CFG_MODIFY */
252    }m;
253 }UdxCfgEnt;
254
255
256
257 /**
258  * @brief
259  * PDCP Configuration structure. Parameters are filled by RRC 
260    layer while configuring the PDCP layer.  
261  */
262 typedef struct udxCfgReqInfo
263 {
264    CmLteRnti      ueId;                 /*!< UE ID */
265    CmLteCellId    cellId;               /*!< Cell ID */
266    U32            transId;              /*!< Transaction ID */
267    U8             numEnt;               /*!< Number of entities to be
268                                           configured in the Config request.*/
269    U8             isHo;
270 #ifdef TENB_MULT_CELL_SUPPRT
271    SpId           rlcUlSapId;
272    SpId           rlcDlSapId;
273 #endif
274    UdxCfgEnt      cfgEnt[UDX_MAX_CFG];  /*!< Config paramater for
275                                           PDCP entity. */
276 }UdxCfgReqInfo;
277
278
279 /**
280  * @brief
281  * Status report from PDCP-UL to PDCP-DL during Reestablishment.  
282  */
283 typedef struct udxUlStaRepInfo
284 {
285    CmLtePdcpId pdcpId;
286    Buffer      *sta;
287 }UdxUlStaRepInfo;
288
289 /**
290  * @brief
291  * Status report received from peer RLC entity.  
292  */
293 typedef struct udxDlStaRepInfo
294 {
295    CmLtePdcpId pdcpId;
296    U32         fmc;
297    Buffer      *staPdu;
298 }UdxDlStaRepInfo;
299
300
301 /**
302  * @brief
303  * ROHC Feedback packet Info from PDCP-UL to PDCP-DL.
304  */
305 typedef struct udxUlFdbkPktInfo
306 {
307     CmLtePdcpId pdcpId;
308     Buffer      *fbPkt;
309 }UdxUlFdbkPktInfo;
310
311 /**
312  * @brief
313  * ROHC Feedback packet Info received from UE. Send to PDCP-DL.
314  */
315 typedef struct udxDlFdbkPktInfo
316 {
317     CmLtePdcpId pdcpId;
318     Buffer      *fbPkt;
319 }UdxDlFdbkPktInfo;
320
321
322 /**
323  * @brief
324  * PDCP Confirm parameter structure for PDCP entity. 
325  */
326 typedef struct udxCfmEnt
327 {
328    U8             rbId;       /*!< RB ID */
329    U8             rbType;     /*!< RB Type */
330    Status         status;     /*!< ROK or RFAILED */
331    Reason         reason;     /*!< Reason for failure */
332 }UdxCfmEnt;
333
334 /**
335  * @brief
336  * PDCP Configuration Confirm structure. 
337  */
338 typedef struct udxCfgCfmInfo
339 {
340    CmLteRnti      ueId;                   /*!< UE ID */
341    CmLteCellId    cellId;                 /*!< Cell ID */
342    U32            transId;                /*!< Transcation ID */
343    U8             numEnt;                 /*!< Number of entities */
344    UdxCfmEnt      cfmEnt[UDX_MAX_CFM];    /*!< Confirm parameter for
345                                                PDCP entity */
346 }UdxCfgCfmInfo;
347
348 /**
349  * @brief
350  * Re-estabishment Request structure for SRB1 of an UE.
351  */
352 typedef struct udxReEstReqInfo
353 {
354    CmLtePdcpId    pdcpId;                          /*!< PDCP ID */
355    U32            transId;                         /*!< Transcation ID */
356    U8             intKey[UDX_INTG_KEY_LEN];         /*!< Integrity key */
357    UdxCipherKey   ctrlplnKey[UDX_CIPHER_KEY_LEN];  /*!< Control plane
358                                                         ciphering key */
359    UdxCipherKey   usrplnKey[UDX_CIPHER_KEY_LEN];   /*!< User plane
360                                                         ciphering key */
361 }UdxReEstReqInfo;
362
363 /**
364  * @brief
365  * Re-establishment Confirmation structure for an UE.
366  */
367 typedef struct udxReEstCfmInfo
368 {
369    CmLteRnti      ueId;             /*!< UE ID */
370    CmLteCellId    cellId;           /*!< Cell ID */
371    U32            transId;          /*!< Transcation ID */
372    Status       status;           /*!< Status of reestablishment.
373                                      Allowed values are:
374                                      -# LCM_PRIM_OK
375                                      -# LCM_PRIM_NOK
376                                      */
377 }UdxReEstCfmInfo;
378
379 /**
380  * @brief
381  * PDCP Security Configuration structure. Parameters are filled by RRC
382  * while configuring the security parameters.
383  */
384 typedef struct udxSecCfgReqInfo
385 {
386    CmLteRnti      ueId;       /*!< UE ID */
387    CmLteCellId    cellId;     /*!< Cell ID */
388    U32            transId;    /*!< Transcation ID */
389    UdxSecCfg      secCfg;     /*!< Configuration paramater for PDCP entity */
390 }UdxSecCfgReqInfo;
391
392 /**
393  * @brief
394  * PDCP Security Configuration confirm structure. 
395  */
396 typedef struct udxSecCfgCfmInfo
397 {
398    CmLteRnti      ueId;       /*!< UE ID */
399    CmLteCellId    cellId;     /*!< Cell ID */
400    U32            transId;    /*!< Transcation ID */
401    Status         status;     /*!< ROK or RFAILED */
402    Reason         reason;     /*!< Reason for failure */
403 }UdxSecCfgCfmInfo;
404
405 /**
406  *  @brief
407  *  UE ID Information
408  */
409 typedef struct udxUeInfo
410 {
411    CmLteCellId    cellId;     /*!< Cell ID */
412    CmLteRnti      ueId;       /*!< UE ID */
413 }UdxUeInfo;
414
415 /**
416  *  @brief
417  *  PDCP Count Request Information from RRC.
418  */
419 typedef struct udxCountReqInfo
420 {
421    CmLteRnti      ueId;       /*!< UE ID */
422    CmLteCellId    cellId;     /*!< Cell ID */
423    U32            transId;    /*!< Transaction ID */
424 } UdxCountReqInfo;
425
426 /**
427  *  @brief
428  *  PDCP Count Information for a DRB.
429  */
430 typedef struct udxCountInfo
431 {
432    U8             rbId;       /*!< RB ID */
433    U8             dir;        /*!< Direction of the RB */
434    U32            ulCount;    /*!< UL Count value */
435    U32            dlCount;    /*!< DL Count value */
436 } UdxCountInfo;
437 /**
438  *  @brief
439  *  PDCP Count Request Confirmation to RRC.
440  */
441 typedef struct udxCountCfmInfo
442 {
443    CmLteRnti      ueId;                   /*!< UE ID */
444    CmLteCellId    cellId;                 /*!< Cell ID */
445    U32            transId;                /*!< Transaction ID */
446    U8             numRb;                  /*!< Number of DRBs */
447    UdxCountInfo   countInfo[UDX_MAX_DRB]; /*!< CountInfo of DRBs */
448    Status         status;                 /*!< ROK or RFAILED */
449    Reason         reason;                 /*!< Reason for failure */
450 } UdxCountCfmInfo;
451
452 /**
453  *  @brief
454  *  PDCP SDU Status Request Information from RRC - Used for reestablishment
455  *  during handover.
456  */
457 typedef struct udxSduStaReqInfo
458 {
459    CmLteRnti      ueId;       /*!< UE ID */
460    CmLteCellId    cellId;     /*!< Cell ID */
461    U32            transId;    /*!< Transaction ID */
462 } UdxSduStaReqInfo;
463
464 /**
465  *  @brief
466  *  PDCP DL SDU Status Information for a DRB mapped to RLC AM.
467  */
468 typedef struct udxDlSduStaInfo
469 {  
470    Bool           hoPres;     
471    U32            count;      /*!< Count with the next SN to be assigned
472                                 for a SDU */
473 } UdxDlSduStaInfo;
474
475 /**
476  *  @brief
477  *  PDCP SDU Status Information for a DRB mapped to RLC AM.
478  */
479 typedef struct udxSduStaInfo
480 {
481    U8                   rbId;         /*!< RB ID */
482    U8                   dir;          /*!< Direction of the RB */
483    UdxDlSduStaInfo      dlSduStaInfo; /*!< SDU Status Info for DL */ 
484 } UdxSduStaInfo;
485
486 /**
487  *  @brief
488  *  PDCP SDU Status Request Confirmation for an UE.
489  */
490 typedef struct udxSduStaCfmInfo
491 {
492    CmLteRnti      ueId;                   /*!< UE ID */
493    CmLteCellId    cellId;                 /*!< Cell ID */
494    U32            transId;                /*!< Transaction ID */
495    U8             numRb;                  /*!< Number of RBs */
496    UdxSduStaInfo  sduStaInfo[UDX_MAX_DRB]; /*!< SDU Status Info of DRBs mapped
497                                              to RLC AM */
498    Status         status;                 /*!< ROK or RFAILED */
499    Reason         reason;                 /*!< Reason for Failure */
500 } UdxSduStaCfmInfo;
501
502 /**
503  *  @brief
504  *  Data Resume
505  */
506 typedef struct udxDatResumeInfo
507 {
508    CmLteRnti      ueId;                   /*!< UE ID */
509    CmLteCellId    cellId;                 /*!< Cell ID */
510    U32            transId;                         /*!< Transcation ID */
511 } UdxDatResumeInfo;
512
513 /**
514  *  @brief
515  *  Data Fwd Cfm
516  */
517 typedef struct udxDatFwdCfmInfo
518 {
519    CmLteRnti      ueId;                   /*!< UE ID */
520    CmLteCellId    cellId;                 /*!< Cell ID */
521    Status         status;                 /*!< ROK or RFAILED */
522    Reason         reason;                 /*!< Reason for Failure */
523 }UdxDatFwdCfmInfo;
524
525
526 typedef struct udxDatResumeCfmInfo
527 {
528    CmLteRnti      ueId;                   /*!< UE ID */
529    CmLteCellId    cellId;                 /*!< Cell ID */
530    U32            transId;                         /*!< Transcation ID */
531    Status         status;                 /*!< ROK or RFAILED */
532    Reason         reason;                 /*!< Reason for Failure */
533 } UdxDatResumeCfmInfo;
534 /**
535  *  @brief
536  *  Data Forward
537  */
538 typedef struct udxDatForwardInfo
539 {
540    CmLteRnti      ueId;                   /*!< UE ID */
541    CmLteCellId    cellId;                 /*!< Cell ID */
542    U32            transId;                         /*!< Transcation ID */
543    Bool           ulFwding;               /*!< UL fwding to be done or not */
544 } UdxDatForwardInfo;
545
546 /*************************************************************************
547  *                      END OF STRUCTURES
548  ************************************************************************/
549
550 /*************************************************************************
551  *                   Start of Pointer Interface primitives
552  ************************************************************************/
553 typedef S16 (*UdxBndReq)      ARGS((Pst *pst, SuId suId, SpId spId));
554 typedef S16 (*UdxBndCfm)      ARGS((Pst *pst, SuId suId, U8 status));
555 typedef S16 (*UdxUbndReq)     ARGS((Pst *pst, SpId spId, Reason reason));
556 typedef S16 (*UdxCfgReq)      ARGS((Pst *pst, SpId spId, UdxCfgReqInfo *cfgReq));
557 typedef S16 (*UdxCfgCfm)      ARGS((Pst *pst, SuId suId, UdxCfgCfmInfo *cfgCfm));
558 typedef S16 (*UdxReEstReq)    ARGS((Pst *pst, SpId spId, UdxReEstReqInfo *reEstReq));
559 typedef S16 (*UdxReEstCfm)    ARGS((Pst *pst, SuId suId, UdxReEstCfmInfo *reEstCfm));
560 typedef S16 (*UdxSecCfgReq)   ARGS((Pst *pst, SpId spId, UdxSecCfgReqInfo *secCfgReq));
561 typedef S16 (*UdxSecCfgCfm)   ARGS((Pst *pst, SuId suId, UdxSecCfgCfmInfo *secCfgCfm));
562 typedef S16 (*UdxUeIdChgReq)  ARGS((Pst *pst, SpId spId, U32 transId, 
563                                     UdxUeInfo *oldUeInfo,
564                                     UdxUeInfo *newUeInfo));
565 typedef S16 (*UdxUeIdChgCfm)  ARGS((Pst *pst, SuId suId, U32 transId, 
566                                     UdxUeInfo  *ueInfo, CmStatus status));
567 typedef S16 (*UdxCountReq)   ARGS((Pst *pst, SpId spId, UdxCountReqInfo *countReq));
568 typedef S16 (*UdxCountCfm)   ARGS((Pst *pst, SuId suId, UdxCountCfmInfo *countCfm));
569 typedef S16 (*UdxSduStaReq)  ARGS((Pst *pst, SpId spId, UdxSduStaReqInfo *staReq));
570 typedef S16 (*UdxSduStaCfm)  ARGS((Pst *pst, SuId suId, UdxSduStaCfmInfo *staCfm));
571 typedef S16 (*UdxDatResumeCfm)  ARGS((Pst *pst, SuId suId, UdxDatResumeCfmInfo *datResumeCfm));
572 typedef S16 (*UdxDatForwardCfm)  ARGS((Pst *pst, SuId suId, UdxDatFwdCfmInfo *datFwdCfm));
573 typedef S16 (*UdxUlStaRep)     ARGS((Pst *pst, SpId spId, UdxUlStaRepInfo *staRep));
574 typedef S16 (*UdxDlStaRep)     ARGS((Pst *pst, SpId spId, UdxDlStaRepInfo *staRep));
575 typedef S16 (*UdxUlFdbkPkt)     ARGS((Pst *pst, SpId spId, UdxUlFdbkPktInfo *fdbkPktInfo));
576 typedef S16 (*UdxDlFdbkPkt)     ARGS((Pst *pst, SpId spId, UdxDlFdbkPktInfo *fdbkPktInfo));
577 typedef S16 (*UdxDatResumeReq) ARGS((Pst  *pst, UdxDatResumeInfo  *udxDatResumeInfo));
578 typedef S16 (*UdxDatForwardReq) ARGS((Pst  *pst, UdxDatForwardInfo  *udxDatForwardInfo));
579
580 #ifdef LTE_L2_MEAS
581 typedef S16 (*UdxL2MeasReq) ARGS((Pst* pst,
582                                 PjL2MeasReqEvt *measReqEvt));
583
584 typedef S16 (*UdxL2MeasSendReq) ARGS((Pst* pst,
585                                     U8 measType));
586
587 typedef S16 (*UdxL2MeasStopReq) ARGS((Pst* pst,
588                                     U8 measType));
589 #endif
590
591
592 /*************************************************************************
593  *                   End of Pointer Interface primitives
594  ************************************************************************/
595 /* cpj_x_001.main_2 */
596 /*************************************************************************
597  *                   Start of Extern Interface Declarations
598  ************************************************************************/
599 /**
600  * @brief Bind request primitive
601  * @details
602  * The function binds the PDCP service user entity (RRC) to the PDCP product.
603  * PDCP acknowledges the receipt of the bind request by sending a PjDlUdxBndCfm
604  * primitive.
605  *
606  * @param[in] pst     - Pointer to the post structure.
607  * @param[in] suId    - Service user ID. This is the reference number used by
608  * PDCP service user to identify its SAP. This reference number is 
609  * provided by PDCP in any further primitives sent by PDCP to the service user.
610  * @param[in] spId    - Service provider ID. This is the reference number used
611  * by PDCP service user to identify its SAP. This reference number is
612  * provided by PDCP in any further primitives sent by PDCP to the service user.
613  *
614  * @return ROK
615  */
616 EXTERN S16 PjUlUdxBndReq ARGS((Pst *pst, SuId suId, SpId spId));
617 EXTERN S16 PjDlUdxBndReq ARGS((Pst *pst, SuId suId, SpId spId));
618
619 /**
620  * @brief Bind confirmation primitive
621  * @details
622  * PDCP invokes the bind confirm primitive to acknowledge the receipt of
623  * the PjDlUdxBndReq primitive from the RRC layer. The status field indicates
624  * whether the bind request succeeded or failed. The bind request may fail due
625  * to invalid parameters in the bind request from the service user
626  * (for example, an invalid spId).
627  *
628  * @param[in] pst    - Pointer to the pst structure.
629  * @param[in] suId   - Service user ID. This is the reference number used
630  * by PDCP service user (RRC layer) to identify its SAP.
631  * @param[in] status - Status field indicates whether the bind request
632  * succeeded or failed. 
633  *  -# TRUE, for successful bind.
634  *  -# FALSE, otherwise.
635  *
636  *  @return ROK.
637  */
638 EXTERN S16 PjDlUdxBndCfm ARGS((Pst *pst, SuId suId, U8 status));
639 EXTERN S16 PjUlUdxBndCfm ARGS((Pst *pst, SuId suId, U8 status));
640
641 /**
642  * @brief Unbind request primitive
643  * @details
644  * The PDCP service user (RRC) initiates this primitive for performing
645  * an unbind operation. This function brings the link between RRC and PDCP 
646  * down if it is already up, and releases all the resources associated for
647  * this SAP at PDCP.
648  *
649  * @param[in] pst    - Pointer to the post structure.
650  * @param[in] spId   - Service provider ID. This is the reference number used
651  * by PDCP to identify its SAP.
652  * @param[in] reason - Unbind reason. Not used in the current implementation. 
653  *
654  * @return ROK
655  */
656 EXTERN S16 PjUlUdxUbndReq ARGS((Pst *pst, SpId spId, Reason reason));
657 EXTERN S16 PjDlUdxUbndReq ARGS((Pst *pst, SpId spId, Reason reason));
658
659 /**
660  * @brief Configuration request primitive
661  * @details
662  * RRC uses this primitive to configure PDCP system parameters. The
663  * various parameters are configured by RRC. In one configuration request,
664  * multiple PDCP entities can be configured based on the rbId.
665  * For PDCP on target eNB, RRC can configure the handover information.
666  *
667  * @param[in] pst    - Pointer to post structure.
668  * @param[in] spId   - Service provider ID. This is the reference number used
669  * by PDCP to identify its SAP.
670  * @param[in] pdcpCfg - PDCP configuration structure. 
671  *
672  * @return ROK
673  */
674 EXTERN S16 PjUlUdxCfgReq ARGS((Pst *pst, SpId spId, UdxCfgReqInfo *cfgReq));
675 EXTERN S16 PjDlUdxCfgReq ARGS((Pst *pst, SpId spId, UdxCfgReqInfo *cfgReq));
676 EXTERN S16 PjDlUdxUlStaRep ARGS ((Pst *pst, SpId spId, UdxUlStaRepInfo   *staRep));
677 EXTERN S16 PjDlUdxDlStaRep ARGS ((Pst *pst, SpId spId, UdxDlStaRepInfo   *staRep));
678 EXTERN S16 PjUlUdxUlFdbkPktInfo ARGS((Pst *pst, SpId spId, UdxUlFdbkPktInfo *fdbkPktInfo));
679 EXTERN S16 PjUlUdxDlFdbkPktInfo ARGS((Pst *pst, SpId spId, UdxDlFdbkPktInfo *fdbkPktInfo));
680
681
682 /**
683  * @brief Configuration confirmation primitive
684  * @details
685  * This primitive is invoked by PDCP to inform to PDCP User (RRC) about
686  * the PDCP configuration request primitive execution status.
687  *
688  * @param[in] pst    - Pointer to the post structure.
689  * @param[in] suId   - Service user ID. This is the reference number used
690  * by PDCP to identify its SAP.
691  * @param[in] pdcpCfgCfm - PDCP configuration confirm structure. 
692  *
693  * @return ROK
694  */
695 EXTERN S16 PjUlUdxCfgCfm ARGS((Pst *pst, SuId suId, UdxCfgCfmInfo *cfgCfm));
696 EXTERN S16 PjDlUdxCfgCfm ARGS((Pst *pst, SuId suId, UdxCfgCfmInfo *cfgCfm));
697
698 /**
699  * @brief Reestablishment request primtive
700  * @details
701  * RRC uses this primitive to reestablish the PDCP entity.
702  * This primitive is initiation of reestablishment procedure.
703  * This prmitive and corresponding confirmation are followed by
704  * PjDlUdxCfgReq procedure for entire reestablishment procedure to complete.
705  *
706  * @param[in] pst    - Pointer to post structure.
707  * @param[in] spId   - Service provider ID. This is the reference number used by
708  * PDCP to identify its SAP.
709  * @param[in] reEstReq - PDCP reestablishment request structure. 
710  *
711  */
712 EXTERN S16 PjUlUdxReEstReq ARGS((Pst *pst, SpId spId, UdxReEstReqInfo *reEstReq));
713 EXTERN S16 PjDlUdxReEstReq ARGS((Pst *pst, SpId spId, UdxReEstReqInfo *reEstReq));
714
715 /**
716  * @brief Reestablishment confirmation primitive
717  * @details
718  * This primitive is invoked by PDCP to inform PDCP User (RRC) about the PDCP
719  * (SRB1) reestablishment request primitive execution status.
720  *
721  * @param[in] pst    - Pointer to the post structure.
722  * @param[in] suId   - Service user ID. This is the reference number used
723  * by PDCP to identify its SAP.
724  * @param[in] reEstCfm - PDCP reestablishment confirm structure. 
725  *
726  */
727 EXTERN S16 PjUlUdxReEstCfm ARGS((Pst *pst, SuId suId, UdxReEstCfmInfo *reEstCfm));
728 EXTERN S16 PjDlUdxReEstCfm ARGS((Pst *pst, SuId suId, UdxReEstCfmInfo *reEstCfm));
729
730 /**
731  * @brief Security Configuration request primitive
732  * @details
733  * RRC uses this primitive to configure PDCP security parameters.
734  * Integrity protection and/or Ciphering are configured by RRC based on the
735  * selSecAct flag. Integrity Protection/Ciphering are configured per UE and applicable
736  * to all PDCP entities in that UE. Both Integrity protection and ciphering are
737  * configured during reestablishment. 
738  *
739  * @param[in] pst    - Pointer to post structure.
740  * @param[in] spId   - Service provider ID. This is the reference number used by
741  * PDCP to identify its SAP.
742  * @param[in] pdcpSecCfg - PDCP security configuration structure. 
743  *
744  * @return ROK
745  */
746 EXTERN S16 PjUlUdxSecCfgReq ARGS((Pst *pst, SpId spId,
747          UdxSecCfgReqInfo *secCfgReq));
748 EXTERN S16 PjDlUdxSecCfgReq ARGS((Pst *pst, SpId spId,
749          UdxSecCfgReqInfo *secCfgReq));
750
751 /**
752  * @brief Security Configuration confirmation primitive.
753  * @details
754  * This primitive is invoked by PDCP to inform to PDCP User (RRC) about
755  * the PDCP secutiry configuration request primitive execution status.
756  *
757  * @param[in] pst    - Pointer to the post structure.
758  * @param[in] suId   - Service user ID. This is the reference number used
759  * by PDCP to identify its SAP.
760  * @param[in] pdcpSecCfgCfm - PDCP configuration confirm structure. 
761  *
762  * @return ROK
763  */
764 EXTERN S16 PjUlUdxSecCfgCfm ARGS( (Pst *pst, SuId suId,
765          UdxSecCfgCfmInfo *secCfgCfm));
766 EXTERN S16 PjDlUdxSecCfgCfm ARGS( (Pst *pst, SuId suId,
767          UdxSecCfgCfmInfo *secCfgCfm));
768
769 /**
770  * @brief UE ID change request primitive
771  * @details
772  * This primitive is used by RRC to change the UeId for the existing UE context.
773  *
774  * @param[in] pst       - Point to the post structure
775  * @param[in] spId      - The ID of the service provider SAP in the PDCP layer.
776  * @param[in] transId   - Transaction ID. This field uniquely identifies
777  * transaction between RRC and PDCP.
778  * @param[in] oldUeInfo - Old UE ID info for which the change request has come.
779  * @param[in] newUeInfo - New UE ID info for existing UE context. 
780  *
781  * @return ROK
782  */
783 EXTERN S16 PjUlUdxUeIdChgReq ARGS((Pst *pst, SpId spId, U32 transId,
784                                   UdxUeInfo *oldUeInfo, UdxUeInfo  *newUeInfo));
785 EXTERN S16 PjDlUdxUeIdChgReq ARGS((Pst *pst, SpId spId, U32 transId,
786                                   UdxUeInfo *oldUeInfo, UdxUeInfo  *newUeInfo));
787
788 /**
789  * @brief UE ID change confirmation primitive
790  * @details
791  * This primitive is used by PDCP to confirm the UeId change requested by RRC.
792  * The different values for status are:\n
793  * ROK       -  Success\n
794  * RFAILED   -  Failure\n
795  *
796  * The different reasons for the failure are:
797  * UDX_CFG_REAS_UE_CREAT_FAIL -  UE Cb update failure \n
798  * UDX_CFG_REAS_UE_UNKWN      -  Request received for an unknown UE ID. 
799  *
800  * @param [in] pst       - Point to the post structure.
801  * @param [in] suId      - The ID of the service user SAP associated with PDCP
802  * @param [in] transId   - Transaction ID. This field uniquely identifies
803  *                         transaction between RRC and PDCP.
804  * @param [in] ueInfo    - UE Identity which is changed with the new ID
805  *                         for the same context.
806  * @param [in] CmStatus  - Confirmation status with appropriate reason
807  *                         information.
808  * @return ROK
809  */
810 EXTERN S16 PjUlUdxUeIdChgCfm  ARGS((Pst *pst, SuId suId, U32 transId,
811                                   UdxUeInfo *ueInfo, CmStatus status));
812 EXTERN S16 PjDlUdxUeIdChgCfm  ARGS((Pst *pst, SuId suId, U32 transId,
813                                   UdxUeInfo *ueInfo, CmStatus status));
814
815 /**
816  * @brief Count request primitive
817  * @details
818  * RRC uses this primitive to request count value for all DRBs in a UE.
819  * PDCP sends the UL and DL count values in the confirmation of this request.
820  *
821  * @param[in] pst    - Pointer to post structure.
822  * @param[in] spId   - Service provider ID. This is the reference number used
823  * by PDCP to identify its SAP.
824  * @param[in] countReq - PDCP Count Request Information. 
825  *
826  * @return ROK
827  */
828 EXTERN S16 PjUlUdxCountReq ARGS((Pst *pst, SpId spId, UdxCountReqInfo *countReq));
829 EXTERN S16 PjDlUdxCountReq ARGS((Pst *pst, SpId spId, UdxCountReqInfo *countReq));
830
831 /**
832  * @brief Count confirmation primitive
833  * @details
834  * PDCP uses this primitive to send the count values for all
835  * DRBs in a UE to RRC. PDCP sends the RB ID, direction 
836  * and count value(s) ( UL, DL or both based on direction of the RB)
837  * for each DRB. 
838  *
839  * @param[in] pst       - Pointer to post structure.
840  * @param[in] suId      - The ID of the service user SAP associated with PDCP.
841  * @param[in] countCfm  - PDCP Count Confirmation Info. 
842  *
843  * @return ROK
844 */
845 EXTERN S16 PjUlUdxCountCfm ARGS((Pst *pst, SuId suId, UdxCountCfmInfo *countCfm));
846 EXTERN S16 PjDlUdxCountCfm ARGS((Pst *pst, SuId suId, UdxCountCfmInfo *countCfm));
847
848 /**
849  * @brief SDU Status Request primitive
850  * @details
851  * RRC uses this primitive to request the status of the SDUs for DRBs in an UE.
852  * Its used as a reestablishment request during handover.
853  * This primitive is used to forward the handover control Information to the target
854  * eNodeB.
855  *
856  * @param[in] pst    - Pointer to post structure.
857  * @param[in] spId   - Service provider ID. This is the reference number used
858  * by PDCP to identify its SAP.
859  * @param[in] sduStaReq - PDCP SDU Status Request Information. 
860  *
861  * @return ROK
862  */
863 EXTERN S16 PjUlUdxSduStaReq ARGS((Pst *pst, SpId spId, UdxSduStaReqInfo *staReq));
864 EXTERN S16 PjDlUdxSduStaReq ARGS((Pst *pst, SpId spId, UdxSduStaReqInfo *staReq));
865
866 /**
867  * @brief SDU Status confirmation primitive
868  * @details
869  * PDCP uses this primitive to send the SDU status for the DRBs in 
870  * the requested UE. PDCP sends the RB ID, direction of the RB,status report 
871  * and count(to indicate the first missing SN) in UL and count(to indicate 
872  * the next SN to be assigned) in DL for each requested DRB mapped on to RLC AM.
873  *
874  * @param[in] pst       - Pointer to post structure.
875  * @param[in] suId      - The ID of the service user SAP associated with PDCP.
876  * @param[in] sduStaCfm - PDCP SDU Status Confirmation Info. 
877  *
878  * @return ROK
879 */
880 EXTERN S16 PjDlUdxSduStaCfm ARGS((Pst *pst, SuId suId, UdxSduStaCfmInfo *staCfm));
881 EXTERN S16 PjUlUdxSduStaCfm ARGS((Pst *pst, SuId suId, UdxSduStaCfmInfo *staCfm));
882
883
884 EXTERN S16 PjDlUdxDatResumeCfm ARGS((Pst *pst, SuId suId, UdxDatResumeCfmInfo
885          *datResumeCfm));
886 EXTERN S16 PjUlUdxDatResumeCfm ARGS((Pst *pst, SuId suId, UdxDatResumeCfmInfo
887          *datResumeCfm));
888 EXTERN S16 PjDlUdxDatFwdCfm ARGS ((Pst *pst, SuId suId, UdxDatFwdCfmInfo  
889          *datFwdCfm));
890 EXTERN S16 PjUlUdxDatForwardCfm ARGS ((Pst *pst, SuId suId, UdxDatFwdCfmInfo  
891          *datFwdCfm));
892
893 EXTERN S16 PjDlUdxUlFdbkPktInfo ARGS((Pst *pst, SpId spId, UdxUlFdbkPktInfo *fdbkPktInfo));
894 EXTERN S16 PjDlUdxDlFdbkPktInfo ARGS((Pst * pst, SpId spId, UdxDlFdbkPktInfo * fdbkPktInfo));
895
896 #ifdef LTE_L2_MEAS
897 EXTERN S16 PjDlUdxL2MeasReq ARGS((Pst *pst,
898                                 PjL2MeasReqEvt *measReqEvt)); 
899
900 EXTERN S16 PjDlUdxL2MeasSendReq ARGS((Pst *pst,
901                                     U8 status)); 
902
903 EXTERN S16 PjDlUdxL2MeasStopReq ARGS((Pst *pst,
904                                     U8 status)); 
905
906 EXTERN S16 PjUlUdxL2MeasReq ARGS((Pst* pst, 
907                                  PjL2MeasReqEvt *measReqEvt));
908
909 EXTERN S16 PjUlUdxL2MeasSendReq ARGS((Pst *pst, U8 status));
910
911 EXTERN S16 PjUlUdxL2MeasStopReq ARGS((Pst* pst, U8 measType));
912 #endif
913 EXTERN S16 PjDlUdxDatResumeReq ARGS((Pst *pst, UdxDatResumeInfo  *udxDatResumeInfo));
914 EXTERN S16 PjUlUdxDatResumeReq ARGS((Pst *pst, UdxDatResumeInfo  *udxDatResumeInfo));
915 EXTERN S16 PjDlUdxDatForwardReq ARGS((Pst *pst, UdxDatForwardInfo  *udxDatForwardInfo));
916 EXTERN S16 PjUlUdxDatForwardReq ARGS((Pst *pst, UdxDatForwardInfo  *udxDatForwardInfo));
917 EXTERN S16 PjUlUdxDatResumeReqFB ARGS((Pst *pst, UdxDatResumeInfo  *udxDatResumeInfo));
918 EXTERN S16 PjUlUdxDatForwardReqFB ARGS((Pst *pst, UdxDatForwardInfo  *udxDatForwardInfo));
919 #ifdef FLAT_BUFFER_OPT
920 EXTERN S16 PjDlUdxDatResumeReqFB ARGS((Pst *pst,UdxDatResumeInfo *datResumeInfo));
921 EXTERN S16 PjDlUdxDatForwardReqFB ARGS((Pst *pst,UdxDatForwardInfo *datFwdInfo));
922 #endif
923 /*************************************************************************
924  *                   End of Extern Interface Declarations                *
925  ************************************************************************/
926
927 /***********************************************************************
928  *                    Start of pack/unpack functions                   *
929  * *********************************************************************/
930 #if (defined(LCUDX) || defined(LCPJULUDX))
931
932 EXTERN S16 cmPkPjUdxBndReq ARGS((
933 Pst * pst,
934 SuId suId,
935 SpId spId
936 ));
937 EXTERN S16 cmUnpkPjUdxBndReq ARGS((
938 UdxBndReq func,
939 Pst *pst,
940 Buffer *mBuf
941 ));
942 EXTERN S16 cmPkPjUdxBndCfm ARGS((
943 Pst * pst,
944 SuId suId,
945 U8 status
946 ));
947 EXTERN S16 cmUnpkPjUdxBndCfm ARGS((
948 UdxBndCfm func,
949 Pst *pst,
950 Buffer *mBuf
951 ));
952 EXTERN S16 cmPkPjUdxUbndReq ARGS((
953 Pst * pst,
954 SpId spId,
955 Reason reason
956 ));
957 EXTERN S16 cmUnpkPjUdxUbndReq ARGS((
958 UdxUbndReq func,
959 Pst *pst,
960 Buffer *mBuf
961 ));
962 EXTERN S16 cmPkPjUdxCfgReq ARGS((
963 Pst * pst,
964 SpId spId,
965 UdxCfgReqInfo * cfgReq
966 ));
967 EXTERN S16 cmUnpkPjUdxCfgReq ARGS((
968 UdxCfgReq func,
969 Pst *pst,
970 Buffer *mBuf
971 ));
972 EXTERN S16 cmPkPjUdxCfgCfm ARGS((
973 Pst * pst,
974 SuId suId,
975 UdxCfgCfmInfo * cfgCfm
976 ));
977 EXTERN S16 cmUnpkPjUdxCfgCfm ARGS((
978 UdxCfgCfm func,
979 Pst *pst,
980 Buffer *mBuf
981 ));
982
983 EXTERN S16 cmPkPjUdxUlStaRep ARGS ((
984 Pst * pst,
985 SpId spId,
986 UdxUlStaRepInfo *staRep
987 ));
988
989 EXTERN S16 cmPkPjUdxDlStaRep ARGS ((
990 Pst * pst,
991 SpId spId,
992 UdxDlStaRepInfo *staRep
993 ));
994
995 EXTERN S16 cmUnpkPjUdxUlStaRepInfo ARGS ((
996 Pst *pst,
997 UdxUlStaRepInfo *param,
998 Buffer *mBuf
999 ));
1000  
1001 EXTERN S16 cmPkPjUdxDlFdbkPktInfo ARGS ((
1002 UdxDlFdbkPktInfo  *param,
1003 Pst            *pst,
1004 Buffer         *mBuf
1005 ));
1006  
1007 EXTERN S16 cmUnpkPjUdxUlStaRep ARGS ((
1008 UdxUlStaRep func,
1009 Pst *pst,
1010 Buffer *mBuf
1011 ));
1012
1013 EXTERN S16 cmUnpkPjUdxDlStaRep ARGS ((
1014 UdxDlStaRep func,
1015 Pst *pst,
1016 Buffer *mBuf
1017 ));
1018 EXTERN S16 cmUnpkPjUdxUlFdbkPkt ARGS ((
1019 UdxUlFdbkPkt func,
1020 Pst *pst,
1021 Buffer *mBuf
1022 ));
1023
1024
1025 EXTERN S16 cmPkPjUdxUlStaRepInfo ARGS ((
1026 UdxUlStaRepInfo  *param,
1027 Pst            *pst,
1028 Buffer         *mBuf
1029 ));
1030
1031
1032 EXTERN S16 cmPkPjUdxDlStaRepInfo ARGS ((
1033 UdxDlStaRepInfo  *param,
1034 Pst            *pst,
1035 Buffer         *mBuf
1036 ));
1037
1038 EXTERN S16 cmUnpkPjUdxDlStaRepInfo ARGS ((
1039 Pst *pst,
1040 UdxDlStaRepInfo *param,
1041 Buffer *mBuf
1042 ));
1043
1044 EXTERN S16 cmUnpkPjUdxDlFdbPktInfo ARGS ((
1045 Pst *pst,
1046 UdxDlFdbkPktInfo *param,
1047 Buffer *mBuf
1048 ));
1049
1050
1051 EXTERN S16 cmPkPjUdxUlFdbkPkt ARGS((
1052 Pst * pst,
1053 SpId spId,
1054 UdxUlFdbkPktInfo  *fdbkPktInfo
1055 ));
1056
1057 EXTERN S16 cmPkPjUdxDlFdbkPkt ARGS((
1058 Pst * pst,
1059 SpId spId,
1060 UdxDlFdbkPktInfo  *fdbkPktInfo
1061 ));
1062
1063 EXTERN S16 cmPkPjUdxUlFdbkPktInfo ARGS((
1064 UdxUlFdbkPktInfo  *fdbkPktInfo,
1065 Pst *pst,
1066 Buffer *mBuf
1067 ));
1068
1069 EXTERN S16 cmUnpkPjUdxDlFdbkPkt ARGS((
1070 UdxDlFdbkPkt func,
1071 Pst *pst,
1072 Buffer *mBuf
1073 ));
1074
1075 EXTERN S16 cmUnpkPjUdxDlFdbkPktInfo ARGS((
1076 Pst *pst,
1077 UdxDlFdbkPktInfo  *fdbkPktInfo,
1078 Buffer *mBuf
1079 ));
1080
1081 EXTERN S16 cmUnpkPjUdxUlFdbkPktInfo ARGS ((
1082 Pst *pst,
1083 UdxUlFdbkPktInfo *param,
1084 Buffer *mBuf
1085 ));
1086
1087 EXTERN S16 cmPkPjUdxReEstReq ARGS((
1088 Pst * pst,
1089 SpId spId,
1090 UdxReEstReqInfo * reEstReq
1091 ));
1092 EXTERN S16 cmUnpkPjUdxReEstReq ARGS((
1093 UdxReEstReq func,
1094 Pst *pst,
1095 Buffer *mBuf
1096 ));
1097 EXTERN S16 cmPkPjUdxReEstCfm ARGS((
1098 Pst * pst,
1099 SuId suId,
1100 UdxReEstCfmInfo * reEstCfm
1101 ));
1102 EXTERN S16 cmUnpkPjUdxReEstCfm ARGS((
1103 UdxReEstCfm func,
1104 Pst *pst,
1105 Buffer *mBuf
1106 ));
1107 EXTERN S16 cmPkPjUdxSecCfgReq ARGS((
1108 Pst * pst,
1109 SpId spId,
1110 UdxSecCfgReqInfo * secCfgReq
1111 ));
1112 EXTERN S16 cmUnpkPjUdxSecCfgReq ARGS((
1113 UdxSecCfgReq func,
1114 Pst *pst,
1115 Buffer *mBuf
1116 ));
1117 EXTERN S16 cmPkPjUdxSecCfgCfm ARGS((
1118 Pst * pst,
1119 SuId suId,
1120 UdxSecCfgCfmInfo * secCfgCfm
1121 ));
1122 EXTERN S16 cmUnpkPjUdxSecCfgCfm ARGS((
1123 UdxSecCfgCfm func,
1124 Pst *pst,
1125 Buffer *mBuf
1126 ));
1127 EXTERN S16 cmPkPjUdxUeIdChgReq ARGS((
1128 Pst * pst,
1129 SpId spId,
1130 U32 transId,
1131 UdxUeInfo * oldUeInfo,
1132 UdxUeInfo * newUeInfo
1133 ));
1134 EXTERN S16 cmUnpkPjUdxUeIdChgReq ARGS((
1135 UdxUeIdChgReq func,
1136 Pst *pst,
1137 Buffer *mBuf
1138 ));
1139 EXTERN S16 cmPkPjUdxUeIdChgCfm ARGS((
1140 Pst * pst,
1141 SuId suId,
1142 U32 transId,
1143 UdxUeInfo  * ueInfo,
1144 CmStatus status
1145 ));
1146 EXTERN S16 cmUnpkPjUdxUeIdChgCfm ARGS((
1147 UdxUeIdChgCfm func,
1148 Pst *pst,
1149 Buffer *mBuf
1150 ));
1151 EXTERN S16 cmPkPjUdxCountReq ARGS((
1152 Pst * pst,
1153 SpId spId,
1154 UdxCountReqInfo * countReq
1155 ));
1156 EXTERN S16 cmUnpkPjUdxCountReq ARGS((
1157 UdxCountReq func,
1158 Pst *pst,
1159 Buffer *mBuf
1160 ));
1161 EXTERN S16 cmPkPjUdxCountCfm ARGS((
1162 Pst * pst,
1163 SuId suId,
1164 UdxCountCfmInfo * countCfm
1165 ));
1166 EXTERN S16 cmUnpkPjUdxCountCfm ARGS((
1167 UdxCountCfm func,
1168 Pst *pst,
1169 Buffer *mBuf
1170 ));
1171 EXTERN S16 cmPkPjUdxSduStaReq ARGS((
1172 Pst * pst,
1173 SpId spId,
1174 UdxSduStaReqInfo * staReq
1175 ));
1176 EXTERN S16 cmUnpkPjUdxSduStaReq ARGS((
1177 UdxSduStaReq func,
1178 Pst *pst,
1179 Buffer *mBuf
1180 ));
1181 EXTERN S16 cmPkPjUdxSduStaCfm ARGS((
1182 Pst * pst,
1183 SuId suId,
1184 UdxSduStaCfmInfo * staCfm
1185 ));
1186 EXTERN S16 cmUnpkPjUdxSduStaCfm ARGS((
1187 UdxSduStaCfm func,
1188 Pst *pst,
1189 Buffer *mBuf
1190 ));
1191 EXTERN S16 cmPkPjUdxDatResumeCfm ARGS((
1192 Pst * pst,
1193 SuId suId,
1194 UdxDatResumeCfmInfo * staCfm
1195 ));
1196 EXTERN S16 cmPkPjUdxDatForwardCfm ARGS((
1197 Pst * pst,
1198 SuId suId,
1199 UdxDatFwdCfmInfo * datFwdCfm
1200 ));
1201 EXTERN S16 cmUnpkPjUdxDatResumeCfm ARGS((
1202 UdxDatResumeCfm func,
1203 Pst *pst,
1204 Buffer *mBuf
1205 ));
1206
1207 EXTERN S16 cmUnpkPjUdxDatResumeReq ARGS((
1208 UdxDatResumeReq  func,
1209 Pst              *pst,
1210 Buffer           *mBuf
1211 ));
1212 EXTERN S16 cmUnpkPjUdxDatForwardReq ARGS((
1213 UdxDatForwardReq  func,
1214 Pst              *pst,
1215 Buffer           *mBuf
1216 ));
1217 EXTERN S16 cmUnpkPjUdxDatForwardCfm ARGS((
1218  UdxDatForwardCfm func,
1219  Pst *pst,
1220  Buffer *mBuf
1221  ));
1222 EXTERN S16 cmPkPjUdxRlcAm ARGS((
1223 UdxRlcAm *param,
1224 Buffer *mBuf
1225 ));
1226 EXTERN S16 cmUnpkPjUdxRlcAm ARGS((
1227 UdxRlcAm *param,
1228 Buffer *mBuf
1229 ));
1230 EXTERN S16 cmPkPjUdxRlcUm ARGS((
1231 UdxRlcUm *param,
1232 Buffer *mBuf
1233 ));
1234 EXTERN S16 cmUnpkPjUdxRlcUm ARGS((
1235 UdxRlcUm *param,
1236 Buffer *mBuf
1237 ));
1238 EXTERN S16 cmPkPjUdxRlcInfo ARGS((
1239 UdxRlcInfo *param,
1240 Buffer *mBuf
1241 ));
1242 EXTERN S16 cmUnpkPjUdxRlcInfo ARGS((
1243 UdxRlcInfo *param,
1244 Buffer *mBuf
1245 ));
1246 EXTERN S16 cmPkPjUdxCipherInfo ARGS((
1247 UdxCipherInfo *param,
1248 Buffer *mBuf
1249 ));
1250 EXTERN S16 cmUnpkPjUdxCipherInfo ARGS((
1251 UdxCipherInfo *param,
1252 Buffer *mBuf
1253 ));
1254 EXTERN S16 cmPkPjUdxIntegInfo ARGS((
1255 UdxIntegInfo *param,
1256 Buffer *mBuf
1257 ));
1258 EXTERN S16 cmUnpkPjUdxIntegInfo ARGS((
1259 UdxIntegInfo *param,
1260 Buffer *mBuf
1261 ));
1262 EXTERN S16 cmPkPjUdxSecCfg ARGS((
1263 UdxSecCfg *param,
1264 Buffer *mBuf
1265 ));
1266 EXTERN S16 cmUnpkPjUdxSecCfg ARGS((
1267 UdxSecCfg *param,
1268 Buffer *mBuf
1269 ));
1270 EXTERN S16 cmPkPjUdxRohcInfo ARGS((
1271 UdxRohcInfo *param,
1272 Buffer *mBuf
1273 ));
1274 EXTERN S16 cmUnpkPjUdxRohcInfo ARGS((
1275 UdxRohcInfo *param,
1276 Buffer *mBuf
1277 ));
1278 EXTERN S16 cmPkPjUdxHdrCompCfg ARGS((
1279 UdxHdrCompCfg *param,
1280 Buffer *mBuf
1281 ));
1282 EXTERN S16 cmUnpkPjUdxHdrCompCfg ARGS((
1283 UdxHdrCompCfg *param,
1284 Buffer *mBuf
1285 ));
1286 EXTERN S16 cmPkPjUdxHoInfo ARGS((
1287 Pst *pst,
1288 UdxHoInfo *param,
1289 Buffer *mBuf
1290 ));
1291 EXTERN S16 cmUnpkPjUdxHoInfo ARGS((
1292 Pst *pst,
1293 UdxHoInfo *param,
1294 Buffer *mBuf
1295 ));
1296 EXTERN S16 cmPkPjUdxCfgEnt ARGS((
1297 Pst *pst,
1298 UdxCfgEnt *param,
1299 Buffer *mBuf
1300 ));
1301 EXTERN S16 cmUnpkPjUdxCfgEnt ARGS((
1302 Pst *pst,
1303 UdxCfgEnt *param,
1304 Buffer *mBuf
1305 ));
1306 EXTERN S16 cmPkPjUdxAddCfgEnt ARGS((
1307 UdxAddCfgEnt *param,
1308 Buffer *mBuf
1309 ));
1310 EXTERN S16 cmUnpkPjUdxAddCfgEnt ARGS((
1311 UdxAddCfgEnt *param,
1312 Buffer *mBuf
1313 ));
1314 EXTERN S16 cmPkPjUdxModCfgEnt ARGS((
1315 Pst *pst,
1316 UdxModCfgEnt *param,
1317 Buffer *mBuf
1318 ));
1319 EXTERN S16 cmUnpkPjUdxModCfgEnt ARGS((
1320 Pst *pst,
1321 UdxModCfgEnt *param,
1322 Buffer *mBuf
1323 ));
1324 EXTERN S16 cmPkPjUdxCfgReqInfo ARGS((
1325 Pst *pst,
1326 UdxCfgReqInfo *param,
1327 Buffer *mBuf
1328 ));
1329
1330 EXTERN S16 cmUnpkPjUdxCfgReqInfo ARGS((
1331 Pst *pst,
1332 UdxCfgReqInfo *param,
1333 Buffer *mBuf
1334 ));
1335 EXTERN S16 cmPkPjUdxCfmEnt ARGS((
1336 UdxCfmEnt *param,
1337 Buffer *mBuf
1338 ));
1339 EXTERN S16 cmUnpkPjUdxCfmEnt ARGS((
1340 UdxCfmEnt *param,
1341 Buffer *mBuf
1342 ));
1343 EXTERN S16 cmPkPjUdxCfgCfmInfo ARGS((
1344 UdxCfgCfmInfo *param,
1345 Buffer *mBuf
1346 ));
1347 EXTERN S16 cmUnpkPjUdxCfgCfmInfo ARGS((
1348 UdxCfgCfmInfo *param,
1349 Buffer *mBuf
1350 ));
1351 EXTERN S16 cmPkPjUdxReEstReqInfo ARGS((
1352 UdxReEstReqInfo *param,
1353 Buffer *mBuf
1354 ));
1355 EXTERN S16 cmUnpkPjUdxReEstReqInfo ARGS((
1356 UdxReEstReqInfo *param,
1357 Buffer *mBuf
1358 ));
1359 EXTERN S16 cmPkPjUdxReEstCfmInfo ARGS((
1360 UdxReEstCfmInfo *param,
1361 Buffer *mBuf
1362 ));
1363 EXTERN S16 cmUnpkPjUdxReEstCfmInfo ARGS((
1364 UdxReEstCfmInfo *param,
1365 Buffer *mBuf
1366 ));
1367 EXTERN S16 cmPkPjUdxSecCfgReqInfo ARGS((
1368 UdxSecCfgReqInfo *param,
1369 Buffer *mBuf
1370 ));
1371 EXTERN S16 cmUnpkPjUdxSecCfgReqInfo ARGS((
1372 UdxSecCfgReqInfo *param,
1373 Buffer *mBuf
1374 ));
1375 EXTERN S16 cmPkPjUdxSecCfgCfmInfo ARGS((
1376 UdxSecCfgCfmInfo *param,
1377 Buffer *mBuf
1378 ));
1379 EXTERN S16 cmUnpkPjUdxSecCfgCfmInfo ARGS((
1380 UdxSecCfgCfmInfo *param,
1381 Buffer *mBuf
1382 ));
1383 EXTERN S16 cmPkPjUdxUeInfo ARGS((
1384 UdxUeInfo *param,
1385 Buffer *mBuf
1386 ));
1387 EXTERN S16 cmUnpkPjUdxUeInfo ARGS((
1388 UdxUeInfo *param,
1389 Buffer *mBuf
1390 ));
1391 EXTERN S16 cmPkPjUdxCountReqInfo ARGS((
1392 UdxCountReqInfo *param,
1393 Buffer *mBuf
1394 ));
1395 EXTERN S16 cmUnpkPjUdxCountReqInfo ARGS((
1396 UdxCountReqInfo *param,
1397 Buffer *mBuf
1398 ));
1399 EXTERN S16 cmPkPjUdxCountInfo ARGS((
1400 UdxCountInfo *param,
1401 Buffer *mBuf
1402 ));
1403 EXTERN S16 cmUnpkPjUdxCountInfo ARGS((
1404 UdxCountInfo *param,
1405 Buffer *mBuf
1406 ));
1407 EXTERN S16 cmPkPjUdxCountCfmInfo ARGS((
1408 UdxCountCfmInfo *param,
1409 Buffer *mBuf
1410 ));
1411 EXTERN S16 cmUnpkPjUdxCountCfmInfo ARGS((
1412 UdxCountCfmInfo *param,
1413 Buffer *mBuf
1414 ));
1415 EXTERN S16 cmPkPjUdxSduStaReqInfo ARGS((
1416 UdxSduStaReqInfo *param,
1417 Buffer *mBuf
1418 ));
1419 EXTERN S16 cmUnpkPjUdxSduStaReqInfo ARGS((
1420 UdxSduStaReqInfo *param,
1421 Buffer *mBuf
1422 ));
1423 EXTERN S16 cmPkPjUdxDlSduStaInfo ARGS((
1424 UdxDlSduStaInfo *param,
1425 Buffer *mBuf
1426 ));
1427 EXTERN S16 cmUnpkPjUdxDlSduStaInfo ARGS((
1428 UdxDlSduStaInfo *param,
1429 Buffer *mBuf
1430 ));
1431 EXTERN S16 cmPkPjUdxSduStaInfo ARGS((
1432 Pst *pst,
1433 UdxSduStaInfo *param,
1434 Buffer *mBuf
1435 ));
1436 EXTERN S16 cmUnpkPjUdxSduStaInfo ARGS((
1437 Pst *pst,
1438 UdxSduStaInfo *param,
1439 Buffer *mBuf
1440 ));
1441 EXTERN S16 cmPkPjUdxSduStaCfmInfo ARGS((
1442 Pst *pst,
1443 UdxSduStaCfmInfo *param,
1444 Buffer *mBuf
1445 ));
1446 EXTERN S16 cmUnpkPjUdxSduStaCfmInfo ARGS((
1447 Pst *pst,
1448 UdxSduStaCfmInfo *param,
1449 Buffer *mBuf
1450 ));
1451
1452 EXTERN S16 cmPkPjUdxDatResumeCfmInfo ARGS((
1453 Pst *pst,
1454 UdxDatResumeCfmInfo *param,
1455 Buffer *mBuf
1456 ));
1457 EXTERN S16 cmPkPjUdxDatForwardCfmInfo ARGS((
1458 Pst *pst,
1459 UdxDatFwdCfmInfo *param,
1460 Buffer *mBuf
1461 ));
1462 EXTERN S16 cmUnpkPjUdxDatResumeCfmInfo ARGS((
1463 Pst *pst,
1464 UdxDatResumeCfmInfo *param,
1465 Buffer *mBuf
1466 ));
1467 EXTERN S16 cmUnpkPjUdxDatForwardCfmInfo ARGS((
1468 Pst *pst,
1469 UdxDatFwdCfmInfo *param,
1470 Buffer *mBuf
1471 ));
1472
1473 EXTERN S16 cmPkPjUdxDatResumeReq ARGS((
1474 Pst           *pst,
1475 UdxDatResumeInfo  *udxDatResumeInfo 
1476 ));
1477 EXTERN S16 cmPkPjUdxDatForwardReq ARGS((
1478 Pst           *pst,
1479 UdxDatForwardInfo  *udxDatForwardInfo
1480 ));
1481 #ifdef LTE_L2_MEAS
1482 EXTERN S16 cmPkPjUdxL2MeasReq ARGS((Pst *pst, PjL2MeasReqEvt *measReqEvt)); 
1483 EXTERN S16 cmPkPjUdxL2MeasSendReq ARGS((Pst *pst, U8 measType)); 
1484 EXTERN S16 cmPkPjUdxL2MeasStopReq ARGS((Pst *pst, U8 measType)); 
1485 EXTERN S16 cmUnpkPjUdxL2MeasReq ARGS((UdxL2MeasReq func, Pst* pst, Buffer *mBuf));
1486 EXTERN S16 cmUnpkPjUdxL2MeasSendReq ARGS((UdxL2MeasSendReq func, Pst* pst, Buffer *mBuf));
1487 EXTERN S16 cmUnpkPjUdxL2MeasStopReq ARGS((UdxL2MeasStopReq func, Pst* pst, Buffer *mBuf));
1488 #endif
1489 #endif
1490
1491 /***********************************************************************
1492  *                    End of pack/unpack functions                     *
1493  * *********************************************************************/
1494
1495 #ifdef __cplusplus
1496 }
1497 #endif /* __cplusplus */
1498 #endif /* __UDX_X__ */
1499
1500 /********************************************************************30**
1501   
1502          End of file
1503 **********************************************************************/