bdd6f9883567605d605e090f5da768fc971c01d0
[o-du/l2.git] / src / cm / lrg.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  
21     Name:   LTE MAC layer
22  
23     Type:   C include file
24  
25     Desc:   Defines required by LTE MAC
26  
27     File:   lrg.x
28  
29 **********************************************************************/
30 /**
31   @file lrg.x
32   @brief Structure declarations and definitions for LRG interface.
33   */
34 #ifndef __LRGX__
35 #define __LRGX__
36
37
38 /* ccpu00121930 : ADD: c++ support*/
39 #ifdef __cplusplus
40 extern "C" {
41 #endif /* __cplusplus */
42
43 /** 
44  * @brief
45    This structure holds configuration parameters for MAC General Configuration. */
46 typedef struct rgGenCfg
47 {
48    Pst      lmPst;      /*!< Layer manager post structure */
49    MemoryId mem;        /*!< Region and pool ID */
50    uint8_t       tmrRes;     /*!< Timer resolution for Low SAP Bind Timer */
51    uint8_t       numRguSaps; /*!< Number of RGU SAP's */
52    uint8_t       startCellId;              /*!< Start cell id value */
53 #ifdef LTE_ADV
54    Bool     forceCntrlSrbBoOnPCel;   /*!< value 1 means scheduler will schedule
55                                           RLC control BO and SRBs only on PCEll
56                                           else it will schedule on both PCell
57                                           and SCell */
58    Bool     isSCellActDeactAlgoEnable; /*!< TRUE will enable activation/deactivation algo at Schd */
59 #endif
60 }RgGenCfg;
61
62 /** 
63  * @brief
64    This structure holds configuration parameters for MAC Upper SAP Configuration. */
65 typedef struct rgUpSapCfg
66 {
67    Selector selector;   /*!< Selector */
68    MemoryId mem;        /*!< Region and pool ID */
69    Priority prior;      /*!< Priority */
70    ProcId   procId;     /*!< Processor ID */
71    Ent      ent;        /*!< Entity ID */
72    Inst     inst;       /*!< Instance ID */
73    Route    route;      /*!< Route */
74    SpId     spId;       /*!< Service provider ID */
75    SuId     suId;       /*!< Service user ID */
76 }RgUpSapCfg;
77
78 /** 
79  * @brief
80    This structure holds configuration parameters for MAC Lower SAP Configuration. */
81 typedef struct rgLowSapCfg
82 {
83    Selector selector;   /*!< Selector */
84    MemoryId mem;        /*!< Region and pool ID */
85    Priority prior;      /*!< Priority */
86    ProcId   procId;     /*!< Processor ID */
87    Ent      ent;        /*!< Entity ID */
88    Inst     inst;       /*!< Instance ID */
89    Route    route;      /*!< Route */
90    SpId     spId;       /*!< Service provider ID */
91    SuId     suId;       /*!< Service user ID */
92    TmrCfg   bndTmr;     /*!< Bind Timer Value */
93 }RgLowSapCfg;
94
95 #ifdef MAC_SCH_STATS
96 /* Data structures */
97 typedef struct rgAckNack
98 {
99    uint8_t           mcs;
100    uint16_t          numOfNacks;
101    uint16_t          numOfAcks;
102 } RgAckNack;
103
104 typedef struct rgSchNackAckStats
105 {
106    RgAckNack dlCqiStat[15];   /*!< DL Stats */
107    RgAckNack ulCqiStat[15];   /*!< UL stats */
108 } RgSchNackAckStats;
109
110 typedef struct rgSchHqNumRetx
111 {
112    uint8_t           mcs;
113    uint16_t          numOfHQ_1;
114    uint16_t          numOfHQ_2;
115    uint16_t          numOfHQ_3;
116    uint16_t          numOfHQ_4;
117    uint32_t          totalTx;
118 } RgSchHqNumRetx;
119
120 typedef struct rgSchHqRetxStats
121 {
122    RgSchHqNumRetx    dlCqiStat[15];   /*!< DL Stats */
123    RgSchHqNumRetx    ulCqiStat[15];   /*!< UL stats */
124 } RgSchHqRetxStats;
125
126 RgSchNackAckStats hqFailStats;
127 RgSchHqRetxStats  hqRetxStats;
128 #endif /* MAC_SCH_STATS */
129
130 /** 
131  * @brief
132    This structure holds General statistical information of MAC. */
133 typedef struct rgGenSts
134 {
135    uint32_t numHarqFail;      /*!< Number of HARQ failures */
136    uint32_t numUeCfg;         /*!< Number of UEs configured */
137    uint16_t numCellCfg;       /*!< Number of Cells configured */
138 #ifdef MAC_SCH_STATS
139    RgSchNackAckStats nackAckStats;
140    RgSchHqRetxStats  hqRetxStats;
141 #endif /* MAC_SCH_STATS */
142 }RgGenSts;
143
144 /** 
145  * @brief
146    This structure holds statistical information of a SAP in MAC. */
147 typedef struct rgSapSts
148 {
149    uint32_t numPduRcvd;       /*!< Number of PDUs received. At TFU, PDU refers to TB,
150                               and at RGU it is SDU. */
151    uint32_t numPduTxmit;      /*!< Number of PDUs transmitted. This field is 
152                               applicable to TFU. */
153    uint32_t numPduDrop;       /*!< Number of PDUs dropped. At TFU, PDU refers to TB,
154                               and at RGU it is SDU. */
155 }RgSapSts;
156
157 typedef struct rgSchInstCfg
158 {
159    uint8_t          instId;    /*!< Sheduler instance ID */
160    RgGenCfg    genCfg;    /*!< General Configuration for the scheduler instance */
161    uint8_t          numSaps;   /*!< Number of RGR and TFU SAPs must be same */
162    RgUpSapCfg  rgrSap[LRG_MAX_SAPS_PER_INST];  /*!< RGR interface SAPS */
163    RgUpSapCfg  rgmSap[LRG_MAX_SAPS_PER_INST];  /*!< RGR interface SAPS */
164    RgLowSapCfg tfuSap[LRG_MAX_SAPS_PER_INST];  /*!< TFU interface SAPS */
165 } RgSchInstCfg;
166
167 /** 
168  * @brief
169    This structure holds configuration parameters for MAC. */
170 typedef struct rgCfg
171 {
172    union
173    {
174       RgGenCfg    genCfg;  /*!< General Configuration */
175       /* SAPs for the MAC layer */
176       RgUpSapCfg  rguSap;  /*!< RGU interface SAP */
177       RgUpSapCfg  crgSap;  /*!< CRG interface SAP */
178       RgLowSapCfg tfuSap;  /*!< TFU interface SAP */
179       RgSchInstCfg schInstCfg;/*!< General Configuration for scheduler instances */
180    }s;
181 }RgCfg;
182
183 /** 
184  * @brief
185    This structure holds a SAP's status information. */
186 typedef struct rgSapSta
187 {
188    uint8_t sapState;         /*!< SAP state */
189 }RgSapSta;
190
191 /** 
192  * @brief
193    This structure holds MAC's statistical information. */
194 typedef struct rgSts
195 {
196    DateTime dt;          /*!< Date and Time. */
197    uint8_t       sapInst;     /*!< SAP instance. */
198    Action   action;      /*!< Action on Trafffic load related statistic values.
199                               ARST: To reset the statistic values. */
200    union
201    {
202       RgGenSts genSts;   /*!< General statistics. */
203       RgSapSts rguSts;   /*!< RGU SAP statistics. */
204       RgSapSts crgSts;   /*!< CRG SAP statistics. */
205       RgSapSts rgrSts;   /*!< RGR SAP statistics. */
206       RgSapSts tfuSts;   /*!< TFU SAP statistics. */
207    }s;
208 }RgSts;
209
210 /** 
211  * @brief
212    This structure holds MAC's solicited status information. */
213 typedef struct rgSsta
214 {
215    DateTime dt;             /*!< Date and time */
216    uint8_t       sapInst;        /*!< SAP instance */
217    union
218    {
219       SystemId sysId;       /*!< System information */
220       RgSapSta rguSapSta;   /*!< RGU SAP state */
221       RgSapSta crgSapSta;   /*!< CRG SAP state */
222       RgSapSta rgrSapSta;   /*!< RGR SAP state */
223       RgSapSta rgmSapSta;   /*!< RGM SAP state */
224       RgSapSta tfuSapSta;   /*!< TFU SAP state */
225    }s;
226 }RgSsta;
227
228 /** 
229  * @brief
230    Alarm diagnostics structure. */
231 typedef struct rgUstaDgn
232 {
233    uint8_t          type;         /*!< Diagnostics Type */
234    union
235    {
236    /*lrg_x_001.main_3 - Changed for documentation*/
237       MemoryId mem;          /*!< Memory pool and region <BR> 
238                              LRG_USTA_DGNVAL_MEM Dynamic memory allocation failure. <BR> 
239                              LRG_USTS_DGNVAL_HARQ Harq Process is busy.
240                               */
241    }u;
242 } RgUstaDgn;
243
244 /** 
245  * @brief
246    This structure holds MAC's Unsolicited Status information. */
247 typedef struct rgUsta
248 {
249    CmAlarm   cmAlarm;      /*!< Alarms */
250    RgUstaDgn dgn;          /*!< Alarm diagnostics */
251 }RgUsta;
252
253 /** 
254  * @brief
255    This structure holds MAC's Trace Indication information. */
256 typedef struct rgTrc
257 {
258    DateTime dt;          /*!< Date and time */
259    /*lrg_x_001.main_3 - changed for documentation*/
260    uint8_t       evnt;        /*!< Event <BR> 
261                            EVTRGUDATREQ Trace for Dedicated channel Data Request. <BR> 
262                            EVTRGUCDATREQ Trace for common channel data request.<BR> 
263                           */
264 }RgTrc;
265
266 /** 
267  * @brief
268    This structure holds MAC's Debug Control information. */
269 typedef struct rgDbgCntrl
270 {
271    uint32_t dbgMask;          /*!< iThe Layer Manager electively enables or disables various levels of Debug printing <BR>
272                           Following are the values: <BR> 
273                           DBGMASK_PRM Enable/Disable function parameter debug prints <BR>
274                           DBGMASK_ERR Enable/Disable error prints <BR>
275                           DBGMASK_INFO Enable/Disable informational prints.
276                           */
277 }RgDbgCntrl;
278
279 /** 
280  * @brief
281    This structure holds MAC's SAP Control information. */
282 typedef struct rgSapCntrl
283 {
284    SuId suId;            /*!< Service user ID */
285    SpId spId;            /*!< Service provider ID */
286 }RgSapCntrl;
287
288 #ifdef PHY_ERROR_LOGING
289 typedef struct rgSchUlAllocCntrl
290 {
291    uint8_t  mcs;
292    uint16_t numOfRb;
293    uint16_t rbStart;
294    Bool testStart;
295    Bool enaLog;
296    uint16_t  logTime;
297 }RgSchUlAllocCntrl; 
298 #endif
299
300 /** 
301  * @brief
302    This structure holds MAC's Control information. */
303 typedef struct rgCntrl
304 {
305    DateTime      dt;          /*!< Date and Time */
306    uint8_t            action;      /*!< Action */
307    uint8_t            subAction;   /*!< Sub-action */
308    uint8_t            instId;      /*!< Scheduler instance ID */
309    union
310    {
311       RgDbgCntrl rgDbgCntrl;  /*!< Debug Control */
312       /*lrg_x_001.main_3 - Changed for documentation.*/
313       S16        trcLen;      /*!< Trace Length <BR> 
314                                i)LRG_FULL_TRACE Give full message <BR> 
315                                ii)LRG_NO_TRACE Disable Trace<BR>
316                                iii)Or any valid S16 value in case where only the specified number
317                                of bytes, as indicated by trcLen, are to be sent.*/
318       RgSapCntrl rgSapCntrl;  /*!< SAP Control */
319       uint32_t        logMask;     /*!<  Logging control Mask */
320 #ifdef PHY_ERROR_LOGING
321       RgSchUlAllocCntrl rgSchUlAllocCntrl; /* For setting MCS,Number of RB and RB start */
322 #endif
323    }s;
324 }RgCntrl; 
325
326 /** 
327  * @brief
328    This structure holds MAC's Configuration and Control Management Information. */
329 typedef struct rgMngmt
330 {
331    Header     hdr;       /*!< Header */
332    CmStatus   cfm;       /*!< Confirmation */
333    union
334    {
335       RgCfg   cfg;       /*!< Configuration */
336       RgSts   sts;       /*!< Statistics */
337       RgSsta  ssta;      /*!< Solicited Status */
338       RgUsta  usta;      /*!< Unsolicited Status */
339       RgTrc   trc;       /*!< Trace */
340       RgCntrl cntrl;     /*!< Control */
341    }t;
342 }RgMngmt;
343
344 /* lrg_x_001.main_3 - ADD - Data structures for LTE_L2_MEAS */
345 #ifdef LTE_L2_MEAS
346 /**
347  *  @brief
348    To measure Average Number of PRB's used per QCI for a time period
349    timePrd
350 */
351 typedef struct lrgAvgPrbQCI   
352 {
353    uint8_t        numQci;                 /*!< Numner of QCI's in requests */
354    uint8_t        qci[LRG_MAX_QCI_PER_REQ];  /*!< QCI for which PRB has to be measured */
355 } LrgAvgPrbQCI;
356
357 /**
358  *  @brief
359    To measure number of Active UE's per QCI for the given time period
360    timePrd 
361 **/
362 typedef struct lrgNmbActvUeQCI
363 {
364    uint8_t       sampPrd;                   /*!< sampling prd for which active UE's measured
365                                           Where sampling period is in milli seconds
366                                           value can be at most 100ms */
367    uint8_t        numQci;                   /*!< Numner of QCI's in requests */
368    uint8_t        qci[LRG_MAX_QCI_PER_REQ]; /*!< QCI for which UE has to be considered */
369 } LrgNmbActvUeQCI;
370
371 /**
372  * * @brief 
373      This structure will be used by Layer Manager to L2 Measurement Request
374      Information 
375 **/
376 typedef struct lrgSchMeasReqInfo
377 {
378    Header           hdr;             /*!< Header */
379    uint16_t              measType;        /*!< For type of measurement Following are the */
380                                      /*!< allowed values */
381                                      /*!< LRG_L2MEAS_AVG_PRB_DL , LRG_L2MEAS_AVG_PRB_UL*/
382                                      /*!< LRG_L2MEAS_AVG_PRB_PER_QCI_DL  */
383                                      /*!< LRG_L2MEAS_AVG_PRB_PER_QCI_UL */
384                                      /*!< LRG_L2MEAS_RA_PREAMBLE  */
385                                      /*!< LRG_L2MEAS_NMB_ACTV_UE_PER_QCI_UL */
386                                      /*!< LRG_L2MEAS_NMB_ACTV_UE_PER_QCI_DL */
387                                      /*!< LRG_L2MEAS_TB_TRANS_DL_COUNT */
388                                      /*!< LRG_L2MEAS_TB_TRANS_DL_FAULTY_COUNT */
389                                      /*!< LRG_L2MEAS_TB_TRANS_UL_COUNT */
390                                      /*!< LRG_L2MEAS_TB_TRANS_UL_FAULTY_COUNT */
391    uint32_t              timePrd;         /*!< Time period UNITS and value will differ depending
392                                        on the action. Might be milli seconds/seconds. */
393    CmLteCellId      cellId;          /*!< CELL Id for which measurement is Done */
394    LrgAvgPrbQCI     avgPrbQciUl;     /*!< Average PRB usage per QCI in UL */
395    LrgAvgPrbQCI     avgPrbQciDl;     /*!< Average PRB usage per QCI in DL */
396    LrgNmbActvUeQCI  nmbActvUeQciUl;  /*!< Number of active UE's per QCI in UL */
397    LrgNmbActvUeQCI  nmbActvUeQciDl;  /*!< Number of active UE's per QCI in DL */
398 } LrgSchMeasReqInfo;
399
400 typedef struct lrgSchMeasSndReqInfo
401 {
402    Header           hdr;             /*!< Header */
403    uint16_t              measType;        /*!< For type of measurement Following are the */
404                                      /*!< allowed values */
405                                      /*!< LRG_L2MEAS_AVG_PRB_DL , LRG_L2MEAS_AVG_PRB_UL*/
406                                      /*!< LRG_L2MEAS_AVG_PRB_PER_QCI_DL  */
407                                      /*!< LRG_L2MEAS_AVG_PRB_PER_QCI_UL */
408                                      /*!< LRG_L2MEAS_RA_PREAMBLE  */
409                                      /*!< LRG_L2MEAS_NMB_ACTV_UE_PER_QCI_UL */
410                                      /*!< LRG_L2MEAS_NMB_ACTV_UE_PER_QCI_DL */
411    uint32_t              timePrd;         /*!< Time period UNITS and value will differ depending
412                                        on the action. Might be milli seconds/seconds. */
413    CmLteCellId      cellId;          /*!< CELL Id for which measurement is Done */
414  //  LrgAvgPrbQCI     avgPrbQciUl;     /*!< Average PRB usage per QCI in UL */
415  //  LrgAvgPrbQCI     avgPrbQciDl;     /*!< Average PRB usage per QCI in DL */
416  //  LrgNmbActvUeQCI  nmbActvUeQciUl;  /*!< Number of active UE's per QCI in UL */
417  //  LrgNmbActvUeQCI  nmbActvUeQciDl;  /*!< Number of active UE's per QCI in DL */
418 } LrgSchMeasSndReqInfo;
419
420 typedef struct lrgSchMeasStopReqInfo
421 {
422    Header           hdr;             /*!< Header */
423    uint16_t              measType;        /*!< For type of measurement Following are the */
424                                      /*!< allowed values */
425                                      /*!< LRG_L2MEAS_AVG_PRB_DL , LRG_L2MEAS_AVG_PRB_UL*/
426                                      /*!< LRG_L2MEAS_AVG_PRB_PER_QCI_DL  */
427                                      /*!< LRG_L2MEAS_AVG_PRB_PER_QCI_UL */
428                                      /*!< LRG_L2MEAS_RA_PREAMBLE  */
429                                      /*!< LRG_L2MEAS_NMB_ACTV_UE_PER_QCI_UL */
430                                      /*!< LRG_L2MEAS_NMB_ACTV_UE_PER_QCI_DL */
431  /*  uint16_t              timePrd;  */       /*!< Time period UNITS and value will differ depending
432                                        on the action. Might be milli seconds/seconds. */
433    CmLteCellId      cellId;          /*!< CELL Id for which measurement is Done */
434  /*  LrgAvgPrbQCI     avgPrbQciUl; */     /*!< Average PRB usage per QCI in UL */
435  //  LrgAvgPrbQCI     avgPrbQciDl;     /*!< Average PRB usage per QCI in DL */
436  //  LrgNmbActvUeQCI  nmbActvUeQciUl;  /*!< Number of active UE's per QCI in UL */
437  //   LrgNmbActvUeQCI  nmbActvUeQciDl;  /*!< Number of active UE's per QCI in DL */
438 } LrgSchMeasStopReqInfo;
439
440 /**
441  *@brief
442  Structure to hold Received Random Access Preambles.
443 **/
444 typedef struct lrgRaPreambles
445 {
446    uint16_t    dedPreambles;        /*!< Dedicated RA Preamble received */
447    uint16_t    randSelPreLowRange;  /*!< Randomly selected preambles in low range */
448    uint16_t    randSelPreHighRange; /*!< Randomly selected preambles in high range */
449 } LrgRaPreamblesCfm;
450
451 /**
452  * @brief
453  * Staructure to send Avg PRB for a given Time Period 
454  * */
455 typedef struct lrgAvgPrbcfm
456 {
457    uint8_t    prbPerc;      /*!< PRB usage in percentage for UL */
458 } LrgAvgPrbCfm;
459
460 /*LRG : Review Tag*/
461 typedef struct prbPercQci
462 {
463         uint8_t qciValue;
464         uint8_t prbPercQci;
465 }PrbPercQci;
466
467 typedef struct numActvUeQci
468 {
469         uint8_t qciValue;
470         uint8_t numActvUeQci;
471 }NumActvUeQci;
472 /*LRG : Review Tag*/
473 /**
474  * @brief
475  * Structure to send Avg PRB for a given period per QCI
476  * */
477 typedef struct lrgAvgPrbQCICfm
478 {
479    uint8_t    numQci;                             /*!< number of QCI */
480 /*LRG : Review Tag*/
481    PrbPercQci    prbPercQci[LRG_MAX_QCI_PER_REQ];    /*!< PRB usage in percentage per QCI for UL/DL */
482 /*LRG : Review Tag*/
483 } LrgAvgPrbQCICfm;
484
485 /**
486  *@brief
487  Structure to send number of Active UE's per QCI
488  */
489 typedef struct lrgNumActvUeQCICfm
490 {
491    uint8_t     numQci;                            /*!< Numner of QCI's in requests */
492 /*LRG : Review Tag*/
493    NumActvUeQci     numActvUeQci[LRG_MAX_QCI_PER_REQ]; /*!< Number of Active UE's in UL/DL per QCI */
494 /*LRG : Review Tag*/
495 } LrgNumActvUeQCICfm;
496 /**
497   @brief
498   Structure to send L2 Measurement confirm 
499 **/
500 typedef struct lrgSchMeasCfmInfo
501 {
502    Header             hdr;               /*!< Header information */
503    uint16_t                measType;          /*!< Type of measurement */
504    CmStatus           cfm;               /*!< Confirmation possible Values when measType
505                                               is invalid status -> NOK and reason -> INVALID
506                                                 */
507    CmLteCellId        cellId;             /*!< Cell for which measurement is done */
508    LrgAvgPrbCfm       avgPrbUl;           /*!< PRB usage in percentage per QCI for UL */
509    LrgAvgPrbCfm       avgPrbDl;           /*!< PRB usage in percentage per QCI for DL */
510    LrgAvgPrbQCICfm    avgPrbQciUlCfm;     /*!< PRB usage in percentage per QCI for UL */
511    LrgAvgPrbQCICfm    avgPrbQciDlCfm;     /*!< PRB usage in percentage per QCI for DL */
512    LrgRaPreamblesCfm  raPrmbsCfm;         /*!< Different received RA preambles */
513    LrgNumActvUeQCICfm numUeQciUlCfm;      /*!< Number of Active UE's in UL per QCI */
514    LrgNumActvUeQCICfm numUeQciDlCfm;      /*!< Number of Active UE's in DL per QCI */
515    uint32_t                tbTransDlTotalCnt;  /*!< Count of DL TB transmitteed */
516    uint32_t                tbTransDlFaulty;    /*!< Count of DL TB for wich NACK not recieved from UE */ 
517    uint32_t                tbTransUlTotalCnt;  /*!< Count of UL TB received successfully */ 
518    uint32_t                tbTransUlFaulty;    /*!< Count of UL TB not recieved successfully */ 
519 } LrgSchMeasCfmInfo;
520
521 #endif /* LTE_L2_MEAS */
522
523 /* 
524    Function Prototype Typedefs 
525 . */
526 typedef S16 (*LrgCfgReq)     ARGS((
527         Pst        *pst,               /* Post Structure */
528         RgMngmt    *cfg                /* Management Structure */
529      ));
530
531 typedef uint8_t (*LrgSchCfgReq)     ARGS((
532         Pst        *pst,               /* Post Structure */
533         RgMngmt    *cfg                /* Management Structure */
534      ));
535
536 typedef uint8_t (*LrgCfgCfm)     ARGS((
537         Pst        *pst,               /* Post Structure */
538         RgMngmt    *cfg                /* Management Structure */
539      ));
540
541 typedef uint8_t (*LrgSchCfgCfm)     ARGS((
542         Pst        *pst,               /* Post Structure */
543         RgMngmt    *cfg                /* Management Structure */
544      ));
545
546 typedef S16 (*LrgCntrlReq)   ARGS((
547         Pst        *pst,               /* Post Structure */
548         RgMngmt    *cntrl              /* Management Structure */
549      ));
550
551 typedef S16 (*LrgSchCntrlReq)   ARGS((
552         Pst        *pst,               /* Post Structure */
553         RgMngmt    *cntrl              /* Management Structure */
554      ));
555
556 typedef S16 (*LrgCntrlCfm)   ARGS((
557         Pst        *pst,               /* Post Structure */
558         RgMngmt    *cntrl              /* Management Structure */
559      ));
560
561 typedef S16 (*LrgSchCntrlCfm)   ARGS((
562         Pst        *pst,               /* Post Structure */
563         RgMngmt    *cntrl              /* Management Structure */
564      ));
565
566 /* lrg_x_001.main_3 - ADD - Data structures for LTE_L2_MEAS */
567 #ifdef LTE_L2_MEAS
568 typedef S16 (*LrgSchL2MeasReq)   ARGS((
569         Pst        *pst,               /* Post Structure */
570         LrgSchMeasReqInfo *meas       /* L2 Measurement structure */
571      ));
572 typedef S16 (*LrgSchL2MeasStopReq)   ARGS((
573         Pst        *pst,               /* Post Structure */
574         LrgSchMeasStopReqInfo *meas       /* L2 Measurement structure */
575      ));
576 typedef S16 (*LrgSchL2MeasSendReq)   ARGS((
577         Pst        *pst,               /* Post Structure */
578         LrgSchMeasSndReqInfo *meas       /* L2 Measurement structure */
579      ));
580 #endif
581 typedef S16 (*LrgStaReq)     ARGS((
582         Pst        *pst,               /* Post Structure */
583         RgMngmt    *sta                /* Management Structure */
584      ));
585
586 typedef S16 (*LrgStaCfm)     ARGS((
587         Pst        *pst,               /* Post Structure */
588         RgMngmt    *sta                /* Management Structure */
589      ));
590
591 typedef S16 (*LrgStaInd)     ARGS((
592         Pst        *pst,               /* Post Structure */
593         RgMngmt    *sta                /* Management Structure */
594      ));
595
596 typedef S16 (*LrgSchStaInd)     ARGS((
597         Pst        *pst,               /* Post Structure */
598         RgMngmt    *sta                /* Management Structure */
599      ));
600
601 typedef S16 (*LrgStsReq)     ARGS((
602         Pst        *pst,               /* Post Structure */
603         RgMngmt    *sts                /* Management Structure */
604      ));
605
606 typedef S16 (*LrgStsCfm)     ARGS((
607         Pst        *pst,               /* Post Structure */
608         RgMngmt    *sts                /* Management Structure */
609      ));
610
611 typedef S16 (*LrgTrcInd)     ARGS((
612         Pst        *pst,               /* Post Structure */
613         RgMngmt    *trc,               /* Management Structure */
614         Buffer     *mBuf               /* Message Buffer */
615      ));
616
617 /* lrg_x_001.main_3 - ADD - Data structures for LTE_L2_MEAS */
618 #ifdef LTE_L2_MEAS
619 typedef S16 (*LrgSchL2MeasCfm)     ARGS((
620         Pst            *pst,              /* Post Structure */
621         LrgSchMeasCfmInfo  *schL2MeasCfm     /* Measurement Info */
622      ));
623 typedef S16 (*LrgSchL2MeasStopCfm)     ARGS((
624         Pst            *pst,              /* Post Structure */
625         LrgSchMeasCfmInfo  *schL2MeasCfm     /* Measurement Info */
626      ));
627 #endif /* LTE_L2_MEAS */
628 /* 
629    Function Prototypes.
630  */
631 #ifdef RG
632 /* lrg_x_001.main_3 - ADD -  Added the comments for the following function */
633  /** @brief This primitive is sent from Layer manager to MAC. It carries
634   * configuration information towards MAC.
635   * @details This primitive can be used by layer manager to configure the
636   * following entities at MAC.
637   * -# General configuration
638   * -# RGU SAP i.e. SAP towards RLC
639   * -# CRG SAP i.e. SAP towards RRC
640   * -# TFU SAP i.e. SAP towards Physical layer
641   * 
642   * @param pst pointer to Pst
643   * @param cfg pointer to RgMngmt
644   * @return ROK/RFAILED
645   */
646 S16 RgMiLrgCfgReq ARGS((Pst *pst, RgMngmt *cfg));
647
648  /** @brief This primitive carries the Configuration Request
649   * for Scheduler sent from the DU APP to MAC.
650   * @details This primitive is used by MAC to sned the configuration
651   * to scheduler
652   * @param pst Pointer to the post structure.
653   * @param cfm pointer to RgMngmt 
654   * @return ROK/RFAILED
655   */
656 uint8_t MacSchGenCfgReq ARGS((Pst *pst, RgMngmt *cfg));
657
658  /** @brief This primitive carries the Confirmation for a Configuration Request
659   * sent from the layer manager to MAC.
660   * @details This primitive is used by MAC to inform Layer manager about the
661   * status of a Configuration Request.
662   * @param pst Pointer to the post structure.
663   * @param cfm pointer to RgMngmt 
664   * @return ROK/RFAILED
665   */
666 S16 RgMiLrgCfgCfm ARGS((Pst *pst, RgMngmt *cfm));
667
668  /** @brief This primitive is sent from Layer manager to Scheduler. It carries
669   * configuration information towards MAC.
670   * @details This primitive can be used by layer manager to configure the
671   * following entities at Scheduler.
672   * -# General configuration
673   * -# RGR SAP i.e. SAP towards RRM
674   * -# TFU SAP i.e. SAP towards Physical layer
675   * 
676   * @param pst pointer to Pst
677   * @param cfg pointer to RgMngmt
678   * @return ROK/RFAILED
679   */
680 uint8_t  SchProcGenCfgReq ARGS((Pst *pst, RgMngmt *cfg));
681
682  /** @brief This primitive carries the Confirmation for a Configuration Request
683   * sent from the layer manager to Scheduler.
684   * @details This primitive is used by Scheduler to inform Layer manager about the
685   * status of a Configuration Request.
686   * @param pst Pointer to the post structure.
687   * @param cfm pointer to RgMngmt 
688   * @return ROK/RFAILED
689   */
690 S16 RgMiLrgSchCfgCfm ARGS((Pst *pst, RgMngmt *cfm));
691
692  /** @brief This primitive carries the Request for statistics from MAC layer
693   * sent from the layer manager.
694   * @details This primitive is used by layer manager to request for statistics
695   * on the following
696   * -# General statistics
697   * -# RGU SAP statistics
698   * -# CRG SAP statistics
699   * -# TFU SAP statistics
700   * @param pst Pointer to the post structure.
701   * @param sts pointer to RgMngmt 
702   * @return ROK/RFAILED
703   */
704 S16 RgMiLrgStsReq ARGS((Pst *pst, RgMngmt *sts));
705
706  /** @brief This primitive carries the Statistics for a Statistics Request
707   * sent from the layer manager to MAC.
708   * @details This primitive is used by MAC to inform Layer manager about the
709   * Statistics requested earlier.
710   * @param pst Pointer to the post structure.
711   * @param cfm pointer to RgMngmt 
712   * @return ROK/RFAILED
713   */
714 S16 RgMiLrgStsCfm ARGS((Pst *pst, RgMngmt *cfm));
715
716  /** @brief This primitive carries the Status request 
717   * sent from the layer manager to MAC.
718   * @details This primitive is used by the layer manager to request
719   * status from the MAC layer.
720   * @param pst Pointer to the post structure.
721   * @param cfm pointer to RgMngmt 
722   * @return ROK/RFAILED
723   */
724 S16 RgMiLrgStaReq ARGS((Pst *pst, RgMngmt *sta));
725
726  /** @brief This primitive carries the Confirmation for a Status Request
727   * sent from the layer manager to MAC.
728   * @details This primitive is used by MAC to send a response for the status
729   * Request sent by the layer manager.
730   * @param pst Pointer to the post structure.
731   * @param cfm pointer to RgMngmt 
732   * @return ROK/RFAILED
733   */
734 S16 RgMiLrgStaCfm ARGS((Pst *pst, RgMngmt *cfm));
735
736  /** @brief This primitive carries the Unsolicited status indications from MAC
737   * to the layer manager i.e. Alarms.
738   * @details This primitive is used by MAC to inform Layer manager about some
739   * error conditions or bind confirmations.
740   * @param pst Pointer to the post structure.
741   * @param usta pointer to RgMngmt 
742   * @return ROK/RFAILED
743   */
744 S16 RgMiLrgStaInd ARGS((Pst *pst, RgMngmt *usta));
745  /** @brief This primitive carries the Unsolicited status indications from
746   * scheduler to the layer manager i.e. Alarms.
747   * @details This primitive is used by Scheduler to inform Layer manager about some
748   * error conditions or bind confirmations.
749   * @param pst Pointer to the post structure.
750   * @param usta pointer to RgMngmt 
751   * @return ROK/RFAILED
752   */
753 S16 RgMiLrgSchStaInd ARGS((Pst *pst, RgMngmt *usta));
754
755  /** @brief This primitive carries the control request sent from the layer
756   * manager to MAC layer.
757   * @details This primitive is sent from the layer manager to control the MAC
758   * layer. The following entities could be controlled using this primitive.
759   * -# Debug printing
760   * -# TRACE functionality
761   * -# Binding of lower SAPs
762   * @param pst Pointer to the post structure.
763   * @param cfm pointer to RgMngmt 
764   * @return ROK/RFAILED
765   */
766 S16 RgMiLrgCntrlReq ARGS((Pst *pst, RgMngmt *cntrl));
767  /** @brief This primitive carries the Confirmation for a Control Request
768   * sent from the layer manager to MAC.
769   * @details This primitive is used by MAC to inform Layer manager about the
770   * status of a Control Request.
771   * @param pst Pointer to the post structure.
772   * @param cfm pointer to RgMngmt 
773   * @return ROK/RFAILED
774   */
775 S16 RgMiLrgCntrlCfm ARGS(( Pst *pst, RgMngmt *cfm));
776  /** @brief This primitive carries the control request sent from the layer
777   * manager to MAC layer.
778   * @details This primitive is sent from the layer manager to control the MAC
779   * layer. The following entities could be controlled using this primitive.
780   * -# Debug printing
781   * -# TRACE functionality
782   * -# Binding of lower SAPs
783   * @param pst Pointer to the post structure.
784   * @param cfm pointer to RgMngmt 
785   * @return ROK/RFAILED
786   */
787 S16 RgMiLrgSchCntrlReq ARGS((Pst *pst, RgMngmt *cntrl));
788  /** @brief This primitive carries the Confirmation for a Control Request
789   * sent from the layer manager to MAC.
790   * @details This primitive is used by MAC to inform Layer manager about the
791   * status of a Control Request.
792   * @param pst Pointer to the post structure.
793   * @param cfm pointer to RgMngmt 
794   * @return ROK/RFAILED
795   */
796 S16 RgMiLrgSchCntrlCfm ARGS(( Pst *pst, RgMngmt *cfm));
797  /** @brief This primitive carries the a copy of the received buffer from MAC to
798   * the layer manager. This is called the Tracing functionality of the layer.
799   * @details This primitive is used by MAC to send a copy of the received buffer
800   * to the layer manager, if Tracing is enabled via a control request. 
801   * @param pst Pointer to the post structure.
802   * @param trc pointer to RgMngmt 
803   * @param mBuf pointer to Buffer contains the portion of the received message. 
804   * @return ROK/RFAILED
805   */
806 S16 RgMiLrgTrcInd ARGS((Pst *pst, RgMngmt *trc, Buffer *mBuf));
807 #ifdef LTE_L2_MEAS
808  /** @brief This primitive is to enable L2 (layer 2) measurements at the MAC
809   * layer.
810   * 
811   * @details Enables the L2 Measurements.
812   * 
813   * @param pst Pointer to the post structure.
814   * @param schL2MeasInfo pointer to LrgSchMeasReqInfo 
815   * @return ROK/RFAILED
816   */
817 S16 RgMiLrgSchL2MeasReq ARGS((Pst *pst, LrgSchMeasReqInfo *schL2MeasInfo));
818  /** @brief This primitive carries the results of the L2 Measurements gathered
819   * by MAC to the layer manager.
820   * 
821   * @details Carries the Measurements gathered by MAC.
822   * 
823   * @param pst Pointer to the post structure.
824   * @param schL2MeasCfm pointer to LrgSchMeasCfmInfo 
825   * @return ROK/RFAILED
826   */
827 S16 RgMiLrgSchL2MeasCfm ARGS((Pst *pst, LrgSchMeasCfmInfo *schL2MeasCfm));
828  /** @brief This primitive is to Stop L2 (layer 2) measurements at the MAC
829   * layer.
830   *
831   * @details Enables the L2 Measurements.
832   *
833   * @param pst Pointer to the post structure.
834   * @param schL2MeasInfo pointer to LrgSchMeasReqInfo
835   * @return ROK/RFAILED
836   */
837
838 S16 RgMiLrgSchL2MeasStopReq ARGS((Pst *pst, LrgSchMeasStopReqInfo *schL2MeasInfo));
839  /** @brief This primitive is to used to send  L2 (layer 2) measurements at the MAC
840   * layer.
841   *
842   * @details Enables the L2 Measurements.
843   *
844   * @param pst Pointer to the post structure.
845   * @param schL2MeasInfo pointer to LrgSchMeasReqInfo
846   * @return ROK/RFAILED
847   */
848
849 S16 RgMiLrgSchL2MeasSendReq ARGS((Pst *pst,LrgSchMeasSndReqInfo *schL2MeasInfo));
850  /** @brief This primitive carries the confrmratoin  of the L2 Measurements gathered
851   * by MAC to the layer manager.
852   *
853   * @details Carries the Measurements gathered by MAC.
854   *
855   * @param pst Pointer to the post structure.
856   * @param schL2MeasCfm pointer to LrgSchMeasCfmInfo
857   * @return ROK/RFAILED
858   */
859
860 S16 RgMiLrgSchL2MeasStopCfm ARGS((Pst *pst, LrgSchMeasCfmInfo *schL2MeasCfm));
861 #endif /* LTE_L2_MEAS */
862 #endif /* RG. */
863
864 #ifdef SM 
865 S16 smRgActvInit ARGS((Ent ent,Inst inst, Region region,Reason reason));
866 S16 smRgActvTsk ARGS((Pst *pst, Buffer *mBuf));
867 S16 SmMiLrgCfgReq ARGS((Pst *pst, RgMngmt *cfg));
868 S16 SmMiLrgCfgCfm ARGS((Pst *pst, RgMngmt *cfm));
869 S16 SmMiLrgSchCfgReq ARGS((Pst *pst, RgMngmt *cfg));
870 S16 SmMiLrgSchCfgCfm ARGS((Pst *pst, RgMngmt *cfm));
871 S16 SmMiLrgStsReq ARGS((Pst *pst, RgMngmt *sts));
872 S16 SmMiLrgStsCfm ARGS((Pst *pst, RgMngmt *cfm));
873 S16 SmMiLrgStaReq ARGS((Pst *pst, RgMngmt *sta));
874 S16 SmMiLrgStaCfm ARGS((Pst *pst, RgMngmt *cfm));
875 S16 SmMiLrgStaInd ARGS((Pst *pst, RgMngmt *usta));
876 S16 SmMiLrgCntrlReq ARGS((Pst *pst, RgMngmt *cntrl));
877 S16 SmMiLrgSchStaInd ARGS((Pst *pst, RgMngmt *usta));
878 S16 SmMiLrgCntrlCfm ARGS(( Pst *pst, RgMngmt *cfm));
879 S16 SmMiLrgSchCntrlReq ARGS((Pst *pst, RgMngmt *cntrl));
880 S16 SmMiLrgSchCntrlCfm ARGS(( Pst *pst, RgMngmt *cfm));
881 S16 SmMiLrgTrcInd ARGS((Pst *pst, RgMngmt *trc, Buffer *mBuf));
882 /* lrg_x_001.main_3 - ADD -  Added the following functions for LTE_L2_MEAS */
883 #ifdef LTE_L2_MEAS
884 S16 SmMiLrgSchL2MeasStartReq ARGS((Pst *pst, LrgSchMeasReqInfo *schL2MeasReq));
885 S16 SmMiLrgSchL2MeasCfm ARGS((Pst *pst, LrgSchMeasCfmInfo *schL2MeasCfm));
886 S16 SmMiLrgSchL2MeasStopReq ARGS((Pst *pst, LrgSchMeasStopReqInfo *schL2MeasReq));
887 S16 SmMiLrgSchL2MeasSendReq ARGS((Pst *pst, LrgSchMeasSndReqInfo *schL2MeasReq));
888 S16 SmMiLrgSchL2MeasStopCfm ARGS((Pst *pst, LrgSchMeasCfmInfo *schL2MeasCfm));
889 S16 SmMiLrgSchL2MeasReq ARGS((Pst *pst, LrgSchMeasReqInfo *meas));
890 S16 SmMiLrgSchL2SendMeasReq ARGS((Pst *pst, LrgSchMeasSndReqInfo *meas));
891 S16 SmMiLrgSchL2StopMeasReq ARGS((Pst *pst, LrgSchMeasStopReqInfo *meas));
892 #endif /* LTE_L2_MEAS */
893 #endif /* SM. */
894
895 /*
896    Function Prototypes for Packing and Unpacking the primitives.
897  */
898 #if (defined(LCLRG))
899 /** @brief This API is used to send a 
900 Config Request from LM to MAC.*/
901 S16 cmPkLrgCfgReq ARGS((
902    Pst *                pst,
903    RgMngmt *            cfg
904 ));
905 /** @brief This API is used to send a 
906 Configuration Request from LM to MAC. */
907 S16 cmUnpkLrgCfgReq ARGS((
908    LrgCfgReq            func,
909    Pst *                pst,
910    Buffer               *mBuf
911 ));
912 /** @brief This API is used to send a 
913 Configuration Request from LM to SCH. */
914 S16 cmPkLrgSchCfgReq ARGS((
915    Pst *                pst,
916    RgMngmt *            cfg
917 ));
918 /** @brief This API is used to send a 
919 Configuration Request from LM to SCH. */
920 S16 cmUnpkLrgSchCfgReq ARGS((
921    LrgSchCfgReq         func,
922    Pst *                pst,
923    Buffer               *mBuf
924 ));
925 /* lrg_x_001.main_3 - ADD -  Added the following pack/unpack functions for LTE_L2_MEAS */
926 #ifdef LTE_L2_MEAS
927 /** @brief This API is used to send a 
928 L2 Measurement Request from LM to SCH. */
929 S16 cmPkLrgSchL2MeasReq ARGS((
930    Pst *                pst,
931    LrgSchMeasReqInfo *  meas
932 ));
933 /** @brief This API is used to send a 
934 L2 Measurement Request from LM to SCH. */
935 S16 cmUnpkLrgSchL2MeasReq ARGS((
936    LrgSchL2MeasReq         func,
937    Pst *                 pst,
938    Buffer               *mBuf
939 ));
940 S16 cmPkLrgSchL2MeasCfm ARGS((
941     Pst * pst,
942     LrgSchMeasCfmInfo  *measInfo
943 ));
944 S16 cmUnpkLrgSchL2MeasCfm ARGS((
945     LrgSchL2MeasCfm func,
946     Pst *pst,
947     Buffer *mBuf
948 ));
949 S16 cmPkLrgSchL2MeasReq ARGS((
950    Pst *                pst,
951    LrgSchMeasReqInfo *  meas
952 ));
953 /** @brief This API is used to send a 
954 L2 Measurement Request from LM to SCH. */
955 S16 cmUnpkLrgSchL2MeasReq ARGS((
956    LrgSchL2MeasReq         func,
957    Pst *                 pst,
958    Buffer               *mBuf
959 ));
960 /** @brief This API is used to send a
961 L2 Measurement Stop Request from LM to SCH. */
962 S16 cmPkLrgSchL2MeasSendReq ARGS((
963    Pst *                pst,
964    LrgSchMeasSndReqInfo *  meas
965 ));
966 /** @brief This API is used to send a 
967 L2 Measurement Request from LM to SCH. */
968 S16 cmUnpkLrgSchL2MeasSendReq ARGS((
969    LrgSchL2MeasSendReq         func,
970    Pst *                 pst,
971    Buffer               *mBuf
972 ));
973 /** @brief This API is used to send a
974 L2 Measurement Stop Request from LM to SCH. */
975 S16 cmPkLrgSchL2MeasStopReq ARGS((
976    Pst *                pst,
977    LrgSchMeasStopReqInfo *  meas
978 ));
979 /** @brief This API is used to send a 
980 L2 Measurement Request from LM to SCH. */
981 S16 cmUnpkLrgSchL2MeasStopReq ARGS((
982    LrgSchL2MeasStopReq         func,
983    Pst *                 pst,
984    Buffer               *mBuf
985 ));
986 /** @brief This API is used to carry
987 L2 Measurement Cfm  from SCH. */
988 S16 cmPkLrgSchL2MeasStopCfm ARGS((
989     Pst * pst,
990     LrgSchMeasCfmInfo  *measInfo
991 ));
992 /** @brief This API is used to carrya
993 L2 Measurement Cfm  from SCH. */
994 S16 cmUnpkLrgSchL2MeasStopCfm ARGS((
995     LrgSchL2MeasStopCfm func,
996     Pst *pst,
997     Buffer *mBuf
998 ));
999 #endif
1000 /** @brief This API is used to send a 
1001 Configuration Confirm from MAC to LM. */
1002 uint8_t cmPkLrgCfgCfm ARGS((
1003    Pst *                pst,
1004    RgMngmt *            cfm
1005 ));
1006 /** @brief This API is used to send a 
1007 Configuration Confirm from MAC to LM. */
1008 S16 cmUnpkLrgCfgCfm ARGS((
1009    LrgCfgCfm            func,
1010    Pst *                pst,
1011    Buffer               *mBuf
1012 ));
1013 /** @brief This API is used to send a 
1014 Configuration Confirm from SCH to LM. */
1015  uint8_t cmPkLrgSchCfgCfm ARGS((
1016    Pst *                pst,
1017    RgMngmt *            cfg
1018 ));
1019 /** @brief This API is used to send a 
1020 Configuration Confirm from SCH to LM. */
1021 S16 cmUnpkLrgSchCfgCfm ARGS((
1022    LrgSchCfgCfm         func,
1023    Pst *                pst,
1024    Buffer               *mBuf
1025 ));
1026 /** @brief This API is used to send a 
1027 Statistics Request from LM to MAC. */
1028  S16 cmPkLrgStsReq ARGS((
1029    Pst *                pst,
1030    RgMngmt *            sts
1031 ));
1032 /** @brief This API is used to send a 
1033 Statistics Request from LM to MAC. */
1034 S16 cmUnpkLrgStsReq ARGS((
1035    LrgStsReq            func,
1036    Pst *                pst,
1037    Buffer               *mBuf
1038 ));
1039 /** @brief This API is used to send a 
1040 Statistics Confirm from MAC to LM. */
1041 S16 cmPkLrgStsCfm ARGS((
1042    Pst *                pst,
1043    RgMngmt *            cfm
1044 ));
1045 /** @brief This API is used to send a 
1046 Statistics Confirm from MAC to LM. */
1047 S16 cmUnpkLrgStsCfm ARGS((
1048    LrgStsCfm            func,
1049    Pst *                pst,
1050    Buffer               *mBuf
1051 ));
1052 /** @brief This API is used to send a 
1053 Status Request from LM to MAC. */
1054 S16 cmPkLrgStaReq ARGS((
1055    Pst *                pst,
1056    RgMngmt *            sta
1057 ));
1058 /** @brief This API is used to send a 
1059 Status Request from LM to MAC. */
1060 S16 cmUnpkLrgStaReq ARGS((
1061    LrgStaReq            func,
1062    Pst *                pst,
1063    Buffer               *mBuf
1064 ));
1065 /** @brief This API is used to send a 
1066 Status Confirm from MAC to LM. */
1067 S16 cmPkLrgStaCfm ARGS((
1068    Pst *                pst,
1069    RgMngmt *            cfm
1070 ));
1071 /** @brief This API is used to send a 
1072 Status Confirm from MAC to LM. */
1073 S16 cmUnpkLrgStaCfm ARGS((
1074    LrgStaCfm            func,
1075    Pst *                pst,
1076    Buffer               *mBuf
1077 ));
1078 /** @brief This API is used to send a 
1079 Status Indication from MAC to LM. */
1080 S16 cmPkLrgStaInd ARGS((
1081    Pst *                pst,
1082    RgMngmt *            usta
1083 ));
1084 /** @brief This API is used to send a 
1085 Status Indication from MAC to LM. */
1086 S16 cmUnpkLrgStaInd ARGS((
1087    LrgStaInd            func,
1088    Pst *                pst,
1089    Buffer               *mBuf
1090 ));
1091 /** @brief This API is used to send a 
1092 Status Indication from SCH to LM. */
1093 S16 cmPkLrgSchStaInd ARGS((
1094    Pst *                pst,
1095    RgMngmt *            sta
1096 ));
1097 /** @brief This API is used to send a 
1098 Status Indication from SCH to LM. */
1099 S16 cmUnpkLrgSchStaInd ARGS((
1100    LrgSchStaInd         func,
1101    Pst *                pst,
1102    Buffer               *mBuf
1103 ));
1104 /** @brief This API is used to send a 
1105 Control Request from LM to MAC. */
1106 S16 cmPkLrgCntrlReq ARGS((
1107    Pst *                pst,
1108    RgMngmt *            cntrl
1109 ));
1110 /** @brief This API is used to send a 
1111 Control Request from LM to MAC. */
1112 S16 cmUnpkLrgCntrlReq ARGS((
1113    LrgCntrlReq          func,
1114    Pst *                pst,
1115    Buffer               *mBuf
1116 ));
1117 /** @brief This API is used to send a 
1118 Control Request from LM to SCH. */
1119 S16 cmPkLrgSchCntrlReq ARGS((
1120    Pst *                pst,
1121    RgMngmt *            cntrl
1122 ));
1123 /** @brief This API is used to send a 
1124 Control Request from LM to SCH. */
1125 S16 cmUnpkLrgSchCntrlReq ARGS((
1126    LrgSchCntrlReq       func,
1127    Pst *                pst,
1128    Buffer               *mBuf
1129 ));
1130 /** @brief This API is used to send a 
1131 Control Confirm from MAC to LM.*/
1132 S16 cmPkLrgCntrlCfm ARGS((
1133    Pst *                pst,
1134    RgMngmt *            cfm
1135 ));
1136 /** @brief This API is used to send a 
1137 Control Confirm from MAC to LM. */
1138 S16 cmUnpkLrgCntrlCfm ARGS((
1139    LrgCntrlCfm          func,
1140    Pst *                pst,
1141    Buffer               *mBuf
1142 ));
1143 /** @brief This API is used to send a 
1144 Control Confirm from SCH to LM. */
1145 S16 cmPkLrgSchCntrlCfm ARGS((
1146    Pst *                pst,
1147    RgMngmt *            cntrl
1148 ));
1149 /** @brief This API is used to send a 
1150 Control Confirm from SCH to LM. */
1151 S16 cmUnpkLrgSchCntrlCfm ARGS((
1152    LrgSchCntrlCfm       func,
1153    Pst *                pst,
1154    Buffer               *mBuf
1155 ));
1156 /** @brief This API is used to send a 
1157 Trace Indication from MAC to LM. */
1158 S16 cmPkLrgTrcInd ARGS((
1159    Pst *                pst,
1160    RgMngmt *            trc,
1161    Buffer *             trcBuf
1162 ));
1163 /** @brief This API is used to send a 
1164 Trace Indication from MAC to LM. */
1165 S16 cmUnpkLrgTrcInd ARGS((
1166    LrgTrcInd            func,
1167    Pst *                pst,
1168    Buffer               *mBuf
1169 ));
1170 S16 cmPkRgGenCfg ARGS((
1171    RgGenCfg             *param,
1172    Buffer               *mBuf
1173 ));
1174 S16 cmUnpkRgGenCfg ARGS((
1175    RgGenCfg             *param,
1176    Buffer               *mBuf
1177 ));
1178 S16 cmPkRgUpSapCfg ARGS((
1179    RgUpSapCfg           *param,
1180    Buffer               *mBuf
1181 ));
1182 S16 cmUnpkRgUpSapCfg ARGS((
1183    RgUpSapCfg           *param,
1184    Buffer               *mBuf
1185 ));
1186 S16 cmPkRgLowSapCfg ARGS((
1187    RgLowSapCfg          *param,
1188    Buffer               *mBuf
1189 ));
1190 S16 cmUnpkRgLowSapCfg ARGS((
1191    RgLowSapCfg          *param,
1192    Buffer               *mBuf
1193 ));
1194 S16 cmPkRgGenSts ARGS((
1195    RgGenSts             *param,
1196    Buffer               *mBuf
1197 ));
1198
1199 #ifdef MAC_SCH_STATS
1200 S16 cmPkRgSchHqRetxStats ARGS((
1201    RgSchHqRetxStats     *param,
1202    Buffer               *mBuf
1203 ));
1204 S16 cmPkRgSchNackAckStats ARGS((
1205    RgSchNackAckStats    *param,
1206    Buffer               *mBuf
1207 ));
1208 S16 cmPkRgHqNumRetx ARGS((
1209    RgSchHqNumRetx       *param,
1210    Buffer               *mBuf
1211 ));
1212 S16 cmPkRgAckNack ARGS((
1213    RgAckNack            *param,
1214    Buffer               *mBuf
1215 ));
1216
1217 S16 cmUnpkRgSchHqRetxStats ARGS((
1218    RgSchHqRetxStats     *param,
1219    Buffer               *mBuf
1220 ));
1221 S16 cmUnpkRgSchNackAckStats ARGS((
1222    RgSchNackAckStats    *param,
1223    Buffer               *mBuf
1224 ));
1225 S16 cmUnpkRgHqNumRetx ARGS((
1226    RgSchHqNumRetx       *param,
1227    Buffer               *mBuf
1228 ));
1229 S16 cmUnpkRgAckNack ARGS((
1230    RgAckNack            *param,
1231    Buffer               *mBuf
1232 ));
1233 #endif /* MAC_SCH_STATS */
1234
1235 S16 cmUnpkRgGenSts ARGS((
1236    RgGenSts             *param,
1237    Buffer               *mBuf
1238 ));
1239 S16 cmPkRgSapSts ARGS((
1240    RgSapSts             *param,
1241    Buffer               *mBuf
1242 ));
1243 S16 cmUnpkRgSapSts ARGS((
1244    RgSapSts             *param,
1245    Buffer               *mBuf
1246 ));
1247 S16 cmPkRgSchInstCfg ARGS((
1248    RgSchInstCfg         *param,
1249    Buffer               *mBuf
1250 ));
1251 S16 cmUnpkRgSchInstCfg ARGS((
1252    RgSchInstCfg         *param,
1253    Buffer               *mBuf
1254 ));
1255 S16 cmPkRgCfg ARGS((
1256    RgCfg                *param,
1257    S16                  elmnt,
1258    Buffer               *mBuf
1259 ));
1260 S16 cmUnpkRgCfg ARGS((
1261    RgCfg                *param,
1262    S16                  elmnt,
1263    Buffer               *mBuf
1264 ));
1265 S16 cmPkRgSapSta ARGS((
1266    RgSapSta             *param,
1267    Buffer               *mBuf
1268 ));
1269 S16 cmUnpkRgSapSta ARGS((
1270    RgSapSta             *param,
1271    Buffer               *mBuf
1272 ));
1273 S16 cmPkRgSts ARGS((
1274    RgSts                *param,
1275    S16                  elmnt,
1276    Buffer               *mBuf
1277 ));
1278 S16 cmUnpkRgSts ARGS((
1279    RgSts                *param,
1280    S16                  elmnt,
1281    Buffer               *mBuf
1282 ));
1283 /* lrg_x_001.main_3 - MODIFY -  Modified the below function to hold the event type */
1284 #ifdef LRG_V1
1285 S16 cmPkRgSsta ARGS((
1286    Pst                  *pst,
1287    RgSsta               *param,
1288    S16                  elmnt,
1289    /*ccpu00118255 - ADD - eventType param */
1290    uint8_t                   eventType,
1291    Buffer               *mBuf
1292 ));
1293 #else /*LRG_V1 not defined */
1294 S16 cmPkRgSsta ARGS((
1295    Pst                  *pst,
1296    RgSsta               *param,
1297    S16                  elmnt,
1298    Buffer               *mBuf
1299 ));
1300 #endif /* LRG_V1 endif */
1301 S16 cmUnpkRgSsta ARGS((
1302    Pst                  *pst,
1303    RgSsta               *param,
1304    S16                  elmnt,
1305    Buffer               *mBuf
1306 ));
1307 S16 cmPkRgUstaDgn ARGS((
1308    RgUstaDgn            *param,
1309    Buffer               *mBuf
1310 ));
1311 S16 cmUnpkRgUstaDgn ARGS((
1312    RgUstaDgn            *param,
1313    Buffer               *mBuf
1314 ));
1315 S16 cmPkRgUsta ARGS((
1316    RgUsta               *param,
1317    Buffer               *mBuf
1318 ));
1319 S16 cmUnpkRgUsta ARGS((
1320    RgUsta               *param,
1321    Buffer               *mBuf
1322 ));
1323 S16 cmPkRgTrc ARGS((
1324    RgTrc                *param,
1325    Buffer               *mBuf
1326 ));
1327 S16 cmUnpkRgTrc ARGS((
1328    RgTrc                *param,
1329    Buffer               *mBuf
1330 ));
1331 S16 cmPkRgDbgCntrl ARGS((
1332    RgDbgCntrl           *param,
1333    Buffer               *mBuf
1334 ));
1335 S16 cmUnpkRgDbgCntrl ARGS((
1336    RgDbgCntrl           *param,
1337    Buffer               *mBuf
1338 ));
1339 S16 cmPkRgSapCntrl ARGS((
1340    RgSapCntrl           *param,
1341    Buffer               *mBuf
1342 ));
1343 S16 cmUnpkRgSapCntrl ARGS((
1344    RgSapCntrl           *param,
1345    Buffer               *mBuf
1346 ));
1347 S16 cmPkRgCntrl ARGS((
1348    RgCntrl              *param,
1349    S16                  elmnt,
1350    Buffer               *mBuf
1351 ));
1352 S16 cmUnpkRgCntrl ARGS((
1353    RgCntrl              *param,
1354    S16                  elmnt,
1355    Buffer               *mBuf
1356 ));
1357 S16 cmPkRgMngmt ARGS((
1358    Pst *pst,
1359    RgMngmt *param,
1360    uint8_t eventType,
1361    Buffer *mBuf
1362 ));
1363 S16 cmUnpkRgMngmt ARGS((
1364    Pst *pst,
1365    RgMngmt *param,
1366    uint8_t eventType,
1367    Buffer *mBuf
1368 ));
1369
1370 #ifdef PHY_ERROR_LOGING
1371 S16 cmPkRgSchUlAllocCntrl ARGS((
1372    RgSchUlAllocCntrl *param,
1373    Buffer *mBuf
1374 ));
1375
1376 S16 cmUnpkRgSchUlAllocCntrl ARGS((
1377    RgSchUlAllocCntrl *param,
1378    Buffer *mBuf
1379 ));
1380 #endif
1381 /* lrg_x_001.main_4 ccpu00117036 - C++ support */
1382 #ifdef __cplusplus
1383 }
1384 #endif
1385 #endif
1386
1387 #endif /* __LRGX__. */
1388
1389 \f
1390 /**********************************************************************
1391    End of file
1392 **********************************************************************/