DL throughput calculation for UM [Issue-ID: ODUHIGH-319]
[o-du/l2.git] / src / cm / lkw.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:    LKW RLC Layer Manager Interface
22     
23         Type:    C include file
24   
25         Desc:    This file Contains the Data structures and prototypes
26                  for LKW Interface
27  
28         File:    lkw.x
29   
30 *********************************************************************21*/
31
32 #ifndef __LKW_X__
33 #define __LKW_X__
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif  /* __cplusplus */
38
39
40 /** @brief
41     General Configuration Structure. */
42 typedef struct rlcGenCfg
43 {
44    Pst               lmPst;         /*!< Post structure for communicating
45                                       with LM. */
46    uint32_t               maxUe;         /*!< Maximum number of UEs supported
47                                       by RLC. */
48    uint16_t               maxKwuSaps;    /*!< Maximum KWU SAPs. */
49 /* Supported by SPLIT Architecture */
50    uint16_t               maxUdxSaps;    /*!< Maximum Udx SAPs. */
51 /* Supported by SPLIT Architecture ends */
52    Ticks                  timeRes;       /*!< Time resolution. */
53 /* Supported by SPLIT Architecture */
54    uint8_t                rlcMode;       /*!< RLC_DL or RLC_UL */
55 /* Supported by SPLIT Architecture ends */
56    uint16_t               maxRguSaps;    /*!< Maximum RGU SAPs. */
57 }RlcGenCfg;
58
59 /** @brief
60     SAP Configuration Structure */
61 typedef struct rlcSapCfg
62 {
63    Selector          selector;      /*!< Selector for LC/TC. */
64    MemoryId          mem;           /*!< Region and pool. */
65    ProcId            procId;        /*!< Processor ID. */
66    Ent               ent;           /*!< Entity ID. */
67    Inst              inst;          /*!< Instance ID. */
68    SpId              sapId;         /*!< SAP ID. */
69    uint16_t               bndTmrIntvl;   /*!< Bind timer interval. */
70    Priority          priority;      /*!< Priority. */
71    Route             route;         /*!< Route. */
72 }RlcSapCfg;
73
74 /** @brief 
75 *   Configuration Structure 
76 */
77 typedef struct rlcCfg
78 {
79    union
80    {
81       RlcGenCfg       gen;           /*!< General configuraton. */
82       RlcSapCfg       sap;           /*!< SAP configuration. */
83    }s;
84 }RlcCfg;
85
86 /** @brief 
87     General Statistics Structure */
88 typedef struct rlcGenSts
89 {
90    CntrSts           numUe;         /*!< Total number of UEs. */
91    CntrSts           pdusRecv;      /*!< Number of PDUs received. */
92    CntrSts           pdusSent;      /*!< Number of PDUs sent. */
93    CntrSts           pdusRetx;      /*!< Number of PDUs retransmitted. */
94    CntrSts           bytesRecv;     /*!< Number of bytes received. */
95    CntrSts           bytesSent;     /*!< Number of bytes sent. */
96    CntrSts           unexpPdusRecv; /*!< Unexpected PDU received. */
97    CntrSts           errorPdusRecv; /*!< Format error pdus received. */
98    CntrSts           protTimeOut;   /*!< Number of protocol time outs leading
99                                          to retransmission. */
100    CntrSts           numOfRb;       /*!< Total number of RBs in RLC. */
101    CntrSts           numSduDisc;    /*!< Number of SDUs discarded. */
102 }RlcGenSts;
103
104 /** @brief 
105     RLC Upper SAP statistics */
106 typedef struct rlcKwuSapSts 
107 {
108    /* lkw_x_001.main_2, changed from suId to spId */
109    SpId              spId;          /*!< Service  Provider ID. */
110    CntrSts           sduRx;         /*!< Number of SDUs received. */
111    CntrSts           sduTx;         /*!< Number of tranxmitted SDUs. */
112 }RlcKwuSapSts;
113
114 /** @brief 
115            RRC Control SAP Statistics */
116 typedef struct rlcCkwCntSts
117 {
118    CntrSts           statMsgs;      /*!< Number of Status Messages send. */
119 }RlcCkwCntSts;
120
121 /** @brief 
122     Statistics Structure */
123 typedef struct rlcSts
124 {
125    DateTime dt;                     /*!< Date and Time structure. */
126    union
127    {
128       RlcGenSts       gen;           /*!< General Statistics. */
129       RlcKwuSapSts    rlckwuSap;        /*!< RLC upper SAP statistics. */
130       RlcCkwCntSts    ckwSap;        /*!< RRC control SAP. */
131    }s;
132 }RlcSts;
133
134 /** @brief 
135             MAC Upper SAP Status Structure */
136 typedef struct rlcRguSapSta
137 {
138    SuId              suId;          /*!< Service user ID. */
139    State             state;         /*!< State of the SAP. */
140 }RlcRguSapSta;
141
142 /** @brief 
143     RLC Upper SAP Status Structure */
144 typedef struct rlcKwuSapSta
145 {
146    SpId              spId;          /*!< Service provider ID. */
147    State             state;         /*!< State of the SAP. */
148 }RlcKwuSapSta;
149
150 /** @brief 
151     RRC Control SAP Status Structure */
152 typedef struct rlcCkwCntSapSta
153 {
154    SpId              spId;          /*!< Service provider ID. */
155    State             state;         /*!< State of the SAP. */
156 }RlcCkwCntSapSta;
157
158 /** @brief 
159     Status Structure */
160 typedef struct rlcSSta
161 {
162    DateTime          dt;            /*!< Date and Time structure. */
163    union
164    {
165       SystemId       sysId;         /*!< System ID. */
166       RlcRguSapSta    rguSap;        /*!< RLC lower SAP (MAC) status. */
167       RlcKwuSapSta    rlckwuSap;        /*!< RLC Upper SAP status. */
168       RlcCkwCntSapSta ckwSap;        /*!< RRC Control SAP Status. */
169    }s;
170 }RlcSSta;
171
172 /** @brief 
173     Trace Control Structure */
174 typedef struct rlcTrcCntrl
175 {
176    uint8_t                trcMask;       /*!< Trace mask. */
177    S16               trcLen;        /*!< Trace length. */
178 }RlcTrcCntrl;
179
180 /** @brief 
181     Debug Control Structure */
182 typedef struct rlcDbgCntrl
183 {
184    uint32_t               dbgMask;       /*!< Debug mask. Assign non zero value to enable 
185                                          and zero to disable debug */
186 }RlcDbgCntrl;
187
188 /** @brief 
189     SAP Control Structure */
190 typedef struct rlcSapCntrl
191 {
192    SuId              suId;          /*!< Service user ID. */
193    SpId              spId;          /*!< Service provider ID. */
194 }RlcSapCntrl;
195
196 /** @brief 
197     Control Structure */
198 typedef struct rlcCntrl
199 {
200    DateTime          dt;            /*!< Date and Time structure. */
201    uint8_t                action;        /*!< Action. */
202    uint8_t                subAction;     /*!< Sub action. */
203    union
204    {
205       RlcTrcCntrl     trcCntrl;      /*!< Trace Control Structure. */
206       RlcDbgCntrl     dbgCntrl;      /*!< Debug Control Structure. */
207       RlcSapCntrl     sapCntrl;      /*!< SAP Control Structure. */
208 #ifdef SS_DIAG
209       uint32_t            logMask;       /*!< Logging Control Structure. */
210 #endif
211    }s;
212 }RlcCntrl;
213
214 /** @brief 
215     Unsolicited Status Structure */
216 typedef struct rlcUSta
217 {
218    DateTime          dt;            /*!< Date and Time structure. */
219    CmAlarm           alarm;         /*!< Alarm. */
220    SuId              suId;          /*!< Service user ID. */
221    uint32_t               ueId;          /*!< Urnti UE ID. */
222   /* lkw_x_001.main_2, added support for L2 measurement */
223 #ifdef LTE_L2_MEAS
224    uint8_t                qci;           /*!< Qci value */
225 #endif
226 }RlcUSta;
227
228 /** @brief 
229     Trace Structure */
230 typedef struct rlcTrc
231 {
232    DateTime          dt;            /*!< Date and Time structure. */
233    uint16_t               event;         /*!< Event. Events defined in the differenct RLC
234                                          interfaces are pssible values here.*/
235 }RlcTrc;
236
237 /** @brief 
238     Layer Management Structure */
239 typedef struct rlcMngmt
240 {
241    Header            hdr;           /*!< Common header. */
242    CmStatus          cfm;           /*!< Status of confirmation. */
243    union 
244    {
245       RlcCfg          cfg;           /*!< General Configuration. */
246       RlcCntrl        cntrl;         /*!< Control Structure. */
247       RlcSts          sts;           /*!< Statistics. */
248       RlcSSta         ssta;          /*!< Status. */
249       RlcUSta         usta;          /*!< Unsolicited Status. */
250       RlcTrc          trc;           /*!< Trace Structre. */
251    }t;
252 }RlcMngmt;
253
254 /* lkw_x_001.main_2, added support for L2 measurement */
255 #ifdef LTE_L2_MEAS
256
257 /** @brief Measurement Request Params Structure. */
258 typedef struct rlcL2MeasReqInfo
259 {
260    uint8_t        measType;          /*!< Measurement type, bit 1 to 4 (LSB nibble) 
261                                   will be used for non IP Throughput and 
262                                   bit 5 and 6 will be used for DL and UL 
263                                   Ipthroughput respectively */
264    union
265    {
266       struct 
267       {
268          uint16_t          numSamples;       /*!<Sampling period: */
269          uint8_t           numQci;           /*!<number of qCI to take measurement for */
270          uint8_t           qci[LKW_MAX_QCI]; /*!<QCI for the measurement */
271       }nonIpThMeas;
272
273       struct 
274       {
275          uint16_t numUes;
276          struct 
277          {
278             uint8_t           numQci;           /*!<number of qCI to take measurement for */
279             uint8_t           qci[LKW_MAX_QCI]; /*!<QCI for the measurement */
280             CmLteRnti    ueId;             /*!< UE ID (Used only for IP Throughput in UL/DL */
281             CmLteCellId  cellId;           /*!< Cell ID (Used only for IP Throughput in UL/DL */
282          }ueInfoLst[LKW_MAX_UE];
283       }ipThMeas;
284
285    }val;
286 }RlcL2MeasReqInfo;
287
288 /** @brief Measurement Request Exvent  Structure. */
289 typedef struct rlcL2MeasReqEvt
290 {
291    uint32_t              transId;     /*!< Transaction Identifier */
292    uint16_t              measPeriod;  /*!< Measurement Period */
293    RlcL2MeasReqInfo  measReq;     /*!< Measurement request structure */
294 }RlcL2MeasReqEvt;
295
296 /** @brief Measurement Confirm Params Structure. */
297 typedef struct rlcL2MeasCfmInfo
298 {
299    uint8_t              qci;     /*!< QCI value */
300    union
301    {
302       struct
303       {
304          uint32_t   numActUe;   /*!< num of Active UEs*/
305          uint32_t   uuLoss;     /*!< Uu Loss Rate */
306          /* Discard new changes starts */
307          uint32_t   dlDiscRate; /*!< DL Discard rate to be reported */
308          /* Discard new changes ends */
309          uint32_t  dlSduDelay;
310       }nonIpThrput;
311
312       struct              /*!< Structure for IP throughput*/
313       {
314          F32   dlIpThPut; /*!< Scheduled DL IP throughput */
315          F32   ulIpThPut; /*!< Scheduled UL IP throughput */
316       }ipThrput;
317
318    }val;
319 }RlcL2MeasCfmInfo;
320
321 typedef struct rlcL2MeasCfmUeInfoLst
322 {
323    CmLteRnti       ueId;    /*!< UE Id used for DL/UL Ipthroughput*/
324    CmLteCellId     cellId;  /*!< Cell Id used for DL/UL Ipthroughput*/
325    RlcL2MeasCfmInfo measCfm[LKW_MAX_QCI]; /*!< Measurement confirm structure*/
326    uint16_t             numCfm; /*!< Number of Measurement confirm*/
327 }RlcL2MeasCfmUeInfoLst;
328
329 typedef struct rlcL2MeasCfmIpThMeas
330 {
331    uint16_t                  numUes; /*!< Number of Ue Info*/
332    RlcL2MeasCfmUeInfoLst ueInfoLst[LKW_MAX_UE]; /*!< UE info list*/
333 }RlcL2MeasCfmIpThMeas;
334
335 typedef struct rlcL2MeasCfmNonIpThMeas
336 {
337    uint16_t             numCfm; /*!< Number of confirm */
338    RlcL2MeasCfmInfo measCfm[LKW_MAX_QCI]; /*!< Confirmation info */
339 }RlcL2MeasCfmNonIpThMeas;
340
341 typedef union kwL2MeasCfmIpNonIp
342 {
343    RlcL2MeasCfmIpThMeas    ipThMeas;    /*!< Ip thrupt measurements*/
344    RlcL2MeasCfmNonIpThMeas nonIpThMeas; /*!< Non-Ip thrupt measurements*/
345 }RlcL2MeasCfmIpNonIp;
346
347 /** @brief Measurement Confirm Event  Structure. */
348 typedef struct rlcL2MeasCfmEvt
349 {
350    uint32_t             transId; /*!< Transaction id */
351    CmStatus        status;  /*!< Status is for all QCIs */
352    uint8_t              measType; /*!< Measurement type, bit 1 to 4 (LSB nibble) 
353                                will be used for non IP Throughput and 
354                                bit 5 and 6 will be used for DL and UL 
355                                Ipthroughput respectively. It is same for
356                                all qci in this Cfm event. */
357    RlcL2MeasCfmIpNonIp val;
358 }RlcL2MeasCfmEvt;
359
360 #endif /* LTE_L2_MEAS */
361
362 /* Control primitives towards LTE RLC */
363 /* Pointer functions to pack/unpack primitives */
364 typedef uint8_t (*RlcConfigReq)   ARGS((Pst *pst, RlcMngmt *cfg));
365 typedef uint8_t (*RlcConfigCfm)   ARGS((Pst *pst, RlcMngmt *cfgCfm));
366
367 typedef uint8_t (*LkwCntrlReq) ARGS((Pst *pst, RlcMngmt *cntl));
368 typedef uint8_t (*LkwCntrlCfm) ARGS((Pst *pst, RlcMngmt *cntlCfm));
369
370 typedef S16 (*LkwStaInd)   ARGS((Pst *pst, RlcMngmt *staInd)); 
371 typedef S16 (*LkwStaReq)   ARGS((Pst *pst, RlcMngmt *staReq));
372 typedef S16 (*LkwStaCfm)   ARGS((Pst *pst, RlcMngmt *staCfm));
373
374 typedef S16 (*LkwStsReq)   ARGS((Pst *pst, Action, RlcMngmt *sts));
375 typedef S16 (*LkwStsCfm)   ARGS((Pst *pst, Action, RlcMngmt *stsCfm));
376
377 typedef S16 (*LkwTrcInd)   ARGS((Pst *pst, RlcMngmt *trc, Buffer *mBuf));
378
379 /* lkw_x_001.main_2, added support for L2 measurement */
380 #ifdef LTE_L2_MEAS
381 typedef S16 (*LkwL2MeasReq)   ARGS((Pst *pst, RlcL2MeasReqEvt *measEvt));
382 typedef S16 (*LkwL2MeasCfm)   ARGS((Pst *pst, RlcL2MeasCfmEvt *measEvt));
383 typedef S16 (*LkwL2MeasSendReq)   ARGS((Pst *pst, uint8_t measType));
384 typedef S16 (*LkwL2MeasStopReq)   ARGS((Pst *pst, uint8_t measType));
385 typedef S16 (*LkwL2MeasStopCfm)   ARGS((Pst *pst, uint8_t measType,uint8_t status));
386 #endif /*  LTE_L2_MEAS */
387
388 /* Layer primitives */
389 /** @details This function processes configuration requests received from the layer manager.The configuration requests are general configuration, or configuration of RGU, KWU, and CKW SAPs. The type of the configuration request is determined from the elmId field in the header of the layer manager message.This function is called by the layer manager to configure RLC.
390
391 @param[in] pst  - Pointer to post structure
392 @param[in] cfg  - Configuration management structure
393 @return ROK if success , RFAILED if failure
394
395 */
396 uint8_t RlcMiRlcConfigReq ARGS((Pst *pst, RlcMngmt *cfg));
397
398 /**
399 @details This function is called by the RlcMiRlcConfigReq function for responding to configuration requests.The cfm field in the RlcMngmt  structure contains the response value.
400
401 @param[in] pst  - Pointer to post structure
402 @param[in] cfm  - Configuration management structure
403 @return ROK if success , RFAILED if failure
404 */
405 S16 RlcMiRlcConfigCfm ARGS((Pst *pst, RlcMngmt *cfgCfm));
406
407 /**
408 @details
409 The layer manager initiates and uses the management-control procedure to control
410 RLC elements.The RLC control request primitive (RlcMiLkwCntrlReq) is called
411 more than once and at any time after the management-configuration procedure.The
412 control request primitive is confirmed by a RlcMiLkwCntrlCfm primitive.
413
414 @param[in] pst  - Pointer to post structure
415 @param[in] cntl - Configuration management structure
416 @return ROK if success , RFAILED if failure
417 */
418 uint8_t RlcMiLkwCntrlReq ARGS((Pst *pst, RlcMngmt *cntl));
419
420 /**
421 @details
422 This function is called by the RlcMiLkwCntrlReq function to send a control confirm to the layer management module.
423
424 @param[in] pst  - Pointer to post structure
425 @param[in] cfm  - Configuration management structure
426 @return ROK if success , RFAILED if failure
427 */
428 S16 RlcMiLkwCntrlCfm ARGS((Pst *pst, RlcMngmt *cntlCfm));
429
430 /**
431 @details
432 This function processes solicited status requests received from the layer manager.The layer manager can request status information regarding the system ID, RGSA
433 P,KWSAP, or CKSAP.
434
435 @param[in] pst  - Pointer to post structure
436 @param[in] cfg  - Configuration management structure
437 @return ROK if success , RFAILED if failure
438 */
439 S16 RlcMiLkwStaReq ARGS((Pst *pst, RlcMngmt *staInd));
440
441 /**
442 @details
443 This function is called by the RlcMiLkwStaReq function to send the requested stat
444 us information to the layer manager.
445
446 @param[in] pst   - Pointer to post structure
447 @param[in] stacfm - Configuration management structure
448 @return ROK if success , RFAILED if failure
449 */
450 S16 RlcMiLkwStaCfm ARGS((Pst *pst, RlcMngmt *staCfm));
451
452 /**
453 @details
454 This function processes statistics requests received from the layer manager. After collecting the statistics, this function calls the statistics confirm function to send the statistics to the layer manager.
455
456 @param[in] pst   - Pointer to post structure  
457 @param[in] acton - action 
458 @param[in] sts   - Configuration management structure
459 @return ROK if success , RFAILED if failure
460 */
461 S16 RlcMiLkwStsReq ARGS((Pst *pst, Action, RlcMngmt *sts));
462 /**
463 @details
464 This function is called by the RlcMiLkwStsReq function for responding to statisti
465 cs requests.
466
467 @param[in] pst   - Pointer to post structure
468 @param[in] action - action 
469 @param[in] cfg  - Configuration management structure
470 @return ROK if success , RFAILED if failure
471 */
472 S16 RlcMiLkwStsCfm ARGS((Pst *pst, Action action, RlcMngmt *stsCfm));
473 /**
474 @details
475 This function is used by RLC module to send unsolicited trace indications to
476 the layer manager, when tracing is enabled by the layer manager through a previous control request.
477
478 @param[in] pst  - Pointer to post structure
479 @param[in] cfg  - Configuration management structure
480 @param[in] buf  - buffer 
481 @return ROK if success , RFAILED if failure
482 */
483 S16 RlcMiLkwTrcInd ARGS ((Pst *pst, RlcMngmt *trc, Buffer *mBuf));
484
485 /**
486 @details This function is used by RLC to send unsolicited status information to the layer manager, when the unsolicited status flag is enabled by the layer manager through a previous control request.
487
488 @param[in] pst  - Pointer to post structure
489 @param[in] staReq - Configuration management structure
490 @return ROK if success , RFAILED if failure
491 */
492 /* lkw_x_001.main_2, added support for L2 measurement */
493 #ifdef LTE_L2_MEAS
494 /**
495 @details This function is called by the Layer Manger function to request 
496 for Measurement  responding to statisti cs requests.
497
498 @param[in] pst  - Pointer to post structure
499 @param[in] measEvt - Measurement Request structure
500 @return ROK if success , RFAILED if failure
501 */
502 S16 RlcMiLkwL2MeasReq ARGS((Pst *pst, RlcL2MeasReqEvt *measEvt));
503 S16 RlcMiLkwL2MeasStopReq ARGS((Pst *pst,uint8_t measType));
504 S16 RlcMiLkwL2MeasSendReq ARGS((Pst *pst,uint8_t measType));
505 /**
506 @details This function can be used by PDCP to send the measurement values
507 after doing L2 measurement that was requested by the layer manager.
508
509 @param[in] pst  - Pointer to post structure
510 @param[in] measEvt - Measurement confirmation structure
511 @return ROK if success , RFAILED if failure
512 */
513 S16 RlcMiLkwL2MeasCfm ARGS((Pst *pst, RlcL2MeasCfmEvt *measCfm));
514 S16 RlcMiLkwL2MeasStopCfm ARGS((Pst *pst, uint8_t measType, uint8_t status));
515 #endif /*  LTE_L2_MEAS */
516
517 S16 RlcMiLkwStaInd ARGS((Pst *pst, RlcMngmt *staReq));
518
519 Void rlcSendLmAlarm ARGS ((
520       uint16_t category,
521       uint16_t  event,
522       uint16_t cause,
523       SuId suId,
524       uint32_t ueId));
525
526 #ifdef SM
527 S16 SmMiRlcConfigCfm   ARGS((
528        Pst *,
529        RlcMngmt *
530        ));
531
532 S16 SmMiLkwCntrlCfm ARGS((
533        Pst *,
534        RlcMngmt *
535        ));
536
537 S16 SmMiLkwStaInd   ARGS((
538        Pst *,
539        RlcMngmt *
540        ));
541
542 S16 SmMiLkwStaCfm   ARGS((
543        Pst *,
544        RlcMngmt *
545        ));
546
547 S16 SmMiLkwStsCfm   ARGS((
548        Pst *,
549        Action,
550        RlcMngmt *
551        ));
552
553 S16 SmMiLkwTrcInd   ARGS((
554        Pst *,
555        RlcMngmt *,
556        Buffer *
557        ));
558
559 S16 SmMiLkwStsReq   ARGS((
560        Pst *,
561        Action,
562        RlcMngmt *
563        ));
564
565 S16 SmMiLkwStaReq   ARGS((
566        Pst *,
567        RlcMngmt *
568        ));
569
570 S16 SmMiLkwCntrlReq ARGS((
571        Pst *,
572        RlcMngmt *
573        ));
574
575 S16 SmMiRlcConfigReq   ARGS((
576        Pst *,
577        RlcMngmt *
578        ));
579
580 /* lkw_x_001.main_2, added support for L2 measurement */
581 #ifdef LTE_L2_MEAS
582 S16 SmMiLkwL2MeasReq   ARGS((
583          Pst *,
584          RlcL2MeasReqEvt *
585          ));
586 S16 SmMiLkwL2MeasStopReq ARGS((
587        Pst            *pst,
588        uint8_t             measType
589       ));
590
591 S16 SmMiLkwL2MeasSendReq ARGS((
592          Pst            *pst,
593          uint8_t             measType
594          ));
595 S16 SmMiLkwL2MeasCfm   ARGS((
596          Pst *,
597          RlcL2MeasCfmEvt *
598          ));
599 S16 SmMiLkwL2MeasStopCfm ARGS((
600          Pst     *pst,          
601          uint8_t      measType,
602          uint8_t      status
603          ));
604 #endif /*  LTE_L2_MEAS */
605 #endif
606
607 S16 smKwActvInit    ARGS((Ent ent, Inst inst, Region region, Reason reason));
608 S16 smKwActvTsk     ARGS((Pst *pst, Buffer *mBuf));
609
610 /* pack/unpack functions */
611 #ifdef LCLKW 
612 S16 packRlcConfigReq     ARGS((
613        Pst *,
614        RlcMngmt *
615        ));
616
617 uint8_t packRlcConfigCfm     ARGS((
618        Pst *,
619        RlcMngmt *
620        ));
621
622
623 S16 cmPkLkwCntrlReq   ARGS((
624        Pst *,
625        RlcMngmt *
626        ));
627
628 uint8_t cmPkLkwCntrlCfm   ARGS((
629        Pst *,
630        RlcMngmt *
631        ));
632
633 S16 cmPkLkwStaInd     ARGS((
634        Pst *,
635        RlcMngmt *
636        ));
637
638 S16 cmPkLkwStaReq     ARGS((
639        Pst *,
640        RlcMngmt *
641        ));
642
643 S16 cmPkLkwStaCfm     ARGS((
644        Pst *,
645        RlcMngmt *
646        ));
647
648 S16 cmPkLkwStsReq     ARGS((
649        Pst *,
650        Action,
651        RlcMngmt *
652        ));
653
654 S16 cmPkLkwStsCfm     ARGS((
655        Pst *,
656        Action,
657        RlcMngmt *
658        ));
659
660 S16 cmPkLkwTrcInd     ARGS((
661        Pst *,
662        RlcMngmt *,
663        Buffer *
664        ));
665
666 uint8_t unpackRlcConfigReq   ARGS((
667        RlcConfigReq,
668        Pst *,
669        Buffer *
670        ));
671
672 uint8_t unpackRlcConfigCfm   ARGS((
673        RlcConfigCfm,
674        Pst *,
675        Buffer *
676        ));
677
678 S16 cmUnpkLkwCntrlReq ARGS((
679        RlcConfigReq,
680        Pst *,
681        Buffer *
682        ));
683
684 S16 cmUnpkLkwCntrlCfm ARGS((
685        RlcConfigCfm,
686        Pst *,
687        Buffer *
688        ));
689
690 S16 cmUnpkLkwStaInd   ARGS((
691        LkwStaInd,
692        Pst *,
693        Buffer *
694        ));
695
696 S16 cmUnpkLkwStaReq   ARGS((
697        LkwStaReq,
698        Pst *,
699        Buffer *
700        ));
701
702 S16 cmUnpkLkwStaCfm   ARGS((
703        LkwStaCfm,
704        Pst *,
705        Buffer *
706        ));
707
708 S16 cmUnpkLkwStsReq   ARGS((
709        LkwStsReq,
710        Pst *,
711        Buffer *
712        ));
713
714 S16 cmUnpkLkwStsCfm   ARGS((
715        LkwStsCfm,
716        Pst *, Buffer *
717        ));
718
719
720 S16 cmUnpkLkwTrcInd   ARGS((
721        LkwTrcInd,
722        Pst *,
723        Buffer *));
724
725 /* lkw_x_001.main_2, added support for L2 measurement */
726 #ifdef LTE_L2_MEAS
727 S16 cmPkLkwL2MeasReq ARGS((
728          Pst * pst,
729          RlcL2MeasReqEvt * measReqEvt
730          ));
731 S16 cmUnpkLkwL2MeasReq ARGS((
732          LkwL2MeasReq func,
733          Pst *pst,
734          Buffer *mBuf
735          ));
736 S16 cmPkLkwL2MeasCfm ARGS((
737          Pst * pst,
738          RlcL2MeasCfmEvt *measCfmEvt
739          ));
740 S16 cmUnpkLkwL2MeasCfm ARGS((
741          LkwL2MeasCfm func,
742          Pst *pst,
743          Buffer *mBuf
744          ));
745 S16 cmPkRlcL2MeasReqInfo ARGS((
746          RlcL2MeasReqInfo * measReqInfo,
747          Buffer *mBuf
748          ));
749 S16 cmUnpkRlcL2MeasReqInfo ARGS((
750          RlcL2MeasReqInfo * measReqInfo,
751          Buffer *mBuf
752          ));
753 S16 cmPkRlcL2MeasCfmInfo ARGS((
754          RlcL2MeasCfmInfo * measCfmInfo,
755          Buffer *mBuf,
756          uint8_t measType
757          ));
758 S16 cmUnpkRlcL2MeasCfmInfo ARGS((
759          RlcL2MeasCfmInfo * measCfmInfo,
760          Buffer *mBuf,
761          uint8_t measType
762          ));
763 S16 cmPkLkwL2MeasStopReq ARGS((
764          Pst * pst,
765          uint8_t measType
766          ));
767 S16 cmUnpkLkwL2MeasStopReq ARGS((
768          LkwL2MeasStopReq func,
769          Pst *pst,
770          Buffer *mBuf
771          ));
772 S16 cmPkLkwL2MeasSendReq ARGS((
773          Pst * pst,
774          uint8_t measType
775          ));
776 S16 cmUnpkLkwL2MeasSendReq ARGS((
777          LkwL2MeasSendReq func,
778          Pst *pst,
779          Buffer *mBuf
780          ));
781 S16 cmPkLkwL2MeasStopCfm ARGS((
782          Pst * pst,
783          uint8_t measType,
784          uint8_t status
785          ));
786 S16 cmUnpkLkwL2MeasStopCfm ARGS((
787          LkwL2MeasStopCfm func,
788          Pst *pst,
789          Buffer *mBuf
790          ));
791 #endif /*  LTE_L2_MEAS */
792
793 #endif
794
795 #ifdef __cplusplus
796 }
797 #endif /* __cplusplus */
798 #endif /* __LKW_X__ */
799
800 \f  
801 /********************************************************************30**
802          End of file
803 **********************************************************************/