4df0d92e61a1051226329167086799d4dba1a023
[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 uint8_t 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    uint8_t trans[RGR_CFG_TRANSID_SIZE]; /*!< RRM Transaction ID */
408 } RgrCfgTransId;
409
410 /** @brief  Downlink HARQ configuration per Cell */
411 typedef struct rgrDlHqCfg
412 {
413    uint8_t  maxDlHqTx;            /*!< Maximum number of DL HARQ Transmissions.
414                                   Minimum value is 1, maximum can be defined
415                                   by the user */    
416    uint8_t  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    uint16_t       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    uint16_t bcchPchRaCodeRate;    /*!< BCCH on DLSCH, PCH and RARsp coding rate.
433                               * This defines the actual number of bits per 1024
434                               * physical layer bits  */
435    uint16_t 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    uint8_t  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    uint8_t 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   uint8_t subbandStart;           /*!< Sub-band start */
454   uint8_t numSubbands;            /*!< Number of equal sized sub-bands */
455   uint8_t size;                   /*!< Size of a sub-band */ 
456   uint8_t 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    uint8_t 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    uint8_t 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    uint8_t dlTotalBw;            /*!< Total Dowlink Bandwidth */
479    uint8_t 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    uint8_t  resourceSize;       /*!< PUCCH resource-size or N^(2)_RB (in RBs) */
495    uint16_t n1PucchAn;          /*!< N^(1)_PUCCH */
496    uint8_t  deltaShift;         /*!< Delta Shift for PUCCH: a value in set {1,2,3} */ 
497    uint8_t  cyclicShift;        /*!< Cyclic Shift for PUCCH (N^(1)_CS): a value in
498                              range [0-7] */ 
499    uint8_t  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    uint8_t           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    uint8_t  preambleFormat;        /*!< RACH Preamble format: a value in set {0,1,2,3} */
522    uint8_t  raWinSize;             /*!< RA Window size */
523   /** @brief Ocassion at Which Random Access Is Expected */
524    struct raOccasionS
525    {
526       uint8_t       size;         /*!< Number of subframe numbers */
527       RgrRaSfn sfnEnum;      /*!< System Frame Number */
528       uint8_t       subFrameNum[RGR_MAX_SUBFRAME_NUM]; /*!< Subframe numbers */
529    } raOccasion;             /*!< Random access occasions */
530    uint8_t  maxMsg3Tx;            /*!< Maximum number of message 3 transmissions */
531    uint8_t  numRaPreamble;        /*!< Number of RA Preambles */
532    uint8_t  sizeRaPreambleGrpA;   /*!< Size of RA Preamble in Group A */
533    uint16_t msgSizeGrpA;          /*!< MESSAGE_SIZE_GROUP_A */ 
534    uint8_t  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    uint8_t  contResTmr;           /*!< Contention resolution timer */
540 #endif
541 /**@} */
542 } RgrRachCfg;
543
544 /**
545   @brief SI Configuration per cell 
546 */
547 typedef struct rgrSiCfg
548 {
549    uint8_t  siWinSize;  /*!< SI window size */
550    uint8_t  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 uint8_t to enum for modPrd*/
556    RgrModPeriodicity  modPrd;     /*!< Modificiation Period for SI */  
557    uint8_t  numSi;      /*!<Number of SIs, SI Id starts from 1 */
558    RgrSiPeriodicity siPeriodicity[RGR_MAX_NUM_SI]; /*!<Periodicities of SIs */
559    uint16_t              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    uint16_t       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    uint8_t       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    uint8_t       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    uint32_t    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    uint8_t      start;     /*!< Start Preamble ID for the range managed by MAC */
616    uint8_t      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    uint8_t            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   uint8_t isDlFreqSel;            /*!< Indicates if resource allocation is frequency
655                                   selective or not */
656   uint8_t 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    uint8_t   startRb;  /*<! Start RB for cell edge user */
705    uint8_t   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    uint32_t  absPatternType; /*!< Indicate it as Mute and/or Transmit type */
741    uint8_t   absPattern[RGR_ABS_PATTERN_LEN]; /*!< ABS pattern */
742    uint32_t  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    uint32_t                        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    uint8_t        freqIdx;          /*!< Frequency Index */
763    RgrRaSfn  sfn;              /*!< Even/Odd/All Radio Frames */
764    uint8_t        halfFrm;          /*!< First/Second Half Frame */
765    uint8_t        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    uint8_t               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    uint8_t           tptCoeffi;    /*!< Downlink Throughput Coeffiecient
783                                           Range 0 -10 */
784    uint8_t           fairCoeffi;   /*!< Downlink Fairness Coeffiecient
785                                          Range 0 -10 */
786    uint32_t          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          uint8_t   backOffVal; /*!< backoff value during overload */
822       }rachOvrLd;
823
824       /** @brief CPU OverLoad Cntrl Cmd Description */
825       struct cpuOvrLd
826       {
827          uint8_t 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    uint8_t         numTxAntPorts;    /*!< Number of Tx antenna ports */
841    uint8_t         ulSchdType;     /*!< Indicates which UL scheduler to use, range
842                                * is 0..(number of schedulers - 1) */
843    uint8_t         dlSchdType;     /*!< Indicates which DL scheduler to use, range
844                                * is 0..(number of schedulers - 1) */
845    uint8_t         numCells;       /*!< Max number of cells */
846    uint8_t         maxUlUePerTti;  /*!< Max number of UE in UL per TTI */
847    uint8_t         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    uint8_t         numTxAntPorts;    /*!< Number of Tx antenna ports */
857    uint8_t         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    uint8_t         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 uint32_t */
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    uint8_t        maxSpsDlBw; /*!< BW used of SPS Scheduling */ 
895                                                             
896    uint16_t       maxSpsUePerDlSf; /*!< Maximum DL SPS UEs that can be 
897                                                            scheduled in a TTI */
898    uint16_t       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    uint8_t   minDlResNonCsg;  /*!< Min PDSCH Resources for Non-CSG Members */
908    uint8_t   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    uint8_t   emtcSiNarrowBand; /*!< narrowband assigned to SI */
921    uint16_t  emtcSiTbs;         /*!< tbs value for SI */
922 }RgrEmtcSiSchedInfo;
923
924 typedef struct rgrEmtcPrmbleMap
925 {
926      uint8_t  firstPreamble;       /*!< for each CE mode, starting preamble */
927      uint8_t  lastPreamble;        /*!< for each CE mode, starting preamble */
928 }RgrEmtcPrmbleMap;
929
930 typedef struct rgrEmtcRachCElevelInfoLst
931 {
932    uint8_t                emtcRarHopping;         /*!< by defualt off */
933    uint16_t               raEmtcWinSize;          /*!< RA Window size */
934    uint16_t               raEmtcContResTmr;       /*!< Contension Resolution */
935    uint16_t               emtcPreambleTransMax;   /*!< PreambleTransMax  */
936    RgrEmtcPrmbleMap  emtcPreambleMap;           /*!< preamble mapping Info */ 
937 }RgrEmtcRachCElevelInfoLst;
938
939 typedef struct rgrEmtcRachCfg
940 {
941    uint8_t 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    uint16_t emtcMaxRepCeModeA;   /*!< max repetition for CE ModeA */ 
948    uint16_t emtcMaxRepCeModeB;   /*!< max repetition for CE ModeB */ 
949 }RgrEmtcPdschCfg;
950
951 typedef struct rgrEmtcPuschCfg
952 {
953    uint16_t emtcMaxRepCeModeA;  /*!< max repetition for CE ModeA */ 
954    uint16_t emtcMaxRepCeModeB;  /*!< max repetition for CE ModeB */
955    uint8_t  emtcHoppingOffset;  /*!< Hopping offset */
956 }RgrEmtcPuschCfg;
957
958 typedef struct rgrEmtcPrachCEParamLst
959 {
960    uint8_t   emtcPrachCfgIdx;         /*!< Prach config index */
961    uint8_t   emtcPrachFreqOffset;     /*!< Prach Frequency Offset */
962    uint16_t  emtcPrachStartSubFrame;  /*!< Starting sub frame */
963    uint8_t   emtcMaxPremAttemptCE;    /*!< max preamble attempt  CE */
964    uint8_t   emtcNumRepPerPreambleAtt;/*!< num of repetition per preamble attempt*/
965    uint8_t   emtcNumMpdcchNBtoMonitor;/*!< num of Mpddch NB to monitor */
966    uint8_t   emtcMpdcchNBtoMonitor[RGR_MAX_NUM_MPDCCH_MONITOR];/*!<  Mpddch NB to monitor */
967    uint16_t  emtcMpdcchNumRep;        /*!< num of Mpddch Number of repetition */
968    uint8_t   emtcPrachHoppingCfg;     /*!< num of Prach Hopping config */
969 }RgrEmtcPrachCEParamLst;
970
971 typedef struct rgrEmtcPrachCfg
972 {
973    uint8_t           emtcMpdcchStartSFCssRaFdd;  /*!< mdpcch start SubFrame Ra type2 */
974    uint8_t           emtcPrachHopingOffset;      /*!< prach hopping offset value */
975    uint8_t           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    uint8_t sfnPtnChoice;
984    union
985    {
986       uint16_t ptn10;
987       uint32_t 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    uint8_t               siWinSizeBr;          /*!< SI window size */
997    uint8_t               sib1Repetition;       /*!< sib1-br repetition */
998    uint8_t               siRepetition;         /*!< SI repetition pattern
999                                                everyRF,every2ndRF,every4thRF,every8thRF*/
1000    uint16_t              startSymbolLc;
1001    /*Changes by Simran*/
1002    RgrFddDownlinkOrTddSubframeBitmapLC    fddDLOrTddSfBitmapLC;
1003    //uint16_t              fddDlOrTddSfBitmapBR; /*!< 10 bit value for sending SI*/
1004    RgrEmtcSiSchedInfo schdInfo[RGR_MAX_NUM_SI];
1005    uint8_t               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    uint16_t       emtcN1pucchAnInfoLst[RGR_MAX_CE_LEVEL];  /*!< Max CE level is 4 */
1012    uint8_t        emtcPucchNumRepCEMsg4Lvl0;           /*!< update the level 0 */
1013    uint8_t        emtcPucchNumRepCEMsg4Lvl1;           /*!< update the level 1 */
1014    uint8_t        emtcPucchNumRepCEMsg4Lvl2;           /*!< update the level 2 */
1015    uint8_t        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    uint16_t       rntiCeModeBStart;      /*!< EMTC Start RNTI for the range managed by MAC */
1023    CmLteRnti rntiCeModeBRange;      /*!< EMTC Range of RNTI for the CEMODE B */
1024    uint16_t       size;           /*!< Indicates contiguous range of RNTI managed by EMTC
1025                                   MAC */
1026 } RgrEmtcRntiCfg;
1027
1028 typedef struct rgrEmtcCellCfg
1029 {
1030    uint16_t               pci;            /*!< Physical Cell ID */
1031    uint32_t               emtcT300Tmr;    /*!< T300 timer as per Rel13 */
1032    uint32_t               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    uint8_t                emtcPdschNbIdx;
1041    uint8_t                emtcMpdcchNbIdx;
1042    uint8_t                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    uint8_t              uePerGrp;
1060    uint8_t              ueGrpPerTti;
1061    uint8_t              numUes;
1062    uint8_t              numOfCC;
1063    uint8_t              bwPerCC;
1064    uint8_t              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 uint32_t  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    uint16_t                 pci;            /*!< Physical Cell ID */
1104    uint8_t                  maxMsg3PerUlSlot; /*!< Maximum MSG3 that may be scheduled
1105                                             per uplink slot */
1106    uint8_t                  maxUePerUlSlot;   /*!<Maximum UE scheduled per UL slot */
1107    uint8_t                  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    uint16_t                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    uint16_t                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    uint16_t                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    uint8_t                   nrMu; /*!<Indicates the number of Slot for a radio frame*/
1141    uint8_t                   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    uint8_t                  maxMsg3PerUlSf; /*!< Maximum MSG3 that may be scheduled
1183                                          per uplink subframe */
1184 #endif /* RGR_V1 */
1185    /** @} */
1186    uint8_t                  maxUePerUlSf;   /*!< Maximum UEs that may be scheduled
1187                                          per uplink subframe. Currently this is
1188                                          unused parameter */
1189    uint8_t                  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    uint8_t                  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    uint8_t                  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    uint8_t                  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    uint8_t                  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    uint8_t                  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    uint8_t                  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    uint8_t                  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    uint8_t                  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    uint8_t                  ulDlCfgIdx;     /*!< UL-DL configuration index*/
1268    uint8_t                  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    uint8_t                  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    uint8_t                dlCqiOverrideFloor;
1292    uint8_t                dlCqiOverrideCeil;
1293    uint8_t                ulCqiOverrideFloor;
1294    uint8_t                ulCqiOverrideCeil;
1295 #endif  
1296    /** @} */
1297    uint16_t t300TmrVal;               /*!< t300Timer value configured in Frames */
1298
1299    /* ccpu00132314-ADD-Tx power offsets for Common PDSCH transmissions */                                   
1300    uint16_t                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    uint16_t                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    uint16_t                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    uint16_t                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    uint8_t                 triggerSet1;    /*!< Trigger set one*/
1350    uint8_t                 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    uint8_t                  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    uint8_t                  k;             /*!< k value: range [1-4] */
1370    uint16_t                 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       uint16_t  cqiPResIdx;  /*!< cqi-PUCCH-ResourceIndex (0.. 1185) */
1382       uint16_t  cqiPCfgIdx;  /*!< cqi-pmi-ConfigIndex (0..1023) */
1383       uint8_t   cqiRepType;  /*!< Wideband CQI = 1  Subband CQI =2 */
1384       uint8_t   k;           /*!< Ref: 36.213 [23, 7.2.2] (1..4). 
1385                              Valid only for Subband CQI */
1386       uint8_t   riEna;       /*!< Rand Indicator is Enabled TRUE(1) FALSE(0) */
1387       uint16_t  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    uint8_t                 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    uint16_t               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    uint8_t                txComb;       /*!< Tranmission Comb: 0..1 */
1469    uint8_t                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    uint16_t              srResIdx;       /*!< Range: 0-2047; Reference: SchedulingRequestConfig  */
1492    uint8_t               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    uint8_t                      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    uint8_t  sCellAckN3ResAntP0Count;
1521    uint8_t  sCellAckN3ResAntP1Count;
1522    uint16_t sCellAckN3ResAntP0[4];
1523    uint16_t sCellAckN3ResAntP1[4];
1524 }RgrUePucchFormat3Cfg;
1525 typedef struct rgrUePucchFormat1BCSCfg
1526 {
1527    uint8_t  sCellAckN1ResTb1Count; /* !< num of N1 res for TB1 */
1528    uint8_t  sCellAckN1ResTb2Count; /* !< num of N1 res for TB2 */
1529    uint16_t sCellAckN1ResTb1[4];   /*!< TB1 N1 resources */
1530    uint16_t 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    uint8_t     bACKIdx;    /*! betaOffset-ACK-Index (0..15) */
1553    uint8_t     bRIIdx;     /*! betaOffset-RI-Index (0..15) */  
1554    uint8_t     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    uint8_t   gapPrd;             /*!< Gap period 40ms/80ms */
1571    uint8_t   gapOffst;           /*!< Gap offset - Vaue is 0 to 1*/
1572 } RgrUeMeasGapCfg;
1573 /**
1574  @brief DRX Long Cycle Offset */
1575 typedef struct rgrDrxLongCycleOffst
1576 {
1577    uint16_t      longDrxCycle;   /*!< DRX Long Cycle value in subframes*/
1578    uint16_t      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    uint16_t     shortDrxCycle;    /*!< DRX Short Cycle value in sub-frames*/
1587    uint8_t      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    uint16_t                    drxOnDurTmr;       /*!< DRX On-duration Timer value in
1607                                              PDCCH subframes */
1608    uint16_t                   drxInactvTmr;      /*!< DRX Inactivity Timer value in
1609                                               PDCCH subframes */
1610    uint16_t                    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    uint16_t                   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    uint8_t   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    uint16_t                  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    uint8_t maxUlHqTx;           /*!< Maximum number of UL HARQ transmissions */
1660    uint8_t 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    uint8_t              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    uint8_t             pSRSOffset;        /*!< P_SRS_OFFSET 
1682                                           Currently this is unused parameter */
1683    uint8_t             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    uint32_t  dlAmbr;     /*!< DL AMBR value for UE (bytes/sec): Optional */
1693    uint32_t  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    uint16_t        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    uint16_t       prdBsrTmr;       /*!< periodicBSR-Timer configuration
1714                                    (in subframes): Value 0xFFFF indicates
1715                                    'Infinity' */
1716    uint16_t       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    uint8_t          numSpsHqProc;      /*!< Number of SPS harq Proc: Value in set
1729                                    [1..8] */
1730    uint8_t          numPucchVal;      /*!< Count for configured PUCCH values */
1731    uint32_t         n1PucchVal[4];    /*!< Array of n1Pucch values */
1732    RgrSpsPrd   dlSpsPrdctyEnum;  /*!< Periodicity for DL SPS */
1733    uint16_t         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    uint8_t    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    uint8_t                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    uint8_t   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    uint8_t cqi[2];     /*!< Subband CQI for two codewords */
1816    uint8_t 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    uint8_t                  cqi[2];    /*!< Wideband CQI Value for two codewords*/
1826    uint8_t                  cqiMode;   /*!< Reporting mode by which CQI was reported */
1827    RgrSubBandCqiInfo   sbCqiInfo[RGR_MAX_DL_CQI_SUBBAND];
1828    uint8_t                  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    uint8_t 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    uint16_t               bw;                 /*!< Bandwidth */
1859    uint32_t               type;
1860    union
1861    {
1862       TknStrOSXL     rntpInfo;           /*!< RNTP Info */
1863       uint32_t            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    uint32_t      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    uint8_t  csiNumRep;// MAPPING
1919    uint8_t  mpddchPdschHop;
1920    uint8_t  mpdcchStartUESSFDD;// MAPPING
1921    uint16_t  mpdcchNumRep;// MAPPING
1922    uint32_t  mpddchNB;//1.. maxAvailNarrowBands-r13
1923 }RgrExtaddgrp2;
1924
1925 typedef struct rgrRbAssignment
1926 {
1927  uint8_t numPRBpairs; // MAPPING
1928  uint8_t rbAssignment[5];
1929 }RgrRbAssignment;
1930 typedef  struct rgrEpdcchAddModLst
1931 {
1932    uint8_t setConfigId;
1933    uint8_t   transmissionType;
1934    RgrRbAssignment   resBlkAssignment;
1935    uint32_t dmrsScrambSeq;
1936    uint32_t pucchResStartoffset;
1937    TknUInt32   pdschRemapQLcfgId;
1938    TknUInt8  mpdcchNumPRBpair; // MAPPING
1939    RgrExtaddgrp2 extaddgrp2;
1940 }RgrEpdcchAddModLst;
1941
1942 typedef struct rgrSubFrmPatCfg
1943 {
1944    Bool pres;
1945    uint8_t measSfPatFDD[5];
1946 }RgrSubFrmPatCfg;
1947 typedef struct rgrEpdcchConfigRel11
1948 {  
1949    Bool pres;
1950    RgrSubFrmPatCfg sfPtn;
1951    TknUInt32 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         uint8_t modeANumPucchRepFormat1;
1963         uint8_t 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    uint8_t                  pdschReptLevModeA;
1974 }RgrUeEmtcCfg;
1975 #endif
1976
1977 #ifdef RG_5GTF
1978 typedef struct rgrUe5gtfCfg
1979 {
1980    uint8_t              grpId;
1981    uint8_t              BeamId;
1982    uint8_t              numCC;
1983    uint8_t              mcs;
1984    uint8_t              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    TknUInt8              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    uint8_t        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    uint8_t qci;                   /*!< QCI for the logical channel. 
2089                                   Valid Range:[0-255] (Actual QCI - 1). */
2090    uint32_t gbr;                  /*!< GBR value for a logical channel (bytes/sec). */
2091    uint32_t 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    uint8_t 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   uint8_t          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    uint8_t             lcgId;      /*!< Logical channel group ID */
2129 /*rgr_x_001.main_11 ADD added changes for L2 measurements*/
2130 #ifdef LTE_L2_MEAS
2131    uint8_t             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    uint32_t            gbr;      /*!< Commulative UL GBR of all LC mapping to this LCG */
2136    uint32_t            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    uint8_t        qci;            /*!< Qci */
2145    uint8_t        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    uint8_t             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    uint8_t 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    uint32_t                 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    uint16_t                 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    uint8_t          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    uint8_t                 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    uint8_t             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   uint8_t                   sCellIdx;
2295   uint16_t                  sCellId;         /*!< This will be secondary cellId */
2296   TknUInt32               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   uint8_t                  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   uint8_t                   sCellIdx;  /*!< This will be secondary cell Idx */
2321   uint16_t                  sCellId;   /*!< This will be secondary cellId */
2322 }RgrUeDlSecCellRelInfo;
2323
2324 /** @brief Configuration for SCell Release for a UE*/
2325 typedef struct rgrUeSecCellRelInfo 
2326 {
2327   uint8_t                   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 uint32_t 
2342     * as all 16 bits are exhausted*/
2343    /* LTE_ADV_FLAG_REMOVED_START */
2344    /* KW fix for LTE_ADV */
2345    uint32_t                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    uint8_t                 simulAckNackCQIFormat3;
2428 #endif /* LTE_ADV */
2429    RgrAccessStratumRls    accessStratumRls; /*!< UE Access Stratum Release */
2430    uint8_t        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    uint8_t          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    uint8_t             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       uint8_t             lcgId;     /*!< Logical channel group ID */
2466 #ifdef RG_UNUSED
2467       uint8_t             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       uint32_t            gbr;     /*!< Commulative UL GBR of all LC mapping to this LCG */
2472       uint32_t            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    uint8_t 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    uint8_t 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          uint8_t          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          uint8_t          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          uint32_t                  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    uint8_t                isSonIcicEnable;
2579    uint8_t                numCellEdgeUEs;
2580    uint8_t                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    uint8_t  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    uint16_t               hSfn;          /*!< Hyper System Frame Number */
2625    uint16_t               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    uint8_t             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    uint8_t             emtcEnable; /*! indicates EMTC enabled or not */
2653    CmLteCellId    cellId;  /*! Cell Id */
2654    uint8_t             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    uint8_t                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    uint8_t             rgrCcPHighStartRb;  /*! Start RB for power high cell centre user */
2689    uint8_t             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    uint8_t                   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
2780 S16 cmPkRgrCfgCfm ARGS((
2781    Pst*                 pst,
2782    RgrCfgTransId        transId,
2783    uint8_t                   status
2784 ));
2785
2786 /** @brief Configuration confirm from MAC to RRM. 
2787  * 
2788  * @details This API confirms the RGR User about the status of the Configuration.
2789  * 
2790  * @param[in] pst      Pointer to the Post Structure.
2791  * @param[in] spId     SAP Id of the Service User.
2792  * @param[in] transId  Transaction Id for the transaction between RRM and MAC
2793  * @param[in] status   Configuration confirmation status Information.
2794  * @return ROK/RFAILED
2795  */
2796 typedef S16 (*RgrCfgCfm) ARGS((
2797    Pst*                 pst,
2798    RgrCfgTransId        transId,
2799    uint8_t                   status));
2800 /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
2801
2802 /** @name RGR_SI_SCH */
2803 /** @{ */
2804 #ifdef RGR_SI_SCH
2805 /** @brief SI Configuration Request primitive for SI configuration
2806  *  
2807  * @details This API is used to configure the System Information from RRM to a MAC scheduler.
2808  * 
2809  * @param[in] pst      Pointer to the Post Structure.
2810  * @param[in] spId     SAP Id of the Service Provider.
2811  * @param[in] transId  Transaction Id for the transaction between RRM and MAC.
2812  * @param[in] siCfgReq Parameters for the configuration.
2813  * @return ROK/RFAILED
2814  */
2815 typedef S16 (*RgrSiCfgReq) ARGS((
2816    Pst               *pst,
2817    SpId              spId,
2818    RgrCfgTransId     transId,
2819    RgrSiCfgReqInfo   *siCfgReq));
2820
2821 /** @brief SI Configuration Confirm Primitive for configuring Cell/UE/LC  
2822  *
2823  * @details This API confirms the SI configuration confirm in the status indication.  
2824  * 
2825  * @param[in] pst     Pointer to a post structure.
2826  * @param[in] suId    SAP Id of the Service User.
2827  * @param[in] transId Transaction Id between the MAC and The RRM.
2828  * @param[in] status  Confirmation status information from the MAC to the user.
2829  * @return ROK/RFAILED.
2830  */
2831 typedef S16 (*RgrSiCfgCfm) ARGS((
2832    Pst*                 pst,
2833    SuId                 suId,
2834    RgrCfgTransId        transId,
2835    uint8_t                   status));
2836
2837 /** @brief SI Configuration Request primitive for warning SI configuration
2838  *  
2839  *  @details This API is used to configure the System Info (SIB10,SIB11,SIB12) 
2840  *           from RRM to a MAC scheduler.
2841  *    
2842  *  @param[in] pst      Pointer to the Post Structure.
2843  *  @param[in] spId     SAP Id of the Service Provider.
2844  *  @param[in] transId Transaction Id between the MAC and The RRM.
2845  *  @param[in] WarningsiCfgReq Parameters for the configuration.
2846  *  @return ROK/RFAILED
2847  */
2848 typedef S16 (*RgrWarningSiCfgReq) ARGS((
2849    Pst                     *pst,
2850    SpId                    spId,
2851    RgrCfgTransId           transId,
2852    RgrWarningSiCfgReqInfo  *warningSiCfgReq));
2853
2854
2855 /** @brief Warning SI Configuration Confirm Primitive    
2856  *
2857  * @details This API confirms the Warning SI configuration confirm in the
2858  *           status indication.  
2859  * 
2860  * @param[in] pst     Pointer to a post structure.
2861  * @param[in] suId    SAP Id of the Service User.
2862  * @param[in] transId Transaction Id between the MAC and The RRM.
2863  * @param[in] siId   SI ID
2864  * @param[in] status  Confirmation status information from the MAC to the user.
2865  * @return ROK/RFAILED.
2866  */
2867 typedef S16 (*RgrWarningSiCfgCfm) ARGS((
2868    Pst*                 pst,
2869    SuId                 suId,
2870    RgrCfgTransId        transId,
2871    uint8_t                   siId,
2872    uint8_t                   status));
2873
2874 /** @brief SI Configuration stop Request primitive for warning SI configuration
2875  *
2876  *  @details Used to stop the System Information(SIB10, SIB11, SIB12) from RRM 
2877  *           to a MAC schedule
2878  *
2879  *  @param[in] pst      Pointer to the Post Structure.
2880  *  @param[in] spId     SAP Id of the Service Provider.
2881  *  @param[in] siId     siId to be stopped.
2882  *  @return ROK/RFAILED
2883  */ 
2884 typedef S16 (*RgrWarningSiStopReq) ARGS((
2885    Pst               *pst,
2886    SpId              spId,
2887    RgrCfgTransId     transId,
2888    uint8_t                siId ));
2889
2890 #endif /*RGR_SI_SCH*/
2891
2892 /** @{ */
2893 /* LTE_ADV_FLAG_REMOVED_START */
2894 /** @brief LOAD INF Configuration Request primitive for RNTP, ABS etc Configuration
2895  *  
2896  * @details This API is used to configure the LOAD INF parameters from RRM to a MAC scheduler.
2897  * 
2898  * @param[in] pst        Pointer to the Post Structure.
2899  * @param[in] spId       SAP Id of the Service Provider.
2900  * @param[in] transId    Transaction Id for the transaction between RRM and MAC.
2901  * @param[in] loadInfReq Parameters for the configuration.
2902  * @return ROK/RFAILED
2903  */
2904 typedef S16 (*RgrLoadInfReq) ARGS((
2905          Pst                 *pst,
2906          SpId                spId,
2907          RgrCfgTransId       transId,
2908          RgrLoadInfReqInfo   *loadInfReq));
2909 /* LTE_ADV_FLAG_REMOVED_END */
2910 /** @} */
2911
2912 /* rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
2913    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
2914 #ifdef RGR_CQI_REPT
2915 typedef S16 (*RgrStaInd) ARGS((
2916    Pst*                 pst,
2917    SuId                 suId,
2918    RgrStaIndInfo        *staInd));
2919 #endif
2920
2921 /* LTE_ADV_FLAG_REMOVED_START */
2922 typedef S16 (*RgrLoadInfInd) ARGS((
2923    Pst*                 pst,
2924    SuId                 suId,
2925    RgrLoadInfIndInfo    *loadInfInd));
2926 /* LTE_ADV_FLAG_REMOVED_END */
2927
2928 typedef S16 (*RgrUeStaInd) ARGS((
2929    Pst*                 pst,
2930    SuId                 suId,
2931    RgrUeStaIndInfo        *staInd));
2932 #ifdef RG
2933
2934 /** @brief Request from RRM to MAC to bind the interface SAPs. 
2935  * 
2936  * @details This API is invoked by RRM towards MAC to bind RGR SAP. 
2937  * This API validates the Pst, spId, suId and sends the bind confirm to
2938  * RRM.
2939  *
2940  *@param[in] pst   Pointer to a post structure.
2941  *@param[in] suId  SAP Id of the Service User.
2942  *@param[in] spId  SAP Id of the Service Provider.
2943  *@return  ROK/RFAILED
2944 */
2945 S16 RgUiRgrBndReq ARGS((
2946    Pst*                 pst,
2947    SuId                 suId,
2948    SpId                 spId
2949 ));
2950 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
2951 /** @name RGR_RRM_TICK */
2952 /** @{ */
2953 /** @brief TTI Indication from Scheduler to RRM.  
2954
2955 *  @details TTI Indication from MAC to RGR User.
2956 *
2957 * @param[in] pst    Pointer to a post structure.
2958 * @param[in] suId   SAP Id of the Service User.
2959 * @param[in] ttiInd Parameters containing the information on TTI Indication.
2960 * @return ROK/RFAILED
2961 */
2962 S16 RgUiRgrTtiInd ARGS((
2963    Pst*                 pst,
2964    SuId                 suId,
2965    RgrTtiIndInfo        *ttiInd
2966 ));
2967 #endif
2968 /** @} */
2969 /*rgr_x_001.main_9 - Added support for SPS*/
2970 S16 cmPkRgrSpsCellCfg ARGS((
2971    RgrSpsCellCfg *param,
2972    Buffer *mBuf
2973 ));
2974 S16 cmUnpkRgrSpsDlCellCfg ARGS((
2975    RgrSpsCellCfg *param,
2976    Buffer *mBuf
2977 ));
2978 S16 cmPkRgrUeSpsDlCfg ARGS((
2979    RgrUeSpsDlCfg *param,
2980    Buffer *mBuf
2981 ));
2982 S16 cmUnpkRgrUeSpsDlCfg ARGS((
2983    RgrUeSpsDlCfg *param,
2984    Buffer *mBuf
2985 ));
2986 S16 cmPkRgrUeSpsUlCfg ARGS((
2987    RgrUeSpsUlCfg *param,
2988    Buffer *mBuf
2989 ));
2990 S16 cmUnpkRgrUeSpsUlCfg ARGS((
2991    RgrUeSpsUlCfg *param,
2992    Buffer *mBuf
2993 ));
2994 S16 cmPkRgrUeSpsCfg ARGS((
2995    RgrUeSpsCfg *param,
2996    Buffer *mBuf
2997 ));
2998 S16 cmUnpkRgrUeSpsCfg ARGS((
2999    RgrUeSpsCfg *param,
3000    Buffer *mBuf
3001 ));
3002 S16 cmPkRgrLchSpsCfg ARGS((
3003    RgrLchSpsCfg *param,
3004    Buffer *mBuf
3005 ));
3006 S16 cmUnpkRgrLchSpsCfg ARGS((
3007    RgrLchSpsCfg *param,
3008    Buffer *mBuf
3009 ));
3010
3011 /*rgr_x_001.main_11 ADD added changes for L2 measurements*/
3012 S16 cmPkRgrUlLchCfg ARGS((
3013    RgrUlLchCfg *param,
3014    Buffer *mBuf
3015 ));
3016 S16 cmUnpkRgrUlLchCfg ARGS((
3017   RgrUlLchCfg *param,
3018   Buffer *mBuf
3019 ));
3020 S16 cmPkRgrUlLchQciCfg ARGS((
3021    RgrUlLchQciCfg *param,
3022    Buffer *mBuf
3023 ));
3024 S16 cmUnpkRgrUlLchQciCfg ARGS((
3025   RgrUlLchQciCfg *param,
3026   Buffer *mBuf
3027 ));
3028
3029
3030 /*rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
3031    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
3032 #ifdef RGR_CQI_REPT
3033 S16 cmPkRgrUeCqiReptCfg ARGS((
3034 RgrUeCqiReptCfg *param,
3035 Buffer *mBuf
3036 ));
3037
3038 S16 cmUnpkRgrUeCqiReptCfg ARGS((
3039 RgrUeCqiReptCfg *param,
3040 Buffer *mBuf
3041 ));
3042
3043 S16 cmUnpkRgrSubBandCqiInfo ARGS((
3044 RgrSubBandCqiInfo *param,
3045 Buffer *mBuf
3046 ));
3047
3048 S16 cmPkRgrStaInd ARGS((
3049 Pst* pst,
3050 SuId suId,
3051 RgrStaIndInfo* staInd
3052 ));
3053
3054 S16 cmUnpkRgrStaInd ARGS((
3055 RgrStaInd func,
3056 Pst *pst,
3057 Buffer *mBuf
3058 ));
3059
3060 S16 cmPkRgrStaIndInfo ARGS((
3061 RgrStaIndInfo *param,
3062 Buffer *mBuf
3063 ));
3064
3065 S16 cmUnpkRgrStaIndInfo ARGS((
3066 RgrStaIndInfo *param,
3067 Buffer *mBuf
3068 ));
3069
3070 S16 cmPkRgrUeCqiInfo ARGS((
3071 RgrUeCqiInfo *param,
3072 Buffer *mBuf
3073 ));
3074
3075 S16 cmUnpkRgrUeCqiInfo ARGS((
3076 RgrUeCqiInfo *param,
3077 Buffer *mBuf
3078 ));
3079
3080 S16 cmPkRgrUeCqiRept ARGS((
3081 RgrUeCqiRept *param,
3082 Buffer *mBuf
3083 ));
3084
3085 S16 cmPkRgrSubBandCqiInfo ARGS((
3086 RgrSubBandCqiInfo *param,
3087 Buffer *mBuf
3088 ));
3089
3090 S16 cmUnpkRgrUeCqiRept ARGS((
3091 RgrUeCqiRept *param,
3092 Buffer *mBuf
3093 ));
3094 #endif
3095
3096 /* LTE_ADV_FLAG_REMOVED_START */
3097 S16 cmPkRgrLoadInfInd ARGS((
3098 Pst* pst,
3099 SuId suId,
3100 RgrLoadInfIndInfo* loadInfInd
3101 ));
3102
3103 S16 cmUnpkRgrLoadInfInd ARGS((
3104 RgrLoadInfInd func,
3105 Pst *pst,
3106 Buffer *mBuf
3107 ));
3108
3109 S16 cmPkRgrLoadInfIndInfo ARGS((
3110 RgrLoadInfIndInfo *param,
3111 Buffer *mBuf
3112 ));
3113
3114 S16 cmUnpkRgrLoadInfIndInfo ARGS((
3115 RgrLoadInfIndInfo *param,
3116 Pst *pst, /* dsfr_pal_fixes ** 21-March-2013 ** SKS */
3117 Buffer *mBuf
3118 ));
3119 /* LTE_ADV_FLAG_REMOVED_END */
3120
3121 #ifdef TFU_UPGRADE 
3122 S16 cmPkRgrUePdschDedCfg ARGS((
3123 RgrUePdschDedCfg  *param,
3124 Buffer *mBuf
3125 ));
3126
3127 S16 cmUnpkRgrUePdschDedCfg ARGS((
3128 RgrUePdschDedCfg *param,
3129 Buffer *mBuf
3130 ));
3131
3132 S16 cmPkRgrUepACfg ARGS((
3133 RgrUepACfg *param,
3134 Buffer *mBuf
3135 ));
3136
3137 S16 cmUnpkRgrUepACfg ARGS((
3138 RgrUepACfg *param,
3139 Buffer *mBuf
3140 ));
3141 #endif
3142
3143 #ifdef LTE_ADV
3144 S16 cmPkRgrUeSecCellInfo ARGS((
3145 RgrUeSecCellInfo *param,
3146 Buffer *mBuf
3147 ));
3148
3149 S16 cmUnpkRgrUeSecCellInfo ARGS((
3150 RgrUeSecCellInfo *param,
3151 Buffer *mBuf
3152 ));
3153
3154 S16 cmPkRgrUeDlSecCellRelInfo ARGS((
3155 RgrUeDlSecCellRelInfo *param,
3156 Buffer *mBuf
3157 ));
3158
3159 S16 cmUnpkRgrUeDlSecCellRelInfo ARGS((
3160 RgrUeDlSecCellRelInfo *param,
3161 Buffer *mBuf
3162 ));
3163
3164 S16 cmPkRgrUeSecCellRelInfo ARGS((
3165 RgrUeSecCellRelInfo *param,
3166 Buffer *mBuf
3167 ));
3168
3169 S16 cmUnpkRgrUeSecCellRelInfo ARGS((
3170 RgrUeSecCellRelInfo *param,
3171 Buffer *mBuf
3172 ));
3173
3174 /* Sprint 3 */
3175 S16 cmPkRgrUeSCellAckPucchCfg ARGS((
3176 RgrUeSCellAckPucchCfg *param,
3177 Buffer *mBuf
3178 ));
3179
3180 S16 cmUnpkRgrUeSCellAckPucchCfg ARGS((
3181 RgrUeSCellAckPucchCfg *param,
3182 Buffer *mBuf
3183 ));
3184 #endif /* LTE_ADV */
3185 #ifdef RG
3186 /** @brief Confirmation from MAC to RRM for the bind request. 
3187 *
3188 * @details Confirmation from MAC to RRM for the bind
3189 * request for the interface saps. This function indicates it through the status To the User.
3190 *
3191 *  @param[in] pst     Pointer to a post structure.
3192 *  @param[in] suId    SAP Id of the Service User.
3193 *  @param[in] status  Confirmation status for the RGR User.
3194 *  @return ROK/RFAILED  
3195 */
3196 S16 RgUiRgrBndCfm ARGS((
3197    Pst*                 pst,
3198    SuId                 suId,
3199    uint8_t                   status
3200 ));
3201
3202 /** @brief Request from RRM to MAC to unbind the interface SAPs. 
3203  *
3204  * @details This API is invoked by RRM towards MAC to unbind RGR SAP. 
3205  * This API validates the Pst, spId, suId and sends the unbdind confirm to
3206  * 
3207  * @param[in] pst    Pointer To a post structure.
3208  * @param[in] spId   Service provider SAP Id.
3209  * @param[in] reason Cause for the Unbinding.
3210  * @return ROK/RFAILED.
3211  */
3212 S16 RgUiRgrUbndReq ARGS((
3213    Pst*                 pst,
3214    SpId                 spId,
3215    Reason               reason
3216 ));
3217
3218 /** @brief Configuration Confirm from MAC to RRM.  
3219  *
3220  * @details In this API crnti, preambleId, and
3221  * maskId are returned to RRM if request does not contain crnti (For Handover purpose)
3222  *
3223  *  @param[in] pst     A pointer to post Structure.
3224  *  @param[in] transId MAC to RRM User transaction Id. 
3225  *  @param[in] status  Status indication from the MAC.  
3226  *  @return ROK/RFAILED
3227  */
3228 S16 RgUiRgrCfgCfm ARGS((
3229    Pst*                 pst,
3230    RgrCfgTransId        transId,
3231    uint8_t                   status
3232 ));
3233 /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
3234 /** @name RGR_SI_SCH */
3235 /** @{ */
3236 #ifdef RGR_SI_SCH
3237 /** @brief SI Configuration Request primitive used for SI configuration
3238  *  from RRM to MAC-Scheduler.
3239  *
3240  * @details  This primitive specifies the PDU
3241  *  (MIB/SIB1/SIs) and the associated parameters in the structure
3242  *  RgrSiCfgReqInfo.
3243  * 
3244  * @param[in] pst      Pointer to a post Structure.
3245  * @param[in] spId     SAP Id of the Service provider.
3246  * @param[in] transId  RRM to MAC transaction Id.
3247  * @param[in] siCfgReq Parameters used for specifying SI.
3248  * @return ROK/RFAILED 
3249  */
3250 S16 RgUiRgrSiCfgReq ARGS((
3251    Pst           *pst,
3252    SpId          spId,
3253    RgrCfgTransId transId,
3254    RgrSiCfgReqInfo   *siCfgReq
3255 ));
3256
3257 /** @brief SI Configuration Confirm from MAC to RRM.
3258  *
3259  * @details This primitive is used to confirm the SI configuration to RRM from MAC. 
3260  * 
3261  * @param[in] pst     Pointer to a post structure
3262  * @param[in] suId    Service User SAP Id
3263  * @param[in] transId Transaction id between RRM and MAC
3264  * @param[in] status  Confirmation status .
3265  * @return ROK/RFAILED
3266  */
3267 S16 RgUiRgrSiCfgCfm ARGS((
3268    Pst*                 pst,
3269    SuId                 suId,
3270    RgrCfgTransId        transId,
3271    uint8_t                   status
3272 ));
3273
3274 /** @brief SI Configuration Confirm from MAC to RRM.
3275  *
3276  * @details This primitive is used to confirm the SI configuration to RRM 
3277  *          from MAC. 
3278  * 
3279  * @param[in] pst     Pointer to a post structure
3280  * @param[in] suId    Service User SAP Id
3281  * @param[in] transId Transaction id between RRM and MAC
3282  * @param[in] status  Confirmation status .
3283  * @return ROK/RFAILED
3284  */
3285 S16 RgUiRgrWarningSiCfgReq ARGS((
3286    Pst                    *pst,
3287    SpId                   spId,
3288    RgrCfgTransId          transId,
3289    RgrWarningSiCfgReqInfo *WarningSiCfgReqInfo
3290 ));
3291
3292
3293 /** @brief Warning SI Configuration Confirm from MAC to RRM.
3294  *
3295  * @details This primitive is used to confirm the Warning SI configuration 
3296  *          to RRM from MAC. 
3297  * 
3298  * @param[in] pst     Pointer to a post structure
3299  * @param[in] suId    Service User SAP Id
3300  * @param[in] transId Transaction id between RRM and MAC
3301  * @param[in] siId    SI ID.
3302  * @param[in] status  Confirmation status .
3303  * @return ROK/RFAILED
3304  */
3305 S16 RgUiRgrWarningSiCfgCfm ARGS((
3306    Pst*              pst,
3307    SuId              suId,
3308    RgrCfgTransId     transId,
3309    uint8_t                siId,
3310    uint8_t                status
3311 ));
3312
3313 /** @brief SI Configuration Confirm from MAC to RRM.
3314  *
3315  * @details This primitive is used to confirm the SI configuration to RRM
3316  *          from MAC. 
3317  * 
3318  * @param[in] pst     Pointer to a post structure
3319  * @param[in] spId    Service Provider SAP Id
3320  * @param[in] siId    SI Index
3321  * @return ROK/RFAILED
3322  */
3323 S16 RgUiRgrWarningSiStopReq ARGS((
3324    Pst           *pst,
3325    SpId          spId,
3326    RgrCfgTransId transId,
3327    uint8_t            siId
3328 ));
3329
3330 #endif /*RGR_SI_SCH*/
3331 /** @} */
3332
3333 /** @{ */
3334 /* LTE_ADV_FLAG_REMOVED_START */
3335 /** @brief LOAD INF Configuration Request primitive used for RNTP, ABS configuration
3336  *  from RRM to MAC-Scheduler.
3337  *
3338  * @details  This primitive specifies the startRb and endRb of CC sub-band for which
3339  *  we have to increase power at schedular
3340  *
3341  *
3342  * @param[in] pst        Pointer to a post Structure.
3343  * @param[in] spId       SAP Id of the Service provider.
3344  * @param[in] transId    RRM to MAC transaction Id.
3345  * @param[in] loadInfReq Parameters used for specifying LOAD INF.
3346  * @return ROK/RFAILED
3347  */
3348 S16 RgUiRgrLoadInfReq ARGS((
3349    Pst                 *pst,
3350    SpId                spId,
3351    RgrCfgTransId       transId,
3352    RgrLoadInfReqInfo   *loadInfReq
3353 ));
3354 /* LTE_ADV_FLAG_REMOVED_END */
3355 /** @} */
3356
3357 /** @name RGR_CQI_REPT */
3358 /** @{ */
3359 /* rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
3360    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
3361 #ifdef RGR_CQI_REPT
3362 /** @brief Sta Indication from Scheduler to RRM 
3363  *
3364  * @details This primitive is used to send status indication from scheduler
3365  *          to RRM. 
3366  * 
3367  * @param[in] pst     Pointer to a post structure
3368  * @param[in] suId    Service User SAP Id
3369  * @param[in] staInd  Status Indication .
3370  * @return ROK/RFAILED
3371  */
3372 S16 RgUiRgrStaInd ARGS((
3373    Pst*                 pst,
3374    SuId                 suId,
3375    RgrStaIndInfo        *staInd
3376 ));
3377 #endif
3378 S16 RgUiRgrUeStaInd ARGS((
3379 Pst             *pst,
3380 SuId            suId,
3381 RgrUeStaIndInfo *ueStaInd
3382 ));
3383
3384
3385 /** @} */
3386 /** @{ */
3387 /* LTE_ADV_FLAG_REMOVED_START */
3388 /** @brief LoadInf Indication from Scheduler to RRM
3389  *
3390  * @details This primitive is used to send LOAD INF indication from scheduler
3391  *          to RRM.
3392  *
3393  * @param[in] pst         Pointer to a post structure
3394  * @param[in] suId        Service User SAP Id
3395  * @param[in] loadInfInd  LOAD INF Indication .
3396  * @return ROK/RFAILED
3397  */
3398 S16 RgUiRgrLoadInfInd ARGS((
3399    Pst*                 pst,
3400    SuId                 suId,
3401    RgrLoadInfIndInfo    *loadInfInd
3402 ));
3403 /* LTE_ADV_FLAG_REMOVED_END */
3404 /** @} */
3405
3406 #endif
3407
3408 #ifdef NX
3409 /** @brief Request from RRM to MAC to bind the interface SAPs.
3410  *
3411  *  @details This API validats the SAP Id and binds the interface SAPs  
3412  *
3413  *  @param[in] pst    Pointer to a post structure
3414  *  @param[in] suId   Service User SAP Id
3415  *  @param[in] spId   Service Provider SAP Id
3416  *  @return ROK/RFAILED  
3417  */
3418 S16 NxLiRgrBndReq ARGS((
3419    Pst*                 pst,
3420    SuId                 suId,
3421    SpId                 spId
3422 ));
3423
3424 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
3425 /** @name RGR_RRM_TICK */
3426 /** @{ */
3427 /** @brief TTI indication from scheduler to RRM. 
3428 *
3429 * @details This primitive handles TTI Indication. It essentially validates
3430 * the post structure and Transmit Time timing .
3431 *
3432 * @param[in] Pst*     pst          Pointer To a post Structure
3433 * @param[in] SuId     suId         Service user SAP Id
3434 * @param[in] RgrTtiIndInfo* ttiInd Information passed as a part of TTI indication from PHY to MAC. 
3435 * @return ROK/RFAILED 
3436 */
3437 S16 NxLiRgrTtiInd ARGS((
3438    Pst*                 pst,
3439    SuId                 suId,
3440    RgrTtiIndInfo        *ttiInd
3441 ));
3442 /** @} */
3443
3444 /** @brief Confirmation from MAC to RRM for the bind request for the interface SAPs.
3445  *
3446  * @details This Primitive handles the call for bind confirmation.
3447  * 
3448  * @param[in] Pst*  pst    A pointer to post structure.
3449  * @param[in] SuId  suId   Service User SAP Id.
3450  * @param[in] uint8_t    status An information on status confirmation.
3451  * @return S16
3452  */
3453 S16 NxLiRgrBndCfm ARGS((
3454    Pst*                 pst,
3455    SuId                 suId,
3456    uint8_t                   status
3457 ));
3458
3459 /** @brief Request from RRM to MAC to unbind the interface SAPs 
3460  *
3461  * @details This primitive unbinds the interface SAPs.It validates if the SAP is really bound.
3462  * 
3463  * @param[in] Pst*      pst    A pointer to post structure. 
3464  * @param[in] SpId      spId   Service Provider SAP Id.
3465  * @param[in] Reason    reason A cause for unbinding the SAPs.
3466  * @return S16
3467  */
3468 S16 NxLiRgrUbndReq ARGS((
3469    Pst*                 pst,
3470    SpId                 spId,
3471    Reason               reason
3472 ));
3473 /** @brief Configuration request from RRM to MAC for 
3474  * configuring Cell/UE/LC 
3475  *
3476  * @details The RRM configures the Cell/UE/LC using this primitive.
3477  *
3478  * @param[in]   Pst*  pst      A pointer to post structure.
3479  * @param[in]   SpId  spId     Service Provider SAP Id.
3480  * @param[in]   RgrCfgTransId  transId Transaction Id between RRM and MAC. 
3481  * @param[in]   RgrCfgReqInfo* cfgReqInfo A structure containing the configuration information.
3482  * @return   S16 
3483  */
3484 S16 NxLiRgrCfgReq ARGS((
3485    Pst*                 pst,
3486    SpId                 spId,
3487    RgrCfgTransId        transId,
3488    RgrCfgReqInfo *      cfgReqInfo
3489 ));
3490
3491 /** @brief Configuration confirm from MAC to RRM 
3492  *
3493  * @details This primitive confirms the RRM about the configuration reception request.
3494  * 
3495  * @param[in] Pst*      pst    A pointer to post structure. 
3496  * @param[in] SuId      suId   Service Provider SAP Id.
3497  * @param[in] RgrCfgTransId transId RRM to MAC transaction Id. 
3498  * @return S16
3499  */
3500 S16 NxLiRgrCfgCfm ARGS((
3501    Pst*                 pst,
3502    SuId                 suId,
3503    RgrCfgTransId        transId,
3504    uint8_t                   status
3505 ));
3506 /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
3507 /** @name RGR_SI_SCH */
3508 /* @{ */
3509 #ifdef RGR_SI_SCH
3510
3511 /** @brief SI Configuration confirm from MAC to RRM 
3512 *
3513 * @details  This primitive confirms the SI configuration to the RRM.
3514
3515 * @param[in]  Pst*      pst        A pointer to post structure.
3516 * @param[in]  SuId      suId       Service User SAP Id.
3517 * @param[in]  RgrCfgTransId transId RRM to MAC transaction Id
3518 * @param[in]  uint8_t        status      An information on confirmation status.
3519 * @return S16
3520 */
3521 S16 NxLiRgrSiCfgCfm ARGS((
3522    Pst*                 pst,
3523    SuId                 suId,
3524    RgrCfgTransId        transId,
3525    uint8_t                   status
3526 ));
3527
3528
3529 /* PH04_CMAS */
3530 S16 NxLiRgrWrngSiCfgCfm ARGS((
3531 Pst*                 pst,
3532 SuId                 suId,
3533 RgrCfgTransId        transId,
3534 uint8_t                   siId,
3535 uint8_t                   status
3536 ));
3537
3538
3539
3540 S16 NxLiRgrStopWrngSiCfgCfm ARGS((
3541    Pst*                 pst,
3542    SuId                 suId,
3543    RgrCfgTransId        transId,
3544    uint8_t                   status
3545 ));
3546
3547 /* PH04_CMAS : end */
3548
3549  
3550 /** @brief Warning SI Configuration confirm from MAC to RRM 
3551 *
3552 * @details  This primitive confirms the Warning SI configuration to the RRM.
3553
3554 * @param[in]  Pst*      pst        A pointer to post structure.
3555 * @param[in]  SuId      suId       Service User SAP Id.
3556 * @param[in]  uint8_t        siId       SI Index
3557 * @param[in]  RgrCfgTransId transId RRM to MAC transaction Id
3558 * @param[in]  uint8_t        status      An information on confirmation status.
3559 * @return S16
3560 */
3561 S16 NxLiRgrWarningSiCfgCfm ARGS((
3562    Pst*                 pst,
3563    SuId                 suId,
3564    RgrCfgTransId        transId,
3565    uint8_t                   siId,
3566    uint8_t                   status
3567 ));
3568
3569 /** @brief SI Configuration request from RRM to MAC for 
3570  * configuring SI 
3571  *
3572  * @details  This primitive is used for the configuration of the SI information in the MAC scheduler.
3573  *
3574  * @param[in] Pst*             pst      A pointer to post structure.
3575  * @param[in] SpId             spId     Service Provider SAP Id.
3576  * @param[in] RgrCfgTransId    transId, RRM to MAC transaction Id
3577  * @param[in] RgrSiCfgReqInfo* cfgReqInfo Parameters corresponding to the SI Configuration .
3578  * @return S16
3579  */
3580 S16 NxLiRgrSiCfgReq ARGS((
3581    Pst*                 pst,
3582    SpId                 spId,
3583    RgrCfgTransId        transId,
3584    RgrSiCfgReqInfo * cfgReqInfo
3585 ));
3586
3587  
3588 /** @brief Warning SI Configuration request from RRM to MAC for 
3589  * configuring SI 
3590  *
3591  * @details  This primitive is used for the configuration of the SI 
3592  *           information in the MAC scheduler.
3593  *
3594  * @param[in] Pst*             pst      A pointer to post structure.
3595  * @param[in] SpId             spId     Service Provider SAP Id.
3596  * @param[in] RgrCfgTransId    transId, RRM to MAC transaction Id
3597  * @param[in] RgrWarningSiCfgReqInfo  *warningSiCfgReq SI Configuration
3598  * @return S16
3599  */
3600 S16 NxLiRgrWarningSiCfgReq ARGS((
3601    Pst*                       pst,
3602    SpId                      spId,
3603    RgrCfgTransId             transId,
3604    RgrWarningSiCfgReqInfo  *warningSiCfgReq
3605 )); 
3606
3607   
3608 /** @brief Warning SI Stop request from RRM to MAC for 
3609  * configuring SI 
3610  *
3611  * @details  This primitive is used to stop the SI for a 
3612  *           perticular siId.
3613  *
3614  * @param[in] Pst*             pst      A pointer to post structure.
3615  * @param[in] SpId             spId     Service Provider SAP Id.
3616  * @param[in] uint8_t               siId     SI Index
3617  */
3618 S16 NxLiRgrWarningSiStopReq ARGS((
3619    Pst*                       pst,
3620    SpId                       spId,
3621    RgrCfgTransId              transId,
3622    uint8_t                         siId
3623 )); 
3624  
3625 #endif/*RGR_SI_SCH */
3626 /** @} */
3627
3628 /** @{ */
3629 /* LTE_ADV_FLAG_REMOVED_START */
3630 /** @brief LOAD INF Configuration request from RRM to MAC for
3631  *         configuring rntp, abs etc
3632  *
3633  * @details  This primitive is used for the configuration of the LOAD INF parameters
3634  *           in the MAC scheduler.
3635  *
3636  * @param[in] Pst*               pst        A pointer to post structure.
3637  * @param[in] SpId               spId       Service Provider SAP Id.
3638  * @param[in] RgrCfgTransId      transId,   RRM to MAC transaction Id
3639  * @param[in] RgrLoadInfReqInfo* loadInfReq Parameters corresponding to the LOAD INF Config.
3640  * @return S16
3641  */
3642 S16 NxLiRgrLoadInfReq ARGS((
3643    Pst*                 pst,
3644    SpId                 spId,
3645    RgrCfgTransId        transId,
3646    RgrLoadInfReqInfo*   loadInfReq
3647 ));
3648 /* LTE_ADV_FLAG_REMOVED_END */
3649 /** @} */
3650
3651 /** @name RGR_CQI_REPT */
3652 /** @{ */
3653 /* rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
3654    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
3655 #ifdef RGR_CQI_REPT
3656 /** @brief Sta Indication from Scheduler to RRM 
3657  *
3658  * @details This primitive is used to send status indication
3659  *          from scheduler to RRM. 
3660  * 
3661  * @param[in] pst     Pointer to a post structure
3662  * @param[in] suId    Service User SAP Id
3663  * @param[in] staInd  Status Indication .
3664 */
3665 S16 NxLiRgrStaInd ARGS((
3666    Pst*                 pst,
3667    SuId                 suId,
3668    RgrStaIndInfo        *staInd
3669 ));
3670 #endif
3671 /** @} */
3672 /** @{ */
3673 /* LTE_ADV_FLAG_REMOVED_START */
3674 /** @brief LOAD INF Indication from Scheduler to RRM
3675  *
3676  * @details This primitive is used to send loadInf indication
3677  *          from scheduler to RRM.
3678  *
3679  * @param[in] pst         Pointer to a post structure
3680  * @param[in] suId        Service User SAP Id
3681  * @param[in] loadInfInd  LOAD INF Indication .
3682 */
3683 S16 NxLiRgrLoadInfInd ARGS((
3684    Pst*                  pst,
3685    SuId                  suId,
3686    RgrLoadInfIndInfo     *loadInfInd
3687 ));
3688 /* LTE_ADV_FLAG_REMOVED_END */
3689 /** @} */
3690
3691 #endif
3692 #if defined(LCRGR)
3693 /** @brief Request from RRM to MAC to bind the interface SAPs */
3694 S16 cmPkRgrBndReq ARGS((
3695    Pst*                 pst,
3696    SuId                 suId,
3697    SpId                 spId
3698 ));
3699 /** @brief Request from RRM to MAC to bind the interface SAPs */
3700 S16 cmUnpkRgrBndReq ARGS((
3701    RgrBndReq            func,
3702    Pst*                 pst,
3703    Buffer               *mBuf
3704 ));
3705 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
3706 /** @name RGR_RRM_TICK */
3707 /** @{ */
3708 /** @brief Pack function for TTI indication from scheduler to RRM */
3709 S16 cmPkRgrTtiInd ARGS((
3710          Pst*                 pst,
3711          SuId                 suId,
3712          RgrTtiIndInfo        *ttiInd
3713          ));
3714 S16 cmPkRgrTtiIndInfo ARGS((
3715          RgrTtiIndInfo  *ttiInd,
3716          Buffer         *mBuf));
3717 /** @brief Unpack function for TTI indication from scheduler to RRM */
3718 S16 cmUnpkRgrTtiInd   ARGS((
3719          RgrTtiInd            func,
3720          Pst*                 pst,
3721          Buffer               *mBuf
3722          ));
3723 S16 cmUnpkRgrTtiIndInfo ARGS((
3724          RgrTtiIndInfo *param,
3725          Buffer        *mBuf
3726          ));
3727 /** @} */
3728 S16 cmPkRgrBndCfm ARGS((
3729    Pst*                 pst,
3730    SuId                 suId,
3731    uint8_t                   status
3732 ));
3733
3734 S16 cmUnpkRgrBndCfm ARGS((
3735    RgrBndCfm            func,
3736    Pst*                 pst,
3737    Buffer               *mBuf
3738 ));
3739
3740 S16 cmPkRgrUbndReq ARGS((
3741    Pst*                 pst,
3742    SpId                 spId,
3743    Reason               reason
3744 ));
3745
3746 S16 cmUnpkRgrUbndReq ARGS((
3747    RgrUbndReq           func,
3748    Pst*                 pst,
3749    Buffer               *mBuf
3750 ));
3751
3752 S16 cmPkRgrCfgReq ARGS((
3753    Pst*                 pst,
3754    RgrCfgTransId        transId,
3755    RgrCfgReqInfo *      cfgReqInfo
3756 ));
3757
3758 S16 cmUnpkRgrCfgReq ARGS((
3759    RgrCfgReq            func,
3760    Pst*                 pst,
3761    Buffer               *mBuf
3762 ));
3763
3764 S16 cmUnpkRgrCfgCfm ARGS((
3765    RgrCfgCfm            func,
3766    Pst*                 pst,
3767    Buffer               *mBuf
3768 ));
3769
3770 S16 cmPkRgrCfgTransId ARGS((
3771    RgrCfgTransId        *param,
3772    Buffer               *mBuf
3773 ));
3774 S16 cmUnpkRgrCfgTransId ARGS((
3775    RgrCfgTransId        *param,
3776    Buffer               *mBuf
3777 ));
3778 S16 cmPkRgrDlHqCfg ARGS((
3779    RgrDlHqCfg           *param,
3780    Buffer               *mBuf
3781 ));
3782 S16 cmUnpkRgrDlHqCfg ARGS((
3783    RgrDlHqCfg           *param,
3784    Buffer               *mBuf
3785 ));
3786 S16 cmPkRgrRntiCfg ARGS((
3787    RgrRntiCfg           *param,
3788    Buffer               *mBuf
3789 ));
3790 S16 cmUnpkRgrRntiCfg ARGS((
3791    RgrRntiCfg           *param,
3792    Buffer               *mBuf
3793 ));
3794 S16 cmPkRgrDlCmnCodeRateCfg ARGS((
3795    RgrDlCmnCodeRateCfg  *param,
3796    Buffer               *mBuf
3797 ));
3798 S16 cmUnpkRgrDlCmnCodeRateCfg ARGS((
3799    RgrDlCmnCodeRateCfg  *param,
3800    Buffer               *mBuf
3801 ));
3802 S16 cmPkRgrCfiCfg ARGS((
3803    RgrCfiCfg            *param,
3804    Buffer               *mBuf
3805 ));
3806 S16 cmUnpkRgrCfiCfg ARGS((
3807    RgrCfiCfg            *param,
3808    Buffer               *mBuf
3809 ));
3810 S16 cmPkRgrPuschSubBandCfg ARGS((
3811    RgrPuschSubBandCfg   *param,
3812    Buffer               *mBuf
3813 ));
3814 S16 cmUnpkRgrPuschSubBandCfg ARGS((
3815    RgrPuschSubBandCfg   *param,
3816    Buffer               *mBuf
3817 ));
3818 S16 cmPkRgrUlCmnCodeRateCfg ARGS((
3819    RgrUlCmnCodeRateCfg  *param,
3820    Buffer               *mBuf
3821 ));
3822 S16 cmUnpkRgrUlCmnCodeRateCfg ARGS((
3823    RgrUlCmnCodeRateCfg  *param,
3824    Buffer               *mBuf
3825 ));
3826 S16 cmPkRgrUlTrgCqiCfg ARGS((
3827    RgrUlTrgCqiCfg       *param,
3828    Buffer               *mBuf
3829 ));
3830 S16 cmUnpkRgrUlTrgCqiCfg ARGS((
3831    RgrUlTrgCqiCfg       *param,
3832    Buffer               *mBuf
3833 ));
3834 S16 cmPkRgrBwCfg ARGS((
3835    RgrBwCfg             *param,
3836    Buffer               *mBuf
3837 ));
3838 S16 cmUnpkRgrBwCfg ARGS((
3839    RgrBwCfg             *param,
3840    Buffer               *mBuf
3841 ));
3842 S16 cmPkRgrPhichCfg ARGS((
3843    RgrPhichCfg          *param,
3844    Buffer               *mBuf
3845 ));
3846 S16 cmUnpkRgrPhichCfg ARGS((
3847    RgrPhichCfg          *param,
3848    Buffer               *mBuf
3849 ));
3850 S16 cmPkRgrPucchCfg ARGS((
3851    RgrPucchCfg          *param,
3852    Buffer               *mBuf
3853 ));
3854 S16 cmUnpkRgrPucchCfg ARGS((
3855    RgrPucchCfg          *param,
3856    Buffer               *mBuf
3857 ));
3858 S16 cmPkRgrSrsCfg ARGS((
3859    RgrSrsCfg            *param,
3860    Buffer               *mBuf
3861 ));
3862 S16 cmUnpkRgrSrsCfg ARGS((
3863    RgrSrsCfg            *param,
3864    Buffer               *mBuf
3865 ));
3866 S16 cmPkRgrRachCfg ARGS((
3867    RgrRachCfg           *param,
3868    Buffer               *mBuf
3869 ));
3870 S16 cmUnpkRgrRachCfg ARGS((
3871    RgrRachCfg           *param,
3872    Buffer               *mBuf
3873 ));
3874 S16 cmPkRgrSiCfg ARGS((
3875    RgrSiCfg             *param,
3876    Buffer               *mBuf
3877 ));
3878 S16 cmUnpkRgrSiCfg ARGS((
3879    RgrSiCfg             *param,
3880    Buffer               *mBuf
3881 ));
3882 S16 cmPkRgrTpcRntiCfg ARGS((
3883    RgrTpcRntiCfg        *param,
3884    Buffer               *mBuf
3885 ));
3886 S16 cmUnpkRgrTpcRntiCfg ARGS((
3887    RgrTpcRntiCfg        *param,
3888    Buffer               *mBuf
3889 ));
3890 S16 cmPkRgrUlPwrCfg ARGS((
3891    RgrUlPwrCfg          *param,
3892    Buffer               *mBuf
3893 ));
3894 S16 cmUnpkRgrUlPwrCfg ARGS((
3895    RgrUlPwrCfg          *param,
3896    Buffer               *mBuf
3897 ));
3898 S16 cmPkRgrPuschCfg ARGS((
3899    RgrPuschCfg          *param,
3900    Buffer               *mBuf
3901 ));
3902 S16 cmUnpkRgrPuschCfg ARGS((
3903    RgrPuschCfg          *param,
3904    Buffer               *mBuf
3905 ));
3906 S16 cmPkRgrCodeBookRstCfg ARGS((
3907    RgrCodeBookRstCfg    *param,
3908    Buffer               *mBuf
3909 ));
3910 S16 cmUnpkRgrCodeBookRstCfg ARGS((
3911    RgrCodeBookRstCfg    *param,
3912    Buffer               *mBuf
3913 ));
3914 S16 cmPkRgrPreambleSetCfg ARGS((
3915    RgrPreambleSetCfg    *param,
3916    Buffer               *mBuf
3917 ));
3918 S16 cmUnpkRgrPreambleSetCfg ARGS((
3919    RgrPreambleSetCfg    *param,
3920    Buffer               *mBuf
3921 ));
3922 S16 cmPkRgrCmnLchCfg ARGS((
3923    RgrCmnLchCfg         *param,
3924    Buffer               *mBuf
3925 ));
3926 S16 cmUnpkRgrCmnLchCfg ARGS((
3927    RgrCmnLchCfg         *param,
3928    Buffer               *mBuf
3929 ));
3930 S16 cmPkRgrDlfsCfg ARGS((
3931    RgrDlfsCfg           *param,
3932    Buffer               *mBuf
3933 ));
3934 S16 cmUnpkRgrDlfsCfg ARGS((
3935    RgrDlfsCfg           *param,
3936    Buffer               *mBuf
3937 ));
3938
3939 /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
3940 /** @name RGR_SI_SCH */
3941 /** @{ */
3942 #ifdef RGR_SI_SCH
3943 S16 cmPkRgrWarningSiCfgReq ARGS((
3944    Pst*                     pst,
3945    SpId                     spId,
3946    RgrCfgTransId            transId,
3947    RgrWarningSiCfgReqInfo   *warningSiCfgReqInfo
3948 ));
3949
3950 S16 cmUnpkRgrWarningSiCfgReq ARGS((
3951    RgrWarningSiCfgReq  func,
3952    Pst                 *pst,
3953    Buffer              *mBuf
3954 ));
3955
3956 S16 cmPkRgrWarningSiCfgReqInfo ARGS((
3957    Pst                    *pst,
3958    RgrWarningSiCfgReqInfo *param,
3959    Buffer                 *mBuf
3960 ));
3961
3962 S16 cmUnpkRgrWarningSiCfgReqInfo ARGS((
3963    Pst                    *pst,
3964    RgrWarningSiCfgReqInfo *param,
3965    Buffer                 *mBuf
3966 ));
3967
3968 S16 cmPkRgrWarningSiStopReq ARGS((
3969    Pst                 *pst,
3970    SpId                spId,
3971    RgrCfgTransId       transId,
3972    uint8_t                  siId
3973 ));
3974
3975 S16 cmUnpkRgrWarningSiStopReq ARGS((
3976    RgrWarningSiStopReq func,
3977    Pst                 *pst,
3978    Buffer              *mBuf
3979 ));
3980
3981
3982 S16 cmPkRgrWarningSiCfgCfm ARGS((
3983    Pst*                 pst,
3984    SuId                 suId,
3985    RgrCfgTransId        transId,
3986    uint8_t                   siId,
3987    uint8_t                   status
3988 ));
3989
3990 S16 cmUnpkRgrWarningSiCfgCfm ARGS((
3991    RgrWarningSiCfgCfm          func,
3992    Pst*                 pst,
3993    Buffer               *mBuf
3994 ));
3995
3996
3997 S16 cmPkRgrSiCfgReq ARGS((
3998    Pst*                 pst,
3999    SpId                 spId,
4000    RgrCfgTransId        transId,
4001    RgrSiCfgReqInfo *    cfgReqInfo
4002 ));
4003
4004 S16 cmUnpkRgrSiCfgReq ARGS((
4005    RgrSiCfgReq            func,
4006    Pst*                 pst,
4007    Buffer               *mBuf
4008 ));
4009
4010 S16 cmPkRgrSiCfgReqInfo ARGS((
4011    RgrSiCfgReqInfo        *param,
4012    Buffer               *mBuf
4013 ));
4014
4015 S16 cmUnpkRgrSiCfgReqInfo ARGS((
4016    RgrSiCfgReqInfo        *param,
4017    Buffer               *mBuf
4018 ));
4019
4020 S16 cmPkRgrSiCfgCfm ARGS((
4021    Pst*                 pst,
4022    SuId                 suId,
4023    RgrCfgTransId        transId,
4024    uint8_t                   status
4025 ));
4026
4027 S16 cmUnpkRgrSiCfgCfm ARGS((
4028    RgrSiCfgCfm            func,
4029    Pst*                 pst,
4030    Buffer               *mBuf
4031 ));
4032 #endif /*RGR_SI_SCH*/
4033 /** @} */
4034
4035 /** @{ */
4036 /* LTE_ADV_FLAG_REMOVED_START */
4037 S16 cmPkRgrLoadInfReq ARGS((
4038    Pst*                 pst,
4039    SpId                 spId,
4040    RgrCfgTransId        transId,
4041    RgrLoadInfReqInfo *  loadInfReq
4042 ));
4043
4044 S16 cmUnpkRgrLoadInfReq ARGS((
4045    RgrLoadInfReq        func,
4046    Pst*                 pst,
4047    Buffer               *mBuf
4048 ));
4049
4050 S16 cmPkRgrLoadInfReqInfo ARGS((
4051    RgrLoadInfReqInfo    *param,
4052    Buffer               *mBuf
4053 ));
4054
4055 S16 cmUnpkRgrLoadInfReqInfo ARGS((
4056    RgrLoadInfReqInfo    *param,
4057    Buffer               *mBuf
4058 ));
4059 /* LTE_ADV_FLAG_REMOVED_END */
4060 /** @} */
4061
4062 /** @name LTE_TDD */
4063 /** @{ */
4064 #ifdef LTE_TDD
4065 S16 cmPkRgrTddPrachInfo ARGS((
4066    RgrTddPrachInfo      *param,
4067    Buffer               *mBuf
4068 ));
4069 S16 cmUnpkRgrTddPrachInfo ARGS((
4070    RgrTddPrachInfo      *param,
4071    Buffer               *mBuf
4072 ));
4073 S16 cmPkRgrTddPrachRscInfo ARGS((
4074    RgrTddPrachRscInfo   *param,
4075    Buffer               *mBuf
4076 ));
4077 S16 cmUnpkRgrTddPrachRscInfo ARGS((
4078    RgrTddPrachRscInfo   *param,
4079    Buffer               *mBuf
4080 ));
4081 #endif /* LTE_TDD*/
4082 /** @} */
4083 S16 cmPkRgrEnbPfs ARGS((
4084    RgrEnbPfs         *param,
4085    Buffer               *mBuf
4086 ));
4087 S16 cmUnpkRgrEnbPfs ARGS((
4088    RgrEnbPfs         *param,
4089    Buffer               *mBuf
4090 ));
4091 S16 cmPkRgrCellCfg ARGS((
4092    RgrCellCfg           *param,
4093    Buffer               *mBuf
4094 ));
4095 S16 cmUnpkRgrCellCfg ARGS((
4096    RgrCellCfg           *param,
4097    Buffer               *mBuf
4098 ));
4099 S16 cmPkRgrUeAprdDlCqiCfg ARGS((
4100    RgrUeAprdDlCqiCfg    *param,
4101    Buffer               *mBuf
4102 ));
4103 S16 cmUnpkRgrUeAprdDlCqiCfg ARGS((
4104    RgrUeAprdDlCqiCfg    *param,
4105    Buffer               *mBuf
4106 ));
4107 S16 cmPkRgrSchedGnbCfg ARGS((
4108    RgrSchedEnbCfg       *param,
4109    Buffer               *mBuf
4110 ));
4111 S16 cmUnpkRgrSchedGnbCfg ARGS((
4112    RgrSchedEnbCfg       *param,
4113    Buffer               *mBuf
4114 ));
4115 S16 cmPkRgrUePrdDlCqiCfg ARGS((
4116    RgrUePrdDlCqiCfg     *param,
4117    Buffer               *mBuf
4118 ));
4119 S16 cmUnpkRgrUePrdDlCqiCfg ARGS((
4120    RgrUePrdDlCqiCfg     *param,
4121    Buffer               *mBuf
4122 ));
4123 S16 cmPkRgrUeDlCqiCfg ARGS((
4124    RgrUeDlCqiCfg        *param,
4125    Buffer               *mBuf
4126 ));
4127 S16 cmUnpkRgrUeDlCqiCfg ARGS((
4128    RgrUeDlCqiCfg        *param,
4129    Buffer               *mBuf
4130 ));
4131 S16 cmPkRgrUeMeasGapCfg ARGS((
4132    RgrUeMeasGapCfg      *param,
4133    Buffer               *mBuf
4134 ));
4135 S16 cmUnpkRgrUeMeasGapCfg ARGS((
4136    RgrUeMeasGapCfg      *param,
4137    Buffer               *mBuf
4138 ));
4139 /*rgr_x_001.main_11 ADD added changes for DRX*/
4140 S16 cmPkRgrDrxLongCycleOffst ARGS((
4141    RgrDrxLongCycleOffst *param,
4142    Buffer               *mBuf
4143 ));
4144 S16 cmUnpkRgrDrxLongCycleOffst ARGS((
4145    RgrDrxLongCycleOffst *param,
4146    Buffer               *mBuf
4147 ));
4148 S16 cmPkRgrDrxShortDrx ARGS((
4149    RgrDrxShortDrx       *param,
4150    Buffer               *mBuf
4151 ));
4152 S16 cmUnpkRgrDrxShortDrx ARGS((
4153    RgrDrxShortDrx       *param,
4154    Buffer               *mBuf
4155 ));
4156 S16 cmPkRgrUeDrxCfg ARGS((
4157    RgrUeDrxCfg          *param,
4158    Buffer               *mBuf
4159 ));
4160 S16 cmUnpkRgrUeDrxCfg ARGS((
4161    RgrUeDrxCfg          *param,
4162    Buffer               *mBuf
4163 ));
4164 S16 cmPkRgrUeCapCfg ARGS((
4165    RgrUeCapCfg          *param,
4166    Buffer               *mBuf
4167 ));
4168 S16 cmUnpkRgrUeCapCfg ARGS((
4169    RgrUeCapCfg          *param,
4170    Buffer               *mBuf
4171 ));
4172 S16 cmPkRgrUeAckNackRepCfg ARGS((
4173    RgrUeAckNackRepCfg   *param,
4174    Buffer               *mBuf
4175 ));
4176 S16 cmUnpkRgrUeAckNackRepCfg ARGS((
4177    RgrUeAckNackRepCfg   *param,
4178    Buffer               *mBuf
4179 ));
4180 S16 cmPkRgrUeTxModeCfg ARGS((
4181    RgrUeTxModeCfg       *param,
4182    Buffer               *mBuf
4183 ));
4184 S16 cmUnpkRgrUeTxModeCfg ARGS((
4185    RgrUeTxModeCfg       *param,
4186    Buffer               *mBuf
4187 ));
4188 S16 cmPkRgrUeUlHqCfg ARGS((
4189    RgrUeUlHqCfg         *param,
4190    Buffer               *mBuf
4191 ));
4192 S16 cmUnpkRgrUeUlHqCfg ARGS((
4193    RgrUeUlHqCfg         *param,
4194    Buffer               *mBuf
4195 ));
4196 S16 cmPkRgrUeGrpPwrCfg ARGS((
4197    RgrUeGrpPwrCfg       *param,
4198    Buffer               *mBuf
4199 ));
4200 S16 cmUnpkRgrUeGrpPwrCfg ARGS((
4201    RgrUeGrpPwrCfg       *param,
4202    Buffer               *mBuf
4203 ));
4204 S16 cmPkRgrUeUlPwrCfg ARGS((
4205    RgrUeUlPwrCfg        *param,
4206    Buffer               *mBuf
4207 ));
4208 S16 cmUnpkRgrUeUlPwrCfg ARGS((
4209    RgrUeUlPwrCfg        *param,
4210    Buffer               *mBuf
4211 ));
4212 S16 cmPkRgrUeQosCfg ARGS((
4213    RgrUeQosCfg          *param,
4214    Buffer               *mBuf
4215 ));
4216 S16 cmUnpkRgrUeQosCfg ARGS((
4217    RgrUeQosCfg          *param,
4218    Buffer               *mBuf
4219 ));
4220 S16 cmPkRgrUeTaTmrCfg ARGS((
4221    RgrUeTaTmrCfg        *param,
4222    Buffer               *mBuf
4223 ));
4224 S16 cmUnpkRgrUeTaTmrCfg ARGS((
4225    RgrUeTaTmrCfg        *param,
4226    Buffer               *mBuf
4227 ));
4228 /** @name RGR_V1 */
4229 /** @{ */
4230 #ifdef RGR_V1
4231 /* rgr_x_001.main_7: [ccpu00112398] Added periodicBSR-Timer and 
4232    retxBSR-Timer */
4233 S16 cmPkRgrUeBsrTmrCfg ARGS((
4234    RgrUeBsrTmrCfg       *param,
4235    Buffer               *mBuf
4236 ));
4237 S16 cmUnpkRgrUeBsrTmrCfg ARGS((
4238    RgrUeBsrTmrCfg       *param,
4239    Buffer               *mBuf
4240 ));
4241 #endif
4242 /** @} */
4243 S16 cmPkRgrUeCfg ARGS((
4244    RgrUeCfg             *param,
4245    Buffer               *mBuf
4246 ));
4247 S16 cmUnpkRgrUeCfg ARGS((
4248    RgrUeCfg             *param,
4249    Buffer               *mBuf
4250 ));
4251 S16 cmPkRgrLchQosCfg ARGS((
4252    RgrLchQosCfg         *param,
4253    Buffer               *mBuf
4254 ));
4255 S16 cmUnpkRgrLchQosCfg ARGS((
4256    RgrLchQosCfg         *param,
4257    Buffer               *mBuf
4258 ));
4259 S16 cmPkRgrDlLchCfg ARGS((
4260    RgrDlLchCfg          *param,
4261    Buffer               *mBuf
4262 ));
4263 S16 cmUnpkRgrDlLchCfg ARGS((
4264    RgrDlLchCfg          *param,
4265    Buffer               *mBuf
4266 ));
4267 S16 cmPkRgrUlLcgCfg ARGS((
4268    RgrUlLcgCfg          *param,
4269    Buffer               *mBuf
4270 ));
4271 S16 cmUnpkRgrUlLcgCfg ARGS((
4272    RgrUlLcgCfg          *param,
4273    Buffer               *mBuf
4274 ));
4275 S16 cmPkRgrLchCfg ARGS((
4276    RgrLchCfg            *param,
4277    Buffer               *mBuf
4278 ));
4279 S16 cmUnpkRgrLchCfg ARGS((
4280    RgrLchCfg            *param,
4281    Buffer               *mBuf
4282 ));
4283 S16 cmPkRgrLcgCfg ARGS((
4284    RgrLcgCfg            *param,
4285    Buffer               *mBuf
4286 ));
4287 S16 cmUnpkRgrLcgCfg ARGS((
4288    RgrLcgCfg            *param,
4289    Buffer               *mBuf
4290 ));
4291 S16 cmPkRgrCfg ARGS((
4292    RgrCfg               *param,
4293    Buffer               *mBuf
4294 ));
4295 S16 cmUnpkRgrCfg ARGS((
4296    RgrCfg               *param,
4297    Buffer               *mBuf
4298 ));
4299 S16 cmPkRgrActvTime ARGS((
4300    RgrActvTime          *param,
4301    Buffer               *mBuf
4302 ));
4303 S16 cmUnpkRgrActvTime ARGS((
4304    RgrActvTime          *param,
4305    Buffer               *mBuf
4306 ));
4307 S16 cmPkRgrCellRecfg ARGS((
4308    RgrCellRecfg         *param,
4309    Buffer               *mBuf
4310 ));
4311 S16 cmUnpkRgrCellRecfg ARGS((
4312    RgrCellRecfg         *param,
4313    Buffer               *mBuf
4314 ));
4315 S16 cmPkRgrUeRecfg ARGS((
4316    RgrUeRecfg           *param,
4317    Buffer               *mBuf
4318 ));
4319 S16 cmUnpkRgrUeRecfg ARGS((
4320    RgrUeRecfg           *param,
4321    Buffer               *mBuf
4322 ));
4323 S16 cmPkRgrLchRecfg ARGS((
4324    RgrLchRecfg          *param,
4325    Buffer               *mBuf
4326 ));
4327 S16 cmUnpkRgrLchRecfg ARGS((
4328    RgrLchRecfg          *param,
4329    Buffer               *mBuf
4330 ));
4331 S16 cmPkRgrLcgRecfg ARGS((
4332    RgrLcgRecfg          *param,
4333    Buffer               *mBuf
4334 ));
4335 S16 cmUnpkRgrLcgRecfg ARGS((
4336    RgrLcgRecfg          *param,
4337    Buffer               *mBuf
4338 ));
4339 S16 cmPkRgrRecfg ARGS((
4340    RgrRecfg             *param,
4341    Buffer               *mBuf
4342 ));
4343 S16 cmUnpkRgrRecfg ARGS((
4344    RgrRecfg             *param,
4345    Buffer               *mBuf
4346 ));
4347 S16 cmPkRgrDel ARGS((
4348    RgrDel               *param,
4349    Buffer               *mBuf
4350 ));
4351 S16 cmUnpkRgrDel ARGS((
4352    RgrDel               *param,
4353    Buffer               *mBuf
4354 ));
4355 S16 cmPkRgrRst ARGS((
4356    RgrRst               *param,
4357    Buffer               *mBuf
4358 ));
4359 S16 cmUnpkRgrRst ARGS((
4360    RgrRst               *param,
4361    Buffer               *mBuf
4362 ));
4363
4364 S16 cmPkRgrSonCfg   ARGS((
4365 RgrSonCfg *param,
4366 Buffer *mBuf
4367 ));
4368 S16 cmUnpkRgrSonCfg   ARGS((
4369 RgrSonCfg   *param,
4370 Buffer      *mBuf
4371 ));
4372 S16 cmPkRgrSonPrbCfg   ARGS((
4373 RgrPrbCfg *param,
4374 Buffer *mBuf
4375 ));
4376 S16 cmUnpkRgrSonPrbCfg   ARGS((
4377 RgrPrbCfg   *param,
4378 Buffer      *mBuf
4379 ));
4380 S16 cmPkRgrCfgReqInfo ARGS((
4381    RgrCfgReqInfo        *param,
4382    Buffer               *mBuf
4383 ));
4384 S16 cmUnpkRgrCfgReqInfo ARGS((
4385    RgrCfgReqInfo        *param,
4386    Buffer               *mBuf
4387 ));
4388
4389 #ifdef LTE_ADV 
4390 S16 cmUnPkRgrSCellActDeactEvnt ARGS((
4391    RgrSCellActDeactEvnt *param,
4392    Buffer *mBuf
4393 ));
4394
4395 S16 cmPkRgrSCellActDeactEvnt ARGS((
4396    RgrSCellActDeactEvnt *param,
4397    Buffer *mBuf
4398 ));
4399 #endif /* LTE_ADV */
4400
4401 S16 cmPkRgrUeTxAntSelCfg ARGS((
4402    RgrUeTxAntSelCfg     *param,
4403    Buffer               *mBuf
4404 ));
4405 S16 cmUnpkRgrUeTxAntSelCfg ARGS((
4406    RgrUeTxAntSelCfg     *param,
4407    Buffer               *mBuf
4408 ));
4409 S16 cmPkRgrUePuschDedCfg ARGS((
4410    RgrUePuschDedCfg     *param,
4411    Buffer               *mBuf
4412 ));
4413 S16 cmUnpkRgrUePuschDedCfg ARGS((
4414    RgrUePuschDedCfg     *param,
4415    Buffer               *mBuf
4416 ));
4417
4418 #ifdef TFU_UPGRADE
4419 S16 cmPkRgrUeDlPCqiSetup ARGS
4420 ((
4421 RgrUeDlPCqiSetup *param,
4422 Buffer *mBuf
4423 ));
4424
4425 S16 cmUnpkRgrUeDlPCqiSetup ARGS
4426 ((
4427 RgrUeDlPCqiSetup *param,
4428 Buffer *mBuf
4429 ));
4430
4431 S16 cmPkRgrUeUlSrsSetupCfg ARGS
4432 ((
4433 RgrUeUlSrsSetupCfg *param,
4434 Buffer *mBuf
4435 ));
4436
4437 S16 cmUnpkRgrUeUlSrsSetupCfg ARGS
4438 ((
4439 RgrUeUlSrsSetupCfg *param,
4440 Buffer *mBuf
4441 ));
4442
4443 S16 cmPkRgrUeSrSetupCfg ARGS
4444 ((
4445 RgrUeSrSetupCfg *param,
4446 Buffer *mBuf
4447 ));
4448
4449 S16 cmUnpkRgrUeSrSetupCfg ARGS
4450 ((
4451 RgrUeSrSetupCfg *param,
4452 Buffer *mBuf
4453 ));
4454
4455  S16 cmPkRgrUeSrCfg ARGS
4456 ((
4457 RgrUeSrCfg *param,
4458 Buffer *mBuf
4459 ));
4460
4461 S16 cmUnpkRgrUeSrCfg ARGS
4462 ((
4463 RgrUeSrCfg *param,
4464 Buffer *mBuf
4465 ));
4466
4467 S16 cmPkRgrUeUlSrsCfg ARGS
4468 ((
4469 RgrUeUlSrsCfg *param,
4470 Buffer *mBuf
4471 ));
4472
4473 S16 cmUnpkRgrUeUlSrsCfg ARGS
4474 ((
4475 RgrUeUlSrsCfg *param,
4476 Buffer *mBuf
4477 ));
4478
4479 #endif
4480 #endif
4481
4482 #ifdef DM
4483 /** @brief Request from RRM to MAC to bind the interface SAPs */
4484 S16 DmUiRgrBndReq ARGS((
4485    Pst*                 pst,
4486    SuId                 suId,
4487    SpId                 spId
4488 ));
4489 /** @brief Confirmation from MAC to RRM for the bind/unbind 
4490  * request for the interface SAPs */
4491 S16 DmUiRgrBndCfm ARGS((
4492    Pst*                 pst,
4493    SuId                 suId,
4494    uint8_t                   status
4495 ));
4496 /** @brief Request from RRM to MAC to unbind the interface SAPs */
4497 S16 DmUiRgrUbndReq ARGS((
4498    Pst*                 pst,
4499    SpId                 spId,
4500    Reason               reason
4501 ));
4502 /** @brief Configuration request from RRM to MAC for 
4503  * configuring Cell/UE/LC */
4504 S16 DmUiRgrCfgReq ARGS((
4505    Pst*                 pst,
4506    SpId                 spId,
4507    RgrCfgTransId        transId,
4508    RgrCfgReqInfo *      cfgReqInfo
4509 ));
4510 /** @brief Configuration confirm from MAC to RRM */
4511 S16 DmUiRgrCfgCfm ARGS((
4512    Pst*                 pst,
4513    SuId                 suId,
4514    RgrCfgTransId        transId,
4515    uint8_t                   status
4516 ));
4517 #endif
4518 /** @brief Sta Indication from Scheduler to RRM 
4519  *
4520  * @details This primitive is used to send status indication
4521  *          from scheduler to RRM. 
4522  * 
4523  * @param[in] pst     Pointer to a post structure
4524  * @param[in] suId    Service User SAP Id
4525  * @param[in] staInd  Status Indication .
4526 */
4527 S16 NxLiRgrUeStaInd ARGS((
4528    Pst*                 pst,
4529    SuId                 suId,
4530    RgrUeStaIndInfo      *ueStaInd
4531 ));
4532
4533 S16 cmPkRgrUeStaInd ARGS
4534 ((
4535 Pst* pst,
4536 SuId suId,
4537 RgrUeStaIndInfo* ueStaInd
4538 ));
4539
4540 S16 cmUnpkRgrUeStaInd ARGS
4541 ((
4542 RgrUeStaInd  func,
4543 Pst *pst,
4544 Buffer *mBuf
4545 ));
4546
4547 S16 cmPkRgrUeStaIndInfo ARGS
4548 ((
4549 RgrUeStaIndInfo *param,
4550 Buffer *mBuf
4551 ));
4552
4553
4554 S16 cmUnpkRgrUeStaIndInfo ARGS
4555 ((
4556 RgrUeStaIndInfo *param,
4557 Buffer *mBuf
4558 ));
4559
4560
4561 /* LTE_ADV_FLAG_REMOVED_START */
4562 S16 cmPkRgrLteAdvancedUeConfig ARGS((
4563             RgrLteAdvancedUeConfig *param,
4564             Buffer *mBuf
4565             ));
4566
4567 S16 cmUnpkRgrLteAdvancedUeConfig ARGS((
4568             RgrLteAdvancedUeConfig *param,
4569             Buffer *mBuf
4570             ));
4571
4572 S16 cmPkRgrAbsConfig ARGS((
4573             RgrAbsConfig *param,
4574             Buffer *mBuf
4575             ));
4576
4577 S16 cmUnpkRgrAbsConfig ARGS((
4578             RgrAbsConfig *param,
4579             Buffer *mBuf
4580             ));
4581
4582 S16 cmPkRgrSfrConfig ARGS((
4583             RgrSfrConfig *param,
4584             Buffer *mBuf
4585             ));
4586
4587 S16 cmUnpkRgrSfrConfig ARGS((
4588             RgrSfrConfig *param,
4589             Buffer *mBuf
4590             ));
4591
4592 S16 cmPkRgrCellLteAdvancedFeatureCfg ARGS((
4593             RgrLteAdvancedCellConfig *param,
4594             Buffer *mBuf
4595             ));
4596
4597 S16 cmUnpkRgrCellLteAdvancedFeatureCfg ARGS((
4598             RgrLteAdvancedCellConfig *param,
4599             Buffer *mBuf
4600             ));
4601
4602 S16 cmPkRgrDsfrConfig ARGS((
4603          RgrDsfrConfig *param,
4604          Buffer *mBuf
4605          ));
4606
4607 S16 cmUnpkRgrDsfrConfig ARGS((
4608          RgrDsfrConfig *param,
4609          Buffer *mBuf
4610          ));
4611 /* LTE_ADV_FLAG_REMOVED_END */
4612
4613 S16 cmPkRgrCellCsgParamCfg ARGS((
4614 RgrCellCsgParamCfg *param,
4615 Buffer *mBuf
4616 ));
4617 S16 cmUnpkRgrCellCsgParamCfg ARGS((
4618 RgrCellCsgParamCfg *param,
4619 Buffer *mBuf
4620 ));
4621 S16 cmPkRgrCellCntrlCmdCfg ARGS((
4622 RgrCellCntrlCmdCfg *param,
4623 Buffer *mBuf
4624 ));
4625 S16 cmUnpkRgrCellCntrlCmdCfg ARGS((
4626 RgrCellCntrlCmdCfg *param,
4627 Buffer *mBuf
4628 ));
4629
4630 #ifdef RLC_MAC_DAT_REQ_RBUF
4631 S16 rgDlDatReqBatchProc ARGS((
4632 Void));
4633 #endif
4634 #ifdef RLC_MAC_STA_RSP_RBUF
4635 S16 rgDlStaRspBatchProc ARGS((
4636 Void));
4637 #endif
4638 #ifdef __cplusplus
4639 }
4640 #endif
4641 #endif /* __RGR_X__*/
4642
4643 /**********************************************************************
4644
4645          End of file
4646 **********************************************************************/