Initial commit for Bronze release
[o-du/l2.git] / src / cm / rgr.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:     Structures, variables, and typedefs required by the LTE MAC-RRM
26             Control (RGR) interface.
27
28   File:     rgr.x 
29
30 **********************************************************************/
31
32 #ifndef __RGR_X__ 
33 #define __RGR_X__
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 #define MAX_5GTF_SUBFRAME_INFO 10
39 /** 
40   @file rgr.x 
41   @brief Structure declarations and definitions for RGR interface.
42   */
43 /** Group power formats */
44 typedef enum rgrGrpPwrFormat
45 {
46    RGR_PWR_FORMAT_3, /**< Power Format 3 */
47    RGR_PWR_FORMAT_3A /**< Power Format 3A */
48 } RgrGrpPwrFormat;
49
50 /** @name  LTE_TDD */
51 /** @{ */
52 #ifdef LTE_TDD
53 /** Indicates one of the two TDD ACK/NACK feedback modes */
54 typedef enum rgrTddAckNackMode
55 {
56    /* rgr_x_001.main_10. Added changes of TFU_UPGRADE */
57    RGR_TDD_ACKNACK_MODE_BUNDL, /**< TDD Ack/Nack Mode Bundle */
58    RGR_TDD_ACKNACK_MODE_MULT   /**< TDD Ack/Nack Mode Multiplex */
59 } RgrTddAckNackMode;
60 #endif /* LTE_TDD */
61 /** @} */
62
63 /**  Periodicity of Downlink CQI Transmission per UE */
64 typedef enum rgrCqiPrdicity
65 {
66    RGR_CQI_PRD_MS2 = 2,   /**< CQI Periodicity of 2ms */
67    RGR_CQI_PRD_MS5 = 5,   /**< CQI Periodicity of 5ms */ 
68    RGR_CQI_PRD_MS10 = 10, /**< CQI Periodicity of 10ms */
69    RGR_CQI_PRD_MS20 = 20, /**< CQI Periodicity of 20ms */
70    RGR_CQI_PRD_MS32 = 32, /**< CQI Periodicity of 32ms */
71    RGR_CQI_PRD_MS40 = 40, /**< CQI Periodicity of 40ms */
72    RGR_CQI_PRD_MS64 = 64, /**< CQI Periodicity of 64ms */
73    RGR_CQI_PRD_MS80 = 80, /**< CQI Periodicity of 80ms */
74    RGR_CQI_PRD_MS128 = 128, /**< CQI Periodicity of 128ms */
75    RGR_CQI_PRD_MS160 = 160, /**< CQI Periodicity of 160ms */
76    RGR_CQI_PRD_MS256 = 256, /**< CQI Periodicity of 256ms */
77    RGR_CQI_PRD_MSOff /**< CQI Periodicity OFF */
78 } RgrCqiPrdicity;
79
80 /** 
81  * Periodic CQI Transmission Modes */
82 typedef enum rgrPrdCqiMode
83 {
84    RGR_PRD_CQI_MOD10,/**< Periodic CQI Mode 1-0 */
85    RGR_PRD_CQI_MOD11,/**< Periodic CQI Mode 1-1 */ 
86    RGR_PRD_CQI_MOD20,/**< Periodic CQI Mode 2-0 */
87    RGR_PRD_CQI_MOD21 /**< Periodic CQI Mode 2-1 */
88 } RgrPrdCqiMode;
89
90 /** Different values for Power Aplha parameter. Divide it by 10 to get
91  * the actual value of the enum that is 0, 0.4, 0.5, 0.6 etc...*/
92 typedef enum rgrPwrAlpha
93 {
94    RGR_PWR_ALPHA0 = 0,   /**< Power Aplha Value 0*/
95    RGR_PWR_ALPHA4 = 4,   /**< Power Aplha Value 0.4*/
96    RGR_PWR_ALPHA5 = 5,   /**< Power Aplha Value 0.5*/
97    RGR_PWR_ALPHA6 = 6,   /**< Power Aplha Value 0.6*/
98    RGR_PWR_ALPHA7 = 7,   /**< Power Aplha Value 0.7*/
99    RGR_PWR_ALPHA8 = 8,   /**< Power Aplha Value 0.8*/
100    RGR_PWR_ALPHA9 = 9,   /**< Power Aplha Value 0.9*/
101    RGR_PWR_ALPHAALL = 10 /**< Power Aplha Value 1*/
102 } RgrPwrAlpha;
103
104 /** Different Values for ACK/NACK Repetition Factor*/
105 typedef enum rgrAckNackRepFactor
106 {
107    RGR_ACKNACK_REPFACT_N2 = 2,  /**< ACK/NACK Repetition Factor value 2 */
108    RGR_ACKNACK_REPFACT_N4 = 4,  /**< ACK/NACK Repetition Factor value 4 */
109    RGR_ACKNACK_REPFACT_N6 = 6   /**< ACK/NACK Repetition Factor value 6 */
110 } RgrAckNackRepFactor;
111
112 /* rgr_x_001.main_8 - Changes for MIMO feature addition */
113 /** @{ */
114 /** 
115  * UE Transmission Modes state transition in case of recfg */
116 typedef enum rgrTxModeTrnstn
117 {
118    RGR_TXMODE_RECFG_CMPLT = 0,
119    RGR_TXMODE_RECFG_START
120 }RgrTxModeTrnstn;
121
122 /** @} */
123 /** 
124  * UE Transmission Modes */
125 typedef enum rgrTxMode
126 {
127    RGR_UE_TM_1 = 1,    /**< Transmission Mode 1 */
128    RGR_UE_TM_2,        /**< Transmission Mode 2 */
129    RGR_UE_TM_3,        /**< Transmission Mode 3 */
130    RGR_UE_TM_4,        /**< Transmission Mode 4 */
131    RGR_UE_TM_5,        /**< Transmission Mode 5 */
132    RGR_UE_TM_6,        /**< Transmission Mode 6 */
133    RGR_UE_TM_7,        /**< Transmission Mode 7 */
134    RGR_UE_TM_8         /**< Transmission Mode 8 */
135 #ifdef LTE_ADV
136    ,        
137    RGR_UE_TM_9         /**< Transmission Mode 9 */
138 #endif
139 } RgrTxMode;
140 /** 
141  * Random access system frame number */
142 typedef enum rgrRaSfn
143 {
144    RGR_SFN_EVEN, /**< Even Sub Frame */
145    RGR_SFN_ANY,  /**< Any Sub Frame */
146 /** @name LTE_TDD */
147 /** @{ */
148 #ifdef LTE_TDD 
149    RGR_SFN_ODD, /**< Odd Sub Frame */
150 #endif /*LTE_TDD */
151 /** @} */
152    RGR_SFN_NA /**< Sub Frame Not Available */
153 } RgrRaSfn;
154 /** 
155  * Configuration period per Cell for SRS */
156 typedef enum rgrSrsCfgPrd
157 {
158    RGR_SRS_CFG_PRD_1 = 1, /**< Sounding Reference signal periodicity 1ms */
159    RGR_SRS_CFG_PRD_2 = 2, /**< Sounding Reference signal periodicity 2ms */
160    RGR_SRS_CFG_PRD_5 = 5, /**< Sounding Reference signal periodicity 5ms */
161    RGR_SRS_CFG_PRD_10 = 10, /**< Sounding Reference signal periodicity 10ms */
162    RGR_SRS_CFG_PRD_INF  /**< Sounding Reference signal periodicity Infinite  */
163 } RgrSrsCfgPrd;
164
165 /** 
166  * SRS Bandwidth Configuration per cell for SRS */
167 typedef enum rgrSrsBwCfg
168 {
169    RGR_SRS_BWCFG_0 = 0, /**< Sounding Reference Signal BW CFG 0 */ 
170    RGR_SRS_BWCFG_1 = 1, /**< Sounding Reference Signal BW CFG 1 */ 
171    RGR_SRS_BWCFG_2 = 2, /**< Sounding Reference Signal BW CFG 2 */ 
172    RGR_SRS_BWCFG_3 = 3, /**< Sounding Reference Signal BW CFG 3 */ 
173    RGR_SRS_BWCFG_4 = 4, /**< Sounding Reference Signal BW CFG 4 */ 
174    RGR_SRS_BWCFG_5 = 5, /**< Sounding Reference Signal BW CFG 5 */ 
175    RGR_SRS_BWCFG_6 = 6, /**< Sounding Reference Signal BW CFG 6 */
176    RGR_SRS_BWCFG_7 = 7  /**< Sounding Reference Signal BW CFG 7 */
177 } RgrSrsBwCfg;
178
179
180 /** 
181  * Ng values for PHICH For more details refer to 36.211 Sec 6.9*/
182 typedef enum rgrPhichNg
183 {
184    RGR_NG_ONESIXTH, /**< PHICH Ng Values 1/6 */
185    RGR_NG_HALF,     /**< PHICH Ng Values 1/2 */
186    RGR_NG_ONE,      /**< PHICH Ng Values 1 */
187    RGR_NG_TWO       /**< PHICH Ng Values 2 */
188 } RgrPhichNg;
189 /** 
190  * Aperiodic CQI Transmission Modes */
191 typedef enum rgrAprdCqiMode
192 {
193    RGR_APRD_CQI_MOD12,  /**< Aperiodic CQI Mode 1-2 */
194    RGR_APRD_CQI_MOD20,  /**< Aperiodic CQI Mode 2-0 */
195    RGR_APRD_CQI_MOD22,  /**< Aperiodic CQI Mode 2-2 */
196    RGR_APRD_CQI_MOD30, /**< Aperiodic CQI Mode 3-0 */
197    RGR_APRD_CQI_MOD31  /**< Aperiodic CQI Mode 3-1 */
198 } RgrAprdCqiMode;
199 /*rgr_x_001.main_9 - Added support for SPS*/
200 /**
201 * Number of empty transmissions for Implicit Release */
202 /*rgr_x_001.main_11 MOD added comments*/
203 typedef enum rgrSpsImplRelCnt
204 {
205    RGR_SPS_E2 = 2,  /**< SPS Implicit release count 2 */
206    RGR_SPS_E3 = 3,  /**< SPS Implicit release count 3 */
207    RGR_SPS_E4 = 4,  /**< SPS Implicit release count 4 */
208    RGR_SPS_E8 = 8   /**< SPS Implicit release count 8 */
209 } RgrSpsImplRelCnt;
210
211 /** 
212  * TODO: Check if needed this way
213  * SPS Periodicty values */
214 /*rgr_x_001.main_11 MOD added comments*/
215 typedef enum rgrSpsPrd
216 {
217    RGR_SPS_PRD_10SF = 10,  /**< SPS peridicity 10 */
218    RGR_SPS_PRD_20SF = 20,  /**< SPS peridicity 20 */
219    RGR_SPS_PRD_32SF = 32,  /**< SPS peridicity 32 */
220    RGR_SPS_PRD_40SF = 40,  /**< SPS peridicity 40 */
221    RGR_SPS_PRD_64SF = 64,  /**< SPS peridicity 64 */
222    RGR_SPS_PRD_80SF = 80,  /**< SPS peridicity 80 */
223    RGR_SPS_PRD_128SF = 128,  /**< SPS peridicity 128 */
224    RGR_SPS_PRD_160SF = 160,  /**< SPS peridicity 160 */
225    RGR_SPS_PRD_320SF = 320,  /**< SPS peridicity 320 */
226    RGR_SPS_PRD_640SF = 640,  /**< SPS peridicity 640 */
227    RGR_SPS_PRD_INVALID       /**< SPS peridicity invalid */  
228 } RgrSpsPrd;
229
230
231
232 /* rgr_x_001.main_5:ADD-Added for SI Enhancement. */
233
234 /**@name RGR_SI_SCH */
235 /**@{ */
236 #ifdef RGR_SI_SCH
237 /**
238  * SIs Periodicity */ 
239 typedef enum _rgrSiPerd
240 {
241    RGR_SI_PERD_8   = 8,    /**< SI Periodicity 8 RF */
242    RGR_SI_PERD_16  = 16,   /**< SI Periodicity 16 RF */
243    RGR_SI_PERD_32  = 32,   /**< SI Periodicity 32 RF */
244    RGR_SI_PERD_64  = 64,   /**< SI Periodicity 64 RF */
245    RGR_SI_PERD_128 = 128,  /**< SI Periodicity 128 RF */
246    RGR_SI_PERD_256 = 256,  /**< SI Periodicity 256 RF */
247    RGR_SI_PERD_512 = 512   /**< SI Periodicity 512 RF */
248 } RgrSiPeriodicity;
249
250 /*rgr_x_001.main_11 ccpu00115364 ADD changed U8 to enum for modPrd*/
251 /*modification period = (modificationPeriodCoeff * defaultPagingCycle)%m*/
252 /*where modificationPeriodCoeff={2,4,8,16} defaultPagingCycle={32,64,128,256}*/
253 /**
254   @brief Modification period Periodicity */ 
255 typedef enum _rgrModPerd
256 {
257    RGR_MOD_PERD_64   = 64,    /**< modification period 64 RF */
258    RGR_MOD_PERD_128  = 128,   /**< modification period 128 RF */
259    RGR_MOD_PERD_256  = 256,   /**< modification period 256 RF */
260    RGR_MOD_PERD_512  = 512,   /**< modification period 512 RF */
261    RGR_MOD_PERD_1024 = 1024  /**< modification period 1024 RF */
262 } RgrModPeriodicity;
263
264 /** SI Configuration Type */
265 typedef enum  rgrSiCfgType
266 {
267    RGR_SI_CFG_TYPE_MIB = 0,   /**< SI CFG Type MIB */
268    RGR_SI_CFG_TYPE_SIB1,      /**< SI CFG TYPE SIB1 */
269    RGR_SI_CFG_TYPE_SI,         /**< SI CFG TYPE SI */
270    RGR_SI_CFG_TYPE_SIB1_PWS,    /**< SI CFG TYPE SIB1 PWS */
271    RGR_SI_CFG_TYPE_SIB8_CDMA,      /**< SI CFG TYPE SIB8 */
272    RGR_SI_STOP
273 #ifdef EMTC_ENABLE
274    ,
275    RGR_SI_CFG_EMTC_TYPE_SIB1_BR,
276    RGR_SI_CFG_EMTC_TYPE_SIB1_BR_PER,
277    RGR_SI_CFG_EMTC_TYPE_SI,
278    RGR_SI_CFG_EMTC_TYPE_SI_PER
279 #endif
280 } RgrSiCfgType;
281 #endif /*RGR_SI_SCH*/
282 /**@} */
283
284 /*rgr_x_001.main_11 ADD added changes for DRX*/
285 /**
286  * @brief DRX Timer Period */ 
287 typedef enum _rgrDrxTmrPerd
288 {
289    RGR_DRX_PRD_0PSF    = 0, /**< DRX timer period 0 PDCCH sf */
290    RGR_DRX_PRD_1PSF    = 1, /**< DRX timer period 1 PDCCH sf */
291    RGR_DRX_PRD_2PSF    = 2, /**< DRX timer period 2 PDCCH sf */
292    RGR_DRX_PRD_3PSF    = 3, /**< DRX timer period 3 PDCCH sf */
293    RGR_DRX_PRD_4PSF    = 4, /**< DRX timer period 4 PDCCH sf */
294    RGR_DRX_PRD_5PSF    = 5, /**< DRX timer period 5 PDCCH sf */
295    RGR_DRX_PRD_6PSF    = 6, /**< DRX timer period 6 PDCCH sf */
296    RGR_DRX_PRD_8PSF    = 8, /**< DRX timer period 8 PDCCH sf */
297    RGR_DRX_PRD_10PSF   = 10, /**< DRX timer period 10 PDCCH sf */
298    RGR_DRX_PRD_16PSF   = 16, /**< DRX timer period 16 PDCCH sf */
299    RGR_DRX_PRD_20PSF   = 20, /**< DRX timer period 20 PDCCH sf */
300    RGR_DRX_PRD_24PSF   = 24, /**< DRX timer period 24 PDCCH sf */
301    RGR_DRX_PRD_30PSF   = 30, /**< DRX timer period 30 PDCCH sf */
302    RGR_DRX_PRD_33PSF   = 33, /**< DRX timer period 33 PDCCH sf */
303    RGR_DRX_PRD_40PSF   = 40, /**< DRX timer period 40 PDCCH sf */
304    RGR_DRX_PRD_50PSF   = 50, /**< DRX timer period 50 PDCCH sf */
305    RGR_DRX_PRD_60PSF   = 60, /**< DRX timer period 60 PDCCH sf */
306    RGR_DRX_PRD_64PSF   = 64, /**< DRX timer period 64 PDCCH sf */
307    RGR_DRX_PRD_80PSF   = 80, /**< DRX timer period 80 PDCCH sf */
308    RGR_DRX_PRD_96PSF   = 96, /**< DRX timer period 96 PDCCH sf */
309    RGR_DRX_PRD_100PSF  = 100, /**< DRX timer period 100 PDCCH sf */
310    RGR_DRX_PRD_112PSF  = 112, /**< DRX timer period 112 PDCCH sf */
311    RGR_DRX_PRD_128PSF  = 128, /**< DRX timer period 128 PDCCH sf */
312    RGR_DRX_PRD_160PSF  = 160, /**< DRX timer period 160 PDCCH sf */
313    RGR_DRX_PRD_200PSF  = 200, /**< DRX timer period 200 PDCCH sf */
314    RGR_DRX_PRD_300PSF  = 300, /**< DRX timer period 300 PDCCH sf */
315    RGR_DRX_PRD_320PSF  = 320, /**< DRX timer period 320 PDCCH sf */
316    RGR_DRX_PRD_400PSF  = 400, /**< DRX timer period 300 PDCCH sf */
317    RGR_DRX_PRD_500PSF  = 500, /**< DRX timer period 500 PDCCH sf */
318    RGR_DRX_PRD_600PSF  = 600, /**< DRX timer period 600 PDCCH sf */
319    RGR_DRX_PRD_750PSF  = 750, /**< DRX timer period 750 PDCCH sf */
320    RGR_DRX_PRD_800PSF  = 800, /**< DRX timer period 800 PDCCH sf */
321    RGR_DRX_PRD_1000PSF = 1000, /**< DRX timer period 1000 PDCCH sf */
322    RGR_DRX_PRD_1200PSF = 1200, /**< DRX timer period 1200 PDCCH sf */
323    RGR_DRX_PRD_1280PSF = 1280, /**< DRX timer period 1280 PDCCH sf */
324    RGR_DRX_PRD_1600PSF = 1600, /**< DRX timer period 1600 PDCCH sf */
325    RGR_DRX_PRD_1920PSF = 1920, /**< DRX timer period 1920 PDCCH sf */
326    RGR_DRX_PRD_2560PSF = 2560 /**< DRX timer period 2560 PDCCH sf */
327 }RgrDrxTmrPrd;
328
329
330 /*rgr_x_001.main_11 ADD added changes for DRX*/
331 /**
332  * @brief DRX Cycle Period */ 
333 typedef enum _rgrDrxCyclePerd
334 {
335    RGR_DRX_PRD_2SF     = 2,  /**< DRX cycle period 2 sf */ 
336    RGR_DRX_PRD_5SF     = 5,  /**< DRX cycle period 5 sf */
337    RGR_DRX_PRD_8SF     = 8,  /**< DRX cycle period 8 sf */
338    RGR_DRX_PRD_10SF    = 10, /**< DRX cycle period 10 sf */
339    RGR_DRX_PRD_16SF    = 16, /**< DRX cycle period 16 sf */
340    RGR_DRX_PRD_20SF    = 20, /**< DRX cycle period 20 sf */
341    RGR_DRX_PRD_32SF    = 32, /**< DRX cycle period 32 sf */
342    RGR_DRX_PRD_40SF    = 40, /**< DRX cycle period 40 sf */
343    RGR_DRX_PRD_64SF    = 64, /**< DRX cycle period 64 sf */
344    RGR_DRX_PRD_80SF    = 80, /**< DRX cycle period 80 sf */
345    RGR_DRX_PRD_128SF   = 128, /**< DRX cycle period 128 sf */
346    RGR_DRX_PRD_160SF   = 160, /**< DRX cycle period 160 sf */
347    RGR_DRX_PRD_256SF   = 256, /**< DRX cycle period 256 sf */
348    RGR_DRX_PRD_320SF   = 320, /**< DRX cycle period 320 sf */
349    RGR_DRX_PRD_512SF   = 512, /**< DRX cycle period 512 sf */
350    RGR_DRX_PRD_640SF   = 640, /**< DRX cycle period 640 sf */
351    RGR_DRX_PRD_1024SF  = 1024, /**< DRX cycle period 1024 sf */
352    RGR_DRX_PRD_1280SF  = 1280, /**< DRX cycle period 1280 sf */
353    RGR_DRX_PRD_2048SF  = 2048, /**< DRX cycle period 2048 sf */
354    RGR_DRX_PRD_2560SF  = 2560 /**< DRX cycle period 2560 sf */
355 }RgrDrxCyclePrd;
356
357 /*rgr_x_001.main_11 ADD added changes for DRX*/
358 /**
359  * @brief DRX Short Cycle Timer values */ 
360 typedef enum _rgrDrxShortCycleTmr
361 {
362    RGR_DRX_SHRTCYCLE_MIN = 1,  /**< min DRX short cycle timer val */
363    RGR_DRX_SHRTCYCLE_MAX = 16  /**< max DRX short cycle timer val */
364 }RgrDrxShrtCycleTmr;
365
366 /*rgr_x_001.main_11 ADD added changes for R9*/
367 /**@name LTEMAC_R9 */
368 /**@{ */
369 #ifdef LTEMAC_R9
370 /**
371  * @brief DRX CQI Mask */ 
372 typedef enum _rgrDrxCqiMask
373 {
374    RGR_DRX_SETUP = 0  /**< DRX CQI mask value */
375 }RgrDrxCqiMask;
376 #endif
377 /**@} */
378       
379 /*rgr_x_001.main_11 ADD added changes for CQI management*/
380 /** 
381   @brief Enumerated P_A Values */
382 typedef enum 
383 {
384    RGRUE_DLPWRCNTRL_PA_DB_6 = 0,
385    RGRUE_DLPWRCNTRL_PA_DB_4DOT77,
386    RGRUE_DLPWRCNTRL_PA_DB_3,
387    RGRUE_DLPWRCNTRL_PA_DB_1DOT77,
388    RGRUE_DLPWRCNTRL_PA_DB0,
389    RGRUE_DLPWRCNTRL_PA_DB1,
390    RGRUE_DLPWRCNTRL_PA_DB2,
391    RGRUE_DLPWRCNTRL_PA_DB3
392 } RgrUeDlPwrCntrlPaCfg;
393
394 /*f1b_Sprint3*/
395 typedef enum rgrSchFrmt1b3TypEnum
396 {
397    RG_SCH_UCI_FORMAT1A_1B,
398    RG_SCH_UCI_FORMAT1B_CS,
399    RG_SCH_UCI_FORMAT3,
400    RG_SCH_UCI_FORMAT_NON_CA
401 }RgrSchFrmt1b3TypEnum;
402 /*f1b_Sprint3*/
403
404 /** @brief Transaction ID between MAC and RRM */
405 typedef struct rgrCfgTransId
406 {
407    U8 trans[RGR_CFG_TRANSID_SIZE]; /*!< RRM Transaction ID */
408 } RgrCfgTransId;
409
410 /** @brief  Downlink HARQ configuration per Cell */
411 typedef struct rgrDlHqCfg
412 {
413    U8  maxDlHqTx;            /*!< Maximum number of DL HARQ Transmissions.
414                                   Minimum value is 1, maximum can be defined
415                                   by the user */    
416    U8  maxMsg4HqTx;          /*!< Maximum msg4(Random Access) HARQ Transmissions
417                                   Minimum value is 1, Maximum can be defined by
418                                   the user */
419 } RgrDlHqCfg;
420
421 /** @brief Range of RNTIs managed by MAC */
422 typedef struct rgrRntiCfg
423 {
424    CmLteRnti startRnti;      /*!< Start RNTI for the range managed by MAC */
425    U16       size;           /*!< Indicates contiguous range of RNTI managed by
426                                   MAC */
427 } RgrRntiCfg;
428
429 /** @brief Downlink common channel code rate configuration per cell */
430 typedef struct rgrDlCmnCodeRateCfg
431 {
432    U16 bcchPchRaCodeRate;    /*!< BCCH on DLSCH, PCH and RARsp coding rate.
433                               * This defines the actual number of bits per 1024
434                               * physical layer bits  */
435    U16 pdcchCodeRate;        /*!< PDCCH code rate defines actual number of bits
436                               * per 1024 physical layer bits. This is used to
437                               * calculate aggregation level for PDCCH meant 
438                               * for broadcasting RNTIs  */
439    U8  ccchCqi;              /*!< Default CQI to be used for Msg4 in case where 
440                               * no CQI is available for the UE. ccchCqi ranges
441                               * from 1 to 15.*/
442 } RgrDlCmnCodeRateCfg;
443
444 /** @brief Control Format Indicator (CFI) configuration per cell */
445 typedef struct rgrCfiCfg
446 {
447    U8 cfi;                   /*!< CFI for PDCCH: a value in set {1,2,3} */
448 } RgrCfiCfg;
449
450 /** @brief PUSCH sub-band configuration per cell */
451 typedef struct rgrPuschSubBandCfg
452 {
453   U8 subbandStart;           /*!< Sub-band start */
454   U8 numSubbands;            /*!< Number of equal sized sub-bands */
455   U8 size;                   /*!< Size of a sub-band */ 
456   U8 dmrs[RGR_MAX_SUBBANDS]; /*!< DMRS information per sub-band */
457 } RgrPuschSubBandCfg;
458
459 /** @brief Uplink common channel code rate configuration per cell */
460 typedef struct rgrUlCmnCodeRateCfg
461 {
462    U8 ccchCqi;              /*!< CCCH CQI index, also used as default
463                              *  initial CQI for UEs */
464 } RgrUlCmnCodeRateCfg;
465
466 /* rgr_x_001.main_1: Removing unwanted srMcs Configuration structure */
467
468 /** @brief Target Uplink CQI to achieve through group power control configured per cell */
469 typedef struct rgrUlTrgCqiCfg
470 {
471    U8 trgCqi;                /*!< Target UL CQI to be achieved through power 
472                                control.Range is defined is between 1 to 15 */
473 } RgrUlTrgCqiCfg;
474 /** 
475   @brief Bandwidth configuration per cell */
476 typedef struct rgrBwCfg
477 {
478    U8 dlTotalBw;            /*!< Total Dowlink Bandwidth */
479    U8 ulTotalBw;            /*!< Total Uplink Bandwidth  */
480 } RgrBwCfg;
481
482 /** 
483   @brief PHICH configuration per cell */
484 typedef struct rgrPhichCfg
485 {
486    RgrPhichNg ngEnum;        /*!< Ng value for PHICH */
487    Bool       isDurExtend;   /*!< PHICH Duration: TRUE-extended/FALSE-normal */
488 } RgrPhichCfg;
489
490 /** 
491   @brief PUCCH configuration per cell */
492 typedef struct rgrPucchCfg
493 {
494    U8  resourceSize;       /*!< PUCCH resource-size or N^(2)_RB (in RBs) */
495    U16 n1PucchAn;          /*!< N^(1)_PUCCH */
496    U8  deltaShift;         /*!< Delta Shift for PUCCH: a value in set {1,2,3} */ 
497    U8  cyclicShift;        /*!< Cyclic Shift for PUCCH (N^(1)_CS): a value in
498                              range [0-7] */ 
499    U8  maxPucchRb;         /*!< The max number of RBs for PUCCH. This will be
500                                 used to limit the max CFI value when dynamic
501                                 CFI feature is enabled. If there is no 
502                                 limitation on the max PUCCH RBs, this variable
503                                 should be set to 0 */                             
504 } RgrPucchCfg;
505 /** 
506   @brief SRS configuration per cell */
507 typedef struct rgrSrsCfg
508 {
509    /*ccpu00130768 - ADD - SRS CFG Present flag to enable/disable cell specific SRS*/
510    Bool         isSrsCfgSetup;  /*!< cell specific SRS CFG enable/disable flag */
511    RgrSrsCfgPrd srsCfgPrdEnum; /*!< SRS configuration period (in subframes).*/
512    RgrSrsBwCfg  srsBwEnum;     /*!< SRS Bandwidth configuration per cell.
513                                  Range - [0-7] */
514    U8           srsSubFrameCfg;/*!< SRS subframe configuration index per cell.
515                                  Range - [0-15] */
516 } RgrSrsCfg;
517 /** 
518   @brief RACH configuration per cell */
519 typedef struct rgrRachCfg
520 {
521    U8  preambleFormat;        /*!< RACH Preamble format: a value in set {0,1,2,3} */
522    U8  raWinSize;             /*!< RA Window size */
523   /** @brief Ocassion at Which Random Access Is Expected */
524    struct raOccasionS
525    {
526       U8       size;         /*!< Number of subframe numbers */
527       RgrRaSfn sfnEnum;      /*!< System Frame Number */
528       U8       subFrameNum[RGR_MAX_SUBFRAME_NUM]; /*!< Subframe numbers */
529    } raOccasion;             /*!< Random access occasions */
530    U8  maxMsg3Tx;            /*!< Maximum number of message 3 transmissions */
531    U8  numRaPreamble;        /*!< Number of RA Preambles */
532    U8  sizeRaPreambleGrpA;   /*!< Size of RA Preamble in Group A */
533    U16 msgSizeGrpA;          /*!< MESSAGE_SIZE_GROUP_A */ 
534    U8  prachResource;        /*!< N^RA_PRB: PRACH resource for random access */
535 /**@name RGR_V1 */
536 /**@{ */
537 #ifdef RGR_V1
538    /* rgr_x_001.main_7: [ccpu00112372] Added contention resolution timer */
539    U8  contResTmr;           /*!< Contention resolution timer */
540 #endif
541 /**@} */
542 } RgrRachCfg;
543
544 /**
545   @brief SI Configuration per cell 
546 */
547 typedef struct rgrSiCfg
548 {
549    U8  siWinSize;  /*!< SI window size */
550    U8  retxCnt;    /*!< Retransmission count */
551    /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
552 /**@name RGR_SI_SCH */
553 /**@{ */
554 #ifdef RGR_SI_SCH
555 /*rgr_x_001.main_11 ccpu00115364 MOD changed U8 to enum for modPrd*/
556    RgrModPeriodicity  modPrd;     /*!< Modificiation Period for SI */  
557    U8  numSi;      /*!<Number of SIs, SI Id starts from 1 */
558    RgrSiPeriodicity siPeriodicity[RGR_MAX_NUM_SI]; /*!<Periodicities of SIs */
559    U16              minPeriodicity;  /*!< Minimum Periodicity Configured */
560 #endif/*RGR_SI_SCH*/
561 /**@} */
562 } RgrSiCfg;
563
564 /**
565  * @brief TPC RNTI Range */
566 typedef struct rgrTpcRntiCfg
567 {
568    CmLteRnti startTpcRnti;   /*!< Start RNTI for TPC */
569    U16       size;           /*!< Indicates contiguous range of RNTI */
570 } RgrTpcRntiCfg;
571
572 /* rgr_x_001.main_6 : documentation update. */
573 /**
574  * @brief Cell-specific power configuration */
575 typedef struct rgrUlPwrCfg
576 {
577    S8            p0NominalPusch;    /*!< P0_NOMINAL_PUSCH Currently this is
578                                          unused parameter */
579    RgrPwrAlpha   alpha;             /*!< Aplha, 3-bit cell-specific parameter
580                                         Currently this is unused parameter*/
581    S8            p0NominalPucch;    /*!< P0_NOMINAL_PUCCH 
582                                         Currently this is unused parameter */
583    S8            deltaPreambleMsg3; /*!< Delta_PREAMBLE_MSG3
584                                        Currently this is unused parameter */
585    RgrTpcRntiCfg pucchPwrFmt3;
586    RgrTpcRntiCfg pucchPwrFmt3a;
587    RgrTpcRntiCfg puschPwrFmt3;
588    RgrTpcRntiCfg puschPwrFmt3a;
589 } RgrUlPwrCfg;
590
591 /**
592  * @brief Cell-specific hopping configuration */
593 typedef struct rgrPuschCfg
594 {
595    U8       numSubBands; /*!< Number of sub-bands 
596                             Currently this is unused parameter */
597    Bool     isIntraHop;  /*!< Hopping mode inter/intra subframe
598                              Currently this is unused parameter */
599    U8       hopOffst;    /*!< Hopping offset {0 ... 98} 
600                               Currently this is unused parameter*/
601 } RgrPuschCfg;
602
603 /**
604  * @brief Number of bits in Code Book for different transmission modes */
605 typedef struct rgrCodeBookRstCfg
606 {
607    Bool   pres;          /*!< Code Book restriction present ?*/
608    U32    pmiBitMap[2];  /*!< Array for number of Bits for ports and TX Mode*/
609 } RgrCodeBookRstCfg;
610 /**
611  *  @brief Range of PDCCH Order Preamble Set managed by MAC */
612 typedef struct rgrPreambleSetCfg
613 {
614    Bool    pres;      /*!< Indicates if other configuration fields are valid */
615    U8      start;     /*!< Start Preamble ID for the range managed by MAC */
616    U8      size;      /*!< Indicates contiguous range of premables managaed by
617                         MAC */
618 } RgrPreambleSetCfg; 
619
620 /** 
621   @brief Logical channel configuration information for common channels */
622 typedef struct rgrCmnLchCfg
623 {
624    CmLteLcId     lcId;       /*!< Logical channel ID */
625    CmLteLcType   lcType;     /*!< Identifies the Logical channel type.lcType
626                                can take the following values:
627                                CM_LTE_LCH_BCCH
628                                CM_LTE_LCH_PCCH
629                                CM_LTE_LCH_CCCH
630                                CM_LTE_LCH_DCCH
631                                CM_LTE_LCH_DTCH */  
632    U8            dir;        /*!< Indicates Direction. Direction can take following 
633                                   values:
634                                   RGR_DIR_TX
635                                   RGR_DIR_RX
636                                   RGR_DIR_TX_RX */  
637    CmLteTrchType dlTrchType; /*!< Indicates type of DL transport channel:
638                                    Validated only for BCCH at MAC. DL Transport
639                                    channel type can take following values:
640                                    CM_LTE_TRCH_BCH 
641                                    CM_LTE_TRCH_PCH
642                                    CM_LTE_TRCH_DL_SCH  */ 
643    CmLteTrchType  ulTrchType; /*!< Indicates type of UL transport channel:
644                                    Validated only for CCCH at MAC 
645                                    UL Transport channel type can take following values:
646                                    CM_LTE_TRCH_RACH
647                                    CM_LTE_TRCH_UL_SCH */  
648 } RgrCmnLchCfg;
649
650 /** 
651   @brief RGR configuration for DLFS scheduler */ 
652 typedef struct rgrDlfsCfg
653 {
654   U8 isDlFreqSel;            /*!< Indicates if resource allocation is frequency
655                                   selective or not */
656   U8 thresholdCqi;           /*!< This value is used by the DL frequency 
657                                selective   scheduler. This is the threshold
658                                value below which the sub-band is not
659                                considered for allocation for a frequency
660                                selective cell. This value is utilized only if
661                                DL frequency selective scheduler is configured 
662                                Range is defined from 1 to 15 */
663 } RgrDlfsCfg;
664
665 /* LTE_ADV_FLAG_REMOVED_START */
666
667 /**
668  * @brief LTE Adv feature status */
669 typedef enum _rgrFeature
670 {
671    RGR_ABS  = 1 << 0, /**< ABS Present */
672    RGR_SFR  = 1 << 1, /**< SFR Present */
673    RGR_DSFR = 1 << 2, /**< DSFR Present */
674    RGR_RE   = 1 << 3  /**< RE Present */
675 #ifdef LTE_ADV
676    ,
677    RGR_SCELLRELEASE = 1 << 4,/**< Trigger Scell Release*/
678    RGR_SCELLADD     = 1 << 5,/**< Trigger Scell ADD*/
679    RGR_SCELLACT     = 1 << 6,/**< Trigger Scell Activate*/
680    RGR_SCELLDEACT   = 1 << 7 /**< Trigger Scell Deactivate*/
681 #endif
682 } RgrFeature;
683
684 /**
685  * @brief LTE Adv feature is enable/disable */
686 typedef enum _rgrFeaturestatus
687 {
688    RGR_DISABLE  = 0, /**< Feature disabled */
689    RGR_ENABLE   = 1 /**< Feature Enabled */ 
690 } RgrFeatureStatus;
691
692 /**
693  * @brief Pattern type for ABS */
694 typedef enum _rgrAbsPatternType
695 {
696    RGR_ABS_MUTE     = 1 << 0, /**< Cell will Mute in configured ABS pattern */
697    RGR_ABS_TRANSMIT = 1 << 1  /**< Cell will Transmit in configured ABS pattern */
698 } RgrAbsPatternType;
699
700 /**
701   @brief RGR RB range for SFR */
702 typedef struct rgrSfrRbRange
703 {
704    U8   startRb;  /*<! Start RB for cell edge user */
705    U8   endRb;    /*<! End RB for cell edge user */
706 } RgrSfrRbRange;
707
708 #ifdef TFU_UPGRADE
709 /**
710   @brief RGR Power threshold for SFR */
711 typedef struct rgrPwrThreshold
712 {
713    RgrUeDlPwrCntrlPaCfg            pLow;  /*<! Power level for cell center UE */
714    RgrUeDlPwrCntrlPaCfg            pHigh; /*<! Power level for cell edge UE */
715 } RgrPwrThreshold;
716 #endif
717
718 /**
719   @brief RGR configuration for SFR feature */
720 typedef struct rgrSfrConfig
721 {
722    RgrFeatureStatus   status; /*!< Indicate feature is enabled or disabled */
723    RgrSfrRbRange      cellEdgeRbRange; /*<! Range of RBS for cell edge UEs */
724 #ifdef TFU_UPGRADE
725    RgrPwrThreshold    pwrThreshold;    /*<! Power threshold for cell edge and cell center UE */
726 #endif   
727 } RgrSfrConfig;
728
729 /** This structure holds DSFR Config params **/
730 typedef struct rgrDsfrConfig
731 {
732    RgrFeatureStatus   status; /*!< Indicate feature is enabled or disabled */
733 } RgrDsfrConfig;
734
735 /**
736   @brief RGR configuration for LTE Advanced feature */
737 typedef struct rgrAbsConfig
738 {
739    RgrFeatureStatus status; /*!< Indicate feature is enabled or disabled */            
740    U32  absPatternType; /*!< Indicate it as Mute and/or Transmit type */
741    U8   absPattern[RGR_ABS_PATTERN_LEN]; /*!< ABS pattern */
742    U32  absLoadPeriodicity; /*!< ABS Load Ind periodicity in msec */ 
743 } RgrAbsConfig;
744
745 /**
746   @brief RGR configuration for LTE Advanced feature */
747 typedef struct rgrLteAdvancedCellConfig
748 {
749    U32                        pres;   /*!< To indicate presence of feature config */
750    RgrAbsConfig               absCfg; /*!< Configuration of ABS feature */
751    RgrSfrConfig               sfrCfg; /*!< Configuration of SFR feature */
752    RgrDsfrConfig              dsfrCfg;/*!< Configuration of DSFR feature */
753 } RgrLteAdvancedCellConfig;
754 /* LTE_ADV_FLAG_REMOVED_END */
755
756 /** @name LTE_TDD */
757 /** @{ */
758 #ifdef LTE_TDD
759 /** @brief PRACH resource information for TDD */
760 typedef struct rgrTddPrachInfo
761 {
762    U8        freqIdx;          /*!< Frequency Index */
763    RgrRaSfn  sfn;              /*!< Even/Odd/All Radio Frames */
764    U8        halfFrm;          /*!< First/Second Half Frame */
765    U8        ulStartSfIdx;     /*!< Uplink Start Subframe Index;
766                                     RGR_TDD_SPL_UL_IDX must be used
767                                     to configure special subframes */
768 } RgrTddPrachInfo;
769
770 /** @brief Set of PRACH information for TDD */
771 typedef struct rgrTddPrachRscInfo
772 {
773    U8               numRsc;           /*!< Number of PRACH resources*/
774    RgrTddPrachInfo  prachInfo[RGR_TDD_MAX_FREQ_RSRC];     /*!< PRACH information */
775 } RgrTddPrachRscInfo;
776 #endif /* LTE_TDD */
777 /** @} */
778
779 /** @brief set of PF Scheduler Parameters */ 
780 typedef struct rgrEnbPfs
781 {
782    U8           tptCoeffi;    /*!< Downlink Throughput Coeffiecient
783                                           Range 0 -10 */
784    U8           fairCoeffi;   /*!< Downlink Fairness Coeffiecient
785                                          Range 0 -10 */
786    U32          qciWgt[RGR_MAX_NUM_QCI];   /*!< Downlink Qci Weights */
787 } RgrEnbPfs;
788
789 /** 
790   @brief OPEN/CSG/HCSG Access Mode CELL 
791  */
792 typedef enum rgrCellAccsMode
793 {
794    RGR_CELL_ACCS_OPEN = 1,   /*!< Open Access Mode */
795    RGR_CELL_ACCS_CLOSED, /*!< Closed Mode */
796    RGR_CELL_ACCS_HYBRID  /*!< Hybrid Mode */
797 } RgrCellAccsMode;
798
799 /**
800 @brief Control Command Type
801 */
802 typedef enum rgrCellCntrlCmdType
803 {
804    RGR_CNTRL_CMD_RACH_OVRLD=1,
805    RGR_CNTRL_CMD_CPU_OVRLD
806 }RgrCellCntrlCmdType;
807
808 /** 
809   @brief Control Commands to alter CELL performance  
810  */
811 typedef struct rgrCellCntrlCmdCfg
812 {
813    RgrCellCntrlCmdType cmdType;
814    /** @brief Cntrl Cmd Description */
815    union rgrCellCmdDesc 
816    {
817       /** @brief RACH OverLoad Cntrl Cmd Description */
818       struct rachOvrLd
819       {
820          Bool backOffEnb; /*!< backoff RACH during overlaod */
821          U8   backOffVal; /*!< backoff value during overload */
822       }rachOvrLd;
823
824       /** @brief CPU OverLoad Cntrl Cmd Description */
825       struct cpuOvrLd
826       {
827          U8 instruction;  /*!< CPU Over Load Cntrl Instruction */
828       }cpuOvrLd;
829    }cmdDesc;
830 } RgrCellCntrlCmdCfg;
831
832
833 /**
834   * @brief
835   * eNB level Scheduler Configurations
836   * along with other PFS config Parameters
837   */
838 typedef struct macSchedGnbCfg
839 {
840    U8         numTxAntPorts;    /*!< Number of Tx antenna ports */
841    U8         ulSchdType;     /*!< Indicates which UL scheduler to use, range
842                                * is 0..(number of schedulers - 1) */
843    U8         dlSchdType;     /*!< Indicates which DL scheduler to use, range
844                                * is 0..(number of schedulers - 1) */
845    U8         numCells;       /*!< Max number of cells */
846    U8         maxUlUePerTti;  /*!< Max number of UE in UL per TTI */
847    U8         maxDlUePerTti;  /*!< Max number of UE in DL per TTI */
848 }MacSchedGnbCfg;
849 /**
850   * @brief
851   * eNB level Scheduler Configurations
852   * along with other PFS config Parameters
853   */
854 typedef struct rgrSchedEnbCfg
855 {
856    U8         numTxAntPorts;    /*!< Number of Tx antenna ports */
857    U8         dlSchdType;     /*!< Indicates which DL scheduler to use, range
858                                * is 0..(number of schedulers - 1) */
859    union       rgrDlSchInfoS
860    {
861       RgrEnbPfs     dlPfs;      /*!< Information related to DL PFS 
862                                   Scheduler */
863    } dlSchInfo;
864    U8         ulSchdType;     /*!< Indicates which UL scheduler to use, range
865                                 is 0..(number of schedulers - 1) */
866    union       rgrUlSchInfoS
867    {
868       RgrEnbPfs     ulPfs;      /*!< This structure holds the parameters   
869                                   to be configured for PFS scheduler.
870                                   These values are utilized only when
871                                   if PFS scheduler is being configured  
872                                   There is no range defined for the  
873                                   values, However the product of all
874                                   three priorities must not exceed the
875                                   range of U32 */
876    } ulSchInfo;
877    RgrCellAccsMode     accsMode;       /*!< Cell Access Mode */ 
878 #ifdef RG_5GTF
879    Bool                isDynTddEnbld;  /*!< Dynamic TDD config */
880 #endif
881 } RgrSchedEnbCfg;
882
883 /*rgr_x_001.main_9 - Added support for SPS*/
884 /*rgr_x_001.main_11 MOD added comments for doxygen*/
885 /** @name LTEMAC_SPS */
886 /** @{ */
887 /** 
888   @brief DL SPS configuration parameters per UE 
889 TODO: Check if this is to be added to re-configuration as well
890  */
891 /* SPS_DEV */
892 typedef struct rgrSpsCellCfg
893 {
894    U8        maxSpsDlBw; /*!< BW used of SPS Scheduling */ 
895                                                             
896    U16       maxSpsUePerDlSf; /*!< Maximum DL SPS UEs that can be 
897                                                            scheduled in a TTI */
898    U16       maxSpsUePerUlSf; /*!< Maximum UL SPS UEs that can be scheduled
899                                 in a TTI */
900 } RgrSpsCellCfg;
901
902 /** 
903   @brief OPEN/CSG/HCSG Access Mode Configuration parameters for CELL 
904  */
905 typedef struct rgrCellCsgParamCfg
906 {
907    U8   minDlResNonCsg;  /*!< Min PDSCH Resources for Non-CSG Members */
908    U8   minUlResNonCsg;  /*!< Min PUSCH Resources for Non-CSG Members */
909 } RgrCellCsgParamCfg;
910
911 /** @brief LAA Cell Configuration */
912 typedef struct rgrLteUCfg
913 {
914    Bool    isLaaCell;     /*<! To distinguish between LAA and LTE-U cell*/
915 }RgrLteUCfg;
916 #ifdef EMTC_ENABLE
917 /* emtc */
918 typedef struct rgrEmtcSiSchedInfo
919 {
920    U8   emtcSiNarrowBand; /*!< narrowband assigned to SI */
921    U16  emtcSiTbs;         /*!< tbs value for SI */
922 }RgrEmtcSiSchedInfo;
923
924 typedef struct rgrEmtcPrmbleMap
925 {
926      U8  firstPreamble;       /*!< for each CE mode, starting preamble */
927      U8  lastPreamble;        /*!< for each CE mode, starting preamble */
928 }RgrEmtcPrmbleMap;
929
930 typedef struct rgrEmtcRachCElevelInfoLst
931 {
932    U8                emtcRarHopping;         /*!< by defualt off */
933    U16               raEmtcWinSize;          /*!< RA Window size */
934    U16               raEmtcContResTmr;       /*!< Contension Resolution */
935    U16               emtcPreambleTransMax;   /*!< PreambleTransMax  */
936    RgrEmtcPrmbleMap  emtcPreambleMap;           /*!< preamble mapping Info */ 
937 }RgrEmtcRachCElevelInfoLst;
938
939 typedef struct rgrEmtcRachCfg
940 {
941    U8 emtcCeLvlSupported;
942    RgrEmtcRachCElevelInfoLst ceLevelInfo[RGR_MAX_CE_LEVEL]; /* for all CE levels 0,1,2,3*/
943 }RgrEmtcRachCfg;
944
945 typedef struct rgrEmtcPdschCfg
946 {
947    U16 emtcMaxRepCeModeA;   /*!< max repetition for CE ModeA */ 
948    U16 emtcMaxRepCeModeB;   /*!< max repetition for CE ModeB */ 
949 }RgrEmtcPdschCfg;
950
951 typedef struct rgrEmtcPuschCfg
952 {
953    U16 emtcMaxRepCeModeA;  /*!< max repetition for CE ModeA */ 
954    U16 emtcMaxRepCeModeB;  /*!< max repetition for CE ModeB */
955    U8  emtcHoppingOffset;  /*!< Hopping offset */
956 }RgrEmtcPuschCfg;
957
958 typedef struct rgrEmtcPrachCEParamLst
959 {
960    U8   emtcPrachCfgIdx;         /*!< Prach config index */
961    U8   emtcPrachFreqOffset;     /*!< Prach Frequency Offset */
962    U16  emtcPrachStartSubFrame;  /*!< Starting sub frame */
963    U8   emtcMaxPremAttemptCE;    /*!< max preamble attempt  CE */
964    U8   emtcNumRepPerPreambleAtt;/*!< num of repetition per preamble attempt*/
965    U8   emtcNumMpdcchNBtoMonitor;/*!< num of Mpddch NB to monitor */
966    U8   emtcMpdcchNBtoMonitor[RGR_MAX_NUM_MPDCCH_MONITOR];/*!<  Mpddch NB to monitor */
967    U16  emtcMpdcchNumRep;        /*!< num of Mpddch Number of repetition */
968    U8   emtcPrachHoppingCfg;     /*!< num of Prach Hopping config */
969 }RgrEmtcPrachCEParamLst;
970
971 typedef struct rgrEmtcPrachCfg
972 {
973    U8           emtcMpdcchStartSFCssRaFdd;  /*!< mdpcch start SubFrame Ra type2 */
974    U8           emtcPrachHopingOffset;      /*!< prach hopping offset value */
975    U8           emtcInitialCElevel;         /*!< Initial CE level to start with */
976    RgrEmtcPrachCEParamLst emtcPrachCEparmLst[RGR_MAX_CE_LEVEL];
977 }RgrEmtcPrachCfg;
978
979
980 /*Changes by Simran*/
981 typedef struct rgrFddDownlinkOrTddSubframeBitmapLC
982 {
983    U8 sfnPtnChoice;
984    union
985    {
986       U16 ptn10;
987       U32 ptn40[2];
988    }u;
989 }RgrFddDownlinkOrTddSubframeBitmapLC;
990
991
992 typedef struct rgrEmtcSiCfg
993 {
994    Bool             siHoppingEnable;      /*!< SI Hopping enabled or not */
995    RgrModPeriodicity  modPrd;     /*!< Modificiation Period for SI */  
996    U8               siWinSizeBr;          /*!< SI window size */
997    U8               sib1Repetition;       /*!< sib1-br repetition */
998    U8               siRepetition;         /*!< SI repetition pattern
999                                                everyRF,every2ndRF,every4thRF,every8thRF*/
1000    U16              startSymbolLc;
1001    /*Changes by Simran*/
1002    RgrFddDownlinkOrTddSubframeBitmapLC    fddDLOrTddSfBitmapLC;
1003    //U16              fddDlOrTddSfBitmapBR; /*!< 10 bit value for sending SI*/
1004    RgrEmtcSiSchedInfo schdInfo[RGR_MAX_NUM_SI];
1005    U8               numSi;      /*!<Number of SIs, SI Id starts from 1 */
1006    RgrSiPeriodicity siPeriodicity[RGR_MAX_NUM_SI]; /*!<Periodicities of SIs */
1007 } RgrEmtcSiCfg;
1008
1009 typedef struct rgrEmtcPucchCfg
1010 {
1011    U16       emtcN1pucchAnInfoLst[RGR_MAX_CE_LEVEL];  /*!< Max CE level is 4 */
1012    U8        emtcPucchNumRepCEMsg4Lvl0;           /*!< update the level 0 */
1013    U8        emtcPucchNumRepCEMsg4Lvl1;           /*!< update the level 1 */
1014    U8        emtcPucchNumRepCEMsg4Lvl2;           /*!< update the level 2 */
1015    U8        emtcPucchNumRepCEMsg4Lvl3;           /*!< update the level 3 */
1016 }RgrEmtcPucchCfg;
1017
1018 typedef struct rgrEmtcRntiCfg
1019 {
1020    CmLteRnti rntiCeModeAStart;      /*!< EMTC Start RNTI for the range managed by MAC */
1021    CmLteRnti rntiCeModeARange;      /*!< EMTC Range of RNTI for the CEMODE A */
1022    U16       rntiCeModeBStart;      /*!< EMTC Start RNTI for the range managed by MAC */
1023    CmLteRnti rntiCeModeBRange;      /*!< EMTC Range of RNTI for the CEMODE B */
1024    U16       size;           /*!< Indicates contiguous range of RNTI managed by EMTC
1025                                   MAC */
1026 } RgrEmtcRntiCfg;
1027
1028 typedef struct rgrEmtcCellCfg
1029 {
1030    U16               pci;            /*!< Physical Cell ID */
1031    U32               emtcT300Tmr;    /*!< T300 timer as per Rel13 */
1032    U32               emtcT301Tmr;    /*!< T301 timer as per Rel13 */
1033    RgrEmtcSiCfg      emtcSiCfg;      /*!< SI configuration */
1034    RgrEmtcRachCfg    emtcRachCfg;    /*!< Rach config as per Rel13*/
1035    RgrEmtcPdschCfg   emtcPdschCfg;   /*!< Pdsch config as per Rel13*/
1036    RgrEmtcPuschCfg   emtcPuschCfg;   /*!< Pusch config as per Rel13*/
1037    RgrEmtcPrachCfg   emtcPrachCfg;   /*!< Prach config as per Rel13*/
1038    RgrEmtcPucchCfg   emtcPucchCfg;   /*!< Pucch config as per Rel13*/
1039    RgrEmtcRntiCfg    emtcMacRnti;
1040    U8                emtcPdschNbIdx;
1041    U8                emtcMpdcchNbIdx;
1042    U8                emtcPuschNbIdx;
1043 }RgrEmtcCellCfg;
1044
1045 #endif
1046
1047 #ifdef RG_5GTF
1048 typedef enum rgSchSfType
1049 {
1050    RG_SCH_SF_DLCNTRL_DLDATA = 0,
1051    RG_SCH_SF_DLCNTRL_DLDATA_ULCNTRL,
1052    RG_SCH_SF_DLCNTRL_ULDATA,
1053    RG_SCH_SF_DLCNTRL_ULDATA_ULCNTRL
1054 }RgSchSfType;
1055
1056 typedef struct rgr5gtfCellCfg
1057 {
1058    RgSchSfType     dynConfig[MAX_5GTF_SUBFRAME_INFO];
1059    U8              uePerGrp;
1060    U8              ueGrpPerTti;
1061    U8              numUes;
1062    U8              numOfCC;
1063    U8              bwPerCC;
1064    U8              cfi;
1065 }Rgr5gtfCellCfg;
1066 #endif
1067
1068 /** @brief This enum defines dl ul transmission periodicity as per spec 38.331
1069  * servingCellConfigCommon */
1070 typedef enum rgrDlUlTxPrdcty
1071 {
1072    RGR_DLULTXPRDCTY_MS0DOT5    = 0,  /*!<Periodicity of 0.5 ms*/
1073    RGR_DLULTXPRDCTY_MS0DOT625, /*!<Periodicity of 0.625 ms*/
1074    RGR_DLULTXPRDCTY_MS1,       /*!<Periodicity of 1 ms */
1075    RGR_DLULTXPRDCTY_MS1DOT25,  /*!<Periodicity of 1.25 ms */
1076    RGR_DLULTXPRDCTY_MS2,       /*!<Periodicity of 2 ms */
1077    RGR_DLULTXPRDCTY_MS2DOT5,   /*!<Periodicity of 2.5 ms */
1078    RGR_DLULTXPRDCTY_MS5,       /*!<Periodicity of 5 ms */
1079    RGR_DLULTXPRDCTY_MS10       /*!<Periodicity of 10 ms */
1080 }RgrDlUlTxPrdcty;
1081
1082 #if 0
1083 typedef struct rgrSlotCfg
1084 {
1085 Bool duplexMode;  /*!< FDD:0, TDD:1 */
1086 U32  slotFrmt[RGR_MAX_SLOTS_IN_10MS]; /*!< Least significant 2 bits indicates:
1087                                         00-DL, 01-UL, 10-Flexi, 11-Mixed
1088                                         Rest 28 bits indicates 14 symbols
1089                                         types(DL/UL/Flexi) 2 bits for
1090                                         each symbol*/
1091 RgrDlUlTxPrdcty  dlUlTxPrdcty;       /*!< dl-ul-Transmission periodicity
1092                                           as per 38.331 in servingCellConfigCommon*/
1093
1094 }RgrSlotCfg;
1095 #endif
1096 /** @} */
1097 /** @brief Cell Configuration at RRM */
1098 typedef struct rgrCellCfg
1099 {
1100
1101 #if 0
1102    CmLteCellId         cellId;         /*!< Cell ID */
1103    U16                 pci;            /*!< Physical Cell ID */
1104    U8                  maxMsg3PerUlSlot; /*!< Maximum MSG3 that may be scheduled
1105                                             per uplink slot */
1106    U8                  maxUePerUlSlot;   /*!<Maximum UE scheduled per UL slot */
1107    U8                  maxUePerDlSlot;   /*!<Maximum UE scheduled per DL in a TTI */
1108    Bool                isCpUlExtend;   /*!< Cyclic prefix: TRUE-extended, 
1109                                          FALSE-normal for UL */
1110    Bool                isCpDlExtend;   /*!< Cyclic prefix: TRUE-extended, 
1111                                          FALSE-normal for DL*/
1112    RgrDlHqCfg          dlHqCfg;        /*!< HARQ related configuration */ 
1113    RgrCfiCfg           cfiCfg;         /*!< CFI for PDCCH */
1114    RgrUlTrgCqiCfg      trgUlCqi;       /*!< Target UL CQI */
1115    RgrDlCmnCodeRateCfg dlCmnCodeRate;  /*!< Coding rate for common DL channels: 
1116                                          Expressed in multiples of 1024 */
1117    RgrUlCmnCodeRateCfg ulCmnCodeRate;  /*!< Coding rate for common UL channels: 
1118                                          Expressed as index into CQI table */
1119    RgrBwCfg            bwCfg;          /*!< Bandwidth configuration */
1120    RgrUlPwrCfg         pwrCfg;         /*!< Cell-specific power configuration */
1121    RgrPuschCfg         puschCfg;       /*!< Cell-specific hopping configuration */
1122    RgrPreambleSetCfg   macPreambleSet; /*!< Range of PDCCH Order Preamble IDs
1123                                          to be managed by MAC */
1124
1125    U16                bcchTxPwrOffset; /*!< Tx Pwr Offset for BCCH tx on PDSCH.
1126                                          Offset to the reference signal 
1127                                          power. Value: 0 -> 10000, 
1128                                          representing -6 dB to 4 dB in 0.001
1129                                          dB steps */                                    
1130    U16                pcchTxPwrOffset; /*!< Tx Pwr Offset for PCCH tx.
1131                                          Offset to the reference signal 
1132                                          power. Value: 0 -> 10000, 
1133                                          representing -6 dB to 4 dB in 0.001
1134                                          dB steps */                                    
1135    U16                rarTxPwrOffset; /*!< Tx Pwr Offset for RAR tx.
1136                                         Offset to the reference signal 
1137                                         power. Value: 0 -> 10000, 
1138                                         representing -6 dB to 4 dB in 0.001
1139                                         dB steps */          
1140    U8                   nrMu; /*!<Indicates the number of Slot for a radio frame*/
1141    U8                   tbScalingField;/*!< TB Scaling Factor used while
1142                                          calucating TBS for P-RNTI, or
1143                                          RA-RNTI*/
1144    RgrSlotCfg        slotCfg;         /*!< Slot config as per 38.211, sec
1145                                               11.1 and
1146                                               38.331
1147                                               tdd-UL-DL-configcommon */
1148 #if 0 //TODO: uncomment after study
1149    RgrDataDmrsTypAPosEnum dmrsTypAPos;      /*!< Position of (first) DL DM-RS is
1150                                               included in NR-PBCH payload. value is 2 or 3 */
1151
1152    RgrSsPbchBlockCfg  ssPbchCfg;  /*!< SS PBCH Block configuration */
1153    RgrFreqRangeType  freqRangeType;       /*!<Cell Frequency Range type (<=
1154                                             3Ghz, 3 < x <= 6Ghz, > 6Ghz)*/
1155    RgrType0PdcchCSSCfg type0PdcchCSSCfg; /*!< Type 0 CSS Config params */
1156    RgrFreqInfoDlCfg      freqInfoDlCfg;    /*!< DL Frequency information
1157                                              config  */
1158    RgrSulCellCfg         sulCellCfg;   /*!< SUL Cell config */
1159    RgrUlCfgCmn         ulCmnCfg;  /*!< initial UL Bwp and Ul freq
1160                                     information */
1161 #endif
1162    Bool                initDlBwpPres; /*!< intial common
1163                                         DL BWP is present or not */
1164    RgrBwpDlCmn      initDlBwp;    /*!<Initial Dl BWP*/
1165    RgrAddlBwpCfg    addlBwpCfg; /*!<Additional BWP Configuration apart from
1166                     Initial  BWP*/
1167
1168    RgrCellNsCfgInfo   nsCfg;   /*!< NSI Cfg */
1169
1170    RgrCellPfsCfgInfo   pfsCfg;   /*!< Pfs Config */
1171    Bool   isRateMatchSsPbchEnbld; /*!<PDSCH rate match enabled for SS PBCH */
1172    Bool   isRateMatchCsetEnbld; /*!<PDSCH rate match enabled */
1173 #endif
1174 #if 1
1175    CmLteCellId         cellId;         /*!< Cell ID */
1176    Inst                macInst;        /*!< MAC instance that is serving the cell */
1177    /**@name RGR_V1 */
1178    /**@{ */
1179 #ifdef RGR_V1
1180    /* rgr_x_001.main_7: [ccpu00112789] Added configuration for maximum number
1181       of  MSG3s */
1182    U8                  maxMsg3PerUlSf; /*!< Maximum MSG3 that may be scheduled
1183                                          per uplink subframe */
1184 #endif /* RGR_V1 */
1185    /** @} */
1186    U8                  maxUePerUlSf;   /*!< Maximum UEs that may be scheduled
1187                                          per uplink subframe. Currently this is
1188                                          unused parameter */
1189    U8                  maxUePerDlSf;   /*!< Maximum UE to be considered for DL 
1190                                          scheduling in a TTI.Currently this is
1191                                          unused parameter */
1192    /*[ccpu00138609]-ADD- Max limit for Msg4/DL CCCH Ues */
1193    U8                  maxCcchPerDlSf; /*!< Max num of Msg4/DL CCCH SDU UEs that
1194                                          can be scheduled per TTI. It cannot 
1195                                          exceed max UE per Dl sf. If set as
1196                                          0, this will be a don't care 
1197                                          parameter */ 
1198    U8                  maxUlBwPerUe;   /*!< Maximum number of RBs that can be  
1199                                          allocated to an UE in an UL subframe
1200                                          Maximum value is defined by 
1201                                          RG_SCH_CMN_MAX_UL_BW_PER_UE in   
1202                                          rg_env.h. This can be modified as
1203                                          per need basis */
1204    U8                  maxDlBwPerUe;   /*!< Maximum number of RBs that can be    
1205                                          allocated to an UE in an DL subframe  
1206                                          Maximum value is defined by     
1207                                          RG_SCH_CMN_MAX_DL_BW_PER_UE in
1208                                          rg_env.h. This can be modified as 
1209                                          per need basis */
1210    U8                  maxDlRetxBw;    /*!< Maximum number of RBs that can be     
1211                                          allocated for retransmission in DL
1212                                          Maximum value is defined by 
1213                                          RG_SCH_CMN_MAX_DL_RETX_BW in   
1214                                          rg_env.h. This can be modified as   
1215                                          per need basis */
1216    U8                  maxDlUeNewTxPerTti; /*!< Maximum number of UEs that can  
1217                                              be scheduled for a new DL    
1218                                              transmission in a TTI. Value should
1219                                              be configured by the user as per  
1220                                              specific needs */ 
1221    U8                  maxUlUeNewTxPerTti;  /*!< Maximum number of UEs that can 
1222                                               be scheduled for a new UL 
1223                                               transmission in a TTI. Value should 
1224                                               be configured by the user as per  
1225                                               specific needs */
1226    Bool                isCpUlExtend;   /*!< Cyclic prefix: TRUE-extended, 
1227                                          FALSE-normal for UL */
1228    Bool                isCpDlExtend;   /*!< Cyclic prefix: TRUE-extended, 
1229                                          FALSE-normal for DL*/
1230    Bool                cellModSchm;    /*!< TRUE indicates 64QAM
1231                                          allowed while FALSE indicates 64QAM 
1232                                          is not allowed. Currently this is unused 
1233                                          parameter */
1234    S8                  pMax;           /*!< To limit the Cell Uplink 
1235                                          transmission power */
1236
1237    U8                  dlfsSchdType;   /*!< Indicates which DLFS scheduler to use, range
1238                                         * is 0..(number of schedulers - 1) */
1239    RgrDlHqCfg          dlHqCfg;        /*!< HARQ related configuration */ 
1240    RgrRntiCfg          macRnti;        /*!< Range of RNTIs to be managed by MAC */   
1241    RgrCfiCfg           cfiCfg;         /*!< CFI for PDCCH */
1242    RgrUlTrgCqiCfg      trgUlCqi;       /*!< Target UL CQI */
1243    RgrDlCmnCodeRateCfg dlCmnCodeRate;  /*!< Coding rate for common DL channels: 
1244                                          Expressed in multiples of 1024 */
1245    RgrPuschSubBandCfg  puschSubBand;   /*!< UL sub-band information */
1246    RgrUlCmnCodeRateCfg ulCmnCodeRate;  /*!< Coding rate for common UL channels: 
1247                                          Expressed as index into CQI table */
1248    RgrDlfsCfg          dlfsCfg;        /*!< Configuration for DLFS scheduler */
1249    RgrBwCfg            bwCfg;          /*!< Bandwidth configuration */
1250    RgrPhichCfg         phichCfg;       /*!< PHICH configuration information */
1251    RgrPucchCfg         pucchCfg;       /*!< PUCCH configuration information */
1252    RgrSrsCfg           srsCfg;         /*!< SRS configuration information. Currently 
1253                                          this is unused */ 
1254    RgrRachCfg          rachCfg;        /*!< RACH configuration */
1255    RgrSiCfg            siCfg;          /*!< SI configuration */
1256    RgrUlPwrCfg         pwrCfg;         /*!< Cell-specific power configuration */
1257    RgrPuschCfg         puschCfg;       /*!< Cell-specific hopping configuration */
1258    RgrPreambleSetCfg   macPreambleSet; /*!< Range of PDCCH Order Preamble IDs
1259                                          to be managed by MAC */
1260    U8                  numCmnLcs;      /*!< Number of common logical channels*/
1261    RgrCmnLchCfg        cmnLcCfg[RGR_MAX_CMN_LC_PER_CELL];  /*!< Configuration for 
1262                                                              common logical channels */
1263    RgrCellCsgParamCfg  csgParamCfg;    /* Cell-specific configuration for CSG */
1264    /** @name LTE_TDD */
1265    /** @{ */
1266 #ifdef LTE_TDD
1267    U8                  ulDlCfgIdx;     /*!< UL-DL configuration index*/
1268    U8                  spclSfCfgIdx;   /*!< Special Subframe configuration index*/
1269    RgrTddPrachRscInfo  prachRscInfo;   /*!< PRACH information */
1270 #endif /* LTE_TDD */
1271    /** @} */
1272    /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
1273    /* rgr_x_001.main_4: Added 0 as valid value to shut off RGR TICKs. */
1274    /** @name RGR_RRM_TICK */
1275    /** @{ */
1276    U8                  rrmTtiIndPrd;   /*!< Periodicity of TTI indication from
1277                                          MAC towards RGR user. Range [0-255]. A
1278                                          value of 1 means one tick per System
1279                                          Frame and 2 means one tick per 2 System
1280                                          Frame, and so on.
1281                                          A value of 0 implies no ticks. */
1282    /** @} */
1283    /*rgr_x_001.main_9 - Added support for SPS*/
1284    /** @name LTEMAC_SPS */
1285    /** @{ */
1286    RgrSpsCellCfg    spsCfg;  /* Cell-specific configuration for DL SPS */
1287    /* LTE_ADV_FLAG_REMOVED_START */
1288    RgrLteAdvancedCellConfig  rgrLteAdvCfg; /*!< RGR Configuration of LTE Adv */
1289    /* LTE_ADV_FLAG_REMOVED_END */
1290 #ifdef AIRSPAN
1291    U8                dlCqiOverrideFloor;
1292    U8                dlCqiOverrideCeil;
1293    U8                ulCqiOverrideFloor;
1294    U8                ulCqiOverrideCeil;
1295 #endif  
1296    /** @} */
1297    U16 t300TmrVal;               /*!< t300Timer value configured in Frames */
1298
1299    /* ccpu00132314-ADD-Tx power offsets for Common PDSCH transmissions */                                   
1300    U16                bcchTxPwrOffset; /*!< Tx Pwr Offset for BCCH tx on PDSCH.
1301                                          Offset to the reference signal 
1302                                          power. Value: 0 -> 10000, 
1303                                          representing -6 dB to 4 dB in 0.001
1304                                          dB steps */                                    
1305    U16                pcchTxPwrOffset; /*!< Tx Pwr Offset for PCCH tx.
1306                                          Offset to the reference signal 
1307                                          power. Value: 0 -> 10000, 
1308                                          representing -6 dB to 4 dB in 0.001
1309                                          dB steps */                                    
1310    U16                rarTxPwrOffset; /*!< Tx Pwr Offset for RAR tx.
1311                                         Offset to the reference signal 
1312                                         power. Value: 0 -> 10000, 
1313                                         representing -6 dB to 4 dB in 0.001
1314                                         dB steps */          
1315    /* ccpu00138898 - Added Tx pwr offset for PHICH Tx*/
1316    U16                phichTxPwrOffset; /*!< Tx Pwr Offset for PHICH tx.
1317                                           Offset to the reference signal 
1318                                           power. Value: 0 -> 10000, 
1319                                           representing -6 dB to 4 dB in 0.001
1320                                           dB steps */                                    
1321    Bool               isDynCfiEnb;   /*!< To indicate whether Dynamic CFI is enabled 
1322                                        or not */ 
1323    Bool               isAutoCfgModeEnb;   /*!< To indicate whether AutoCfg Mode
1324                                             change is enabled or not */ 
1325    RgrUeDlPwrCntrlPaCfg msg4pAVal;      /*!< Default value (Enum) of PA that is 
1326                                           used by Scheduler for msg4 */        
1327    RgrLteUCfg    lteUCfg;               /*!< Flag to identify LAA or LTE-U*/
1328 #ifdef LTE_ADV
1329    Bool          isPucchFormat3Sptd;    /*!< Flag for Format 3 Support */
1330 #endif
1331 #ifdef EMTC_ENABLE
1332    Bool               emtcEnable;
1333    RgrEmtcCellCfg     emtcCellCfg;   
1334 #endif
1335 #ifdef RG_5GTF
1336    Rgr5gtfCellCfg     Cell5gtfCfg;
1337 #endif
1338 #endif
1339 } RgrCellCfg;
1340 /** 
1341   @brief Downlink Aperiodic CQI reporting related configuration per UE */
1342 typedef struct rgrUeAprdDlCqiCfg
1343 {
1344    Bool                pres;          /*!< Indicates presence of aperiodic 
1345                                            DL CQI configuration */
1346    RgrAprdCqiMode     aprdModeEnum;   /*!< Aperiodic CQI reporting mode */
1347    /* These two fields are only valid for Pcell*/
1348 #ifdef LTE_ADV
1349    U8                 triggerSet1;    /*!< Trigger set one*/
1350    U8                 triggerSet2;    /*!< Trigger set two*/
1351 #endif
1352 } RgrUeAprdDlCqiCfg;
1353
1354 /* rgr_x_001.main_10. Added changes of TFU_UPGRADE */
1355 #ifndef TFU_UPGRADE
1356 /** 
1357   @brief Downlink Periodic CQI reporting related configuration per UE */
1358 typedef struct rgrUePrdDlCqiCfg 
1359 {
1360    Bool                pres;          /*!< Indicates presence of periodic 
1361                                            DL CQI configuration. */
1362    RgrPrdCqiMode       prdModeEnum;   /*!< Peiodic CQI reporting mode. */
1363    RgrCqiPrdicity      prdicityEnum;  /*!< Periodicity values for CQI. 
1364                                            Currently, this is unused parameter. */
1365    U8                  subframeOffst; /*!< Subframe offset. 
1366                                            Currently, this is unused parameter. */
1367    S8                  cqiOffst;      /*!< Delta^cqi_offset: (actual_value*10).
1368                                            Currently, this is unused parameter. */ 
1369    U8                  k;             /*!< k value: range [1-4] */
1370    U16                 cqiPmiCfgIdx;  /*!< CQI-PMI configuration index. */
1371 } RgrUePrdDlCqiCfg;
1372
1373 #else /* TFU_UPGRADE */
1374
1375 /**
1376 * @brief Periodic CQI Setup configuration parameters information 
1377 */
1378 /* Reference: 36.313: CQI-ReportPeriodic */
1379 typedef struct rgrUeDlPCqiSetup
1380 {
1381       U16  cqiPResIdx;  /*!< cqi-PUCCH-ResourceIndex (0.. 1185) */
1382       U16  cqiPCfgIdx;  /*!< cqi-pmi-ConfigIndex (0..1023) */
1383       U8   cqiRepType;  /*!< Wideband CQI = 1  Subband CQI =2 */
1384       U8   k;           /*!< Ref: 36.213 [23, 7.2.2] (1..4). 
1385                              Valid only for Subband CQI */
1386       U8   riEna;       /*!< Rand Indicator is Enabled TRUE(1) FALSE(0) */
1387       U16  riCfgIdx;    /*!< ri-ConfigIndex    (0..1023)  */
1388       Bool sANCQI;      /*!< simultaneousAckNackAndCQI TRUE(1) FALSE(0) */
1389       RgrPrdCqiMode prdModeEnum;   /*!< Peiodic CQI reporting mode */
1390 }RgrUeDlPCqiSetup;
1391
1392
1393 /**
1394 * @brief Periodic CQI/PMI/RI configuration parameters information 
1395 */
1396 typedef struct  rgrUeDlPCqiCfg
1397 {
1398    U8                 type;               /*!< Setup(1) or Release(0) */    
1399    RgrUeDlPCqiSetup   cqiSetup;           /*!< Periodic CQI Setup */
1400 } RgrUePrdDlCqiCfg;
1401
1402
1403
1404 /*rgr_x_001.main_11 MOD added comments*/
1405 /** 
1406 * @ brief Different values for UL SRS BW information 
1407 */
1408 typedef enum rgrUlSrsBwInfo
1409 {
1410    RGR_ULSRS_BW_0 = 0, /**< UL SRS BW info 0 */  
1411    RGR_ULSRS_BW_1 = 1, /**< UL SRS BW info 1 */  
1412    RGR_ULSRS_BW_2 = 2, /**< UL SRS BW info 2 */
1413    RGR_ULSRS_BW_3 = 3  /**< UL SRS BW info 3 */
1414 } RgrUlSrsBwInfo;
1415
1416
1417 /*rgr_x_001.main_11 MOD added comments*/
1418 /** 
1419 * @brief Different values for UL SRS Hoping BW information 
1420 */
1421 typedef enum rgrUlSrsHoBwInfo
1422 {
1423    RGR_ULSRS_HOP_BW_0 = 0,  /**< UL SRS Hopping BW info 0 */ 
1424    RGR_ULSRS_HOP_BW_1 = 1,  /**< UL SRS Hopping BW info 1 */
1425    RGR_ULSRS_HOP_BW_2 = 2,  /**< UL SRS Hopping BW info 2 */
1426    RGR_ULSRS_HOP_BW_3 = 3   /**< UL SRS Hopping BW info 3 */
1427 } RgrUlSrsHoBwInfo;
1428
1429 /*rgr_x_001.main_11 MOD added comments*/
1430 /** 
1431 * @brief Different values for UL SRS Cyclic Shift information 
1432 */
1433 typedef enum rgrUlSrsCycShiftInfo
1434 {
1435    RGR_ULSRS_CYSHIFT_0 = 0,   /**< UL SRS Cyclic shift info 0 */
1436    RGR_ULSRS_CYSHIFT_1 = 1,   /**< UL SRS Cyclic shift info 1 */
1437    RGR_ULSRS_CYSHIFT_2 = 2,   /**< UL SRS Cyclic shift info 2 */
1438    RGR_ULSRS_CYSHIFT_3 = 3,   /**< UL SRS Cyclic shift info 3 */
1439    RGR_ULSRS_CYSHIFT_4 = 4,   /**< UL SRS Cyclic shift info 4 */
1440    RGR_ULSRS_CYSHIFT_5 = 5,   /**< UL SRS Cyclic shift info 5 */
1441    RGR_ULSRS_CYSHIFT_6 = 6,   /**< UL SRS Cyclic shift info 6 */
1442    RGR_ULSRS_CYSHIFT_7 = 7   /**< UL SRS Cyclic shift info 7 */
1443 } RgrUlSrsCycShiftInfo;
1444
1445
1446 /*rgr_x_001.main_11 MOD added comments*/
1447 /**
1448 * @brief SRS configuration setup parameters information. 
1449    Reference 36.313 SoundingRS-UL-Config
1450 */
1451 typedef struct rgrUeUlSrsSetupCfg 
1452 {
1453    U16               srsCfgIdx;         /*!< SRS Configuration Index ISRS   
1454                                             Ref:  36.213: Table 8.2-1; Range: 0-636*/
1455    RgrUlSrsBwInfo    srsBw;        /*!< SRS Bandwidth */
1456    RgrUlSrsHoBwInfo  srsHopBw;     /*!< SRS Hoping Bandwidth */
1457    RgrUlSrsCycShiftInfo   cycShift;     /*!< Cyclic Shift */  
1458    Bool              duration;     /*!< Single(0) Infinite(1) */ 
1459 /*rgr_x_001.main_11 MOD added comments for doxygen*/
1460    Bool              sANSrs;       /*!< Simultaneous ACK/NACK and SRS. Note:
1461                                      This param is specified as a UE specific
1462                                      parameter though 3GPP TS36.331 specifies
1463                                      this as a cell-specific parameter. RRM
1464                                      should configure this parameter with the
1465                                      same value for all the UEs configured for
1466                                      the same  cell. */
1467 /* rgr_x_001.main_13 - DEL - Removed the redeclaration of sANSrs and added the proper comment termination  above  */
1468    U8                txComb;       /*!< Tranmission Comb: 0..1 */
1469    U8                fDomPosi;     /*!< Frequency Domain Position */
1470 }RgrUeUlSrsSetupCfg;
1471
1472
1473 /*rgr_x_001.main_11 MOD added comments*/
1474 /**
1475  *@brief Dsr Trans maximum  
1476 */
1477 typedef enum rgrUeDsrTransMax 
1478 {
1479    RGR_DSR_TXMAX_4=4,  /**< Dsr Trans maximum 4 */
1480    RGR_DSR_TXMAX_16=16, /**< Dsr Trans maximum 16 */
1481    RGR_DSR_TXMAX_32=32, /**< Dsr Trans maximum 32 */
1482    RGR_DSR_TXMAX_64=64 /**< Dsr Trans maximum 64 */
1483 }RgrUeDsrTransMax; 
1484
1485
1486 /**
1487 * @brief SR Setup configuration parameters information 
1488 */
1489 typedef struct rgrUeSrSetupCfg
1490 {
1491    U16              srResIdx;       /*!< Range: 0-2047; Reference: SchedulingRequestConfig  */
1492    U8               srCfgIdx;       /*!< Range: 0 -155; Reference: SchedulingRequestConfig */
1493    /*ccpu00131601:DEL - dTMax will not be required by scheduler */
1494 }RgrUeSrSetupCfg;
1495
1496 /**
1497 * @brief SR configuration parameters information 
1498 */
1499 typedef struct rgrUeSrCfg
1500 {
1501    Bool             type;            /*!< Release(0)/Setup(1) */
1502    RgrUeSrSetupCfg  srSetup;         /*!< SR Setup Configuration */
1503 }RgrUeSrCfg;
1504
1505 /** @brief SRS configuration parameters information.  
1506   Reference 36.313 SoundingRS-UL-Config 
1507 */
1508 typedef struct  rgrUeUlSrsCfg
1509 {
1510    U8                      type;      /*!< Release=0 Setup =1 */
1511    RgrUeUlSrsSetupCfg      srsSetup;  /*!< SRS Setup Configuration */
1512
1513 }RgrUeUlSrsCfg;
1514
1515 #endif /*TFU_UPGRADE */
1516
1517 #ifdef LTE_ADV/* Sprint 3*/
1518 typedef struct rgrUePucchFormat3Cfg
1519 {
1520    U8  sCellAckN3ResAntP0Count;
1521    U8  sCellAckN3ResAntP1Count;
1522    U16 sCellAckN3ResAntP0[4];
1523    U16 sCellAckN3ResAntP1[4];
1524 }RgrUePucchFormat3Cfg;
1525 typedef struct rgrUePucchFormat1BCSCfg
1526 {
1527    U8  sCellAckN1ResTb1Count; /* !< num of N1 res for TB1 */
1528    U8  sCellAckN1ResTb2Count; /* !< num of N1 res for TB2 */
1529    U16 sCellAckN1ResTb1[4];   /*!< TB1 N1 resources */
1530    U16 sCellAckN1ResTb2[4];   /* !< TB2 N1 resources */
1531 }RgrUePucchFormat1BCSCfg;
1532 typedef struct rgrUeSCellAckPucchCfg
1533 {
1534    RgrSchFrmt1b3TypEnum pucchFormatType;       /* !< 1B Channel selection or format 3*/
1535    union
1536    {
1537       RgrUePucchFormat1BCSCfg format1Bcs;
1538       RgrUePucchFormat3Cfg    format3;
1539    }u;
1540 }RgrUeSCellAckPucchCfg;
1541 #endif
1542 /* rgr_x_001.main_10. Added changes of TFU_UPGRADE 
1543  This structure was earlier included under MIMO flag. But it was not part 
1544  of any structure. Now after TFU_UPGRADE inclusion this shall be used for 
1545  for PUSCH Reception Request. */
1546 /**
1547 * @brief PUSCH dedicated configuration parameters information.  
1548 */
1549 typedef struct rgrUePuschDedCfg 
1550 {
1551    Bool   pres;       /*! Prsent TRUE(1)/FALSE(0) */ 
1552    U8     bACKIdx;    /*! betaOffset-ACK-Index (0..15) */
1553    U8     bRIIdx;     /*! betaOffset-RI-Index (0..15) */  
1554    U8     bCQIIdx;    /*! betaOffset-CQI-Index (0..15) */
1555 }RgrUePuschDedCfg;
1556 /** 
1557 * @brief Downlink CQI reporting related configuration per UE
1558 */
1559 typedef struct rgrUeDlCqiCfg
1560 {
1561    RgrUeAprdDlCqiCfg aprdCqiCfg;  /*!< Aperiodic CQI-related information */
1562    RgrUePrdDlCqiCfg  prdCqiCfg;   /*!< Periodic CQI-related configuration */
1563 } RgrUeDlCqiCfg;
1564 /**
1565 * @brief Measurement Gap configuration for UE 
1566 */
1567 typedef struct rgrUeMeasGapCfg
1568 {
1569    Bool isMesGapEnabled;    /*!< Is Measuremnet Gap enabled or disabled */
1570    U8   gapPrd;             /*!< Gap period 40ms/80ms */
1571    U8   gapOffst;           /*!< Gap offset - Vaue is 0 to 1*/
1572 } RgrUeMeasGapCfg;
1573 /**
1574  @brief DRX Long Cycle Offset */
1575 typedef struct rgrDrxLongCycleOffst
1576 {
1577    U16      longDrxCycle;   /*!< DRX Long Cycle value in subframes*/
1578    U16      drxStartOffst;  /*!< DRX Long Cycle offset value in subframes*/ 
1579 } RgrDrxLongCycleOffst;
1580
1581 /**
1582  *  @brief DRX Short Cycle Offset */
1583 typedef struct rgrDrxShortDrx
1584 {
1585    Bool    pres;             /*!< Short cycle is configured or not */
1586    U16     shortDrxCycle;    /*!< DRX Short Cycle value in sub-frames*/
1587    U8      drxShortCycleTmr; /*!< Value in multiples of Short DRX Cycles*/
1588 } RgrDrxShortDrx;
1589
1590 /**
1591  * @brief DRX configuration for UE */
1592 typedef struct rgrUeDrxCfg
1593 {
1594    Bool                  isDrxEnabled;      /*!< To indicate if DRX enabled or
1595                                               not, this can be used in reconfiguration
1596                                              to release/stop the DRX (TRUE = Enabled)*/
1597 /*rgr_x_001.main_11 ADD added changes for R9*/
1598 /** @name LTEMAC_R9 */
1599 /** @{ */
1600 #ifdef LTEMAC_R9
1601    TknS32                cqiMask;          /*!< To indicate if cqi-Mask is setup
1602                                                 by higher layers. Currently supports
1603                                                 only a enum SETUP*/
1604 #endif
1605 /** @} */
1606    U16                    drxOnDurTmr;       /*!< DRX On-duration Timer value in
1607                                              PDCCH subframes */
1608    U16                   drxInactvTmr;      /*!< DRX Inactivity Timer value in
1609                                               PDCCH subframes */
1610    U16                    drxRetxTmr;        /*!< DRX Retransmission Timer value in PDCCH
1611                                               subframes */
1612    RgrDrxLongCycleOffst  drxLongCycleOffst; /*!< DRX Long cycle and offset, values in subframes */
1613    RgrDrxShortDrx        drxShortDrx;       /*!< DRX Short cycle value and offset */
1614 #ifdef EMTC_ENABLE
1615    U16                   emtcDrxUlRetxTmr;  /*Rel13 Drx Ul Retx Timer */
1616    Bool                  isEmtcUe;
1617    Bool                  drxOnDurTmrR13Pres;
1618    Bool                  drxRetxTmrR13Pres;
1619 #endif
1620 } RgrUeDrxCfg;
1621
1622 /**
1623  * @brief UE capability Configuration */
1624 typedef struct rgrUeCapCfg
1625 {
1626    U8   pwrClass;        /*!< Power class per UE */
1627    Bool intraSfFeqHop;   /*!< Intra subframe frequency hopping for PUSCH */
1628    Bool resAloocType1;   /*!< Resource allocation type 1 for PDSCH */
1629    Bool simCqiAckNack;   /*!< Simultaneous CQI and ACK/NACK on PUCCH */
1630    Bool txAntSel;        /*!< TRUE if UE capable of doing TX Antenna selection */
1631 /** @} */
1632 } RgrUeCapCfg;
1633
1634 /**
1635  *  @brief UE ACK/NACK configuration */
1636 typedef struct rgrUeAckNackRepCfg
1637 {
1638    Bool                 isAckNackEnabled;  /*!< Is ACK/NACK enabled? This
1639                                              variable can be used in reconfiguration
1640                                              also to stop/release the ACK/NACK
1641                                              Repetition */
1642    U16                  pucchAckNackRep;   /*!< n1PUCCH-AN-Rep */
1643    RgrAckNackRepFactor  ackNackRepFactor;  /*!< ACK/NACK Repetition factor */
1644 } RgrUeAckNackRepCfg;
1645
1646 /** 
1647   @brief Transmission mode configuration per UE */
1648 typedef struct rgrUeTxModeCfg
1649 {
1650    Bool            pres;           /*!< Indicates presence of transmission mode for UE */
1651    RgrTxModeTrnstn tmTrnstnState;  /*!< State of Transmission Mode transition */
1652 /* rgr_x_001.main_9 - Added support for UE Reconfiguration */
1653    RgrTxMode       txModeEnum;     /*!< UE transmission mode */
1654 } RgrUeTxModeCfg;
1655 /** 
1656   @brief Uplink HARQ configuration per UE */
1657 typedef struct rgrUeUlHqCfg
1658 {
1659    U8 maxUlHqTx;           /*!< Maximum number of UL HARQ transmissions */
1660    U8 deltaHqOffst;        /*!< Delta HARQ offset 
1661                                 Currently this is unused parameter */
1662 } RgrUeUlHqCfg;
1663 /** 
1664   @brief Group power configuration per UE for PUCCH and PUSCH group power control */
1665 typedef struct rgrUeGrpPwrCfg
1666 {
1667    Bool            pres;            /*!< Indicates presence of UE PUCCH/PUSCH group power configuration */  
1668    CmLteRnti       tpcRnti;         /*!< TPC PUCCH/PUSCH RNTI for UE */
1669    U8              idx;             /*!< Index for format 3/3A */
1670 } RgrUeGrpPwrCfg;
1671 /** 
1672   @brief Uplink power configuration per UE */
1673 typedef struct rgrUeUlPwrCfg
1674 {
1675    RgrUeGrpPwrCfg uePuschPwr;        /*!< PUSCH group power configuration per UE */
1676    RgrUeGrpPwrCfg uePucchPwr;        /*!< PUCCH group power configuration per UE */
1677    Bool           isAccumulated;     /*!< To indicate if accumulation is enabled */
1678    Bool           isDeltaMCSEnabled; /*!< To indicate Delta MCS Enabled */
1679    S8             p0UePusch;         /*!< P_0UE_PUSCH*/
1680    S8             p0UePucch;         /*!< P_0_PUCCH*/
1681    U8             pSRSOffset;        /*!< P_SRS_OFFSET 
1682                                           Currently this is unused parameter */
1683    U8             trgCqi;            /*!< CQI to aim for during PUSCH power
1684                                       *  control. Zero indicates absence, where
1685                                       *  cell-wide trgCqi is used */
1686 } RgrUeUlPwrCfg;
1687 /** 
1688   @brief Downlink/Uplink QoS configuration per UE */
1689 typedef struct rgrUeQosCfg
1690 {
1691    Bool ambrPres;   /*!< Indicates presence of AMBR */  
1692    U32  dlAmbr;     /*!< DL AMBR value for UE (bytes/sec): Optional */
1693    U32  ueBr;       /*!< UL Byte Rate value for UE (bytes/sec): Optional */
1694 } RgrUeQosCfg;
1695 /** 
1696   @brief Time Alignment timer configuration per UE */
1697 typedef struct rgrUeTaTmrCfg
1698 {
1699    Bool       pres;          /*!< rgr_x_001.main_7: Pres=NOTPRSNT indicates taTmr INFINITY */
1700    U16        taTmr;         /*!< Timer configuration (in subframes) */
1701 } RgrUeTaTmrCfg;
1702 /** @name RGR_V1 */
1703 /** @{ */
1704 #ifdef RGR_V1
1705 /* rgr_x_001.main_7: [ccpu00112398] Added periodicBSR-Timer and 
1706    retxBSR-Timer */
1707 /** 
1708   @brief BSR timer configuration per UE */
1709 typedef struct rgrUeBsrTmrCfg
1710 {
1711    Bool      isPrdBsrTmrPres; /*!< Indicates if periodic BSR timer is present
1712                               */
1713    U16       prdBsrTmr;       /*!< periodicBSR-Timer configuration
1714                                    (in subframes): Value 0xFFFF indicates
1715                                    'Infinity' */
1716    U16       retxBsrTmr;      /*!< retxBSR-Timer configuration (in subframes)
1717                                    : Mandatory parameter */
1718 } RgrUeBsrTmrCfg;
1719 #endif
1720 /** @{ */
1721
1722 /*rgr_x_001.main_9 - Added support for SPS*/
1723 /** 
1724   @brief DL SPS configuration parameters per UE */
1725 typedef struct rgrUeSpsDlCfg
1726 {
1727    Bool        isDlSpsEnabled;   /*!< Bool indicating if DL SPS is enabled */
1728    U8          numSpsHqProc;      /*!< Number of SPS harq Proc: Value in set
1729                                    [1..8] */
1730    U8          numPucchVal;      /*!< Count for configured PUCCH values */
1731    U32         n1PucchVal[4];    /*!< Array of n1Pucch values */
1732    RgrSpsPrd   dlSpsPrdctyEnum;  /*!< Periodicity for DL SPS */
1733    U16         explicitRelCnt;   /*!< Number of SPS ocassions with BO = 0 after 
1734                                which SPS is released */
1735 } RgrUeSpsDlCfg;
1736
1737 typedef struct rgrUlSpsLcInfo
1738 {
1739    Bool  isSpsEnabled;
1740    U8    lcId;
1741 }RgrUlSpsLcInfo;
1742
1743 /** 
1744   @brief UL SPS configuration parameters per UE */
1745 typedef struct rgrUeSpsUlCfg
1746 {
1747    Bool              isUlSpsEnabled;   /*!< Bool indicating if UL SPS is 
1748                                             enabled */
1749    RgrSpsImplRelCnt  implicitRelCnt;   /*!< Number of SPS ocassions after which
1750                                             implicit release happens */
1751 #ifdef LTE_TDD
1752    Bool              twoIntervalCfg;   /*!< Bool indicating if two interval
1753                                             config is enabled */
1754 #endif
1755    Bool              pwrCfgPres;       /*!< Indicates if Power related 
1756                                             configuration is present */
1757    struct 
1758    {
1759       S8             p0NominalPuschVal;/*!< Value in range [-126...24] */ 
1760       S8             p0UePuschVal;     /*!< Value in range [-8....7] */
1761    } pwrCfg;
1762    RgrSpsPrd         ulSpsPrdctyEnum;  /*!< Periodicity for UL SPS */
1763    U8                lcCnt;            /*!< Number of logical channels */
1764    RgrUlSpsLcInfo    spsLcInfo[RGR_MAX_SPS_LC];/*!< Array of SPS logical channels -
1765                                                All these are assumed to be 
1766                                                mapped onto SPS lcg with ID=1 */
1767
1768    Bool              isLcSRMaskEnab ;  /*!< Logical Channel SR Mask Enable Flag*/
1769
1770
1771 } RgrUeSpsUlCfg;
1772
1773 /** 
1774   @brief SPS configuration parameters per UE */
1775 typedef struct rgrUeSpsCfg
1776 {
1777    CmLteRnti      spsRnti;          /*!< SPS-RNTI value */ 
1778    RgrUeSpsDlCfg  dlSpsCfg;         /*!< DL SPS configuration information */  
1779    RgrUeSpsUlCfg  ulSpsCfg;         /*!< UL SPS configuration information */  
1780    
1781 } RgrUeSpsCfg;
1782 /** @brief Transmit Antenna selection types 
1783 */
1784 typedef enum rgrUeTxAntSelType
1785 {
1786    RGR_UE_TX_ANT_OPENLOOP,
1787    RGR_UE_TX_ANT_CLOSEDLOOP
1788 } RgrUeTxAntSelType;
1789 /**
1790   @brief UE Transmit Antenna selection related configuration */
1791 typedef struct rgrUeTxAntSelCfg
1792 {
1793    Bool               pres;    /*!< Configuration present */
1794    RgrUeTxAntSelType  selType; /*!< Transmit Antenna selection type */
1795 } RgrUeTxAntSelCfg;
1796 /** @} */
1797
1798 /*rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
1799    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
1800 #ifdef RGR_CQI_REPT
1801 /* DL Power control related structures */
1802
1803 /** 
1804   @brief PUSH n CQI Reporting related configuration for an UE*/
1805 typedef struct rgrUeCqiReptCfg
1806 {
1807    U8   numColltdCqiRept;      /*!< Number of CQI reports to be sent in PUSH n
1808                                  Reporting */
1809 }RgrUeCqiReptCfg;
1810
1811 /** 
1812   @brief CQI for subband number subBandIdx */
1813 typedef struct rgrSubBandCqiInfo
1814 {
1815    U8 cqi[2];     /*!< Subband CQI for two codewords */
1816    U8 subBandIdx; /*!< Index of the subband starting from 0, 
1817                        in ascending order of frequency */
1818 } RgrSubBandCqiInfo;
1819
1820 /*rgr_x_001.main_11 ADD added changes for CQI management*/
1821 /** 
1822   @brief A CQI Report used in PUSH n Reporting*/
1823 typedef struct rgrUeCqiRept
1824 {
1825    U8                  cqi[2];    /*!< Wideband CQI Value for two codewords*/
1826    U8                  cqiMode;   /*!< Reporting mode by which CQI was reported */
1827    RgrSubBandCqiInfo   sbCqiInfo[RGR_MAX_DL_CQI_SUBBAND];
1828    U8                  numSubBand;/*!< Number of Subbands for which CQI is 
1829                                        being reported */
1830 } RgrUeCqiRept;
1831
1832 /*rgr_x_001.main_11 ADD added changes for CQI management*/
1833 /** 
1834   @brief Collated CQI reports */
1835 typedef struct RgrUeCqiInfo
1836 {
1837    RgrUeCqiRept cqiRept[RGR_CQIRPTS_MAXN];    /*!< CQI reports */
1838    U8 numCqiRept;       /*!< Number of CQI reports present */
1839 } RgrUeCqiInfo;
1840
1841 /*rgr_x_001.main_11 ADD added changes for CQI management*/
1842 /**
1843   @brief Status Indication structure passed in RgUiRgrStaInd primitive */
1844 typedef struct rgrStaIndInfo
1845 {
1846    CmLteCellId       cellId;       /*!< Cell ID */
1847    CmLteRnti         crnti;        /*!< UE identifier UE ID: CRNTI */
1848    RgrUeCqiInfo      ueCqiInfo;        /*!< CQI reports*/
1849 }RgrStaIndInfo;
1850 #endif
1851
1852 /* LTE_ADV_FLAG_REMOVED_START */
1853 /**
1854   @brief LOAD INF Indication structure passed in RgUiRgrLoadInfInd primitive */
1855 typedef struct rgrLoadInfIndInfo
1856 {
1857    CmLteCellId       cellId;             /*!< Cell ID   */
1858    U16               bw;                 /*!< Bandwidth */
1859    U32               type;
1860    union
1861    {
1862       TknStrOSXL     rntpInfo;           /*!< RNTP Info */
1863       U32            absLoadInfo[RGR_ABS_PATTERN_LEN]; 
1864    } u;
1865 }RgrLoadInfIndInfo;
1866 /* LTE_ADV_FLAG_REMOVED_END */
1867
1868 #ifdef TFU_UPGRADE 
1869 /*rgr_x_001.main_11 ADD added changes for CQI management*/
1870 /**
1871   @brief Struct for P_A configuration per UE */
1872 typedef struct rgrUepACfg
1873 {
1874    /* PA value in db */
1875    RgrUeDlPwrCntrlPaCfg   pA;   /*!< P_A Value which as used in equation pa =\
1876                                    delta_PowerOffset + P_A
1877                                    Ref: RRC 36.331, 6.3.2, PDSCH-Config*/
1878    Bool    pAPrsnt;            /*!< Indicates if pA has valid information */
1879 }RgrUepACfg;
1880
1881 /*rgr_x_001.main_11 ADD added changes for CQI management*/
1882 typedef struct rgrUePdschDedCfg
1883 {
1884    RgrUepACfg         uepACfg;    /*!< P_A Configuration,
1885                                      Ref: RRC 36.331, 6.3.2, PDSCH-Config*/
1886 }RgrUePdschDedCfg;
1887
1888 #endif
1889
1890 /* LTE_ADV_FLAG_REMOVED_START */
1891 /* @brief UE Configuration for LTE Adv feature */
1892 typedef struct rgrLteAdvancedUeConfig
1893 {
1894    U32      pres;
1895    Bool     isUeCellEdge;  /*! Flag to indicate UE is cell edge or cell center */
1896    Bool     isAbsUe;       /*! Flag to indicate ABS UE or Not */
1897 } RgrLteAdvancedUeConfig;
1898 /* LTE_ADV_FLAG_REMOVED_END */
1899
1900 typedef enum RgrAccessStratumRls
1901 {
1902         RGR_REL_8,
1903         RGR_REL_9,
1904         RGR_REL_10,
1905         RGR_REL_11,
1906         RGR_REL_12,
1907         RGR_REL_SPARE_4,
1908         RGR_REL_SPARE_3,
1909         RGR_REL_SPARE_2,
1910         RGR_REL_SPARE_1,
1911 } RgrAccessStratumRls;
1912
1913 #ifdef EMTC_ENABLE
1914 #define RGR_MAX_EPDCCH_SET 2
1915 typedef struct rgrExtaddgrp2
1916 {
1917    Bool pres;
1918    U8  csiNumRep;// MAPPING
1919    U8  mpddchPdschHop;
1920    U8  mpdcchStartUESSFDD;// MAPPING
1921    U16  mpdcchNumRep;// MAPPING
1922    U32  mpddchNB;//1.. maxAvailNarrowBands-r13
1923 }RgrExtaddgrp2;
1924
1925 typedef struct rgrRbAssignment
1926 {
1927  U8 numPRBpairs; // MAPPING
1928  U8 rbAssignment[5];
1929 }RgrRbAssignment;
1930 typedef  struct rgrEpdcchAddModLst
1931 {
1932    U8 setConfigId;
1933    U8   transmissionType;
1934    RgrRbAssignment   resBlkAssignment;
1935    U32 dmrsScrambSeq;
1936    U32 pucchResStartoffset;
1937    TknU32   pdschRemapQLcfgId;
1938    TknU8  mpdcchNumPRBpair; // MAPPING
1939    RgrExtaddgrp2 extaddgrp2;
1940 }RgrEpdcchAddModLst;
1941
1942 typedef struct rgrSubFrmPatCfg
1943 {
1944    Bool pres;
1945    U8 measSfPatFDD[5];
1946 }RgrSubFrmPatCfg;
1947 typedef struct rgrEpdcchConfigRel11
1948 {  
1949    Bool pres;
1950    RgrSubFrmPatCfg sfPtn;
1951    TknU32 startSymbolr11;
1952    RgrEpdcchAddModLst  epdcchAddModLst[RGR_MAX_EPDCCH_SET];
1953 }RgrEpdcchConfigRel11;
1954
1955 typedef struct rgrUeEmtcRecfg
1956 {
1957    Bool isHdFddEnbld; /*!< Half Duplex FDD is configured: TRUE=1/FALSE=0 */
1958 }RgrUeEmtcRecfg;
1959 typedef struct rgrPucchRepCfgRel13
1960 {
1961         Bool isPucchRepPres;
1962         U8 modeANumPucchRepFormat1;
1963         U8 modeANumPucchRepFormat2;
1964
1965 }RgrPucchRepCfgRel13;
1966
1967 typedef struct rgrUeEmtcCfg
1968 {
1969    Bool isHdFddEnbld; /*!< Half Duplex FDD is configured: TRUE=1/FALSE=0 */
1970    Bool pres;
1971    RgrEpdcchConfigRel11 emtcEpdcchCfg;
1972    RgrPucchRepCfgRel13 emtcPucchRepCfg;
1973    U8                  pdschReptLevModeA;
1974 }RgrUeEmtcCfg;
1975 #endif
1976
1977 #ifdef RG_5GTF
1978 typedef struct rgrUe5gtfCfg
1979 {
1980    U8              grpId;
1981    U8              BeamId;
1982    U8              numCC;
1983    U8              mcs;
1984    U8              maxPrb;
1985 }RgrUe5gtfCfg;
1986 #endif
1987
1988
1989 /** 
1990   @brief UE configuration */
1991 typedef struct rgrUeCfg
1992 {
1993    CmLteCellId        cellId;           /*!< Cell ID */
1994    CmLteRnti          crnti;            /*!< UE ID: CRNTI */ 
1995    RgrUeTxModeCfg     txMode;           /*!< UE Transmission mode: Optional */
1996    RgrUeDlCqiCfg      ueDlCqiCfg;       /*!< UE DL CQI configuration */
1997    RgrUeUlHqCfg       ueUlHqCfg;        /*!< UE-related UL HARQ configuration */
1998    RgrUeUlPwrCfg      ueUlPwrCfg;       /*!< UE UL power configuration: Optional */
1999    RgrUeQosCfg        ueQosCfg;         /*!< UE-related Dl/UL QoS configuration: AMBR */
2000    RgrUeTaTmrCfg      ueTaTmrCfg;       /*!< UE TA timer configuration: Optional */
2001 /** @name RGR_V1 */
2002 /** @{ */
2003 #ifdef RGR_V1
2004    /* rgr_x_001.main_7: [ccpu00112398] Added periodicBSR-Timer and 
2005    retxBSR-Timer */
2006    RgrUeBsrTmrCfg     ueBsrTmrCfg;      /*!< UE BSR timer configuration: 
2007                                              Mandatory */
2008 #endif
2009 /** @} */
2010    CmLteUeCategory    ueCatEnum;        /*!< UE category */
2011 /*rgr_x_001.main_11 ADD added changes for DRX*/
2012 /**@{ */
2013    RgrUeDrxCfg        ueDrxCfg;         /*!< UE-specific DRX configuration */
2014 /** @} */
2015    Bool               isTtiBundlEnabled;/*!< TtiBundling Enabled/Disabled for UE */
2016    RgrUeAckNackRepCfg ueAckNackCfg;     /*!< ACK/NACK configuration for UE */
2017    RgrUeMeasGapCfg    ueMesGapCfg;      /*!< Measurement Gap configuration for UE */
2018    RgrUeCapCfg        ueCapCfg;         /*!< UE Capabilty reconfiguration */
2019    RgrCodeBookRstCfg  ueCodeBookRstCfg; /*!< Number of bits in code book for
2020                                             transmission modes */
2021    TknU8              dedPreambleId;    /*!< If present, then mapping exists at
2022                                           RGR user with CRNTI */
2023 /** @name LTE_TDD */
2024 /** @{ */
2025 #ifdef LTE_TDD
2026    RgrTddAckNackMode   ackNackModeEnum;  /*!< ACK/NACK Mode Bundling or
2027                                            Multiplexing */
2028 #endif /* LTE_TDD */
2029 /** @} */
2030    /*rgr_x_001.main_9 - Added support for SPS*/
2031 /** @name LTEMAC_SPS */
2032 /** @{ */
2033    RgrUeSpsCfg        ueSpsCfg;          /*!< SPS related configuration
2034                                            parameters for UE */
2035 /** @} */
2036 /* rgr_x_001.main_10. Added changes of TFU_UPGRADE */
2037 /** @name TFU_UPGRADE */
2038 /** @{ */
2039 #ifdef TFU_UPGRADE
2040    /* Periodic CQI, SRS, SR  and HD-FDD Configuration  */
2041    RgrUeUlSrsCfg     srsCfg;       /*!< SRS  configuration information */
2042    RgrUeSrCfg        srCfg;        /*!< SR configuration information */
2043 #endif 
2044 /** @} */
2045 /*rgr_x_001.main_11 ADD added changes for HDFDD*/
2046 /** @name LTEMAC_HDFDD */
2047 /** @{ */
2048 #ifdef LTEMAC_HDFDD
2049    Bool              isHdFddEnbld;        /*!< Half Duplex FDD is configured: TRUE=1/FALSE=0 */
2050 #endif /* LTEMAC_HDFDD */
2051 /** @} */
2052 /* rgr_x_001.main_8 - Changes for MIMO feature addition */
2053 /* rgr_x_001.main_9 - Removed dependency on MIMO compile-time flag */
2054
2055    /* rgr_x_001.main_10. Added changes of TFU_UPGRADE */
2056    RgrUePuschDedCfg  puschDedCfg;           /*!< PUSCH -Configuration that is dedicated. Refer 
2057                                              to 36.331 for more information */
2058    RgrUeTxAntSelCfg    ulTxAntSel;          /*!< UL Transmit antenna selection configuration */
2059    
2060 /** @name RGR_CQI_REPT */
2061 /** @{ */
2062 /* rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
2063    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
2064 #ifdef RGR_CQI_REPT
2065    RgrUeCqiReptCfg    ueCqiReptCfg;    /*!< PUSH n CQI Reporting
2066                                          configuration */
2067 #endif
2068 /** @} */
2069 #ifdef TFU_UPGRADE 
2070    RgrUePdschDedCfg   uePdschDedCfg; /*!< PDSCH related dedicated configuration per UE */
2071 #endif
2072    /* LTE_ADV_FLAG_REMOVED_START */
2073    RgrLteAdvancedUeConfig ueLteAdvCfg; /*!< LTE Adv configuration per UE */
2074    /* LTE_ADV_FLAG_REMOVED_END */
2075    RgrAccessStratumRls accessStratumRls; /*!< UE Access Stratum Release */
2076    U8        csgMmbrSta;     /* CSG Membership status, refer RgrUeCsgMbrStatus */
2077 #ifdef EMTC_ENABLE
2078    RgrUeEmtcCfg emtcUeCfg;
2079 #endif
2080 #ifdef RG_5GTF
2081    RgrUe5gtfCfg ue5gtfCfg;
2082 #endif
2083 } RgrUeCfg;
2084 /** 
2085   @brief QCI, GBR, and MBR configuration for dedicated logical channels */
2086 typedef struct rgrLchQosCfg
2087 {
2088    U8 qci;                   /*!< QCI for the logical channel. 
2089                                   Valid Range:[0-255] (Actual QCI - 1). */
2090    U32 gbr;                  /*!< GBR value for a logical channel (bytes/sec). */
2091    U32 mbr;                  /*!< MBR value for a logical channel (bytes/sec). */
2092 } RgrLchQosCfg;
2093 /*rgr_x_001.main_9 - Added support for SPS*/
2094 /**    
2095   @brief SPS related configuration for logical channels */
2096 typedef struct rgrLchSpsCfg
2097 {
2098    Bool isSpsEnabled;        /*!< Bool indicating if SPS is enabled for
2099                                   the service */
2100 } RgrLchSpsCfg;
2101 /** 
2102   @brief Logical channel configuration information for downlink logical channels */
2103 typedef struct rgrDlLchCfg 
2104 {
2105    CmLteTrchType dlTrchType; /*!< Indicates type of DL transport channel:
2106                                    Validated only for BCCH at MAC 
2107                                    DL Transport channel type can take following values:
2108                                    CM_LTE_TRCH_BCH 
2109                                    CM_LTE_TRCH_PCH
2110                                    CM_LTE_TRCH_DL_SCH*/
2111    RgrLchQosCfg   dlQos;      /*!< DL QoS parameters: Only for dedicated channels */
2112    /*rgr_x_001.main_9 - Added support for SPS*/
2113    RgrLchSpsCfg   dlSpsCfg;   /*!< SPS configuration for DL logical channel */
2114    U8 rlcReorderTmr;          /*!< RLC reordering timer required for LAA*/
2115 } RgrDlLchCfg;
2116
2117 /** 
2118   @brief Logical channel configuration information for uplink logical channels */
2119 typedef struct rgrUlLchCfg
2120 {
2121   CmLteLcId   lcId;    /*!< LC ID for uplink logical channel*/
2122   U8          qci;     /*!< QCI associated with LC ID */
2123 } RgrUlLchCfg;
2124 /** 
2125   @brief Logical channel group configuration information for uplink logical channels */
2126 typedef struct rgrUlLcgCfg
2127 {
2128    U8             lcgId;      /*!< Logical channel group ID */
2129 /*rgr_x_001.main_11 ADD added changes for L2 measurements*/
2130 #ifdef LTE_L2_MEAS
2131    U8             numLch;      /*!< Number of LC's for this group in Uplink */
2132    RgrUlLchCfg    lchUlCfg[RGR_MAX_LC_PER_LCG]; /*!< Logical Channel details for
2133                                                  this LCG*/
2134 #endif /*LTE_L2_MEAS */
2135    U32            gbr;      /*!< Commulative UL GBR of all LC mapping to this LCG */
2136    U32            mbr;      /*!< Commulative UL MBR of all LC mapping to this LCG */
2137 } RgrUlLcgCfg;
2138
2139 /** 
2140   @brief Logical channel Uplink configuration information for dedicated channels */
2141 typedef struct rgrUlLchQciCfg
2142 {
2143    CmLteLcId lcId;           /*!< Logical channel ID */
2144    U8        qci;            /*!< Qci */
2145    U8        lcgId;          /*!< Logical channel group ID */
2146 }RgrUlLchQciCfg;
2147
2148 /** 
2149   @brief Logical channel configuration information for dedicated channels */
2150 typedef struct rgrLchCfg
2151 {
2152    CmLteCellId   cellId;     /*!< Cell ID */
2153    CmLteRnti     crnti;      /*!< CRNTI for DTCH and DCCH */
2154    CmLteLcId     lcId;       /*!< Logical channel ID */
2155    CmLteLcType   lcType;     /*!< Identifies the Logical channel type.lcType
2156                                can take the following values:
2157                                       CM_LTE_LCH_BCCH
2158                                       CM_LTE_LCH_PCCH
2159                                       CM_LTE_LCH_CCCH
2160                                       CM_LTE_LCH_DCCH
2161                                       CM_LTE_LCH_DTCH */  
2162    RgrDlLchCfg   dlInfo;     /*!< Downlink logical channel configuration information */
2163    RgrUlLchQciCfg    ulLchQciInfo;  /*!< Uplink logical channel configuration information */
2164    U8             lcgId;      /*!< Logical channel group ID */
2165 } RgrLchCfg;
2166
2167 /** @brief Set of parameters for logical channelgroup Configuration */
2168 typedef struct rgrLcgCfg
2169 {
2170    CmLteCellId   cellId;     /*!< Cell ID */
2171    CmLteRnti     crnti;      /*!< CRNTI for DTCH and DCCH */
2172    RgrUlLcgCfg   ulInfo;     /*!< Uplink logical channel configuration information */
2173 } RgrLcgCfg;
2174
2175
2176 /** @brief Basic configuration structure at RRM */
2177 typedef struct rgrCfg
2178 {
2179    U8 cfgType;                /*!< Indicates configuration type */
2180    union                      /*!< cfgType is selector */ 
2181    { 
2182       RgrCellCfg      cellCfg;   /*!< Cell configuration */
2183       RgrUeCfg        ueCfg;     /*!< UE configuration */ 
2184       RgrLchCfg       lchCfg;    /*!< Dedicated logical channel configuration */
2185       RgrLcgCfg       lcgCfg;    /*!< Dedicated logical channel Group configuration */
2186       RgrSchedEnbCfg  schedEnbCfg; /*!< EnodeB Sched Configurations */ //TODO:remove this
2187       MacSchedGnbCfg  schedGnbCfg; /*!< gNB Sched Configurations */
2188    } u;
2189 } RgrCfg;
2190
2191 /** 
2192  * @brief Activation time information */
2193 typedef struct rgrActvTime
2194 {
2195    Bool            pres;      /*!< Indicates the presence of activation time */
2196    CmLteTimingInfo actvTime;  /*!< Activation time information */ 
2197 } RgrActvTime;
2198
2199
2200 /** @brief Cell reconfiguration structure at RRM */
2201 typedef struct rgrCellRecfg
2202 {
2203    CmLteCellId         cellId;        /*!< Cell ID */
2204    U32                 recfgTypes;    /*!< Bitmask indicating reconfiguration types */
2205    RgrActvTime         recfgActvTime; /*!< Activation Time for cell reconfiguration */
2206    RgrDlHqCfg          dlHqRecfg;     /*!< DL HARQ related reconfiguration */ 
2207    RgrCfiCfg           cfiRecfg;      /*!< CFI reconfiguration for PDCCH */
2208 /* rgr_x_001.main_1: Removing unwanted srMcs Configuration structure */
2209    RgrUlTrgCqiCfg      trgUlCqi;      /*!< Target UL CQI */
2210    RgrDlCmnCodeRateCfg dlCmnCodeRate; /*!< Coding rate for common DL channels: 
2211                                            Expressed in multiples of 1024 */
2212    RgrPuschSubBandCfg  puschSubBand;  /*!< UL sub-band information */
2213    RgrUlCmnCodeRateCfg ulCmnCodeRate; /*!< Coding rate for common UL channels: 
2214                                          Expressed in multiples of 1024 */
2215    RgrPucchCfg         pucchRecfg;    /*!< PUCCH configuration information */
2216    RgrSrsCfg           srsRecfg;      /*!< SRS configuration information */ 
2217    RgrRachCfg          rachRecfg;     /*!< RACH configuration */
2218    RgrDlfsCfg          dlfsRecfg;     /*!< Reconfiguration for DLFS scheduler */
2219    /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
2220 /** @name RGR_SI_SCH */
2221 /** @{ */
2222 #ifdef RGR_SI_SCH
2223    RgrSiCfg            siReCfg;       /*!<SI Re-Configuration structure */
2224 #endif
2225    U16                 t300TmrVal;    /*!< t300Timer value configured in Frames */
2226    /* LTE_ADV_FLAG_REMOVED_START */
2227    RgrLteAdvancedCellConfig rgrLteAdvCfg; /*!< RGR Configuration of LTE Adv for a cell */
2228    /* LTE_ADV_FLAG_REMOVED_END */
2229    Bool               isDynCfiEnb;   /*!< To indicate whether Dynamic CFI is enabled 
2230                                           or not */ 
2231    Bool               isAutoCfgModeEnb;   /*!< To indicate whether AutoCfg mode is enabled 
2232                                           or not */ 
2233    RgrCellCsgParamCfg  csgParamCfg;   /*!< Cell-specific configuration for CSG */
2234    RgrCellCntrlCmdCfg  cntrlCmdCfg;      /*!< control cmds to alter this cell's performance */ 
2235 /** @} */
2236 #ifdef EMTC_ENABLE
2237    Bool               emtcEnable;
2238    RgrEmtcCellCfg     emtcCellReCfg;   
2239 #endif
2240 } RgrCellRecfg;
2241
2242 #ifdef LTE_ADV
2243 /**
2244  * @brief Structure to store SCell Index for activation
2245  *
2246  * @details
2247  *    - sCellIdx     : sCell Index in in list of Secondary cells
2248  */
2249 typedef struct rgrSCellActDeactInfo 
2250 {
2251    U8          sCellIdx;    /*!< sCell Index to be activated */
2252 }RgrSCellActDeactInfo;
2253
2254 /**
2255  * @brief Structure to store details for activation/deactivation event
2256  *
2257  * @details
2258  *    - crnti              : Ue identifier used to get UE control block
2259  *    - numOfSCells        : Number of SCells to be Activated/Deactivated
2260  *    - sCellActDeactInfo  : Array of SCellsIdx
2261  */
2262 typedef struct rgrSCellActDeactEvnt 
2263 {
2264    CmLteRnti          crnti;       /*!< UE ID: To fetch UeCb in a cell*/
2265    U8                 numOfSCells;    /* !<No of SCells to be Activated */
2266    RgrSCellActDeactInfo    sCellActDeactInfo[RGR_MAX_SCELL_PER_UE]; 
2267                       /* !<SCH SCell Activation Deactivation Information */
2268 } RgrSCellActDeactEvnt;
2269
2270
2271 /**
2272  * @brief Structure to store details for SCell UL PC Config
2273  *
2274  * @details
2275  *    - isAccumulated      : If TRUE Accumulation is ocnfigured
2276  *    - isDeltaMCSEnabled  : If TRUE DELTA MCS is enabled
2277  *    - p0UePusch          : P0 Nominal value
2278  *    - pSRSOffset         : SRS OFFSET value for SCELL
2279  */
2280 typedef struct rgrUeUlPwrDedSCellCfg
2281 {
2282    Bool           isAccumulated;     /*!< To indicate if accumulation is enabled */
2283    Bool           isDeltaMCSEnabled; /*!< To indicate Delta MCS Enabled */
2284    S8             p0UePusch;         /*!< P_0UE_PUSCH*/
2285    U8             pSRSOffset;        /*!< P_SRS_OFFSET 
2286                                        Currently this is unused parameter */
2287
2288 } RgrUeUlPwrDedSCellCfg;
2289
2290
2291 /** @brief UE Downlink secondary cell config params */
2292 typedef struct rgrUeSecCellCfg 
2293 {
2294   U8                   sCellIdx;
2295   U16                  sCellId;         /*!< This will be secondary cellId */
2296   TknU32               sCellDeActTmr;     /*!< for Activating the sCell for UE */
2297   RgrUeDlCqiCfg        ueSCellDlCqiCfg; /*!< Secondary cell dedicated configuration */
2298 #ifdef TFU_UPGRADE 
2299   RgrUePdschDedCfg     uePdschDedCfg;   /*!< Secondary cell dedicated configuration */
2300 #endif
2301   RgrUeTxModeCfg       txMode;          /*!< UE transmission mode in Secondary
2302                                           cell*/
2303   Bool                 isUlCaEnabled;  /*!<If TRUE ULCA is also enabled along with DL CA for 
2304                                            this SCELL */
2305   RgrUeUlPwrDedSCellCfg ueSCellUlDedPwrCfg; /*!< UE UL DED ULPC Cfg */
2306 }RgrUeSecCellCfg;
2307
2308 /** @brief Configuration information of Secondary cells for a UE*/
2309 typedef struct rgrUeSecCellInfo 
2310 {
2311   Bool                useExtBSRSizes; /*!< If TRUE used R10 Extended BSR Size Table*/
2312   U8                  numSCells;
2313   RgrUeSecCellCfg     ueSCellDedCfg[RGR_MAX_SCELL_PER_UE]; /*!< Secondary cell configuration per
2314 UE */
2315 }RgrUeSecCellInfo;
2316
2317 /** @brief Configuration of every SCell for a UE*/
2318 typedef struct rgrUeDlSecCellRelInfo 
2319 {
2320   U8                   sCellIdx;  /*!< This will be secondary cell Idx */
2321   U16                  sCellId;   /*!< This will be secondary cellId */
2322 }RgrUeDlSecCellRelInfo;
2323
2324 /** @brief Configuration for SCell Release for a UE*/
2325 typedef struct rgrUeSecCellRelInfo 
2326 {
2327   U8                   numSCells; /*!< This will be the number of secondary cells*/
2328   RgrUeDlSecCellRelInfo   ueSCellRelDedCfg[RGR_MAX_SCELL_PER_UE]; /*!< Secondary cell configuration per
2329 UE */
2330 }RgrUeSecCellRelInfo;
2331       
2332 #endif /* LTE_ADV */
2333 /** 
2334   @brief UE reconfiguration information */
2335 typedef struct rgrUeRecfg
2336 {
2337    CmLteCellId        cellId;            /*!< Cell ID */
2338    CmLteRnti          oldCrnti;          /*!< Old UE ID */
2339    CmLteRnti          newCrnti;          /*!< New UE ID: This value must match
2340                                          'oldCrnti', if no CRNTI change during reconfiguration */ 
2341    /*rgr_x_001.main_11 : changing RecfgTypes to U32 
2342     * as all 16 bits are exhausted*/
2343    /* LTE_ADV_FLAG_REMOVED_START */
2344    /* KW fix for LTE_ADV */
2345    U32                ueRecfgTypes;      /*!< Bitmask indicating UE reconfiguration items */
2346    /* LTE_ADV_FLAG_REMOVED_END */
2347    RgrUeTxModeCfg     txMode;            /*!< UE transmission mode */
2348    RgrUeAprdDlCqiCfg  aprdDlCqiRecfg;    /*!< Aperiodic CQI-related information */
2349 #ifndef TFU_UPGRADE
2350    RgrUePrdDlCqiCfg   prdDlCqiRecfg;     /*!< Periodic CQI-related configuration */
2351 #endif
2352    RgrUeUlHqCfg       ueUlHqRecfg;       /*!< UE UL HARQ information */
2353    RgrUeQosCfg        ueQosRecfg;        /*!< UE-related Dl/UL QoS configuration: AMBR */
2354    RgrUeTaTmrCfg      ueTaTmrRecfg;      /*!< UE TA timer information */
2355 /** @name RGR_V1 */
2356 /** @{ */   
2357 #ifdef RGR_V1
2358    /* rgr_x_001.main_7: [ccpu00112398] Added periodicBSR-Timer and 
2359    retxBSR-Timer */
2360    RgrUeBsrTmrCfg     ueBsrTmrRecfg;     /*!< UE BSR timer reconfiguration */
2361 #endif
2362 /** @} */
2363    RgrUeUlPwrCfg      ueUlPwrRecfg;      /*!< UE UL power configuration */
2364 /*rgr_x_001.main_11 ADD added changes for DRX*/
2365 /**@{ */
2366    RgrUeDrxCfg        ueDrxRecfg;        /*!< UE-specific DRX configuration 
2367                                               Currently this is unused */
2368    /*rgr_x_001.main_12 - REM - isTtiBundlEnabled redundant field*/
2369 /** @} */
2370    Bool               isTtiBundlEnabled; /*!< TTI Bundling Enabled/Disabled for UE 
2371                                               Currently this is unused */
2372    RgrUeAckNackRepCfg ueAckNackRecfg;    /*!< ACK/NACK configuration for UE */
2373    RgrUeCapCfg        ueCapRecfg;        /*!< UE Capabilty reconfiguration*/
2374    RgrUeMeasGapCfg    ueMeasGapRecfg;    /*!< Measurement Gap configuration for UE */
2375    RgrCodeBookRstCfg  ueCodeBookRstRecfg;/*!< Number of bits in code book for
2376                                              transmission modes */
2377 /* rgr_x_001.main_9 - Added support for UE Reconfiguration */
2378    CmLteUeCategory     ueCatEnum;           /*!< UE category */ 
2379    RgrUeTxAntSelCfg    ulTxAntSel;          /*!< UL Transmit antenna selection configuration */
2380 /** @} */
2381    /*rgr_x_001.main_9 - Added support for SPS*/
2382 /** @name LTEMAC_SPS */
2383 /** @{ */   
2384    RgrUeSpsCfg        ueSpsRecfg;        /*!< UE SPS reconfiguration */
2385 /** @} */
2386 /* rgr_x_001.main_10. Added changes of TFU_UPGRADE */
2387 /** @name TFU_UPGRADE */
2388 /** @{ */   
2389 #ifdef TFU_UPGRADE
2390
2391    /* Periodic CQI, SRS, SR  and HD-FDD Reconfiguration  */
2392
2393    RgrUePrdDlCqiCfg  cqiCfg;       /*!< Periodic CQI PMI RI reconfiguration information */
2394    RgrUeUlSrsCfg     srsCfg;       /*!< SRS  reconfiguration information */
2395    RgrUeSrCfg        srCfg;        /*!< SR reconfiguration information */
2396 #endif
2397 /** @} */
2398 /*rgr_x_001.main_11 ADD added changes for HDFDD*/
2399 /** @name LTEMAC_HDFDD */
2400 /** @{ */   
2401 #ifdef LTEMAC_HDFDD
2402    Bool              isHdFddEnbld;        /*!< Half Duplex FDD is configured: TRUE=1/FALSE=0 */
2403 #endif /* LTEMAC_HDFDD */
2404 /** @} */
2405 /* rgr_x_001.main_10. Added changes of TFU_UPGRADE */
2406    RgrUePuschDedCfg  puschDedCfg;   /*!< PUSCH Configuration that is dedicated.
2407                                     Refer to 36.331 for more information */
2408 /** @name RGR_CQI_REPT */
2409 /** @{ */   
2410 /* rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
2411    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
2412 #ifdef RGR_CQI_REPT
2413    RgrUeCqiReptCfg    ueCqiReptCfg;   /*!< PUSH n CQI Reporting configuration */
2414 #endif
2415 /** @} */
2416 #ifdef TFU_UPGRADE 
2417    RgrUePdschDedCfg   uePdschDedCfg; /*!< PDSCH related dedicated configuration per UE */
2418 #endif
2419    /* LTE_ADV_FLAG_REMOVED_START */
2420    RgrLteAdvancedUeConfig ueLteAdvCfg; /*!< LTE Adv configuration per UE */
2421    /* LTE_ADV_FLAG_REMOVED_END */
2422
2423 #ifdef LTE_ADV
2424    RgrUeSecCellInfo     ueSCellCfgInfo;/*!< Secondary cell dedicated informaton
2425                                          per UE */
2426    RgrUeSCellAckPucchCfg        sCellAckN1ResCfg; /*!< N1ResCfg for SCell ack feedback */
2427    U8                 simulAckNackCQIFormat3;
2428 #endif /* LTE_ADV */
2429    RgrAccessStratumRls    accessStratumRls; /*!< UE Access Stratum Release */
2430    U8        csgMmbrSta;     /* CSG Membership status, refer RgrUeCsgMbrStatus */
2431 #ifdef EMTC_ENABLE
2432    RgrUeEmtcRecfg emtcUeRecfg;
2433 #endif
2434 } RgrUeRecfg;
2435 /** 
2436   @brief Logical channel reconfiguration information for dedicated channels only */
2437 typedef struct rgrLchRecfg
2438 {
2439    CmLteCellId cellId;       /*!< Cell ID */
2440    CmLteRnti   crnti;        /*!< CRNTI for DTCH and DCCH */
2441    CmLteLcId   lcId;         /*!< Logical channel ID */
2442    /*rgr_x_001.main_9 - Added support for SPS*/
2443    U8          recfgTypes;   /*!< Reconfiguration type for DL LC */
2444    
2445 /** @brief Reconfiguration Parameters during the DownLink */
2446 struct dlRecfgS 
2447    {
2448       RgrLchQosCfg dlQos;    /*!< DL QoS parameters */
2449       /*rgr_x_001.main_9 - Added support for SPS*/
2450       RgrLchSpsCfg dlSpsRecfg; /*!< SPS re-configuration for DL logical channel */
2451    } dlRecfg;                /*!< Downlink logical channel reconfiguration information */
2452    
2453    RgrUlLchQciCfg ulLchQciInfo;
2454    U8             lcgId;      /*!< Logical channel group ID */
2455 } RgrLchRecfg;
2456
2457 /** @brief Set of parameters Corresponding To Logical channel group Reconfiguration */
2458 typedef struct rgrLcgRecfg 
2459 {
2460    CmLteCellId cellId;       /*!< Cell ID */
2461    CmLteRnti   crnti;        /*!< CRNTI for DTCH and DCCH */
2462    /** @brief Uplink Reconfiguration Parameters for logical channel Groups */   
2463    struct ullcgRecfgS
2464    {
2465       U8             lcgId;     /*!< Logical channel group ID */
2466 #ifdef RG_UNUSED
2467       U8             numLch;      /*!< Number of LC's for this group in Uplink */
2468       RgrUlLchCfg    lchUlCfg[RGR_MAX_LC_PER_LCG]; /*!< Logical Channel details for
2469                                                         this LCG*/
2470 #endif /*LTE_L2_MEAS */
2471       U32            gbr;     /*!< Commulative UL GBR of all LC mapping to this LCG */
2472       U32            mbr;     /*!< Commulative UL MBR of all LC mapping to this LCG */
2473    } ulRecfg;
2474 }RgrLcgRecfg;
2475
2476 /** @brief Basic reconfiguration structure at RRM */
2477 typedef struct rgrRecfg
2478 {
2479    U8 recfgType;             /*!< Indicates reconfiguration type */
2480    union                     /*!< Reconfiguration type is selector */
2481    {
2482       RgrCellRecfg  cellRecfg; /*!< Cell reconfiguration */
2483       RgrUeRecfg    ueRecfg;    /*!< UE reconfiguration information */ 
2484       RgrLchRecfg   lchRecfg;   /*!< Logical channel reconfiguration information */
2485       RgrLcgRecfg   lcgRecfg;   /*!< Logical group reconfiguration information */
2486    } u;
2487 } RgrRecfg;
2488 /** 
2489   @brief Basic Delete information for MAC */
2490 typedef struct rgrDel
2491 {
2492    U8 delType;               /*!< Indicates configuration item to be deleted */
2493    /** @brief Indicates The Cell/UE/Logical Channel Group to be deleted  */ 
2494    union rgrDelU
2495    {
2496       /** @brief Delete The Cell ID */
2497       struct rgrCellDelS 
2498       {
2499          CmLteCellId cellId; /*!< Cell ID */
2500       } cellDel;             /*!< Cell Delete information */
2501
2502       /** @brief Delete The Ue From The Cell */
2503       struct rgrUeDelS 
2504       {
2505          CmLteCellId cellId; /*!< Cell ID */
2506          CmLteRnti   crnti;  /*!< UE ID: CRNTI */
2507       } ueDel;               /*!< UE Delete information */
2508       
2509        /** @brief Delete The Logical Channels */
2510       struct rgrLchDelS
2511       {
2512          CmLteCellId cellId; /*!< Cell ID */
2513          CmLteRnti   crnti;  /*!< CRNTI for DTCH and DCCH */
2514          CmLteLcId   lcId;   /*!< Logical channel ID */
2515          U8          lcgId;  /*!< Logical channel group ID */
2516       } lchDel;              /*!< Logical channel delete information */
2517       
2518       /** @brief Delete The Logical channel groups */
2519       struct rgrLcgDelS
2520       {
2521          CmLteCellId cellId; /*!< Cell ID */
2522          CmLteRnti   crnti;  /*!< CRNTI for DTCH and DCCH */
2523          U8          lcgId;  /*!< Logical channel group ID */
2524       } lcgDel;
2525 #ifdef LTE_ADV
2526       /** @brief Delete Secondary cell for a UE */
2527       struct rgrUeScellRel
2528       {
2529          CmLteCellId          cellId;           /*!< Cell ID */
2530          CmLteRnti            crnti;            /*!< UE ID: CRNTI */
2531          U32                  ueDelTypes;       /*!< Bitmask indicating UE reconfiguration items */
2532          RgrUeSecCellRelInfo  ueSCellRelCfgInfo;/*!< Secondary cell dedicated informaton*/
2533       } ueScellRel;
2534 #endif   
2535    } u;                      /*!< Union of Cell/UE/Lch delete information */
2536 } RgrDel;
2537 /** 
2538   @brief UE RESET info for MAC */
2539 typedef struct rgrRst
2540 {
2541    CmLteCellId cellId; /*!< Cell ID */
2542    CmLteRnti   crnti;  /*!< UE ID: CRNTI tobe RESET */
2543 } RgrRst;
2544
2545 typedef enum rgrSonCfgType
2546 {
2547    RGR_SON_PRB_CFG
2548 }RgrSonCfgType;
2549
2550 /* Pa enum -6, -4.77, -3, -1.77, 0, 1, 2, 3 dB and -INF */
2551 typedef enum rgrPaVal
2552 {
2553    RGR_PA_DB_NEG_6,
2554    RGR_PA_DB_NEG_4_77,
2555    RGR_PA_DB_NEG_3,
2556    RGR_PA_DB_NEG_1_77,
2557    RGR_PA_DB_0,
2558    RGR_PA_DB_1,
2559    RGR_PA_DB_2,
2560    RGR_PA_DB_3,
2561    RGR_PA_NEGTIVE_INF
2562 }RgrPaVal;
2563
2564 /* Pa level enum High, Normal, Low */
2565 typedef enum rgrPaLevel
2566 {
2567    RGR_PA_LVL_NORMAL,
2568    RGR_PA_LVL_LOW,
2569    RGR_PA_LVL_HIGH
2570 }RgrPaLevel;
2571
2572
2573 /** 
2574   @brief PRB configuration received from SON for MAC */
2575
2576 typedef struct rgrPrbCfg
2577 {
2578    U8                isSonIcicEnable;
2579    U8                numCellEdgeUEs;
2580    U8                numCellCentreUEs;
2581    CmLteRnti         cellEdgeUe[RG_SCH_MAX_UE];      /*!< List of cell Edge UE's */
2582    CmLteRnti         cellCentreUe[RG_SCH_MAX_UE];   /*!< List of cell centre UE's */
2583    RgrPaLevel        paLevelPerPrb[RGR_SCH_MAX_PA_PER_PRB]; /*!< Mapping of PRB to Pa Values */
2584 }RgrPrbCfg; 
2585
2586 /** 
2587   @brief configuration received from SON for MAC */
2588 typedef struct rgrSonCfg
2589 {
2590    RgrSonCfgType   cfgType;
2591    union
2592    {
2593       RgrPrbCfg   prbCfg;
2594    }u; 
2595 }RgrSonCfg;
2596
2597  /** @brief Basic RGR configuration/reconfiguration info at RRM */
2598 typedef struct rgrCfgReqInfo
2599 {
2600
2601    U8  action;               /*!< Determines configuration/reconfiguration */
2602    union                     /*!< Action is selector */
2603    {
2604       RgrCfg   cfgInfo;      /*!< Configuration information at RRM */
2605       RgrRecfg recfgInfo;    /*!< Reconfiguration information at RRM */
2606       RgrDel   delInfo;      /*!< Deletion related information */
2607       RgrRst   rstInfo;      /*!< UE information to be REST */
2608       RgrSonCfg   sonCfg;    /*!< PA and PRB configuration received from SON*/
2609 #ifdef LTE_ADV
2610       RgrSCellActDeactEvnt  sCellActDeactEvnt;  /*!< SCell Activation Information */
2611 #endif /* LTE_ADV */
2612    } u;
2613 } RgrCfgReqInfo;
2614
2615 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
2616 /** @name RGR_RRM_TICK */
2617 /** @{ */
2618 /** @brief This structure contains information that is passed as part of the TTI
2619  * indication sent from PHY to MAC.
2620  */
2621 typedef struct rgrTtiIndInfo
2622 {
2623    CmLteCellId       cellId;       /*!< Cell ID */
2624    U16               hSfn;          /*!< Hyper System Frame Number */
2625    U16               sfn;          /*!< System Frame Number */
2626 } RgrTtiIndInfo;
2627 /** @} */
2628
2629 /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
2630 /** @name RGR_SI_SCH */
2631 /** @{ */
2632 #ifdef RGR_SI_SCH
2633 /** @brief This structure contains parameters used for specifying SI 
2634  *  configuration to MAC-Scheduler by RRM as a part of primitive
2635  *  RgUiRgrSiCfgReq.
2636  */
2637 typedef struct rgrSiCfgReqInfo
2638 {
2639    CmLteCellId    cellId;  /*! Cell Id */
2640    RgrSiCfgType   cfgType; /*! MIB/SIB1/SI */
2641    U8             siId; /*! SI ID, if cfgType is SI. 
2642                              SI ID starts from 1  */
2643    Buffer         *pdu; /*! PDU, one of MIB/SIB1/SI */
2644 }RgrSiCfgReqInfo;
2645
2646 /** @brief This structure contains parameters used for specifying SI
2647  *  configuration to MAC-Scheduler by RRM as a part of primitive
2648  *  RgUiRgrWarningSiCfgReq.
2649  */
2650 typedef struct rgrWarningSiCfgReqInfo
2651 {
2652    U8             emtcEnable; /*! indicates EMTC enabled or not */
2653    CmLteCellId    cellId;  /*! Cell Id */
2654    U8             siId; /*! SI ID */
2655    CmLListCp      siPduLst; /*! list of PDUs,each corresponding to one segment*/
2656 }RgrWarningSiCfgReqInfo;
2657
2658 typedef struct rgrSegmentInfo
2659 {
2660    CmLList     cmasSegPduLstLnk;
2661    Buffer*     pdu;
2662 }RgrSegmentInfo;
2663
2664
2665 #endif /*RGR_SI_SCH*/
2666
2667 #define RGR_UESTA_MAC_CRNTI_CE_RECVD   0x01
2668 #define RGR_UESTA_MAC_CRNTI_CE_RECVD_IN_SPS_ACTIVE   0x02
2669 /**
2670   @brief Status Indication structure passed in RgUiRgrUeStaInd primitive */
2671 typedef struct rgrUeStaIndInfo
2672 {
2673    CmLteCellId       cellId;       /*!< Cell ID */
2674    CmLteRnti         crnti;        /*!< UE identifier UE ID: CRNTI */
2675    U8                status;       /*!< Status */
2676 }RgrUeStaIndInfo;
2677 /** @} */
2678
2679 /** @{ */
2680 /* LTE_ADV_FLAG_REMOVED_START */
2681 /** @brief This structure contains parameters used for specifying Load Inf 
2682  *  i.e RNTP, ABS etc configuration to MAC-Scheduler by RRM as a part of primitive
2683  *  RgUiRgrLoadInfReq.
2684  */
2685 typedef struct rgrLoadInfReqInfo
2686 {
2687    CmLteCellId    cellId;             /*! Cell Id */
2688    U8             rgrCcPHighStartRb;  /*! Start RB for power high cell centre user */
2689    U8             rgrCcPHighEndRb;    /*! End RB for power high cell centre use */
2690 }RgrLoadInfReqInfo;
2691 /* LTE_ADV_FLAG_REMOVED_END */
2692 /** @} */
2693
2694 /* 
2695    Function Prototypes 
2696  */
2697
2698 /** @brief Request from RRM to MAC to bind the interface SAPs .
2699  *
2700  * @details This Primitive is used to bind The SAPs between RRM and the MAC.
2701  * The API validates the Sap Ids , contents of the pst Structure .
2702  *
2703  * @param[in] pst  Pointer To the Post Structure.
2704  * @param[in] suId SAP Id of the Service User.
2705  * @param[in] spId SAP Id of the Service Provider
2706  * @return ROK/RFAILED
2707  */
2708
2709 typedef S16 (*RgrBndReq) ARGS((
2710    Pst*                 pst,
2711    SuId                 suId,
2712    SpId                 spId));
2713
2714 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
2715 /** @name RGR_RRM_TICK */
2716 /** @{ */
2717
2718 /** @brief Indication from MAC to a RGR User about the Transmit Time Interval. 
2719  *
2720  * @details This Primitive is used to indicate RRM after every TTI.
2721  * API validates the  post Structure and TTI Timing .
2722  *
2723  * @param[in] pst    Pointer To the Post Structure.
2724  * @param[in] suId   SAP Id of the Service User.
2725  * @param[in] ttiInd Pointer To a structure containing additional Information that is passed 
2726  * as a part of TTI Indication. 
2727  * @return ROK/RFAILED
2728  */
2729
2730 typedef S16 (*RgrTtiInd) ARGS((
2731    Pst*                 pst,
2732    SuId                 suId,
2733    RgrTtiIndInfo        *ttiInd));
2734 /** @} */
2735
2736 /** @brief Confirmation from MAC to RRM for the bind request for the interface SAPs.
2737  *
2738  * @details This Primitive is used To confirm the binding between the MAC and The RRM.
2739  *
2740  * @param[in] pst    Pointer To the Post Structure.
2741  * @param[in] suId   SAP Id of the Service User.
2742  * @param[in] status Binding Status.
2743  * @return ROK/RFAILED
2744  */
2745 typedef S16 (*RgrBndCfm) ARGS((
2746    Pst*                 pst,
2747    SuId                 suId,
2748    U8                   status));
2749
2750 /** @brief Request from RRM to MAC to unbind the interface SAPs.
2751  *
2752  * @details This Primitive is used to unbind MAC and The RRM.It validates on the SAP If its already Bound 
2753  * and unbinds the SAP.
2754  *
2755  * @param[in] pst    Pointer to the Post Structure.
2756  * @param[in] spId   SAP Id of the Service Provider.
2757  * @param[in] reason Cause for unbinding.
2758  * @return ROK/RFAILED
2759  */
2760 typedef S16 (*RgrUbndReq) ARGS((
2761    Pst*                 pst,
2762    SpId                 spId,
2763    Reason               reason));
2764
2765 /** @brief Configuration request from RRM to MAC for configuring Cell/UE/LC. 
2766  *
2767  * @details This API is used to configure a scheduler for a UE/Cell/Logical Channels 
2768  *
2769  * @param[in] pst        Pointer to the Post Structure.
2770  * @param[in] spId       SAP Id of the Service Provider.
2771  * @param[in] transId    Reason for unbinding.
2772  * @param[in] cfgReqInfo A Pointer to Configuration/Reconfiguration Structure. 
2773  * @return ROK/RFAILED
2774  */
2775 typedef S16 (*RgrCfgReq) ARGS((
2776    Pst*                 pst,
2777    RgrCfgTransId        transId,
2778    RgrCfgReqInfo *      cfgReqInfo));
2779 /** @brief Configuration confirm from MAC to RRM. 
2780  * 
2781  * @details This API confirms the RGR User about the status of the Configuration.
2782  * 
2783  * @param[in] pst      Pointer to the Post Structure.
2784  * @param[in] spId     SAP Id of the Service User.
2785  * @param[in] transId  Transaction Id for the transaction between RRM and MAC
2786  * @param[in] status   Configuration confirmation status Information.
2787  * @return ROK/RFAILED
2788  */
2789 typedef S16 (*RgrCfgCfm) ARGS((
2790    Pst*                 pst,
2791    RgrCfgTransId        transId,
2792    U8                   status));
2793 /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
2794
2795 /** @name RGR_SI_SCH */
2796 /** @{ */
2797 #ifdef RGR_SI_SCH
2798 /** @brief SI Configuration Request primitive for SI configuration
2799  *  
2800  * @details This API is used to configure the System Information from RRM to a MAC scheduler.
2801  * 
2802  * @param[in] pst      Pointer to the Post Structure.
2803  * @param[in] spId     SAP Id of the Service Provider.
2804  * @param[in] transId  Transaction Id for the transaction between RRM and MAC.
2805  * @param[in] siCfgReq Parameters for the configuration.
2806  * @return ROK/RFAILED
2807  */
2808 typedef S16 (*RgrSiCfgReq) ARGS((
2809    Pst               *pst,
2810    SpId              spId,
2811    RgrCfgTransId     transId,
2812    RgrSiCfgReqInfo   *siCfgReq));
2813
2814 /** @brief SI Configuration Confirm Primitive for configuring Cell/UE/LC  
2815  *
2816  * @details This API confirms the SI configuration confirm in the status indication.  
2817  * 
2818  * @param[in] pst     Pointer to a post structure.
2819  * @param[in] suId    SAP Id of the Service User.
2820  * @param[in] transId Transaction Id between the MAC and The RRM.
2821  * @param[in] status  Confirmation status information from the MAC to the user.
2822  * @return ROK/RFAILED.
2823  */
2824 typedef S16 (*RgrSiCfgCfm) ARGS((
2825    Pst*                 pst,
2826    SuId                 suId,
2827    RgrCfgTransId        transId,
2828    U8                   status));
2829
2830 /** @brief SI Configuration Request primitive for warning SI configuration
2831  *  
2832  *  @details This API is used to configure the System Info (SIB10,SIB11,SIB12) 
2833  *           from RRM to a MAC scheduler.
2834  *    
2835  *  @param[in] pst      Pointer to the Post Structure.
2836  *  @param[in] spId     SAP Id of the Service Provider.
2837  *  @param[in] transId Transaction Id between the MAC and The RRM.
2838  *  @param[in] WarningsiCfgReq Parameters for the configuration.
2839  *  @return ROK/RFAILED
2840  */
2841 typedef S16 (*RgrWarningSiCfgReq) ARGS((
2842    Pst                     *pst,
2843    SpId                    spId,
2844    RgrCfgTransId           transId,
2845    RgrWarningSiCfgReqInfo  *warningSiCfgReq));
2846
2847
2848 /** @brief Warning SI Configuration Confirm Primitive    
2849  *
2850  * @details This API confirms the Warning SI configuration confirm in the
2851  *           status indication.  
2852  * 
2853  * @param[in] pst     Pointer to a post structure.
2854  * @param[in] suId    SAP Id of the Service User.
2855  * @param[in] transId Transaction Id between the MAC and The RRM.
2856  * @param[in] siId   SI ID
2857  * @param[in] status  Confirmation status information from the MAC to the user.
2858  * @return ROK/RFAILED.
2859  */
2860 typedef S16 (*RgrWarningSiCfgCfm) ARGS((
2861    Pst*                 pst,
2862    SuId                 suId,
2863    RgrCfgTransId        transId,
2864    U8                   siId,
2865    U8                   status));
2866
2867 /** @brief SI Configuration stop Request primitive for warning SI configuration
2868  *
2869  *  @details Used to stop the System Information(SIB10, SIB11, SIB12) from RRM 
2870  *           to a MAC schedule
2871  *
2872  *  @param[in] pst      Pointer to the Post Structure.
2873  *  @param[in] spId     SAP Id of the Service Provider.
2874  *  @param[in] siId     siId to be stopped.
2875  *  @return ROK/RFAILED
2876  */ 
2877 typedef S16 (*RgrWarningSiStopReq) ARGS((
2878    Pst               *pst,
2879    SpId              spId,
2880    RgrCfgTransId     transId,
2881    U8                siId ));
2882
2883 #endif /*RGR_SI_SCH*/
2884
2885 /** @{ */
2886 /* LTE_ADV_FLAG_REMOVED_START */
2887 /** @brief LOAD INF Configuration Request primitive for RNTP, ABS etc Configuration
2888  *  
2889  * @details This API is used to configure the LOAD INF parameters from RRM to a MAC scheduler.
2890  * 
2891  * @param[in] pst        Pointer to the Post Structure.
2892  * @param[in] spId       SAP Id of the Service Provider.
2893  * @param[in] transId    Transaction Id for the transaction between RRM and MAC.
2894  * @param[in] loadInfReq Parameters for the configuration.
2895  * @return ROK/RFAILED
2896  */
2897 typedef S16 (*RgrLoadInfReq) ARGS((
2898          Pst                 *pst,
2899          SpId                spId,
2900          RgrCfgTransId       transId,
2901          RgrLoadInfReqInfo   *loadInfReq));
2902 /* LTE_ADV_FLAG_REMOVED_END */
2903 /** @} */
2904
2905 /* rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
2906    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
2907 #ifdef RGR_CQI_REPT
2908 typedef S16 (*RgrStaInd) ARGS((
2909    Pst*                 pst,
2910    SuId                 suId,
2911    RgrStaIndInfo        *staInd));
2912 #endif
2913
2914 /* LTE_ADV_FLAG_REMOVED_START */
2915 typedef S16 (*RgrLoadInfInd) ARGS((
2916    Pst*                 pst,
2917    SuId                 suId,
2918    RgrLoadInfIndInfo    *loadInfInd));
2919 /* LTE_ADV_FLAG_REMOVED_END */
2920
2921 typedef S16 (*RgrUeStaInd) ARGS((
2922    Pst*                 pst,
2923    SuId                 suId,
2924    RgrUeStaIndInfo        *staInd));
2925 #ifdef RG
2926
2927 /** @brief Request from RRM to MAC to bind the interface SAPs. 
2928  * 
2929  * @details This API is invoked by RRM towards MAC to bind RGR SAP. 
2930  * This API validates the Pst, spId, suId and sends the bind confirm to
2931  * RRM.
2932  *
2933  *@param[in] pst   Pointer to a post structure.
2934  *@param[in] suId  SAP Id of the Service User.
2935  *@param[in] spId  SAP Id of the Service Provider.
2936  *@return  ROK/RFAILED
2937 */
2938 EXTERN S16 RgUiRgrBndReq ARGS((
2939    Pst*                 pst,
2940    SuId                 suId,
2941    SpId                 spId
2942 ));
2943 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
2944 /** @name RGR_RRM_TICK */
2945 /** @{ */
2946 /** @brief TTI Indication from Scheduler to RRM.  
2947
2948 *  @details TTI Indication from MAC to RGR User.
2949 *
2950 * @param[in] pst    Pointer to a post structure.
2951 * @param[in] suId   SAP Id of the Service User.
2952 * @param[in] ttiInd Parameters containing the information on TTI Indication.
2953 * @return ROK/RFAILED
2954 */
2955 EXTERN S16 RgUiRgrTtiInd ARGS((
2956    Pst*                 pst,
2957    SuId                 suId,
2958    RgrTtiIndInfo        *ttiInd
2959 ));
2960 #endif
2961 /** @} */
2962 /*rgr_x_001.main_9 - Added support for SPS*/
2963 EXTERN S16 cmPkRgrSpsCellCfg ARGS((
2964    RgrSpsCellCfg *param,
2965    Buffer *mBuf
2966 ));
2967 EXTERN S16 cmUnpkRgrSpsDlCellCfg ARGS((
2968    RgrSpsCellCfg *param,
2969    Buffer *mBuf
2970 ));
2971 EXTERN S16 cmPkRgrUeSpsDlCfg ARGS((
2972    RgrUeSpsDlCfg *param,
2973    Buffer *mBuf
2974 ));
2975 EXTERN S16 cmUnpkRgrUeSpsDlCfg ARGS((
2976    RgrUeSpsDlCfg *param,
2977    Buffer *mBuf
2978 ));
2979 EXTERN S16 cmPkRgrUeSpsUlCfg ARGS((
2980    RgrUeSpsUlCfg *param,
2981    Buffer *mBuf
2982 ));
2983 EXTERN S16 cmUnpkRgrUeSpsUlCfg ARGS((
2984    RgrUeSpsUlCfg *param,
2985    Buffer *mBuf
2986 ));
2987 EXTERN S16 cmPkRgrUeSpsCfg ARGS((
2988    RgrUeSpsCfg *param,
2989    Buffer *mBuf
2990 ));
2991 EXTERN S16 cmUnpkRgrUeSpsCfg ARGS((
2992    RgrUeSpsCfg *param,
2993    Buffer *mBuf
2994 ));
2995 EXTERN S16 cmPkRgrLchSpsCfg ARGS((
2996    RgrLchSpsCfg *param,
2997    Buffer *mBuf
2998 ));
2999 EXTERN S16 cmUnpkRgrLchSpsCfg ARGS((
3000    RgrLchSpsCfg *param,
3001    Buffer *mBuf
3002 ));
3003
3004 /*rgr_x_001.main_11 ADD added changes for L2 measurements*/
3005 EXTERN S16 cmPkRgrUlLchCfg ARGS((
3006    RgrUlLchCfg *param,
3007    Buffer *mBuf
3008 ));
3009 EXTERN S16 cmUnpkRgrUlLchCfg ARGS((
3010   RgrUlLchCfg *param,
3011   Buffer *mBuf
3012 ));
3013 EXTERN S16 cmPkRgrUlLchQciCfg ARGS((
3014    RgrUlLchQciCfg *param,
3015    Buffer *mBuf
3016 ));
3017 EXTERN S16 cmUnpkRgrUlLchQciCfg ARGS((
3018   RgrUlLchQciCfg *param,
3019   Buffer *mBuf
3020 ));
3021
3022
3023 /*rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
3024    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
3025 #ifdef RGR_CQI_REPT
3026 EXTERN S16 cmPkRgrUeCqiReptCfg ARGS((
3027 RgrUeCqiReptCfg *param,
3028 Buffer *mBuf
3029 ));
3030
3031 EXTERN S16 cmUnpkRgrUeCqiReptCfg ARGS((
3032 RgrUeCqiReptCfg *param,
3033 Buffer *mBuf
3034 ));
3035
3036 EXTERN S16 cmUnpkRgrSubBandCqiInfo ARGS((
3037 RgrSubBandCqiInfo *param,
3038 Buffer *mBuf
3039 ));
3040
3041 EXTERN S16 cmPkRgrStaInd ARGS((
3042 Pst* pst,
3043 SuId suId,
3044 RgrStaIndInfo* staInd
3045 ));
3046
3047 EXTERN S16 cmUnpkRgrStaInd ARGS((
3048 RgrStaInd func,
3049 Pst *pst,
3050 Buffer *mBuf
3051 ));
3052
3053 EXTERN S16 cmPkRgrStaIndInfo ARGS((
3054 RgrStaIndInfo *param,
3055 Buffer *mBuf
3056 ));
3057
3058 EXTERN S16 cmUnpkRgrStaIndInfo ARGS((
3059 RgrStaIndInfo *param,
3060 Buffer *mBuf
3061 ));
3062
3063 EXTERN S16 cmPkRgrUeCqiInfo ARGS((
3064 RgrUeCqiInfo *param,
3065 Buffer *mBuf
3066 ));
3067
3068 EXTERN S16 cmUnpkRgrUeCqiInfo ARGS((
3069 RgrUeCqiInfo *param,
3070 Buffer *mBuf
3071 ));
3072
3073 EXTERN S16 cmPkRgrUeCqiRept ARGS((
3074 RgrUeCqiRept *param,
3075 Buffer *mBuf
3076 ));
3077
3078 EXTERN S16 cmPkRgrSubBandCqiInfo ARGS((
3079 RgrSubBandCqiInfo *param,
3080 Buffer *mBuf
3081 ));
3082
3083 EXTERN S16 cmUnpkRgrUeCqiRept ARGS((
3084 RgrUeCqiRept *param,
3085 Buffer *mBuf
3086 ));
3087 #endif
3088
3089 /* LTE_ADV_FLAG_REMOVED_START */
3090 EXTERN S16 cmPkRgrLoadInfInd ARGS((
3091 Pst* pst,
3092 SuId suId,
3093 RgrLoadInfIndInfo* loadInfInd
3094 ));
3095
3096 EXTERN S16 cmUnpkRgrLoadInfInd ARGS((
3097 RgrLoadInfInd func,
3098 Pst *pst,
3099 Buffer *mBuf
3100 ));
3101
3102 EXTERN S16 cmPkRgrLoadInfIndInfo ARGS((
3103 RgrLoadInfIndInfo *param,
3104 Buffer *mBuf
3105 ));
3106
3107 EXTERN S16 cmUnpkRgrLoadInfIndInfo ARGS((
3108 RgrLoadInfIndInfo *param,
3109 Pst *pst, /* dsfr_pal_fixes ** 21-March-2013 ** SKS */
3110 Buffer *mBuf
3111 ));
3112 /* LTE_ADV_FLAG_REMOVED_END */
3113
3114 #ifdef TFU_UPGRADE 
3115 EXTERN S16 cmPkRgrUePdschDedCfg ARGS((
3116 RgrUePdschDedCfg  *param,
3117 Buffer *mBuf
3118 ));
3119
3120 EXTERN S16 cmUnpkRgrUePdschDedCfg ARGS((
3121 RgrUePdschDedCfg *param,
3122 Buffer *mBuf
3123 ));
3124
3125 EXTERN S16 cmPkRgrUepACfg ARGS((
3126 RgrUepACfg *param,
3127 Buffer *mBuf
3128 ));
3129
3130 EXTERN S16 cmUnpkRgrUepACfg ARGS((
3131 RgrUepACfg *param,
3132 Buffer *mBuf
3133 ));
3134 #endif
3135
3136 #ifdef LTE_ADV
3137 EXTERN S16 cmPkRgrUeSecCellInfo ARGS((
3138 RgrUeSecCellInfo *param,
3139 Buffer *mBuf
3140 ));
3141
3142 EXTERN S16 cmUnpkRgrUeSecCellInfo ARGS((
3143 RgrUeSecCellInfo *param,
3144 Buffer *mBuf
3145 ));
3146
3147 EXTERN S16 cmPkRgrUeDlSecCellRelInfo ARGS((
3148 RgrUeDlSecCellRelInfo *param,
3149 Buffer *mBuf
3150 ));
3151
3152 EXTERN S16 cmUnpkRgrUeDlSecCellRelInfo ARGS((
3153 RgrUeDlSecCellRelInfo *param,
3154 Buffer *mBuf
3155 ));
3156
3157 EXTERN S16 cmPkRgrUeSecCellRelInfo ARGS((
3158 RgrUeSecCellRelInfo *param,
3159 Buffer *mBuf
3160 ));
3161
3162 EXTERN S16 cmUnpkRgrUeSecCellRelInfo ARGS((
3163 RgrUeSecCellRelInfo *param,
3164 Buffer *mBuf
3165 ));
3166
3167 /* Sprint 3 */
3168 EXTERN S16 cmPkRgrUeSCellAckPucchCfg ARGS((
3169 RgrUeSCellAckPucchCfg *param,
3170 Buffer *mBuf
3171 ));
3172
3173 EXTERN S16 cmUnpkRgrUeSCellAckPucchCfg ARGS((
3174 RgrUeSCellAckPucchCfg *param,
3175 Buffer *mBuf
3176 ));
3177 #endif /* LTE_ADV */
3178 #ifdef RG
3179 /** @brief Confirmation from MAC to RRM for the bind request. 
3180 *
3181 * @details Confirmation from MAC to RRM for the bind
3182 * request for the interface saps. This function indicates it through the status To the User.
3183 *
3184 *  @param[in] pst     Pointer to a post structure.
3185 *  @param[in] suId    SAP Id of the Service User.
3186 *  @param[in] status  Confirmation status for the RGR User.
3187 *  @return ROK/RFAILED  
3188 */
3189 EXTERN S16 RgUiRgrBndCfm ARGS((
3190    Pst*                 pst,
3191    SuId                 suId,
3192    U8                   status
3193 ));
3194
3195 /** @brief Request from RRM to MAC to unbind the interface SAPs. 
3196  *
3197  * @details This API is invoked by RRM towards MAC to unbind RGR SAP. 
3198  * This API validates the Pst, spId, suId and sends the unbdind confirm to
3199  * 
3200  * @param[in] pst    Pointer To a post structure.
3201  * @param[in] spId   Service provider SAP Id.
3202  * @param[in] reason Cause for the Unbinding.
3203  * @return ROK/RFAILED.
3204  */
3205 EXTERN S16 RgUiRgrUbndReq ARGS((
3206    Pst*                 pst,
3207    SpId                 spId,
3208    Reason               reason
3209 ));
3210
3211 /** @brief Configuration request from RRM to MAC for configuring Cell/UE/LC.
3212  *
3213  * @details This API is invoked by RRM towards MAC to configure MAC. 
3214  *     These API validates the Pst, spId, suId and transfers the config request 
3215  *     specific information to corresponding ownership module (GOM) API. 
3216  *  
3217  *  @param[in] pst        Pointer to a post structure.
3218  *  @param[in] spId       SAP Id of the Service Provider.
3219  *  @param[in] transId    MAC to RRM Transaction Id.
3220  *  @param[in] cfgReqInfo Basic RGR configuration/reconfiguration info at RRM. 
3221  *  @return  ROK/RFAILED
3222  */
3223 EXTERN S16 HandleSchCfgReq ARGS((
3224    Pst*                 pst,
3225    RgrCfgTransId        transId,
3226    RgrCfgReqInfo *      cfgReqInfo
3227 ));
3228
3229 /** @brief Configuration Confirm from MAC to RRM.  
3230  *
3231  * @details In this API crnti, preambleId, and
3232  * maskId are returned to RRM if request does not contain crnti (For Handover purpose)
3233  *
3234  *  @param[in] pst     A pointer to post Structure.
3235  *  @param[in] transId MAC to RRM User transaction Id. 
3236  *  @param[in] status  Status indication from the MAC.  
3237  *  @return ROK/RFAILED
3238  */
3239 EXTERN S16 RgUiRgrCfgCfm ARGS((
3240    Pst*                 pst,
3241    RgrCfgTransId        transId,
3242    U8                   status
3243 ));
3244 /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
3245 /** @name RGR_SI_SCH */
3246 /** @{ */
3247 #ifdef RGR_SI_SCH
3248 /** @brief SI Configuration Request primitive used for SI configuration
3249  *  from RRM to MAC-Scheduler.
3250  *
3251  * @details  This primitive specifies the PDU
3252  *  (MIB/SIB1/SIs) and the associated parameters in the structure
3253  *  RgrSiCfgReqInfo.
3254  * 
3255  * @param[in] pst      Pointer to a post Structure.
3256  * @param[in] spId     SAP Id of the Service provider.
3257  * @param[in] transId  RRM to MAC transaction Id.
3258  * @param[in] siCfgReq Parameters used for specifying SI.
3259  * @return ROK/RFAILED 
3260  */
3261 EXTERN S16 RgUiRgrSiCfgReq ARGS((
3262    Pst           *pst,
3263    SpId          spId,
3264    RgrCfgTransId transId,
3265    RgrSiCfgReqInfo   *siCfgReq
3266 ));
3267
3268 /** @brief SI Configuration Confirm from MAC to RRM.
3269  *
3270  * @details This primitive is used to confirm the SI configuration to RRM from MAC. 
3271  * 
3272  * @param[in] pst     Pointer to a post structure
3273  * @param[in] suId    Service User SAP Id
3274  * @param[in] transId Transaction id between RRM and MAC
3275  * @param[in] status  Confirmation status .
3276  * @return ROK/RFAILED
3277  */
3278 EXTERN S16 RgUiRgrSiCfgCfm ARGS((
3279    Pst*                 pst,
3280    SuId                 suId,
3281    RgrCfgTransId        transId,
3282    U8                   status
3283 ));
3284
3285 /** @brief SI Configuration Confirm from MAC to RRM.
3286  *
3287  * @details This primitive is used to confirm the SI configuration to RRM 
3288  *          from MAC. 
3289  * 
3290  * @param[in] pst     Pointer to a post structure
3291  * @param[in] suId    Service User SAP Id
3292  * @param[in] transId Transaction id between RRM and MAC
3293  * @param[in] status  Confirmation status .
3294  * @return ROK/RFAILED
3295  */
3296 EXTERN S16 RgUiRgrWarningSiCfgReq ARGS((
3297    Pst                    *pst,
3298    SpId                   spId,
3299    RgrCfgTransId          transId,
3300    RgrWarningSiCfgReqInfo *WarningSiCfgReqInfo
3301 ));
3302
3303
3304 /** @brief Warning SI Configuration Confirm from MAC to RRM.
3305  *
3306  * @details This primitive is used to confirm the Warning SI configuration 
3307  *          to RRM from MAC. 
3308  * 
3309  * @param[in] pst     Pointer to a post structure
3310  * @param[in] suId    Service User SAP Id
3311  * @param[in] transId Transaction id between RRM and MAC
3312  * @param[in] siId    SI ID.
3313  * @param[in] status  Confirmation status .
3314  * @return ROK/RFAILED
3315  */
3316 EXTERN S16 RgUiRgrWarningSiCfgCfm ARGS((
3317    Pst*              pst,
3318    SuId              suId,
3319    RgrCfgTransId     transId,
3320    U8                siId,
3321    U8                status
3322 ));
3323
3324 /** @brief SI Configuration Confirm from MAC to RRM.
3325  *
3326  * @details This primitive is used to confirm the SI configuration to RRM
3327  *          from MAC. 
3328  * 
3329  * @param[in] pst     Pointer to a post structure
3330  * @param[in] spId    Service Provider SAP Id
3331  * @param[in] siId    SI Index
3332  * @return ROK/RFAILED
3333  */
3334 EXTERN S16 RgUiRgrWarningSiStopReq ARGS((
3335    Pst           *pst,
3336    SpId          spId,
3337    RgrCfgTransId transId,
3338    U8            siId
3339 ));
3340
3341 #endif /*RGR_SI_SCH*/
3342 /** @} */
3343
3344 /** @{ */
3345 /* LTE_ADV_FLAG_REMOVED_START */
3346 /** @brief LOAD INF Configuration Request primitive used for RNTP, ABS configuration
3347  *  from RRM to MAC-Scheduler.
3348  *
3349  * @details  This primitive specifies the startRb and endRb of CC sub-band for which
3350  *  we have to increase power at schedular
3351  *
3352  *
3353  * @param[in] pst        Pointer to a post Structure.
3354  * @param[in] spId       SAP Id of the Service provider.
3355  * @param[in] transId    RRM to MAC transaction Id.
3356  * @param[in] loadInfReq Parameters used for specifying LOAD INF.
3357  * @return ROK/RFAILED
3358  */
3359 EXTERN S16 RgUiRgrLoadInfReq ARGS((
3360    Pst                 *pst,
3361    SpId                spId,
3362    RgrCfgTransId       transId,
3363    RgrLoadInfReqInfo   *loadInfReq
3364 ));
3365 /* LTE_ADV_FLAG_REMOVED_END */
3366 /** @} */
3367
3368 /** @name RGR_CQI_REPT */
3369 /** @{ */
3370 /* rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
3371    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
3372 #ifdef RGR_CQI_REPT
3373 /** @brief Sta Indication from Scheduler to RRM 
3374  *
3375  * @details This primitive is used to send status indication from scheduler
3376  *          to RRM. 
3377  * 
3378  * @param[in] pst     Pointer to a post structure
3379  * @param[in] suId    Service User SAP Id
3380  * @param[in] staInd  Status Indication .
3381  * @return ROK/RFAILED
3382  */
3383 EXTERN S16 RgUiRgrStaInd ARGS((
3384    Pst*                 pst,
3385    SuId                 suId,
3386    RgrStaIndInfo        *staInd
3387 ));
3388 #endif
3389 EXTERN S16 RgUiRgrUeStaInd ARGS((
3390 Pst             *pst,
3391 SuId            suId,
3392 RgrUeStaIndInfo *ueStaInd
3393 ));
3394
3395
3396 /** @} */
3397 /** @{ */
3398 /* LTE_ADV_FLAG_REMOVED_START */
3399 /** @brief LoadInf Indication from Scheduler to RRM
3400  *
3401  * @details This primitive is used to send LOAD INF indication from scheduler
3402  *          to RRM.
3403  *
3404  * @param[in] pst         Pointer to a post structure
3405  * @param[in] suId        Service User SAP Id
3406  * @param[in] loadInfInd  LOAD INF Indication .
3407  * @return ROK/RFAILED
3408  */
3409 EXTERN S16 RgUiRgrLoadInfInd ARGS((
3410    Pst*                 pst,
3411    SuId                 suId,
3412    RgrLoadInfIndInfo    *loadInfInd
3413 ));
3414 /* LTE_ADV_FLAG_REMOVED_END */
3415 /** @} */
3416
3417 #endif
3418
3419 #ifdef NX
3420 /** @brief Request from RRM to MAC to bind the interface SAPs.
3421  *
3422  *  @details This API validats the SAP Id and binds the interface SAPs  
3423  *
3424  *  @param[in] pst    Pointer to a post structure
3425  *  @param[in] suId   Service User SAP Id
3426  *  @param[in] spId   Service Provider SAP Id
3427  *  @return ROK/RFAILED  
3428  */
3429 EXTERN S16 NxLiRgrBndReq ARGS((
3430    Pst*                 pst,
3431    SuId                 suId,
3432    SpId                 spId
3433 ));
3434
3435 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
3436 /** @name RGR_RRM_TICK */
3437 /** @{ */
3438 /** @brief TTI indication from scheduler to RRM. 
3439 *
3440 * @details This primitive handles TTI Indication. It essentially validates
3441 * the post structure and Transmit Time timing .
3442 *
3443 * @param[in] Pst*     pst          Pointer To a post Structure
3444 * @param[in] SuId     suId         Service user SAP Id
3445 * @param[in] RgrTtiIndInfo* ttiInd Information passed as a part of TTI indication from PHY to MAC. 
3446 * @return ROK/RFAILED 
3447 */
3448 EXTERN S16 NxLiRgrTtiInd ARGS((
3449    Pst*                 pst,
3450    SuId                 suId,
3451    RgrTtiIndInfo        *ttiInd
3452 ));
3453 /** @} */
3454
3455 /** @brief Confirmation from MAC to RRM for the bind request for the interface SAPs.
3456  *
3457  * @details This Primitive handles the call for bind confirmation.
3458  * 
3459  * @param[in] Pst*  pst    A pointer to post structure.
3460  * @param[in] SuId  suId   Service User SAP Id.
3461  * @param[in] U8    status An information on status confirmation.
3462  * @return S16
3463  */
3464 EXTERN S16 NxLiRgrBndCfm ARGS((
3465    Pst*                 pst,
3466    SuId                 suId,
3467    U8                   status
3468 ));
3469
3470 /** @brief Request from RRM to MAC to unbind the interface SAPs 
3471  *
3472  * @details This primitive unbinds the interface SAPs.It validates if the SAP is really bound.
3473  * 
3474  * @param[in] Pst*      pst    A pointer to post structure. 
3475  * @param[in] SpId      spId   Service Provider SAP Id.
3476  * @param[in] Reason    reason A cause for unbinding the SAPs.
3477  * @return S16
3478  */
3479 EXTERN S16 NxLiRgrUbndReq ARGS((
3480    Pst*                 pst,
3481    SpId                 spId,
3482    Reason               reason
3483 ));
3484 /** @brief Configuration request from RRM to MAC for 
3485  * configuring Cell/UE/LC 
3486  *
3487  * @details The RRM configures the Cell/UE/LC using this primitive.
3488  *
3489  * @param[in]   Pst*  pst      A pointer to post structure.
3490  * @param[in]   SpId  spId     Service Provider SAP Id.
3491  * @param[in]   RgrCfgTransId  transId Transaction Id between RRM and MAC. 
3492  * @param[in]   RgrCfgReqInfo* cfgReqInfo A structure containing the configuration information.
3493  * @return   S16 
3494  */
3495 EXTERN S16 NxLiRgrCfgReq ARGS((
3496    Pst*                 pst,
3497    SpId                 spId,
3498    RgrCfgTransId        transId,
3499    RgrCfgReqInfo *      cfgReqInfo
3500 ));
3501
3502 /** @brief Configuration confirm from MAC to RRM 
3503  *
3504  * @details This primitive confirms the RRM about the configuration reception request.
3505  * 
3506  * @param[in] Pst*      pst    A pointer to post structure. 
3507  * @param[in] SuId      suId   Service Provider SAP Id.
3508  * @param[in] RgrCfgTransId transId RRM to MAC transaction Id. 
3509  * @return S16
3510  */
3511 EXTERN S16 NxLiRgrCfgCfm ARGS((
3512    Pst*                 pst,
3513    SuId                 suId,
3514    RgrCfgTransId        transId,
3515    U8                   status
3516 ));
3517 /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
3518 /** @name RGR_SI_SCH */
3519 /* @{ */
3520 #ifdef RGR_SI_SCH
3521
3522 /** @brief SI Configuration confirm from MAC to RRM 
3523 *
3524 * @details  This primitive confirms the SI configuration to the RRM.
3525
3526 * @param[in]  Pst*      pst        A pointer to post structure.
3527 * @param[in]  SuId      suId       Service User SAP Id.
3528 * @param[in]  RgrCfgTransId transId RRM to MAC transaction Id
3529 * @param[in]  U8        status      An information on confirmation status.
3530 * @return S16
3531 */
3532 EXTERN S16 NxLiRgrSiCfgCfm ARGS((
3533    Pst*                 pst,
3534    SuId                 suId,
3535    RgrCfgTransId        transId,
3536    U8                   status
3537 ));
3538
3539
3540 /* PH04_CMAS */
3541 EXTERN S16 NxLiRgrWrngSiCfgCfm ARGS((
3542 Pst*                 pst,
3543 SuId                 suId,
3544 RgrCfgTransId        transId,
3545 U8                   siId,
3546 U8                   status
3547 ));
3548
3549
3550
3551 EXTERN S16 NxLiRgrStopWrngSiCfgCfm ARGS((
3552    Pst*                 pst,
3553    SuId                 suId,
3554    RgrCfgTransId        transId,
3555    U8                   status
3556 ));
3557
3558 /* PH04_CMAS : end */
3559
3560  
3561 /** @brief Warning SI Configuration confirm from MAC to RRM 
3562 *
3563 * @details  This primitive confirms the Warning SI configuration to the RRM.
3564
3565 * @param[in]  Pst*      pst        A pointer to post structure.
3566 * @param[in]  SuId      suId       Service User SAP Id.
3567 * @param[in]  U8        siId       SI Index
3568 * @param[in]  RgrCfgTransId transId RRM to MAC transaction Id
3569 * @param[in]  U8        status      An information on confirmation status.
3570 * @return S16
3571 */
3572 EXTERN S16 NxLiRgrWarningSiCfgCfm ARGS((
3573    Pst*                 pst,
3574    SuId                 suId,
3575    RgrCfgTransId        transId,
3576    U8                   siId,
3577    U8                   status
3578 ));
3579
3580 /** @brief SI Configuration request from RRM to MAC for 
3581  * configuring SI 
3582  *
3583  * @details  This primitive is used for the configuration of the SI information in the MAC scheduler.
3584  *
3585  * @param[in] Pst*             pst      A pointer to post structure.
3586  * @param[in] SpId             spId     Service Provider SAP Id.
3587  * @param[in] RgrCfgTransId    transId, RRM to MAC transaction Id
3588  * @param[in] RgrSiCfgReqInfo* cfgReqInfo Parameters corresponding to the SI Configuration .
3589  * @return S16
3590  */
3591 EXTERN S16 NxLiRgrSiCfgReq ARGS((
3592    Pst*                 pst,
3593    SpId                 spId,
3594    RgrCfgTransId        transId,
3595    RgrSiCfgReqInfo * cfgReqInfo
3596 ));
3597
3598  
3599 /** @brief Warning SI Configuration request from RRM to MAC for 
3600  * configuring SI 
3601  *
3602  * @details  This primitive is used for the configuration of the SI 
3603  *           information in the MAC scheduler.
3604  *
3605  * @param[in] Pst*             pst      A pointer to post structure.
3606  * @param[in] SpId             spId     Service Provider SAP Id.
3607  * @param[in] RgrCfgTransId    transId, RRM to MAC transaction Id
3608  * @param[in] RgrWarningSiCfgReqInfo  *warningSiCfgReq SI Configuration
3609  * @return S16
3610  */
3611 EXTERN S16 NxLiRgrWarningSiCfgReq ARGS((
3612    Pst*                       pst,
3613    SpId                      spId,
3614    RgrCfgTransId             transId,
3615    RgrWarningSiCfgReqInfo  *warningSiCfgReq
3616 )); 
3617
3618   
3619 /** @brief Warning SI Stop request from RRM to MAC for 
3620  * configuring SI 
3621  *
3622  * @details  This primitive is used to stop the SI for a 
3623  *           perticular siId.
3624  *
3625  * @param[in] Pst*             pst      A pointer to post structure.
3626  * @param[in] SpId             spId     Service Provider SAP Id.
3627  * @param[in] U8               siId     SI Index
3628  */
3629 EXTERN S16 NxLiRgrWarningSiStopReq ARGS((
3630    Pst*                       pst,
3631    SpId                       spId,
3632    RgrCfgTransId              transId,
3633    U8                         siId
3634 )); 
3635  
3636 #endif/*RGR_SI_SCH */
3637 /** @} */
3638
3639 /** @{ */
3640 /* LTE_ADV_FLAG_REMOVED_START */
3641 /** @brief LOAD INF Configuration request from RRM to MAC for
3642  *         configuring rntp, abs etc
3643  *
3644  * @details  This primitive is used for the configuration of the LOAD INF parameters
3645  *           in the MAC scheduler.
3646  *
3647  * @param[in] Pst*               pst        A pointer to post structure.
3648  * @param[in] SpId               spId       Service Provider SAP Id.
3649  * @param[in] RgrCfgTransId      transId,   RRM to MAC transaction Id
3650  * @param[in] RgrLoadInfReqInfo* loadInfReq Parameters corresponding to the LOAD INF Config.
3651  * @return S16
3652  */
3653 EXTERN S16 NxLiRgrLoadInfReq ARGS((
3654    Pst*                 pst,
3655    SpId                 spId,
3656    RgrCfgTransId        transId,
3657    RgrLoadInfReqInfo*   loadInfReq
3658 ));
3659 /* LTE_ADV_FLAG_REMOVED_END */
3660 /** @} */
3661
3662 /** @name RGR_CQI_REPT */
3663 /** @{ */
3664 /* rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
3665    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
3666 #ifdef RGR_CQI_REPT
3667 /** @brief Sta Indication from Scheduler to RRM 
3668  *
3669  * @details This primitive is used to send status indication
3670  *          from scheduler to RRM. 
3671  * 
3672  * @param[in] pst     Pointer to a post structure
3673  * @param[in] suId    Service User SAP Id
3674  * @param[in] staInd  Status Indication .
3675 */
3676 EXTERN S16 NxLiRgrStaInd ARGS((
3677    Pst*                 pst,
3678    SuId                 suId,
3679    RgrStaIndInfo        *staInd
3680 ));
3681 #endif
3682 /** @} */
3683 /** @{ */
3684 /* LTE_ADV_FLAG_REMOVED_START */
3685 /** @brief LOAD INF Indication from Scheduler to RRM
3686  *
3687  * @details This primitive is used to send loadInf indication
3688  *          from scheduler to RRM.
3689  *
3690  * @param[in] pst         Pointer to a post structure
3691  * @param[in] suId        Service User SAP Id
3692  * @param[in] loadInfInd  LOAD INF Indication .
3693 */
3694 EXTERN S16 NxLiRgrLoadInfInd ARGS((
3695    Pst*                  pst,
3696    SuId                  suId,
3697    RgrLoadInfIndInfo     *loadInfInd
3698 ));
3699 /* LTE_ADV_FLAG_REMOVED_END */
3700 /** @} */
3701
3702 #endif
3703 #if defined(LCRGR)
3704 /** @brief Request from RRM to MAC to bind the interface SAPs */
3705 EXTERN S16 cmPkRgrBndReq ARGS((
3706    Pst*                 pst,
3707    SuId                 suId,
3708    SpId                 spId
3709 ));
3710 /** @brief Request from RRM to MAC to bind the interface SAPs */
3711 EXTERN S16 cmUnpkRgrBndReq ARGS((
3712    RgrBndReq            func,
3713    Pst*                 pst,
3714    Buffer               *mBuf
3715 ));
3716 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
3717 /** @name RGR_RRM_TICK */
3718 /** @{ */
3719 /** @brief Pack function for TTI indication from scheduler to RRM */
3720 EXTERN S16 cmPkRgrTtiInd ARGS((
3721          Pst*                 pst,
3722          SuId                 suId,
3723          RgrTtiIndInfo        *ttiInd
3724          ));
3725 EXTERN S16 cmPkRgrTtiIndInfo ARGS((
3726          RgrTtiIndInfo  *ttiInd,
3727          Buffer         *mBuf));
3728 /** @brief Unpack function for TTI indication from scheduler to RRM */
3729 EXTERN S16 cmUnpkRgrTtiInd   ARGS((
3730          RgrTtiInd            func,
3731          Pst*                 pst,
3732          Buffer               *mBuf
3733          ));
3734 EXTERN S16 cmUnpkRgrTtiIndInfo ARGS((
3735          RgrTtiIndInfo *param,
3736          Buffer        *mBuf
3737          ));
3738 /** @} */
3739 EXTERN S16 cmPkRgrBndCfm ARGS((
3740    Pst*                 pst,
3741    SuId                 suId,
3742    U8                   status
3743 ));
3744
3745 EXTERN S16 cmUnpkRgrBndCfm ARGS((
3746    RgrBndCfm            func,
3747    Pst*                 pst,
3748    Buffer               *mBuf
3749 ));
3750
3751 EXTERN S16 cmPkRgrUbndReq ARGS((
3752    Pst*                 pst,
3753    SpId                 spId,
3754    Reason               reason
3755 ));
3756
3757 EXTERN S16 cmUnpkRgrUbndReq ARGS((
3758    RgrUbndReq           func,
3759    Pst*                 pst,
3760    Buffer               *mBuf
3761 ));
3762
3763 EXTERN S16 cmPkRgrCfgReq ARGS((
3764    Pst*                 pst,
3765    RgrCfgTransId        transId,
3766    RgrCfgReqInfo *      cfgReqInfo
3767 ));
3768
3769 EXTERN S16 cmUnpkRgrCfgReq ARGS((
3770    RgrCfgReq            func,
3771    Pst*                 pst,
3772    Buffer               *mBuf
3773 ));
3774
3775 EXTERN S16 cmPkRgrCfgCfm ARGS((
3776    Pst*                 pst,
3777    RgrCfgTransId        transId,
3778    U8                   status
3779 ));
3780
3781 EXTERN S16 cmUnpkRgrCfgCfm ARGS((
3782    RgrCfgCfm            func,
3783    Pst*                 pst,
3784    Buffer               *mBuf
3785 ));
3786
3787 EXTERN S16 cmPkRgrCfgTransId ARGS((
3788    RgrCfgTransId        *param,
3789    Buffer               *mBuf
3790 ));
3791 EXTERN S16 cmUnpkRgrCfgTransId ARGS((
3792    RgrCfgTransId        *param,
3793    Buffer               *mBuf
3794 ));
3795 EXTERN S16 cmPkRgrDlHqCfg ARGS((
3796    RgrDlHqCfg           *param,
3797    Buffer               *mBuf
3798 ));
3799 EXTERN S16 cmUnpkRgrDlHqCfg ARGS((
3800    RgrDlHqCfg           *param,
3801    Buffer               *mBuf
3802 ));
3803 EXTERN S16 cmPkRgrRntiCfg ARGS((
3804    RgrRntiCfg           *param,
3805    Buffer               *mBuf
3806 ));
3807 EXTERN S16 cmUnpkRgrRntiCfg ARGS((
3808    RgrRntiCfg           *param,
3809    Buffer               *mBuf
3810 ));
3811 EXTERN S16 cmPkRgrDlCmnCodeRateCfg ARGS((
3812    RgrDlCmnCodeRateCfg  *param,
3813    Buffer               *mBuf
3814 ));
3815 EXTERN S16 cmUnpkRgrDlCmnCodeRateCfg ARGS((
3816    RgrDlCmnCodeRateCfg  *param,
3817    Buffer               *mBuf
3818 ));
3819 EXTERN S16 cmPkRgrCfiCfg ARGS((
3820    RgrCfiCfg            *param,
3821    Buffer               *mBuf
3822 ));
3823 EXTERN S16 cmUnpkRgrCfiCfg ARGS((
3824    RgrCfiCfg            *param,
3825    Buffer               *mBuf
3826 ));
3827 EXTERN S16 cmPkRgrPuschSubBandCfg ARGS((
3828    RgrPuschSubBandCfg   *param,
3829    Buffer               *mBuf
3830 ));
3831 EXTERN S16 cmUnpkRgrPuschSubBandCfg ARGS((
3832    RgrPuschSubBandCfg   *param,
3833    Buffer               *mBuf
3834 ));
3835 EXTERN S16 cmPkRgrUlCmnCodeRateCfg ARGS((
3836    RgrUlCmnCodeRateCfg  *param,
3837    Buffer               *mBuf
3838 ));
3839 EXTERN S16 cmUnpkRgrUlCmnCodeRateCfg ARGS((
3840    RgrUlCmnCodeRateCfg  *param,
3841    Buffer               *mBuf
3842 ));
3843 EXTERN S16 cmPkRgrUlTrgCqiCfg ARGS((
3844    RgrUlTrgCqiCfg       *param,
3845    Buffer               *mBuf
3846 ));
3847 EXTERN S16 cmUnpkRgrUlTrgCqiCfg ARGS((
3848    RgrUlTrgCqiCfg       *param,
3849    Buffer               *mBuf
3850 ));
3851 EXTERN S16 cmPkRgrBwCfg ARGS((
3852    RgrBwCfg             *param,
3853    Buffer               *mBuf
3854 ));
3855 EXTERN S16 cmUnpkRgrBwCfg ARGS((
3856    RgrBwCfg             *param,
3857    Buffer               *mBuf
3858 ));
3859 EXTERN S16 cmPkRgrPhichCfg ARGS((
3860    RgrPhichCfg          *param,
3861    Buffer               *mBuf
3862 ));
3863 EXTERN S16 cmUnpkRgrPhichCfg ARGS((
3864    RgrPhichCfg          *param,
3865    Buffer               *mBuf
3866 ));
3867 EXTERN S16 cmPkRgrPucchCfg ARGS((
3868    RgrPucchCfg          *param,
3869    Buffer               *mBuf
3870 ));
3871 EXTERN S16 cmUnpkRgrPucchCfg ARGS((
3872    RgrPucchCfg          *param,
3873    Buffer               *mBuf
3874 ));
3875 EXTERN S16 cmPkRgrSrsCfg ARGS((
3876    RgrSrsCfg            *param,
3877    Buffer               *mBuf
3878 ));
3879 EXTERN S16 cmUnpkRgrSrsCfg ARGS((
3880    RgrSrsCfg            *param,
3881    Buffer               *mBuf
3882 ));
3883 EXTERN S16 cmPkRgrRachCfg ARGS((
3884    RgrRachCfg           *param,
3885    Buffer               *mBuf
3886 ));
3887 EXTERN S16 cmUnpkRgrRachCfg ARGS((
3888    RgrRachCfg           *param,
3889    Buffer               *mBuf
3890 ));
3891 EXTERN S16 cmPkRgrSiCfg ARGS((
3892    RgrSiCfg             *param,
3893    Buffer               *mBuf
3894 ));
3895 EXTERN S16 cmUnpkRgrSiCfg ARGS((
3896    RgrSiCfg             *param,
3897    Buffer               *mBuf
3898 ));
3899 EXTERN S16 cmPkRgrTpcRntiCfg ARGS((
3900    RgrTpcRntiCfg        *param,
3901    Buffer               *mBuf
3902 ));
3903 EXTERN S16 cmUnpkRgrTpcRntiCfg ARGS((
3904    RgrTpcRntiCfg        *param,
3905    Buffer               *mBuf
3906 ));
3907 EXTERN S16 cmPkRgrUlPwrCfg ARGS((
3908    RgrUlPwrCfg          *param,
3909    Buffer               *mBuf
3910 ));
3911 EXTERN S16 cmUnpkRgrUlPwrCfg ARGS((
3912    RgrUlPwrCfg          *param,
3913    Buffer               *mBuf
3914 ));
3915 EXTERN S16 cmPkRgrPuschCfg ARGS((
3916    RgrPuschCfg          *param,
3917    Buffer               *mBuf
3918 ));
3919 EXTERN S16 cmUnpkRgrPuschCfg ARGS((
3920    RgrPuschCfg          *param,
3921    Buffer               *mBuf
3922 ));
3923 EXTERN S16 cmPkRgrCodeBookRstCfg ARGS((
3924    RgrCodeBookRstCfg    *param,
3925    Buffer               *mBuf
3926 ));
3927 EXTERN S16 cmUnpkRgrCodeBookRstCfg ARGS((
3928    RgrCodeBookRstCfg    *param,
3929    Buffer               *mBuf
3930 ));
3931 EXTERN S16 cmPkRgrPreambleSetCfg ARGS((
3932    RgrPreambleSetCfg    *param,
3933    Buffer               *mBuf
3934 ));
3935 EXTERN S16 cmUnpkRgrPreambleSetCfg ARGS((
3936    RgrPreambleSetCfg    *param,
3937    Buffer               *mBuf
3938 ));
3939 EXTERN S16 cmPkRgrCmnLchCfg ARGS((
3940    RgrCmnLchCfg         *param,
3941    Buffer               *mBuf
3942 ));
3943 EXTERN S16 cmUnpkRgrCmnLchCfg ARGS((
3944    RgrCmnLchCfg         *param,
3945    Buffer               *mBuf
3946 ));
3947 EXTERN S16 cmPkRgrDlfsCfg ARGS((
3948    RgrDlfsCfg           *param,
3949    Buffer               *mBuf
3950 ));
3951 EXTERN S16 cmUnpkRgrDlfsCfg ARGS((
3952    RgrDlfsCfg           *param,
3953    Buffer               *mBuf
3954 ));
3955
3956 /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
3957 /** @name RGR_SI_SCH */
3958 /** @{ */
3959 #ifdef RGR_SI_SCH
3960 EXTERN S16 cmPkRgrWarningSiCfgReq ARGS((
3961    Pst*                     pst,
3962    SpId                     spId,
3963    RgrCfgTransId            transId,
3964    RgrWarningSiCfgReqInfo   *warningSiCfgReqInfo
3965 ));
3966
3967 EXTERN S16 cmUnpkRgrWarningSiCfgReq ARGS((
3968    RgrWarningSiCfgReq  func,
3969    Pst                 *pst,
3970    Buffer              *mBuf
3971 ));
3972
3973 EXTERN S16 cmPkRgrWarningSiCfgReqInfo ARGS((
3974    Pst                    *pst,
3975    RgrWarningSiCfgReqInfo *param,
3976    Buffer                 *mBuf
3977 ));
3978
3979 EXTERN S16 cmUnpkRgrWarningSiCfgReqInfo ARGS((
3980    Pst                    *pst,
3981    RgrWarningSiCfgReqInfo *param,
3982    Buffer                 *mBuf
3983 ));
3984
3985 EXTERN S16 cmPkRgrWarningSiStopReq ARGS((
3986    Pst                 *pst,
3987    SpId                spId,
3988    RgrCfgTransId       transId,
3989    U8                  siId
3990 ));
3991
3992 EXTERN S16 cmUnpkRgrWarningSiStopReq ARGS((
3993    RgrWarningSiStopReq func,
3994    Pst                 *pst,
3995    Buffer              *mBuf
3996 ));
3997
3998
3999 EXTERN S16 cmPkRgrWarningSiCfgCfm ARGS((
4000    Pst*                 pst,
4001    SuId                 suId,
4002    RgrCfgTransId        transId,
4003    U8                   siId,
4004    U8                   status
4005 ));
4006
4007 EXTERN S16 cmUnpkRgrWarningSiCfgCfm ARGS((
4008    RgrWarningSiCfgCfm          func,
4009    Pst*                 pst,
4010    Buffer               *mBuf
4011 ));
4012
4013
4014 EXTERN S16 cmPkRgrSiCfgReq ARGS((
4015    Pst*                 pst,
4016    SpId                 spId,
4017    RgrCfgTransId        transId,
4018    RgrSiCfgReqInfo *    cfgReqInfo
4019 ));
4020
4021 EXTERN S16 cmUnpkRgrSiCfgReq ARGS((
4022    RgrSiCfgReq            func,
4023    Pst*                 pst,
4024    Buffer               *mBuf
4025 ));
4026
4027 EXTERN S16 cmPkRgrSiCfgReqInfo ARGS((
4028    RgrSiCfgReqInfo        *param,
4029    Buffer               *mBuf
4030 ));
4031
4032 EXTERN S16 cmUnpkRgrSiCfgReqInfo ARGS((
4033    RgrSiCfgReqInfo        *param,
4034    Buffer               *mBuf
4035 ));
4036
4037 EXTERN S16 cmPkRgrSiCfgCfm ARGS((
4038    Pst*                 pst,
4039    SuId                 suId,
4040    RgrCfgTransId        transId,
4041    U8                   status
4042 ));
4043
4044 EXTERN S16 cmUnpkRgrSiCfgCfm ARGS((
4045    RgrSiCfgCfm            func,
4046    Pst*                 pst,
4047    Buffer               *mBuf
4048 ));
4049 #endif /*RGR_SI_SCH*/
4050 /** @} */
4051
4052 /** @{ */
4053 /* LTE_ADV_FLAG_REMOVED_START */
4054 EXTERN S16 cmPkRgrLoadInfReq ARGS((
4055    Pst*                 pst,
4056    SpId                 spId,
4057    RgrCfgTransId        transId,
4058    RgrLoadInfReqInfo *  loadInfReq
4059 ));
4060
4061 EXTERN S16 cmUnpkRgrLoadInfReq ARGS((
4062    RgrLoadInfReq        func,
4063    Pst*                 pst,
4064    Buffer               *mBuf
4065 ));
4066
4067 EXTERN S16 cmPkRgrLoadInfReqInfo ARGS((
4068    RgrLoadInfReqInfo    *param,
4069    Buffer               *mBuf
4070 ));
4071
4072 EXTERN S16 cmUnpkRgrLoadInfReqInfo ARGS((
4073    RgrLoadInfReqInfo    *param,
4074    Buffer               *mBuf
4075 ));
4076 /* LTE_ADV_FLAG_REMOVED_END */
4077 /** @} */
4078
4079 /** @name LTE_TDD */
4080 /** @{ */
4081 #ifdef LTE_TDD
4082 EXTERN S16 cmPkRgrTddPrachInfo ARGS((
4083    RgrTddPrachInfo      *param,
4084    Buffer               *mBuf
4085 ));
4086 EXTERN S16 cmUnpkRgrTddPrachInfo ARGS((
4087    RgrTddPrachInfo      *param,
4088    Buffer               *mBuf
4089 ));
4090 EXTERN S16 cmPkRgrTddPrachRscInfo ARGS((
4091    RgrTddPrachRscInfo   *param,
4092    Buffer               *mBuf
4093 ));
4094 EXTERN S16 cmUnpkRgrTddPrachRscInfo ARGS((
4095    RgrTddPrachRscInfo   *param,
4096    Buffer               *mBuf
4097 ));
4098 #endif /* LTE_TDD*/
4099 /** @} */
4100 EXTERN S16 cmPkRgrEnbPfs ARGS((
4101    RgrEnbPfs         *param,
4102    Buffer               *mBuf
4103 ));
4104 EXTERN S16 cmUnpkRgrEnbPfs ARGS((
4105    RgrEnbPfs         *param,
4106    Buffer               *mBuf
4107 ));
4108 EXTERN S16 cmPkRgrCellCfg ARGS((
4109    RgrCellCfg           *param,
4110    Buffer               *mBuf
4111 ));
4112 EXTERN S16 cmUnpkRgrCellCfg ARGS((
4113    RgrCellCfg           *param,
4114    Buffer               *mBuf
4115 ));
4116 EXTERN S16 cmPkRgrUeAprdDlCqiCfg ARGS((
4117    RgrUeAprdDlCqiCfg    *param,
4118    Buffer               *mBuf
4119 ));
4120 EXTERN S16 cmUnpkRgrUeAprdDlCqiCfg ARGS((
4121    RgrUeAprdDlCqiCfg    *param,
4122    Buffer               *mBuf
4123 ));
4124 EXTERN S16 cmPkRgrSchedGnbCfg ARGS((
4125    RgrSchedEnbCfg       *param,
4126    Buffer               *mBuf
4127 ));
4128 EXTERN S16 cmUnpkRgrSchedGnbCfg ARGS((
4129    RgrSchedEnbCfg       *param,
4130    Buffer               *mBuf
4131 ));
4132 EXTERN S16 cmPkRgrUePrdDlCqiCfg ARGS((
4133    RgrUePrdDlCqiCfg     *param,
4134    Buffer               *mBuf
4135 ));
4136 EXTERN S16 cmUnpkRgrUePrdDlCqiCfg ARGS((
4137    RgrUePrdDlCqiCfg     *param,
4138    Buffer               *mBuf
4139 ));
4140 EXTERN S16 cmPkRgrUeDlCqiCfg ARGS((
4141    RgrUeDlCqiCfg        *param,
4142    Buffer               *mBuf
4143 ));
4144 EXTERN S16 cmUnpkRgrUeDlCqiCfg ARGS((
4145    RgrUeDlCqiCfg        *param,
4146    Buffer               *mBuf
4147 ));
4148 EXTERN S16 cmPkRgrUeMeasGapCfg ARGS((
4149    RgrUeMeasGapCfg      *param,
4150    Buffer               *mBuf
4151 ));
4152 EXTERN S16 cmUnpkRgrUeMeasGapCfg ARGS((
4153    RgrUeMeasGapCfg      *param,
4154    Buffer               *mBuf
4155 ));
4156 /*rgr_x_001.main_11 ADD added changes for DRX*/
4157 EXTERN S16 cmPkRgrDrxLongCycleOffst ARGS((
4158    RgrDrxLongCycleOffst *param,
4159    Buffer               *mBuf
4160 ));
4161 EXTERN S16 cmUnpkRgrDrxLongCycleOffst ARGS((
4162    RgrDrxLongCycleOffst *param,
4163    Buffer               *mBuf
4164 ));
4165 EXTERN S16 cmPkRgrDrxShortDrx ARGS((
4166    RgrDrxShortDrx       *param,
4167    Buffer               *mBuf
4168 ));
4169 EXTERN S16 cmUnpkRgrDrxShortDrx ARGS((
4170    RgrDrxShortDrx       *param,
4171    Buffer               *mBuf
4172 ));
4173 EXTERN S16 cmPkRgrUeDrxCfg ARGS((
4174    RgrUeDrxCfg          *param,
4175    Buffer               *mBuf
4176 ));
4177 EXTERN S16 cmUnpkRgrUeDrxCfg ARGS((
4178    RgrUeDrxCfg          *param,
4179    Buffer               *mBuf
4180 ));
4181 EXTERN S16 cmPkRgrUeCapCfg ARGS((
4182    RgrUeCapCfg          *param,
4183    Buffer               *mBuf
4184 ));
4185 EXTERN S16 cmUnpkRgrUeCapCfg ARGS((
4186    RgrUeCapCfg          *param,
4187    Buffer               *mBuf
4188 ));
4189 EXTERN S16 cmPkRgrUeAckNackRepCfg ARGS((
4190    RgrUeAckNackRepCfg   *param,
4191    Buffer               *mBuf
4192 ));
4193 EXTERN S16 cmUnpkRgrUeAckNackRepCfg ARGS((
4194    RgrUeAckNackRepCfg   *param,
4195    Buffer               *mBuf
4196 ));
4197 EXTERN S16 cmPkRgrUeTxModeCfg ARGS((
4198    RgrUeTxModeCfg       *param,
4199    Buffer               *mBuf
4200 ));
4201 EXTERN S16 cmUnpkRgrUeTxModeCfg ARGS((
4202    RgrUeTxModeCfg       *param,
4203    Buffer               *mBuf
4204 ));
4205 EXTERN S16 cmPkRgrUeUlHqCfg ARGS((
4206    RgrUeUlHqCfg         *param,
4207    Buffer               *mBuf
4208 ));
4209 EXTERN S16 cmUnpkRgrUeUlHqCfg ARGS((
4210    RgrUeUlHqCfg         *param,
4211    Buffer               *mBuf
4212 ));
4213 EXTERN S16 cmPkRgrUeGrpPwrCfg ARGS((
4214    RgrUeGrpPwrCfg       *param,
4215    Buffer               *mBuf
4216 ));
4217 EXTERN S16 cmUnpkRgrUeGrpPwrCfg ARGS((
4218    RgrUeGrpPwrCfg       *param,
4219    Buffer               *mBuf
4220 ));
4221 EXTERN S16 cmPkRgrUeUlPwrCfg ARGS((
4222    RgrUeUlPwrCfg        *param,
4223    Buffer               *mBuf
4224 ));
4225 EXTERN S16 cmUnpkRgrUeUlPwrCfg ARGS((
4226    RgrUeUlPwrCfg        *param,
4227    Buffer               *mBuf
4228 ));
4229 EXTERN S16 cmPkRgrUeQosCfg ARGS((
4230    RgrUeQosCfg          *param,
4231    Buffer               *mBuf
4232 ));
4233 EXTERN S16 cmUnpkRgrUeQosCfg ARGS((
4234    RgrUeQosCfg          *param,
4235    Buffer               *mBuf
4236 ));
4237 EXTERN S16 cmPkRgrUeTaTmrCfg ARGS((
4238    RgrUeTaTmrCfg        *param,
4239    Buffer               *mBuf
4240 ));
4241 EXTERN S16 cmUnpkRgrUeTaTmrCfg ARGS((
4242    RgrUeTaTmrCfg        *param,
4243    Buffer               *mBuf
4244 ));
4245 /** @name RGR_V1 */
4246 /** @{ */
4247 #ifdef RGR_V1
4248 /* rgr_x_001.main_7: [ccpu00112398] Added periodicBSR-Timer and 
4249    retxBSR-Timer */
4250 EXTERN S16 cmPkRgrUeBsrTmrCfg ARGS((
4251    RgrUeBsrTmrCfg       *param,
4252    Buffer               *mBuf
4253 ));
4254 EXTERN S16 cmUnpkRgrUeBsrTmrCfg ARGS((
4255    RgrUeBsrTmrCfg       *param,
4256    Buffer               *mBuf
4257 ));
4258 #endif
4259 /** @} */
4260 EXTERN S16 cmPkRgrUeCfg ARGS((
4261    RgrUeCfg             *param,
4262    Buffer               *mBuf
4263 ));
4264 EXTERN S16 cmUnpkRgrUeCfg ARGS((
4265    RgrUeCfg             *param,
4266    Buffer               *mBuf
4267 ));
4268 EXTERN S16 cmPkRgrLchQosCfg ARGS((
4269    RgrLchQosCfg         *param,
4270    Buffer               *mBuf
4271 ));
4272 EXTERN S16 cmUnpkRgrLchQosCfg ARGS((
4273    RgrLchQosCfg         *param,
4274    Buffer               *mBuf
4275 ));
4276 EXTERN S16 cmPkRgrDlLchCfg ARGS((
4277    RgrDlLchCfg          *param,
4278    Buffer               *mBuf
4279 ));
4280 EXTERN S16 cmUnpkRgrDlLchCfg ARGS((
4281    RgrDlLchCfg          *param,
4282    Buffer               *mBuf
4283 ));
4284 EXTERN S16 cmPkRgrUlLcgCfg ARGS((
4285    RgrUlLcgCfg          *param,
4286    Buffer               *mBuf
4287 ));
4288 EXTERN S16 cmUnpkRgrUlLcgCfg ARGS((
4289    RgrUlLcgCfg          *param,
4290    Buffer               *mBuf
4291 ));
4292 EXTERN S16 cmPkRgrLchCfg ARGS((
4293    RgrLchCfg            *param,
4294    Buffer               *mBuf
4295 ));
4296 EXTERN S16 cmUnpkRgrLchCfg ARGS((
4297    RgrLchCfg            *param,
4298    Buffer               *mBuf
4299 ));
4300 EXTERN S16 cmPkRgrLcgCfg ARGS((
4301    RgrLcgCfg            *param,
4302    Buffer               *mBuf
4303 ));
4304 EXTERN S16 cmUnpkRgrLcgCfg ARGS((
4305    RgrLcgCfg            *param,
4306    Buffer               *mBuf
4307 ));
4308 EXTERN S16 cmPkRgrCfg ARGS((
4309    RgrCfg               *param,
4310    Buffer               *mBuf
4311 ));
4312 EXTERN S16 cmUnpkRgrCfg ARGS((
4313    RgrCfg               *param,
4314    Buffer               *mBuf
4315 ));
4316 EXTERN S16 cmPkRgrActvTime ARGS((
4317    RgrActvTime          *param,
4318    Buffer               *mBuf
4319 ));
4320 EXTERN S16 cmUnpkRgrActvTime ARGS((
4321    RgrActvTime          *param,
4322    Buffer               *mBuf
4323 ));
4324 EXTERN S16 cmPkRgrCellRecfg ARGS((
4325    RgrCellRecfg         *param,
4326    Buffer               *mBuf
4327 ));
4328 EXTERN S16 cmUnpkRgrCellRecfg ARGS((
4329    RgrCellRecfg         *param,
4330    Buffer               *mBuf
4331 ));
4332 EXTERN S16 cmPkRgrUeRecfg ARGS((
4333    RgrUeRecfg           *param,
4334    Buffer               *mBuf
4335 ));
4336 EXTERN S16 cmUnpkRgrUeRecfg ARGS((
4337    RgrUeRecfg           *param,
4338    Buffer               *mBuf
4339 ));
4340 EXTERN S16 cmPkRgrLchRecfg ARGS((
4341    RgrLchRecfg          *param,
4342    Buffer               *mBuf
4343 ));
4344 EXTERN S16 cmUnpkRgrLchRecfg ARGS((
4345    RgrLchRecfg          *param,
4346    Buffer               *mBuf
4347 ));
4348 EXTERN S16 cmPkRgrLcgRecfg ARGS((
4349    RgrLcgRecfg          *param,
4350    Buffer               *mBuf
4351 ));
4352 EXTERN S16 cmUnpkRgrLcgRecfg ARGS((
4353    RgrLcgRecfg          *param,
4354    Buffer               *mBuf
4355 ));
4356 EXTERN S16 cmPkRgrRecfg ARGS((
4357    RgrRecfg             *param,
4358    Buffer               *mBuf
4359 ));
4360 EXTERN S16 cmUnpkRgrRecfg ARGS((
4361    RgrRecfg             *param,
4362    Buffer               *mBuf
4363 ));
4364 EXTERN S16 cmPkRgrDel ARGS((
4365    RgrDel               *param,
4366    Buffer               *mBuf
4367 ));
4368 EXTERN S16 cmUnpkRgrDel ARGS((
4369    RgrDel               *param,
4370    Buffer               *mBuf
4371 ));
4372 EXTERN S16 cmPkRgrRst ARGS((
4373    RgrRst               *param,
4374    Buffer               *mBuf
4375 ));
4376 EXTERN S16 cmUnpkRgrRst ARGS((
4377    RgrRst               *param,
4378    Buffer               *mBuf
4379 ));
4380
4381 EXTERN S16 cmPkRgrSonCfg   ARGS((
4382 RgrSonCfg *param,
4383 Buffer *mBuf
4384 ));
4385 EXTERN S16 cmUnpkRgrSonCfg   ARGS((
4386 RgrSonCfg   *param,
4387 Buffer      *mBuf
4388 ));
4389 EXTERN S16 cmPkRgrSonPrbCfg   ARGS((
4390 RgrPrbCfg *param,
4391 Buffer *mBuf
4392 ));
4393 EXTERN S16 cmUnpkRgrSonPrbCfg   ARGS((
4394 RgrPrbCfg   *param,
4395 Buffer      *mBuf
4396 ));
4397 EXTERN S16 cmPkRgrCfgReqInfo ARGS((
4398    RgrCfgReqInfo        *param,
4399    Buffer               *mBuf
4400 ));
4401 EXTERN S16 cmUnpkRgrCfgReqInfo ARGS((
4402    RgrCfgReqInfo        *param,
4403    Buffer               *mBuf
4404 ));
4405
4406 #ifdef LTE_ADV 
4407 EXTERN S16 cmUnPkRgrSCellActDeactEvnt ARGS((
4408    RgrSCellActDeactEvnt *param,
4409    Buffer *mBuf
4410 ));
4411
4412 EXTERN S16 cmPkRgrSCellActDeactEvnt ARGS((
4413    RgrSCellActDeactEvnt *param,
4414    Buffer *mBuf
4415 ));
4416 #endif /* LTE_ADV */
4417
4418 EXTERN S16 cmPkRgrUeTxAntSelCfg ARGS((
4419    RgrUeTxAntSelCfg     *param,
4420    Buffer               *mBuf
4421 ));
4422 EXTERN S16 cmUnpkRgrUeTxAntSelCfg ARGS((
4423    RgrUeTxAntSelCfg     *param,
4424    Buffer               *mBuf
4425 ));
4426 EXTERN S16 cmPkRgrUePuschDedCfg ARGS((
4427    RgrUePuschDedCfg     *param,
4428    Buffer               *mBuf
4429 ));
4430 EXTERN S16 cmUnpkRgrUePuschDedCfg ARGS((
4431    RgrUePuschDedCfg     *param,
4432    Buffer               *mBuf
4433 ));
4434
4435 #ifdef TFU_UPGRADE
4436 EXTERN S16 cmPkRgrUeDlPCqiSetup ARGS
4437 ((
4438 RgrUeDlPCqiSetup *param,
4439 Buffer *mBuf
4440 ));
4441
4442 EXTERN S16 cmUnpkRgrUeDlPCqiSetup ARGS
4443 ((
4444 RgrUeDlPCqiSetup *param,
4445 Buffer *mBuf
4446 ));
4447
4448 EXTERN S16 cmPkRgrUeUlSrsSetupCfg ARGS
4449 ((
4450 RgrUeUlSrsSetupCfg *param,
4451 Buffer *mBuf
4452 ));
4453
4454 EXTERN S16 cmUnpkRgrUeUlSrsSetupCfg ARGS
4455 ((
4456 RgrUeUlSrsSetupCfg *param,
4457 Buffer *mBuf
4458 ));
4459
4460 EXTERN S16 cmPkRgrUeSrSetupCfg ARGS
4461 ((
4462 RgrUeSrSetupCfg *param,
4463 Buffer *mBuf
4464 ));
4465
4466 EXTERN S16 cmUnpkRgrUeSrSetupCfg ARGS
4467 ((
4468 RgrUeSrSetupCfg *param,
4469 Buffer *mBuf
4470 ));
4471
4472 EXTERN  S16 cmPkRgrUeSrCfg ARGS
4473 ((
4474 RgrUeSrCfg *param,
4475 Buffer *mBuf
4476 ));
4477
4478 EXTERN S16 cmUnpkRgrUeSrCfg ARGS
4479 ((
4480 RgrUeSrCfg *param,
4481 Buffer *mBuf
4482 ));
4483
4484 EXTERN S16 cmPkRgrUeUlSrsCfg ARGS
4485 ((
4486 RgrUeUlSrsCfg *param,
4487 Buffer *mBuf
4488 ));
4489
4490 EXTERN S16 cmUnpkRgrUeUlSrsCfg ARGS
4491 ((
4492 RgrUeUlSrsCfg *param,
4493 Buffer *mBuf
4494 ));
4495
4496 #endif
4497 #endif
4498
4499 #ifdef DM
4500 /** @brief Request from RRM to MAC to bind the interface SAPs */
4501 EXTERN S16 DmUiRgrBndReq ARGS((
4502    Pst*                 pst,
4503    SuId                 suId,
4504    SpId                 spId
4505 ));
4506 /** @brief Confirmation from MAC to RRM for the bind/unbind 
4507  * request for the interface SAPs */
4508 EXTERN S16 DmUiRgrBndCfm ARGS((
4509    Pst*                 pst,
4510    SuId                 suId,
4511    U8                   status
4512 ));
4513 /** @brief Request from RRM to MAC to unbind the interface SAPs */
4514 EXTERN S16 DmUiRgrUbndReq ARGS((
4515    Pst*                 pst,
4516    SpId                 spId,
4517    Reason               reason
4518 ));
4519 /** @brief Configuration request from RRM to MAC for 
4520  * configuring Cell/UE/LC */
4521 EXTERN S16 DmUiRgrCfgReq ARGS((
4522    Pst*                 pst,
4523    SpId                 spId,
4524    RgrCfgTransId        transId,
4525    RgrCfgReqInfo *      cfgReqInfo
4526 ));
4527 /** @brief Configuration confirm from MAC to RRM */
4528 EXTERN S16 DmUiRgrCfgCfm ARGS((
4529    Pst*                 pst,
4530    SuId                 suId,
4531    RgrCfgTransId        transId,
4532    U8                   status
4533 ));
4534 #endif
4535 /** @brief Sta Indication from Scheduler to RRM 
4536  *
4537  * @details This primitive is used to send status indication
4538  *          from scheduler to RRM. 
4539  * 
4540  * @param[in] pst     Pointer to a post structure
4541  * @param[in] suId    Service User SAP Id
4542  * @param[in] staInd  Status Indication .
4543 */
4544 EXTERN S16 NxLiRgrUeStaInd ARGS((
4545    Pst*                 pst,
4546    SuId                 suId,
4547    RgrUeStaIndInfo      *ueStaInd
4548 ));
4549
4550 EXTERN S16 cmPkRgrUeStaInd ARGS
4551 ((
4552 Pst* pst,
4553 SuId suId,
4554 RgrUeStaIndInfo* ueStaInd
4555 ));
4556
4557 EXTERN S16 cmUnpkRgrUeStaInd ARGS
4558 ((
4559 RgrUeStaInd  func,
4560 Pst *pst,
4561 Buffer *mBuf
4562 ));
4563
4564 EXTERN S16 cmPkRgrUeStaIndInfo ARGS
4565 ((
4566 RgrUeStaIndInfo *param,
4567 Buffer *mBuf
4568 ));
4569
4570
4571 EXTERN S16 cmUnpkRgrUeStaIndInfo ARGS
4572 ((
4573 RgrUeStaIndInfo *param,
4574 Buffer *mBuf
4575 ));
4576
4577
4578 /* LTE_ADV_FLAG_REMOVED_START */
4579 EXTERN S16 cmPkRgrLteAdvancedUeConfig ARGS((
4580             RgrLteAdvancedUeConfig *param,
4581             Buffer *mBuf
4582             ));
4583
4584 EXTERN S16 cmUnpkRgrLteAdvancedUeConfig ARGS((
4585             RgrLteAdvancedUeConfig *param,
4586             Buffer *mBuf
4587             ));
4588
4589 EXTERN S16 cmPkRgrAbsConfig ARGS((
4590             RgrAbsConfig *param,
4591             Buffer *mBuf
4592             ));
4593
4594 EXTERN S16 cmUnpkRgrAbsConfig ARGS((
4595             RgrAbsConfig *param,
4596             Buffer *mBuf
4597             ));
4598
4599 EXTERN S16 cmPkRgrSfrConfig ARGS((
4600             RgrSfrConfig *param,
4601             Buffer *mBuf
4602             ));
4603
4604 EXTERN S16 cmUnpkRgrSfrConfig ARGS((
4605             RgrSfrConfig *param,
4606             Buffer *mBuf
4607             ));
4608
4609 EXTERN S16 cmPkRgrCellLteAdvancedFeatureCfg ARGS((
4610             RgrLteAdvancedCellConfig *param,
4611             Buffer *mBuf
4612             ));
4613
4614 EXTERN S16 cmUnpkRgrCellLteAdvancedFeatureCfg ARGS((
4615             RgrLteAdvancedCellConfig *param,
4616             Buffer *mBuf
4617             ));
4618
4619 EXTERN S16 cmPkRgrDsfrConfig ARGS((
4620          RgrDsfrConfig *param,
4621          Buffer *mBuf
4622          ));
4623
4624 EXTERN S16 cmUnpkRgrDsfrConfig ARGS((
4625          RgrDsfrConfig *param,
4626          Buffer *mBuf
4627          ));
4628 /* LTE_ADV_FLAG_REMOVED_END */
4629
4630 EXTERN S16 cmPkRgrCellCsgParamCfg ARGS((
4631 RgrCellCsgParamCfg *param,
4632 Buffer *mBuf
4633 ));
4634 EXTERN S16 cmUnpkRgrCellCsgParamCfg ARGS((
4635 RgrCellCsgParamCfg *param,
4636 Buffer *mBuf
4637 ));
4638 EXTERN S16 cmPkRgrCellCntrlCmdCfg ARGS((
4639 RgrCellCntrlCmdCfg *param,
4640 Buffer *mBuf
4641 ));
4642 EXTERN S16 cmUnpkRgrCellCntrlCmdCfg ARGS((
4643 RgrCellCntrlCmdCfg *param,
4644 Buffer *mBuf
4645 ));
4646
4647 EXTERN S16 MacSchCfgReq ARGS((Pst *pst, RgrCfgTransId transId, 
4648        RgrCfgReqInfo *cfgReqInfo));
4649 #ifdef RLC_MAC_DAT_REQ_RBUF
4650 EXTERN S16 rgDlDatReqBatchProc ARGS((
4651 Void));
4652 #endif
4653 #ifdef RLC_MAC_STA_RSP_RBUF
4654 EXTERN S16 rgDlStaRspBatchProc ARGS((
4655 Void));
4656 #endif
4657 #ifdef __cplusplus
4658 }
4659 #endif
4660 #endif /* __RGR_X__*/
4661
4662 /**********************************************************************
4663
4664          End of file
4665 **********************************************************************/