Nanosleep for slot Ind, warning fixes, WLS changes, memory leak fixes
[o-du/l2.git] / src / cm / rgu.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      Name:    Upper Layer Interface
21
22      Type:    C header file
23
24      Desc:    Structures, variables and typedefs required by 
25               RGU interface
26
27      File:    rgu.x
28
29 *********************************************************************21*/
30
31 \f
32 #ifndef __RGUX__
33 #define __RGUX__
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 /** 
39   @file rgu.x 
40   @brief Structure declarations and definitions for RGU interface.
41  */
42
43 /***********************************************************************
44                           typedefs and data structures
45  ***********************************************************************/
46
47 /**
48  * @brief PDU information given on a logical channel.
49  */
50 typedef struct rguPduInfo
51 {
52    U8     numPdu;                 /*!< Number of PDUs */ 
53    Buffer *mBuf[RGU_MAX_PDU];     /*!< numPdu data buffers */
54 } RguPduInfo;
55
56
57 /**
58  * @brief Buffer Occupancy Report for dedicated logical channel.
59  */
60 typedef struct rguDBoReport
61 {
62    S32  bo;                /*!< Buffer occupancy reported by RLC */
63 #ifdef CCPU_OPT
64    U16  estRlcHdrSz;       /*!< Estimated RLC header size */
65    Bool staPduPrsnt;       /*!< Indicates whether the BO includes
66                                 a status PDU as well */
67 #endif
68    U32  staPduBo;          /*!< Indicates the Status PDU BO. 
69                                 This is included in bo */
70    U32  oldestSduArrTime;
71 } RguDBoReport;
72
73 /**
74  * @brief DatReq from RLC to MAC for Common Channels (BCCH, PCCH and CCCH).
75  */
76 typedef struct rguCDatReqInfo
77 {
78    CmLteCellId     cellId;          /*!< CELL ID */
79    CmLteLcId       lcId;            /*!< Logical channel ID */
80    CmLteLcType     lcType;          /*!< Logical channel Type */
81    U32             transId;         /*!< Transaction ID */
82 #ifdef EMTC_ENABLE
83    U8              pnb;            /*Paging narrowBand on which UE performs Paging*/
84 #endif
85    union{
86    CmLteTimingInfo timeToTx;        /*!< Actual time when PHY transmits
87                                          this, applicable to BCCH and PCCH only */
88    CmLteRnti rnti;                  /*!< Temporary CRNTI:Applicable for CCCH. */
89    }u;
90    Buffer          *pdu;            /*!< PDU to be transmitted */
91 } RguCDatReqInfo;
92 /**
93  * @brief DatReq Information of a logical channel.
94  */
95 typedef struct rguLchDatReq
96 {
97    CmLteLcId    lcId;                /*!< Logical channel ID */
98    RguDBoReport boReport;            /*!< BO for the logical channel */
99    RguPduInfo   pdu;                 /*!< PDU to be transmitted*/
100    Bool         setMaxUlPrio;
101 #ifdef L2_OPTMZ
102    Bool         freeBuff;            /*!< TRUE if Buffer is to be freed by MAC
103                                           It is set for UM bearer*/
104 #endif
105 } RguLchDatReq;
106
107 /*rgu_x_001.main_3 - ADD - L2M Support */
108 #ifdef LTE_L2_MEAS
109 /**
110  * @brief Structure to store logical channels to SN mapping */
111 typedef struct rguLchmapInfo
112 {
113    CmLteLcId lChId;                  /*!< Logical channel Id */
114    U16       snList[RGU_MAX_LC];     /*!< Set of sequence numbers */
115 }RguLchMapInfo;
116 /**
117  * @brief Sequence Number mapping info per TB 
118  * */
119 typedef struct rguSnMapInfo
120 {
121    U32            tbId;               /*!< TB id for which sn info map */
122    U8             numLch;             /*!< Number of Ded Logical Channels */
123    RguLchMapInfo  lchMap[RGU_MAX_LC]; /*!< LC to SN Mapping Info*/
124 } RguSnMapInfo;
125
126 /*
127  *  @brief Structure to hold harq status Indication to RLC
128  *  */
129 typedef struct rguHarqStatusInd
130 {
131    CmLteCellId   cellId;                    /*!< Cell Id*/
132    CmLteRnti     ueId;                      /*!< ue Id*/
133    U8            numTbs;                    /*!< Number of Tbs present */
134  
135    U32           tbId[RGU_MAX_TB];          /*!< tbId provided by RLC in
136                                                  DatReq  */                                                                                 
137    U16           status[RGU_MAX_TB];        /*!< Status back to RLC ACK/NACK*/
138 } RguHarqStatusInd;
139
140 /*
141  *  @brief Structure to hold rguHarqStatusInd and pst structure
142  *  */
143 typedef struct rguHarqStaInd
144 {
145     RguHarqStatusInd  hqStatusInd;            
146     Pst               pst;
147 } RguHarqStaInd;
148
149 /*
150  *  @brief UL Throughput Measurement Request from RLC to MAC regarding configuration
151  *  of an LC for a particular UE to provide Timing Info.
152  *  */
153 typedef struct rguL2MUlThrpMeasReqInfo
154 {
155    CmLteCellId   cellId;                    /*!< Cell Id*/
156    CmLteRnti     rnti;                      /*!< UE Id*/
157    U8            numLcId;                   /*!< Number of LC Ids configured */
158    U8            lcId[RGU_MAX_LC];          /*!< LC ID indices that are 
159                                               configured */
160    Bool          enbMeas;                   /*!< Indication to enable/disable 
161                                                measurement for the LC ID*/
162 } RguL2MUlThrpMeasReqInfo;
163
164 #endif /* LTE_L2_MEAS */
165 /**
166  * @brief DatReq info for each TB of a UE.
167  */
168 typedef struct rguDatReqTb
169 {
170    U8           nmbLch;              /*!< Number of logical channels of a UE 
171                                           that have data for this TB */
172    RguLchDatReq lchData[RGU_MAX_LC]; /*!< Data Buffers and BO of  
173                                           logical channels for this TB */
174 /* rgu_x_001.main_3 - ADD - L2M Support */
175 #ifdef LTE_L2_MEAS
176    U32          tbId;                /*!< RLC's internal tbId maintained
177                                           per UE */  
178 #endif /* LTE_L2_MEAS */
179 }RguDatReqTb;
180
181 /**
182  * @brief DatReq from RLC to MAC for dedicated channels of an UE.
183  */
184 typedef struct rguDDatReqPerUe
185 {
186    CmLteRnti     rnti;         /*!< UE ID */
187    U32           transId;      /*!< Transaction ID */
188    U8            nmbOfTbs;     /*!< Number of TBs. Relevant for MIMO */
189    RguDatReqTb   datReqTb[2];  /*!< DatReq info for MAX 2 TBs */ 
190 } RguDDatReqPerUe;
191
192 /**
193  * @brief DatReq from RLC to MAC for dedicated channels of all UEs in a TTI.
194  */
195 typedef struct rguDDatReqInfo
196 {
197    CmLteCellId        cellId;                        /*!< CELL ID */
198    U8                 nmbOfUeGrantPerTti;                 /*!< Number of TBs. Relevant for MIMO */
199    RguDDatReqPerUe    datReq[RGU_MAX_NUM_UE_PER_TTI];    /*!< Pointer to DatReq for MAX UEs configured Per TTI */ 
200 } RguDDatReqInfo;
201
202 /**
203  * @brief DatInd from MAC to RLC on CCCH.
204  */
205 typedef struct rguCDatIndInfo
206 {
207    CmLteCellId cellId;               /*!< Cell ID */
208    CmLteRnti   rnti;                 /*!< RNTI */
209    CmLteLcId   lcId;                 /*!< Logical channel instance */
210    Buffer      *pdu;                 /*!< PDU received always one */
211 } RguCDatIndInfo;
212
213 #ifdef MAC_RLC_UL_RBUF
214 typedef struct rguDedDatInd1
215 {
216    Void *msg;
217 }RguDedDatInd1;
218 #endif 
219
220 /* rgu_x_001.main_3 - ADD - L2M & R9 Support */
221 #ifdef LTE_L2_MEAS
222
223 /** 
224  *  * Segment Indication ID from MAC to RLC */
225 typedef enum rguL2MUlThrpSegInd
226 {
227    RGU_L2M_ULTHRP_NOTDEF = 0,/**< Specifies No Indication */
228    RGU_L2M_ULTHRP_FIRST = 1,        /**< Specifies First Segment Indication */
229    RGU_L2M_ULTHRP_LAST = 2,        /**< Specifies Last Segment Indication */
230    RGU_L2M_ULTHRP_INTERIM = 3    /**< Specifies Interim Segment Indication */
231 }RguL2MUlThrpSegInd;
232
233 /**
234  * @brief Scheduled IP Throughput Timing Info from MAC to RLC.
235  */
236 typedef struct rgL2MeasUlThrpTimInfo 
237 {
238    U32                 thrpTimeUl;      /*!< Difference in Timing values T1, T2 */
239    RguL2MUlThrpSegInd  firstLastSegInd;         /*!< Indication of Data Burst */
240 }RgL2MeasUlThrpTimInfo;
241
242 #endif
243 /**
244  * @brief DatInd Information for a logical channel.
245  */
246 typedef struct rguLchDatInd
247 {
248    CmLteLcId    lcId;                /*!< Logical channel instance */
249    RguPduInfo   pdu;                 /*!< PDU received */
250    /* rgu_x_001.main_3 - ADD - L2M & R9 Support */
251 }RguLchDatInd;
252
253 /**
254  * @brief Data Indication from MAC to RLC for dedicated channels of an UE.
255  */
256 typedef struct rguDDatIndInfo
257 {
258    CmLteCellId  cellId;              /*!< CELL ID */
259    CmLteRnti    rnti;                /*!< UE ID */
260    U8           numLch;              /*!< Number of logical channels within
261                                        the UE that has data */
262    RguLchDatInd lchData[RGU_MAX_LC]; /*!< Data buffers of logical channels */
263 #ifdef LTE_L2_MEAS
264    U32          ttiCnt;              /*!< The Current TTI in the Cell */
265    U8           burstInd;            /*!< Indicates the Burst Start or End */
266 #endif
267 } RguDDatIndInfo;
268
269 /**
270  * @brief Status Response from RLC to MAC  for common logical channel.
271  */
272 typedef struct rguCStaRspInfo
273 {
274    CmLteCellId  cellId;         /*!< CELL ID */
275    CmLteLcId    lcId;           /*!< Logical channel ID */ 
276    CmLteLcType  lcType;         /*!< Logical channel type */
277    S32 bo;                      /*!< Buffer occupancy reported by RLC */
278 #ifdef EMTC_ENABLE
279    U8          emtcDiReason;   /*!< Reason for DI message to send. */
280    U8          pnb;            /*paging narrowBand on which UE will perform paging*/
281 #endif
282    union                        /*!< lcType in the primitive is 
283                                      the union selector */
284    {
285       CmLteTimingInfo timeToTx; /*!< Timing info for the BO, applicable for
286                                    BCCH and PCCH */
287       CmLteRnti       rnti;     /*!< Temporary CRNTI, only for CCCH */
288    } u;
289 } RguCStaRspInfo;
290
291 /**
292  * @brief Status Response from RLC to MAC  for dedicated logical channel.
293  */
294 typedef struct rguDStaRspInfo
295 {
296    Pst          post; 
297    CmLteCellId  cellId;     /*!< CELL ID */
298    CmLteRnti    rnti;       /*!< UE ID */
299    CmLteLcId    lcId;       /*!< Logical channel ID */
300    RguDBoReport boReport;   /*!< BO report for this common channel */
301 } RguDStaRspInfo;
302
303 /**
304  * @brief Status Indication from MAC to RLC for common logical channel.
305  */
306 typedef struct rguCStaIndInfo
307 {
308    CmLteCellId cellId;       /*!< CELL ID */
309    CmLteLcId   lcId;         /*!< Logical channel ID */
310    U32         transId;      /*!< Transaction ID */
311    CmLteRnti   rnti;         /*!< Temporary CRNTI */
312 #ifdef EMTC_ENABLE
313    Bool                isEmtcPaging;      /*!< To Identify whether Paging is EMTC or Lagecy */
314    CmLteTimingInfo     pagingTimingInfo; /*!< paging TimingInfo information */
315 #endif
316 } RguCStaIndInfo;
317
318 /**
319  * @brief StaInd info for each logical channel of an UE.
320  */
321 typedef struct rguLchStaInd
322 {
323    CmLteLcId   lcId;         /*!< Logical channel ID */
324    S16         totBufSize;  /*!< Total buffer size in bytes 
325                                 scheduled by MAC */
326 } RguLchStaInd;
327
328 /**
329  * @brief StaInd info for each TB of a UE.
330  */
331 typedef struct rguStaIndTb
332 {
333    U8           nmbLch;               /*!< Number of logical channels scheduled
334                                            for this TB */
335    RguLchStaInd lchStaInd[RGU_MAX_LC];/*!< Buffer size allocated for scheduled 
336                                            logical channels for this TB */
337 #ifdef LTE_L2_MEAS
338    U32          tbId;                /*!< RLC internal TB id */                                           
339    U16          status;              /*!< Status back to RLC ACK/NACK/RGU_NACK_LOSS */
340 #endif
341 }RguStaIndTb;
342 /**
343  * @brief StaInd from MAC to RLC for dedicated logical channels of an UE.
344  */
345 typedef struct rguDStaIndPerUe
346 {
347    CmLteRnti     rnti;        /*!< UE ID */
348    U32           transId;     /*!< Transaction ID */
349    U8            nmbOfTbs;    /*!< Number of TBs. Relevant for MIMO */
350    RguStaIndTb   staIndTb[2]; /*!< StaInd info for MAX 2 TBs */
351    Bool          fillCtrlPdu; /*!< Flag to fill RLC control PDU */
352 } RguDStaIndPerUe;
353
354 /**
355  * @brief StaInd from MAC to RLC for dedicated logical channels of all UEs Per TTI.
356  */
357 typedef struct rguDStaIndInfo
358 {
359    CmLteCellId      cellId;                       /*!< CELL ID */
360    U8               nmbOfUeGrantPerTti;                /*!< Number of TBs. Relevant for MIMO */
361    RguDStaIndPerUe  staInd[RGU_MAX_NUM_UE_PER_TTI];   /*!< StaInd info for MAX number of UEs per TTI */
362 } RguDStaIndInfo;
363
364 /**
365  * @brief flowCntrl info per LC.
366  */
367 typedef struct rguLcFlowCntrlInfo
368 {
369   CmLteLcId   lcId; 
370   U32         pktAdmitCnt; 
371   U32         maxBo4FlowCtrl; /*!< MAX BO of Queued SDUs at RLC beyond which Flow is Controlled */
372 }RguLcFlowCntrlInfo;
373
374 /**
375  * @brief flowCntrl info per UE.
376  */
377 typedef struct rguUeFlowCntrlInfo 
378 {
379   CmLteRnti            ueId;
380   U32                  numLcs;
381   RguLcFlowCntrlInfo   lcInfo[RGU_MAX_LC];
382 }RguUeFlowCntrlInfo;  
383
384 /**
385  * @brief flowCntrlInd from MAC to RLC for dedicated logical channels of all UEs Per TTI.
386  */
387 typedef struct rguFlowCntrlInd
388 {
389    CmLteCellId         cellId;                       /*!< CELL ID */
390    U32                 numUes;
391    RguUeFlowCntrlInfo  ueFlowCntrlInfo[RGU_MAX_NUM_UE_PER_TTI];
392 }RguFlowCntrlInd;  
393 typedef struct rguInfoRingElem 
394 {
395   SpId         spId;
396   U8           event;
397   Void         *msg;
398 }RguInfoRingElem;
399
400 /* Buffer occupancy status information */
401 typedef struct rlcMacBOStatus
402 {
403    CmLteCellId  cellId;     /*!< CELL ID */
404    CmLteRnti    rnti;       /*!< UE ID */
405    Bool         commCh;     /*!< Common or Dedicated Channel */
406    CmLteLcId    lcId;       /*!< Logical channel ID */
407    S32          bo;         /*!< Buffer occupancy reported by RLC */
408 }RlcMacBOStatus;
409
410 /* Schedule result report from RLC to MAC */
411 typedef struct rlcMacLchSta
412 {
413    Bool         commCh;     /*!<Common or Dedicated Channel */
414    RguLchStaInd lchStaInd;  /*!<Buffer size allocated for logical channel */
415 }RlcMacLchSta;
416
417 typedef struct rlcMacSchedRep
418 {
419    CmLteTimingInfo timeToTx;  /*!< Air interface time */
420    CmLteCellId  cellId;       /*!< CELL ID */
421    CmLteRnti    rnti;         /*!< Temporary CRNTI */
422    U8           nmbLch;       /*!< Number of logical channels scheduled */
423    RlcMacLchSta lchSta[RGU_MAX_LC];  /*!< Scheduled info of logical channels */
424 }RlcMacSchedRepInfo;
425
426 /* UL Data i.e. RLC PDU info from RLC to MAC */
427 typedef struct rlcMacPduInfo
428 {
429    Bool         commCh;   /*!<Common or Dedicated Channel */
430    CmLteLcId    lcId;     /*!< Logical channel ID */
431    MsgLen       pduLen;   /*!< PDU Length */
432    Buffer       *pduBuf;  /*!< RLC PDU buffer */
433 }RlcMacPduInfo;
434
435 typedef struct rlcMacData
436 {  
437    CmLteTimingInfo timeToTx;  /*!< Air interface time */
438    CmLteCellId     cellId;       /*!< CELL ID */
439    CmLteRnti       rnti;         /*!< Temporary CRNTI */ 
440    U8              nmbPdu;       /*!< Number of RLC PDUs */
441    RlcMacPduInfo   pduInfo[RGU_MAX_PDU];
442 }RlcMacData;
443
444
445 /***********************************************************************
446           type definitions for upper layer interface - RLC primitives
447  ***********************************************************************/
448 /** @brief Bind Request from RLC to MAC to bind the interface SAPs */
449 typedef S16 (*RguBndReq) ARGS((
450    Pst*                 pst,
451    SuId                 suId,
452    SpId                 spId));
453 /** @brief Unbind Request from RLC to MAC to unbind the interface SAPs */
454 typedef S16 (*RguUbndReq) ARGS((
455    Pst*                 pst,
456    SpId                 spId,
457    Reason               reason));
458 /** @brief Bind Confirmation from MAC to RLC for the bind/unbind 
459  * request for the interface SAPs */
460 typedef S16 (*RguBndCfm) ARGS((
461    Pst*                 pst,
462    SuId                 suId,
463    U8                   status));
464 /** @brief Data Request from RLC to MAC for forwarding SDUs on common
465  * channel for transmission */
466 typedef S16 (*RguCDatReq) ARGS((
467    Pst*                 pst,
468    SpId                 spId,
469    RguCDatReqInfo  *    datReq));
470 /** @brief Data Request from RLC to MAC for forwarding SDUs on 
471  * dedicated channel for transmission */
472 typedef S16 (*RguDDatReq) ARGS((
473    Pst*                 pst,
474    SpId                 spId,
475    RguDDatReqInfo       *datReq));
476
477 typedef uint16_t (*RlcMacDlData) ARGS((
478    Pst*                 pst,
479    SpId                 spId,
480    RlcMacData           *dlData));
481 /** @brief Data Indication from MAC to RLC to 
482  * forward the data received for common channels */
483 typedef S16 (*RguCDatInd) ARGS((
484    Pst*                 pst,
485    SuId                 suId,
486    RguCDatIndInfo  *    datInd));
487 /** @brief Data Indication from MAC to RLC to 
488  * forward the data received for dedicated channels */
489 typedef S16 (*RguDDatInd) ARGS((
490    Pst*                 pst,
491    SuId                 suId,
492    RguDDatIndInfo       *datInd));
493
494 typedef S16 (*RlcMacUlData) ARGS((
495    Pst*                 pst,
496    SuId                 suId,
497    RlcMacData           *ulData));
498 /** @brief Status Response from RLC to MAC to 
499  * inform the BO report for common channels */
500 typedef S16 (*RguCStaRsp) ARGS((
501    Pst*                 pst,
502    SpId                 spId,
503    RguCStaRspInfo  *    staRsp));
504 /** @brief Status Repsonse from RLC to MAC to 
505  * inform the BO report for dedicated channels */
506 typedef S16 (*RguDStaRsp) ARGS((
507    Pst*                 pst,
508    SpId                 spId,
509    RguDStaRspInfo  *    staRsp));
510
511 typedef uint16_t (*RlcMacBoStatus) ARGS((
512    Pst*                 pst,
513    SpId                 spId,
514    RlcMacBOStatus       *boStatus));
515
516 /** @brief Status Indication from MAC to RLC  
517  * as a response to the staRsp primitive from RLC */
518 typedef S16 (*RguCStaInd) ARGS((
519    Pst*                 pst,
520    SuId                 suId,
521    RguCStaIndInfo  *    staInd));
522 /** @brief Status Indication from MAC to RLC  
523  * as a response to the staRsp primitive from RLC */
524 typedef S16 (*RguDStaInd) ARGS((
525    Pst*                 pst,
526    SuId                 suId,
527    RguDStaIndInfo *    staInd));
528
529 typedef uint16_t (*RlcMacSchedRep) ARGS((
530    Pst*                 pst,
531    SuId                 suId,
532    RlcMacSchedRepInfo       *schRep));
533
534 typedef S16 (*RguFlowCntrlIndInfo) ARGS((
535    Pst                  *pst,
536    SuId                 suId,
537    RguFlowCntrlInd      *flowCntrlInd));
538
539 /* rgu_x_001.main_3 - ADD - L2M & R9 Support */
540 #ifdef LTE_L2_MEAS
541 /** @brief HARQ Status Indication from MAC to RLC  
542  * as a response to Data Req primitive from RLC */
543 typedef S16 (*RguHqStaInd) ARGS((
544    Pst*                 pst,
545    SuId                 suId,
546    RguHarqStatusInd     *harqStatusInd));
547 /** @brief LCID measurement status from RLC to MAC  
548  * so as to provide Timing Info in DDatInd */
549 typedef S16 (*RguL2MUlThrpMeasReq) ARGS((
550    Pst*                 pst,
551    SpId                 spId,
552    RguL2MUlThrpMeasReqInfo  *l2mUlThrpMeasReq));
553
554 #endif /* LTE_L2_MEAS */
555
556
557 #ifdef RG
558 /** @brief Bind Request from RLC to MAC to bind the interface SAPs
559  * @param pst Pointer to the post structure.
560  * @param suId SAP ID of the service user.
561  * @param spId SAP ID of the service provider.
562  * @return ROK/RFAILED
563 */
564 EXTERN S16 RgUiRguBndReq ARGS((Pst* pst,SuId suId,SpId spId));
565 /** @brief Unbind Request from RLC to MAC to unbind the interface SAPs 
566  * @param pst Pointer to the post structure.
567  * @param spId SAP ID of the service provider.
568  * @param reason Reason for unbind request.
569  * @return ROK/RFAILED
570 */
571 EXTERN S16 RgUiRguUbndReq ARGS((Pst* pst,SpId spId,Reason reason));
572 /** @brief Bind Confirmation from MAC to RLC for the bind and unbind 
573  * request for the interface SAPs 
574  * @param pst Pointer to the post structure.
575  * @param suId SAP ID of the service user.
576  * @param status Status of the bind request. 
577  * @return ROK/RFAILED
578 */
579 EXTERN S16 RgUiRguBndCfm ARGS((Pst* pst,SuId suId,U8 status));
580 /** @brief Data Request from RLC to MAC for forwarding SDUs on common
581  * channel for transmission 
582  * @param pst Pointer to the post structure.
583  * @param spId SAP ID of the service provider.
584  * @param datReq Data request for common channels (BCCH, PCCH and CCCH).
585  * @return ROK/RFAILED
586 */
587 EXTERN S16 RgUiRguCDatReq ARGS((Pst* pst,SpId spId,RguCDatReqInfo *datReq));
588 /** @brief Data Request from RLC to MAC for forwarding SDUs on 
589  * dedicated channel for transmission 
590  * @param pst Pointer to the post structure.
591  * @param spId SAP ID of the service provider.
592  * @param datReq Data request for dedicated channels (DCCH and DTCH).
593  * @return ROK/RFAILED
594 */
595 EXTERN S16 RgUiRguDDatReq ARGS((Pst* pst,SpId spId,RguDDatReqInfo  *datReq));
596
597 EXTERN uint16_t MacRlcProcDlData(Pst* pst, SpId spId, RlcMacData *dlData);
598
599 /** @brief Data Indication from MAC to RLC to 
600  * forward the data received for common channels
601  * @param pst Pointer to the post structure.
602  * @param suId SAP ID of the service user.
603  * @param datInd Data indication on CCCH.
604  * @return ROK/RFAILED
605 */
606 EXTERN S16 RgUiRguCDatInd ARGS((Pst* pst,SuId suId,RguCDatIndInfo  *datInd));
607 /** @brief Data Indication from MAC to RLC to 
608  * forward the data received for dedicated channels
609  * @param pst Pointer to the post structure.
610  * @param suId SAP ID of the service user.
611  * @param datInd Data indication on dedicated channels (DCCH and DTCH).
612  * @return ROK/RFAILED
613 */
614 EXTERN S16 RgUiRguDDatInd ARGS((Pst* pst,SuId suId,RguDDatIndInfo  *datInd));
615 /** @brief Status Response from RLC to MAC to 
616  * inform the BO report for common channels
617  * @param pst Pointer to the post structure.
618  * @param spId SAP ID of the service provider.
619  * @param staRsp Status response for common channels (BCCH, PCCH and CCCH).
620  * @return ROK/RFAILED
621 */
622 EXTERN S16 RgUiRguCStaRsp ARGS((Pst* pst,SpId spId,RguCStaRspInfo  *staRsp));
623 /** @brief Status Response from RLC to MAC to 
624  * inform the BO report for dedicated channels
625  * @param pst Pointer to the post structure.
626  * @param spId SAP ID of the service provider.
627  * @param staRsp Status response for dedicated channels (DCCH and DTCH).
628  * @return ROK/RFAILED
629 */
630 EXTERN S16 RgUiRguDStaRsp ARGS((Pst* pst,SpId spId,RguDStaRspInfo  *staRsp));
631
632 EXTERN uint16_t MacRlcProcBOStatus(Pst* pst, SpId spId, RlcMacBOStatus* boStatus);
633
634 /** @brief Status Indication from MAC to RLC  
635  * as a response to the staRsp primitive from RLC.
636  * @param pst Pointer to the post structure.
637  * @param suId SAP ID of the service user.
638  * @param staInd Status indication on common channels (BCCH, PCCH and CCCH).
639  * @return ROK/RFAILED
640 */
641 EXTERN S16 RgUiRguCStaInd ARGS((Pst* pst,SuId suId,RguCStaIndInfo  *staInd));
642 /** @brief Status Indication from MAC to RLC  
643  * as a response to the staRsp primitive from RLC.
644  * @param pst Pointer to the post structure.
645  * @param suId SAP ID of the service user.
646  * @param staInd Status indication on dedicated channels (DCCH and DTCH).
647  * @return ROK/RFAILED
648 */
649 EXTERN S16 RgUiRguDStaInd ARGS((Pst* pst,SuId suId,RguDStaIndInfo  *staInd));
650 /** @brief flow control indication from MAC to RLC */  
651 EXTERN S16 RgUiRguFlowCntrlInd ARGS((Pst *pst, SuId suId, 
652 RguFlowCntrlInd *flowCntrlInd)); 
653 /*rgu_x_001.main_3 - ADD - L2M & R9 Support */
654 #ifdef LTE_L2_MEAS
655 /** @brief HARQ Status Indication from MAC to RLC  
656  * as a response to the Data Req from RLC.
657  * Informs HARQ feedback for the TB with sn mapping info. */
658 EXTERN S16 RgUiRguHqStaInd ARGS((Pst* pst,SuId suId,
659 RguHarqStatusInd *harqStatusInd));
660
661
662
663 /** @brief Request for measuring the timing Info for a LC from RLC to MAC  
664  * When the status is ON then Timing Info for data bursts 
665  * shall be captured and provided to RLC on DDatInd. */
666 EXTERN S16 RgUiRguL2MUlThrpMeasReq ARGS((Pst* pst,SpId spId,
667 RguL2MUlThrpMeasReqInfo  *l2mUlThrpMeasReq));
668
669 #endif /* LTE_L2_MEAS */
670
671 #endif
672
673 #ifdef KW
674 /** @brief Request from RLC to MAC to bind the interface saps */
675 EXTERN S16 KwLiRguBndReq ARGS((
676    Pst*                 pst,
677    SuId                 suId,
678    SpId                 spId
679 ));
680 /** @brief Request from RLC to MAC to Unbind the interface saps */
681 EXTERN S16 KwLiRguUbndReq ARGS((
682    Pst*                 pst,
683    SpId                 spId,
684    Reason               reason
685 ));
686 /** @brief Confirmation from MAC to RLC for the bind/Unbind 
687  * request for the interface saps */
688 EXTERN S16 KwLiRguBndCfm ARGS((
689    Pst*                 pst,
690    SuId                 suId,
691    U8                   status
692 ));
693 /** @brief Request from RLC to MAC for forwarding SDUs on common
694  * channel for transmission */
695 EXTERN S16 KwLiRguCDatReq ARGS((
696    Pst*                 pst,
697    SpId                 spId,
698    RguCDatReqInfo  *    datReq
699 ));
700 /** @brief Request from RLC to MAC for forwarding SDUs on 
701  * dedicated channel for transmission */
702 EXTERN S16 RlcMacSendDlData ARGS((
703    Pst*                 pst,
704    SpId                 spId,
705    RlcMacData  *    datReq
706 ));
707
708 /** @brief Handler toprocess UL data from MAC and
709  * forwarding to appropriate common/dedicated
710  * channel's handler */
711 EXTERN S16 RlcMacProcUlData ARGS((
712    Pst*           pst,
713    SuId           suId,
714    RlcMacData   *ulData
715 ));
716
717 /** @brief Data Indication from MAC to RLC to 
718  * forward the data received for common channels*/
719 EXTERN S16 KwLiRguCDatInd ARGS((
720    Pst*                 pst,
721    SuId                 suId,
722    RguCDatIndInfo  *    datInd
723 ));
724 /** @brief Data Indication from MAC to RLC to 
725  * forward the data received for dedicated channels*/
726 EXTERN S16 KwLiRguDDatInd ARGS((
727    Pst*                 pst,
728    SuId                 suId,
729    RguDDatIndInfo  *    datInd
730 ));
731 /** @brief Primitive invoked from RLC to MAC to 
732  * inform the BO report for common channels*/
733 EXTERN S16 KwLiRguCStaRsp ARGS((
734    Pst*                 pst,
735    SpId                 spId,
736    RguCStaRspInfo  *    staRsp
737 ));
738 /** @brief Primitive invoked from RLC to MAC to 
739  * inform the BO report for dedicated channels*/
740 EXTERN S16 RlcMacSendBOStatus ARGS((
741    Pst*                 pst,
742    SpId                 spId,
743    RlcMacBOStatus*      boSta
744 ));
745
746 /**@brief Primitive invoked from MAC to RLC to
747  * inform scheduling result for logical channels */
748 EXTERN uint16_t RlcMacProcSchedRep ARGS((
749    Pst*                 pst,
750    SuId                 suId,
751    RlcMacSchedRepInfo       *schRep
752 ));
753 /** @brief Status Indication from MAC to RLC  
754  * as a response to the staRsp primitive from RLC.
755  * Informs RLC of the totalBufferSize and Timing Info 
756  * for the transmission on common channels. */
757 EXTERN S16 KwLiRguCStaInd ARGS((
758    Pst*                 pst,
759    SuId                 suId,
760    RguCStaIndInfo  *    staInd
761 ));
762 /** @brief Status Indication from MAC to RLC  
763  * as a response to the staRsp primitive from RLC.
764  * Informs RLC of the totalBufferSize and Timing Info 
765  * for the transmission on dedicated channels. */
766 EXTERN S16 KwLiRguDStaInd ARGS((
767    Pst*                 pst,
768    SuId                 suId,
769    RguDStaIndInfo  *    staInd
770 ));
771
772 #ifdef LTE_L2_MEAS
773 /** @brief HARQ Status Indication from MAC to RLC  
774  * as a response to the Data Req from RLC.
775  * Informs HARQ feedback for the PDU with sn. */
776 EXTERN S16 KwLiRguHqStaInd ARGS((
777    Pst*                 pst,
778    SuId                 suId,
779    RguHarqStatusInd     *harqStatusInd));
780
781
782 /** @brief Request for measuring the timing Info for a LC from RLC to MAC  
783  * When the status is ON then Timing Info for data bursts 
784  * shall be captured and provided to RLC on DDatInd. */
785 EXTERN S16 KwLiRguL2MUlThrpMeasReq ARGS((
786    Pst*                 pst,
787    SpId                 spId,
788    RguL2MUlThrpMeasReqInfo *l2mUlThrpMeasReq));
789
790 #endif /* LTE_L2_MEAS */
791
792 /** @brief flowCntrl Indication from MAC to RLC  */
793 EXTERN S16 KwLiRguFlowCntrlInd ARGS((
794 Pst              *pst, 
795 SuId             suId, 
796 RguFlowCntrlInd  *flowCntrlInd
797 ));
798 #endif
799
800 #ifdef LCRGU
801 /** @brief Request from RLC to MAC to bind the interface saps */
802 EXTERN S16 cmPkRguBndReq ARGS((
803    Pst*                 pst,
804    SuId                 suId,
805    SpId                 spId
806 ));
807 /** @brief Request from RLC to MAC to bind the interface saps */
808 EXTERN S16 cmUnpkRguBndReq ARGS((
809    RguBndReq            func,
810    Pst*                 pst,
811    Buffer               *mBuf
812 ));
813 /** @brief Request from RLC to MAC to Unbind the interface saps */
814 EXTERN S16 cmPkRguUbndReq ARGS((
815    Pst*                 pst,
816    SpId                 spId,
817    Reason               reason
818 ));
819 /** @brief Request from RLC to MAC to Unbind the interface saps */
820 EXTERN S16 cmUnpkRguUbndReq ARGS((
821    RguUbndReq           func,
822    Pst*                 pst,
823    Buffer               *mBuf
824 ));
825 /** @brief Confirmation from MAC to RLC for the bind/Unbind 
826  * request for the interface saps */
827 EXTERN S16 cmPkRguBndCfm ARGS((
828    Pst*                 pst,
829    SuId                 suId,
830    U8                   status
831 ));
832 /** @brief Confirmation from MAC to RLC for the bind/Unbind 
833  * request for the interface saps */
834 EXTERN S16 cmUnpkRguBndCfm ARGS((
835    RguBndCfm            func,
836    Pst*                 pst,
837    Buffer               *mBuf
838 ));
839 /** @brief Request from RLC to MAC for forwarding SDUs on common
840  * channel for transmission */
841 EXTERN S16 cmPkRguCDatReq ARGS((
842    Pst*                 pst,
843    SpId                 spId,
844    RguCDatReqInfo  *    datReq
845 ));
846 /** @brief Request from RLC to MAC for forwarding SDUs on common
847  * channel for transmission */
848 EXTERN S16 cmUnpkRguCDatReq ARGS((
849    RguCDatReq           func,
850    Pst*                 pst,
851    Buffer               *mBuf
852 ));
853 /** @brief Request from RLC to MAC for forwarding SDUs on 
854  * dedicated channel for transmission */
855 EXTERN uint16_t packDlData ARGS((
856    Pst*                 pst,
857    SpId                 spId,
858    RlcMacData      *    datReq
859 ));
860 /** @brief Request from RLC to MAC for forwarding SDUs on 
861  * dedicated channel for transmission */
862 EXTERN S16 unpackDlData ARGS((
863    RlcMacDlData         func,
864    Pst*                 pst,
865    Buffer               *mBuf
866 ));
867 /** @brief Data Indication from MAC to RLC to 
868  * forward the data received for common channels*/
869 EXTERN S16 cmPkRguCDatInd ARGS((
870    Pst*                 pst,
871    SuId                 suId,
872    RguCDatIndInfo  *    datInd
873 ));
874 /** @brief Data Indication from MAC to RLC to 
875  * forward the data received for common channels*/
876 EXTERN S16 cmUnpkRguCDatInd ARGS((
877    RguCDatInd           func,
878    Pst*                 pst,
879    Buffer               *mBuf
880 ));
881 /** @brief Data Indication from MAC to RLC to 
882  * forward the data received for dedicated channels*/
883 EXTERN S16 packRcvdUlData ARGS((
884    Pst*                 pst,
885    SuId                 suId,
886    RlcMacData  *    ulData
887 ));
888 /** @brief Data Indication from MAC to RLC to 
889  * forward the data received for dedicated channels*/
890 EXTERN S16 unpackRcvdUlData ARGS((
891    RlcMacUlData         func,
892    Pst*                 pst,
893    Buffer               *mBuf
894 ));
895 /** @brief Primitive invoked from RLC to MAC to 
896  * inform the BO report for common channels*/
897 EXTERN S16 cmPkRguCStaRsp ARGS((
898    Pst*                 pst,
899    SpId                 spId,
900    RguCStaRspInfo  *    staRsp
901 ));
902 /** @brief Primitive invoked from RLC to MAC to 
903  * inform the BO report for common channels*/
904 EXTERN S16 cmUnpkRguCStaRsp ARGS((
905    RguCStaRsp           func,
906    Pst*                 pst,
907    Buffer               *mBuf
908 ));
909 /** @brief Primitive invoked from RLC to MAC to 
910  * inform the BO report for dedicated channels*/
911 EXTERN uint16_t packBOStatus ARGS((
912    Pst*                 pst,
913    SpId                 spId,
914    RlcMacBOStatus*      boStatus
915 ));
916 /** @brief Primitive invoked from RLC to MAC to 
917  * inform the BO report for dedicated channels*/
918 EXTERN uint16_t unpackBOStatus ARGS((
919    RlcMacBoStatus       func,
920    Pst*                 pst,
921    Buffer               *mBuf
922 ));
923 /** @brief Status Indication from MAC to RLC  
924  * as a response to the staRsp primitive from RLC.
925  * Informs RLC of the totalBufferSize and Timing Info 
926  * for the transmission on common channels. */
927 EXTERN S16 cmPkRguCStaInd ARGS((
928    Pst*                 pst,
929    SuId                 suId,
930    RguCStaIndInfo  *    staInd
931 ));
932 /** @brief Status Indication from MAC to RLC  
933  * as a response to the staRsp primitive from RLC.
934  * Informs RLC of the totalBufferSize and Timing Info 
935  * for the transmission on common channels. */
936 EXTERN S16 cmUnpkRguCStaInd ARGS((
937    RguCStaInd           func,
938    Pst*                 pst,
939    Buffer               *mBuf
940 ));
941 /** @brief Status Indication from MAC to RLC  
942  * as a response to the staRsp primitive from RLC.
943  * Informs RLC of the totalBufferSize and Timing Info 
944  * for the transmission on dedicated channels. */
945 EXTERN S16 packSchedRep ARGS((
946    Pst*                 pst,
947    SuId                 suId,
948    RlcMacSchedRepInfo   *staInd
949 ));
950 EXTERN S16 cmPkRguFlowCntrlInfo ARGS((
951 RguFlowCntrlInd *param, 
952 Buffer           *mBuf
953 ));
954 EXTERN S16 cmPkRguUeFlowCntrlInfo ARGS((
955 RguUeFlowCntrlInfo *param,
956 Buffer           *mBuf
957 ));
958 EXTERN S16 cmPkRguLcFlowCntrlInfo ARGS((
959 RguLcFlowCntrlInfo *param,
960 Buffer           *mBuf
961 ));
962 EXTERN S16 cmUnpkRguLcFlowCntrlInfo ARGS((
963 RguLcFlowCntrlInfo *param,
964 Buffer           *mBuf
965 ));
966 EXTERN S16 cmUnpkRguUeFlowCntrlInfo ARGS((
967 RguUeFlowCntrlInfo *param,
968 Buffer           *mBuf
969 ));
970 EXTERN S16 cmUnpkRguFlowCntrlInfo ARGS((
971 RguFlowCntrlInd *param, 
972 Buffer           *mBuf
973 ));
974 /** @brief Status Indication from MAC to RLC  
975  * as a response to the staRsp primitive from RLC.
976  * Informs RLC of the totalBufferSize and Timing Info 
977  * for the transmission on dedicated channels. */
978 EXTERN S16 unpackSchedRep ARGS((
979    RlcMacSchedRep       func,
980    Pst*                 pst,
981    Buffer               *mBuf
982 ));
983 EXTERN S16 cmPkRguPduInfo ARGS((
984    RguPduInfo           *param,
985    Buffer               *mBuf
986 ));
987 EXTERN S16 cmUnpkRguPduInfo ARGS((
988    RguPduInfo           *param,
989    Buffer               *mBuf
990 ));
991 EXTERN S16 cmPkRguDBoReport ARGS((
992    RguDBoReport         *param,
993    Buffer               *mBuf
994 ));
995 EXTERN S16 cmUnpkRguDBoReport ARGS((
996    RguDBoReport         *param,
997    Buffer               *mBuf
998 ));
999
1000 EXTERN S16 cmPkRguCDatReqInfo ARGS((
1001    RguCDatReqInfo       *param,
1002    Buffer               *mBuf
1003 ));
1004 EXTERN S16 cmUnpkRguCDatReqInfo ARGS((
1005    RguCDatReqInfo       *param,
1006    Buffer               *mBuf
1007 ));
1008 EXTERN S16 cmPkRguLchDatReq ARGS((
1009    RguLchDatReq         *param,
1010    Buffer               *mBuf
1011 ));
1012 EXTERN S16 cmUnpkRguLchDatReq ARGS((
1013    RguLchDatReq         *param,
1014    Buffer               *mBuf
1015 ));
1016 EXTERN S16 cmPkRguDatReqTb ARGS((
1017    RguDatReqTb          *param,
1018    Buffer               *mBuf
1019 ));
1020 EXTERN S16 cmPkRguStaIndTb ARGS((
1021    RguStaIndTb          *param,
1022    Buffer               *mBuf
1023 ));
1024 EXTERN S16 cmUnpkRguStaIndTb ARGS((
1025    RguStaIndTb          *param,
1026    Buffer               *mBuf
1027 ));
1028 /* rgu_x_001.main_3 - ADD - L2M Support */
1029 #ifdef LTE_L2_MEAS
1030 EXTERN S16 cmPkRguDDatReqInfo ARGS((
1031    Pst                  *pst,
1032    RguDDatReqInfo       *param,
1033    Buffer               *mBuf
1034 ));
1035 EXTERN S16 cmUnpkRguDDatReqInfo ARGS((
1036    Pst                  *pst,
1037    RguDDatReqInfo       *param,
1038    Buffer               *mBuf
1039 ));
1040 EXTERN S16 cmUnpkRguDatReqTb ARGS((
1041    Pst                  *pst,
1042    RguDatReqTb          *param,
1043    Buffer               *mBuf
1044 ));
1045 #else
1046 EXTERN S16 cmPkRguDDatReqInfo ARGS((
1047    RguDDatReqInfo       *param,
1048    Buffer               *mBuf
1049 ));
1050 EXTERN S16 cmUnpkRguDDatReqInfo ARGS((
1051    RguDDatReqInfo       *param,
1052    Buffer               *mBuf
1053 ));
1054 EXTERN S16 cmUnpkRguDatReqTb ARGS((
1055    RguDatReqTb          *param,
1056    Buffer               *mBuf
1057 ));
1058 #endif
1059 EXTERN S16 cmPkRguCDatIndInfo ARGS((
1060    RguCDatIndInfo       *param,
1061    Buffer               *mBuf
1062 ));
1063 EXTERN S16 cmUnpkRguCDatIndInfo ARGS((
1064    RguCDatIndInfo       *param,
1065    Buffer               *mBuf
1066 ));
1067 EXTERN S16 cmPkRguLchDatInd ARGS((
1068    RguLchDatInd         *param,
1069    Buffer               *mBuf
1070 ));
1071 EXTERN S16 cmUnpkRguLchDatInd ARGS((
1072    RguLchDatInd         *param,
1073    Buffer               *mBuf
1074 ));
1075 EXTERN S16 packRlcMacDataInfo ARGS((
1076    RlcMacData         *param,
1077    Buffer               *mBuf
1078 ));
1079 EXTERN S16 unpackRlcMacDataInfo ARGS((
1080    RlcMacData       *param,
1081    Buffer               *mBuf
1082 ));
1083
1084 EXTERN S16 cmPkRguCStaRspInfo ARGS((
1085    RguCStaRspInfo       *param,
1086    Buffer               *mBuf
1087 ));
1088 EXTERN S16 cmUnpkRguCStaRspInfo ARGS((
1089    RguCStaRspInfo       *param,
1090    Buffer               *mBuf
1091 ));
1092 EXTERN S16 packBOStatusInfo ARGS((
1093    RlcMacBOStatus       *param,
1094    Buffer               *mBuf
1095 ));
1096 EXTERN S16 unpackBOStatusInfo ARGS((
1097    RlcMacBOStatus       *param,
1098    Buffer               *mBuf
1099 ));
1100 EXTERN S16 cmPkRguCStaIndInfo ARGS((
1101    RguCStaIndInfo       *param,
1102    Buffer               *mBuf
1103 ));
1104 EXTERN S16 cmUnpkRguCStaIndInfo ARGS((
1105    RguCStaIndInfo       *param,
1106    Buffer               *mBuf
1107 ));
1108 EXTERN S16 cmPkRguLchStaInd ARGS((
1109    RguLchStaInd         *param,
1110    Buffer               *mBuf
1111 ));
1112 EXTERN S16 cmUnpkRguLchStaInd ARGS((
1113    RguLchStaInd         *param,
1114    Buffer               *mBuf
1115 ));
1116 EXTERN S16 packSchedRepInfo ARGS((
1117    RlcMacSchedRepInfo   *param,
1118    Buffer               *mBuf
1119 ));
1120 EXTERN S16 unpackSchedRepInfo ARGS((
1121    RlcMacSchedRepInfo   *param,
1122    Buffer               *mBuf
1123 ));
1124   
1125 /*rgu_x_001.main_3 - ADD - L2M  & R9 Support */
1126 #ifdef LTE_L2_MEAS
1127 /** @brief Request from MAC to RLC for forwarding HARQ Status */
1128
1129 EXTERN S16 cmPkRguHqStaInd ARGS((
1130    Pst*                 pst,
1131    SpId                 spId,
1132    RguHarqStatusInd     *harqStatusInd));
1133
1134 /** @brief Request from MAC to RLC forwarding HARQ status  */
1135 EXTERN S16 cmUnpkRguHqStaInd ARGS((
1136    RguHqStaInd          func,
1137    Pst*                 pst,
1138    Buffer               *mBuf
1139 ));
1140
1141 /** @brief Primitive invoked from RLC to MAC to 
1142  *  * inform the On/Off Status of LC Id*/
1143 EXTERN S16 cmPkRguL2MUlThrpMeasReq ARGS((
1144    Pst*                 pst,
1145    SpId                 spId,
1146    RguL2MUlThrpMeasReqInfo*    measReq
1147 ));
1148
1149 /** @brief Primitive invoked from RLC to MAC to 
1150  *  * inform the On/Off Status of LC Id*/
1151 EXTERN S16 cmUnpkRguL2MUlThrpMeasReq ARGS((
1152    RguL2MUlThrpMeasReq  func,
1153    Pst*                 pst,
1154    Buffer               *mBuf
1155 ));
1156
1157 EXTERN S16 cmPkRguL2MUlThrpMeasReqInfo ARGS((
1158    RguL2MUlThrpMeasReqInfo *param,
1159    Buffer               *mBuf
1160 ));
1161
1162 EXTERN S16 cmUnpkRguL2MUlThrpMeasReqInfo ARGS((
1163    RguL2MUlThrpMeasReqInfo       *param,
1164    Buffer               *mBuf
1165 ));
1166
1167 #endif /* LTE_L2_MEAS */
1168 EXTERN S16 cmUnpkRguFlowCntrlInd ARGS((
1169    RguFlowCntrlIndInfo  func,
1170    Pst                  *pst,
1171    Buffer               *mBuf
1172  ));
1173
1174 EXTERN S16 cmPkRguFlowCntrlInd ARGS((
1175    Pst* pst,
1176    SuId suId,
1177    RguFlowCntrlInd  *flowCntrlInd
1178  ));
1179 #endif
1180
1181 #ifdef __cplusplus
1182 }
1183 #endif
1184 #endif /* __RGUX__ */
1185
1186 /********************************************************************30**
1187
1188          End of file
1189 **********************************************************************/