[Epic-ID: ODUHIGH-461][Task-ID: ODUHIGH-468]Unused files and functions removed/disabled
[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 #define RGR_UESTA_MAC_CRNTI_CE_RECVD   0x01
2630 #define RGR_UESTA_MAC_CRNTI_CE_RECVD_IN_SPS_ACTIVE   0x02
2631 /**
2632   @brief Status Indication structure passed in RgUiRgrUeStaInd primitive */
2633 typedef struct rgrUeStaIndInfo
2634 {
2635    CmLteCellId       cellId;       /*!< Cell ID */
2636    CmLteRnti         crnti;        /*!< UE identifier UE ID: CRNTI */
2637    uint8_t                status;       /*!< Status */
2638 }RgrUeStaIndInfo;
2639 /** @} */
2640
2641 /* 
2642    Function Prototypes 
2643  */
2644
2645 /** @brief Request from RRM to MAC to bind the interface SAPs .
2646  *
2647  * @details This Primitive is used to bind The SAPs between RRM and the MAC.
2648  * The API validates the Sap Ids , contents of the pst Structure .
2649  *
2650  * @param[in] pst  Pointer To the Post Structure.
2651  * @param[in] suId SAP Id of the Service User.
2652  * @param[in] spId SAP Id of the Service Provider
2653  * @return ROK/RFAILED
2654  */
2655
2656 typedef S16 (*RgrBndReq) ARGS((
2657    Pst*                 pst,
2658    SuId                 suId,
2659    SpId                 spId));
2660
2661 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
2662 /** @name RGR_RRM_TICK */
2663 /** @{ */
2664
2665 /** @brief Indication from MAC to a RGR User about the Transmit Time Interval. 
2666  *
2667  * @details This Primitive is used to indicate RRM after every TTI.
2668  * API validates the  post Structure and TTI Timing .
2669  *
2670  * @param[in] pst    Pointer To the Post Structure.
2671  * @param[in] suId   SAP Id of the Service User.
2672  * @param[in] ttiInd Pointer To a structure containing additional Information that is passed 
2673  * as a part of TTI Indication. 
2674  * @return ROK/RFAILED
2675  */
2676
2677 typedef S16 (*RgrTtiInd) ARGS((
2678    Pst*                 pst,
2679    SuId                 suId,
2680    RgrTtiIndInfo        *ttiInd));
2681 /** @} */
2682
2683 /** @brief Confirmation from MAC to RRM for the bind request for the interface SAPs.
2684  *
2685  * @details This Primitive is used To confirm the binding between the MAC and The RRM.
2686  *
2687  * @param[in] pst    Pointer To the Post Structure.
2688  * @param[in] suId   SAP Id of the Service User.
2689  * @param[in] status Binding Status.
2690  * @return ROK/RFAILED
2691  */
2692 typedef S16 (*RgrBndCfm) ARGS((
2693    Pst*                 pst,
2694    SuId                 suId,
2695    uint8_t                   status));
2696
2697 /** @brief Request from RRM to MAC to unbind the interface SAPs.
2698  *
2699  * @details This Primitive is used to unbind MAC and The RRM.It validates on the SAP If its already Bound 
2700  * and unbinds the SAP.
2701  *
2702  * @param[in] pst    Pointer to the Post Structure.
2703  * @param[in] spId   SAP Id of the Service Provider.
2704  * @param[in] reason Cause for unbinding.
2705  * @return ROK/RFAILED
2706  */
2707 typedef S16 (*RgrUbndReq) ARGS((
2708    Pst*                 pst,
2709    SpId                 spId,
2710    Reason               reason));
2711
2712 /** @brief Configuration request from RRM to MAC for configuring Cell/UE/LC. 
2713  *
2714  * @details This API is used to configure a scheduler for a UE/Cell/Logical Channels 
2715  *
2716  * @param[in] pst        Pointer to the Post Structure.
2717  * @param[in] spId       SAP Id of the Service Provider.
2718  * @param[in] transId    Reason for unbinding.
2719  * @param[in] cfgReqInfo A Pointer to Configuration/Reconfiguration Structure. 
2720  * @return ROK/RFAILED
2721  */
2722 typedef S16 (*RgrCfgReq) ARGS((
2723    Pst*                 pst,
2724    RgrCfgTransId        transId,
2725    RgrCfgReqInfo *      cfgReqInfo));
2726
2727 S16 cmPkRgrCfgCfm ARGS((
2728    Pst*                 pst,
2729    RgrCfgTransId        transId,
2730    uint8_t                   status
2731 ));
2732
2733 /** @brief Configuration confirm from MAC to RRM. 
2734  * 
2735  * @details This API confirms the RGR User about the status of the Configuration.
2736  * 
2737  * @param[in] pst      Pointer to the Post Structure.
2738  * @param[in] spId     SAP Id of the Service User.
2739  * @param[in] transId  Transaction Id for the transaction between RRM and MAC
2740  * @param[in] status   Configuration confirmation status Information.
2741  * @return ROK/RFAILED
2742  */
2743 typedef S16 (*RgrCfgCfm) ARGS((
2744    Pst*                 pst,
2745    RgrCfgTransId        transId,
2746    uint8_t                   status));
2747 /* rgr_x_001.main_5-ADD-Added for SI Enhancement. */
2748
2749 /* rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
2750    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
2751 #ifdef RGR_CQI_REPT
2752 typedef S16 (*RgrStaInd) ARGS((
2753    Pst*                 pst,
2754    SuId                 suId,
2755    RgrStaIndInfo        *staInd));
2756 #endif
2757
2758 /* LTE_ADV_FLAG_REMOVED_START */
2759 typedef S16 (*RgrLoadInfInd) ARGS((
2760    Pst*                 pst,
2761    SuId                 suId,
2762    RgrLoadInfIndInfo    *loadInfInd));
2763 /* LTE_ADV_FLAG_REMOVED_END */
2764
2765 typedef S16 (*RgrUeStaInd) ARGS((
2766    Pst*                 pst,
2767    SuId                 suId,
2768    RgrUeStaIndInfo        *staInd));
2769 #ifdef RG
2770
2771 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
2772 /** @name RGR_RRM_TICK */
2773 /** @{ */
2774 /** @brief TTI Indication from Scheduler to RRM.  
2775
2776 *  @details TTI Indication from MAC to RGR User.
2777 *
2778 * @param[in] pst    Pointer to a post structure.
2779 * @param[in] suId   SAP Id of the Service User.
2780 * @param[in] ttiInd Parameters containing the information on TTI Indication.
2781 * @return ROK/RFAILED
2782 */
2783 S16 RgUiRgrTtiInd ARGS((
2784    Pst*                 pst,
2785    SuId                 suId,
2786    RgrTtiIndInfo        *ttiInd
2787 ));
2788 #endif
2789 /** @} */
2790 /*rgr_x_001.main_9 - Added support for SPS*/
2791 S16 cmPkRgrSpsCellCfg ARGS((
2792    RgrSpsCellCfg *param,
2793    Buffer *mBuf
2794 ));
2795 S16 cmUnpkRgrSpsDlCellCfg ARGS((
2796    RgrSpsCellCfg *param,
2797    Buffer *mBuf
2798 ));
2799 S16 cmPkRgrUeSpsDlCfg ARGS((
2800    RgrUeSpsDlCfg *param,
2801    Buffer *mBuf
2802 ));
2803 S16 cmUnpkRgrUeSpsDlCfg ARGS((
2804    RgrUeSpsDlCfg *param,
2805    Buffer *mBuf
2806 ));
2807 S16 cmPkRgrUeSpsUlCfg ARGS((
2808    RgrUeSpsUlCfg *param,
2809    Buffer *mBuf
2810 ));
2811 S16 cmUnpkRgrUeSpsUlCfg ARGS((
2812    RgrUeSpsUlCfg *param,
2813    Buffer *mBuf
2814 ));
2815 S16 cmPkRgrUeSpsCfg ARGS((
2816    RgrUeSpsCfg *param,
2817    Buffer *mBuf
2818 ));
2819 S16 cmUnpkRgrUeSpsCfg ARGS((
2820    RgrUeSpsCfg *param,
2821    Buffer *mBuf
2822 ));
2823 S16 cmPkRgrLchSpsCfg ARGS((
2824    RgrLchSpsCfg *param,
2825    Buffer *mBuf
2826 ));
2827 S16 cmUnpkRgrLchSpsCfg ARGS((
2828    RgrLchSpsCfg *param,
2829    Buffer *mBuf
2830 ));
2831
2832 /*rgr_x_001.main_11 ADD added changes for L2 measurements*/
2833 S16 cmPkRgrUlLchCfg ARGS((
2834    RgrUlLchCfg *param,
2835    Buffer *mBuf
2836 ));
2837 S16 cmUnpkRgrUlLchCfg ARGS((
2838   RgrUlLchCfg *param,
2839   Buffer *mBuf
2840 ));
2841 S16 cmPkRgrUlLchQciCfg ARGS((
2842    RgrUlLchQciCfg *param,
2843    Buffer *mBuf
2844 ));
2845 S16 cmUnpkRgrUlLchQciCfg ARGS((
2846   RgrUlLchQciCfg *param,
2847   Buffer *mBuf
2848 ));
2849
2850
2851 /*rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
2852    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
2853 #ifdef RGR_CQI_REPT
2854 S16 cmPkRgrUeCqiReptCfg ARGS((
2855 RgrUeCqiReptCfg *param,
2856 Buffer *mBuf
2857 ));
2858
2859 S16 cmUnpkRgrUeCqiReptCfg ARGS((
2860 RgrUeCqiReptCfg *param,
2861 Buffer *mBuf
2862 ));
2863
2864 S16 cmUnpkRgrSubBandCqiInfo ARGS((
2865 RgrSubBandCqiInfo *param,
2866 Buffer *mBuf
2867 ));
2868
2869 S16 cmPkRgrStaInd ARGS((
2870 Pst* pst,
2871 SuId suId,
2872 RgrStaIndInfo* staInd
2873 ));
2874
2875 S16 cmUnpkRgrStaInd ARGS((
2876 RgrStaInd func,
2877 Pst *pst,
2878 Buffer *mBuf
2879 ));
2880
2881 S16 cmPkRgrStaIndInfo ARGS((
2882 RgrStaIndInfo *param,
2883 Buffer *mBuf
2884 ));
2885
2886 S16 cmUnpkRgrStaIndInfo ARGS((
2887 RgrStaIndInfo *param,
2888 Buffer *mBuf
2889 ));
2890
2891 S16 cmPkRgrUeCqiInfo ARGS((
2892 RgrUeCqiInfo *param,
2893 Buffer *mBuf
2894 ));
2895
2896 S16 cmUnpkRgrUeCqiInfo ARGS((
2897 RgrUeCqiInfo *param,
2898 Buffer *mBuf
2899 ));
2900
2901 S16 cmPkRgrUeCqiRept ARGS((
2902 RgrUeCqiRept *param,
2903 Buffer *mBuf
2904 ));
2905
2906 S16 cmPkRgrSubBandCqiInfo ARGS((
2907 RgrSubBandCqiInfo *param,
2908 Buffer *mBuf
2909 ));
2910
2911 S16 cmUnpkRgrUeCqiRept ARGS((
2912 RgrUeCqiRept *param,
2913 Buffer *mBuf
2914 ));
2915 #endif
2916
2917 /* LTE_ADV_FLAG_REMOVED_START */
2918 S16 cmPkRgrLoadInfInd ARGS((
2919 Pst* pst,
2920 SuId suId,
2921 RgrLoadInfIndInfo* loadInfInd
2922 ));
2923
2924 S16 cmUnpkRgrLoadInfInd ARGS((
2925 RgrLoadInfInd func,
2926 Pst *pst,
2927 Buffer *mBuf
2928 ));
2929
2930 S16 cmPkRgrLoadInfIndInfo ARGS((
2931 RgrLoadInfIndInfo *param,
2932 Buffer *mBuf
2933 ));
2934
2935 S16 cmUnpkRgrLoadInfIndInfo ARGS((
2936 RgrLoadInfIndInfo *param,
2937 Pst *pst, /* dsfr_pal_fixes ** 21-March-2013 ** SKS */
2938 Buffer *mBuf
2939 ));
2940 /* LTE_ADV_FLAG_REMOVED_END */
2941
2942 #ifdef TFU_UPGRADE 
2943 S16 cmPkRgrUePdschDedCfg ARGS((
2944 RgrUePdschDedCfg  *param,
2945 Buffer *mBuf
2946 ));
2947
2948 S16 cmUnpkRgrUePdschDedCfg ARGS((
2949 RgrUePdschDedCfg *param,
2950 Buffer *mBuf
2951 ));
2952
2953 S16 cmPkRgrUepACfg ARGS((
2954 RgrUepACfg *param,
2955 Buffer *mBuf
2956 ));
2957
2958 S16 cmUnpkRgrUepACfg ARGS((
2959 RgrUepACfg *param,
2960 Buffer *mBuf
2961 ));
2962 #endif
2963
2964 #ifdef LTE_ADV
2965 S16 cmPkRgrUeSecCellInfo ARGS((
2966 RgrUeSecCellInfo *param,
2967 Buffer *mBuf
2968 ));
2969
2970 S16 cmUnpkRgrUeSecCellInfo ARGS((
2971 RgrUeSecCellInfo *param,
2972 Buffer *mBuf
2973 ));
2974
2975 S16 cmPkRgrUeDlSecCellRelInfo ARGS((
2976 RgrUeDlSecCellRelInfo *param,
2977 Buffer *mBuf
2978 ));
2979
2980 S16 cmUnpkRgrUeDlSecCellRelInfo ARGS((
2981 RgrUeDlSecCellRelInfo *param,
2982 Buffer *mBuf
2983 ));
2984
2985 S16 cmPkRgrUeSecCellRelInfo ARGS((
2986 RgrUeSecCellRelInfo *param,
2987 Buffer *mBuf
2988 ));
2989
2990 S16 cmUnpkRgrUeSecCellRelInfo ARGS((
2991 RgrUeSecCellRelInfo *param,
2992 Buffer *mBuf
2993 ));
2994
2995 /* Sprint 3 */
2996 S16 cmPkRgrUeSCellAckPucchCfg ARGS((
2997 RgrUeSCellAckPucchCfg *param,
2998 Buffer *mBuf
2999 ));
3000
3001 S16 cmUnpkRgrUeSCellAckPucchCfg ARGS((
3002 RgrUeSCellAckPucchCfg *param,
3003 Buffer *mBuf
3004 ));
3005 #endif /* LTE_ADV */
3006 #ifdef RG
3007
3008 /** @brief Configuration Confirm from MAC to RRM.  
3009  *
3010  * @details In this API crnti, preambleId, and
3011  * maskId are returned to RRM if request does not contain crnti (For Handover purpose)
3012  *
3013  *  @param[in] pst     A pointer to post Structure.
3014  *  @param[in] transId MAC to RRM User transaction Id. 
3015  *  @param[in] status  Status indication from the MAC.  
3016  *  @return ROK/RFAILED
3017  */
3018 S16 RgUiRgrCfgCfm ARGS((
3019    Pst*                 pst,
3020    RgrCfgTransId        transId,
3021    uint8_t                   status
3022 ));
3023
3024 /** @name RGR_CQI_REPT */
3025 /** @{ */
3026 /* rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
3027    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
3028 #ifdef RGR_CQI_REPT
3029 /** @brief Sta Indication from Scheduler to RRM 
3030  *
3031  * @details This primitive is used to send status indication from scheduler
3032  *          to RRM. 
3033  * 
3034  * @param[in] pst     Pointer to a post structure
3035  * @param[in] suId    Service User SAP Id
3036  * @param[in] staInd  Status Indication .
3037  * @return ROK/RFAILED
3038  */
3039 S16 RgUiRgrStaInd ARGS((
3040    Pst*                 pst,
3041    SuId                 suId,
3042    RgrStaIndInfo        *staInd
3043 ));
3044 #endif
3045 S16 RgUiRgrUeStaInd ARGS((
3046 Pst             *pst,
3047 SuId            suId,
3048 RgrUeStaIndInfo *ueStaInd
3049 ));
3050
3051
3052 /** @} */
3053 /** @{ */
3054 /* LTE_ADV_FLAG_REMOVED_START */
3055 /** @brief LoadInf Indication from Scheduler to RRM
3056  *
3057  * @details This primitive is used to send LOAD INF indication from scheduler
3058  *          to RRM.
3059  *
3060  * @param[in] pst         Pointer to a post structure
3061  * @param[in] suId        Service User SAP Id
3062  * @param[in] loadInfInd  LOAD INF Indication .
3063  * @return ROK/RFAILED
3064  */
3065 S16 RgUiRgrLoadInfInd ARGS((
3066    Pst*                 pst,
3067    SuId                 suId,
3068    RgrLoadInfIndInfo    *loadInfInd
3069 ));
3070 /* LTE_ADV_FLAG_REMOVED_END */
3071 /** @} */
3072
3073 #endif
3074
3075 #ifdef NX
3076 /** @brief Request from RRM to MAC to bind the interface SAPs.
3077  *
3078  *  @details This API validats the SAP Id and binds the interface SAPs  
3079  *
3080  *  @param[in] pst    Pointer to a post structure
3081  *  @param[in] suId   Service User SAP Id
3082  *  @param[in] spId   Service Provider SAP Id
3083  *  @return ROK/RFAILED  
3084  */
3085 S16 NxLiRgrBndReq ARGS((
3086    Pst*                 pst,
3087    SuId                 suId,
3088    SpId                 spId
3089 ));
3090
3091 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
3092 /** @name RGR_RRM_TICK */
3093 /** @{ */
3094 /** @brief TTI indication from scheduler to RRM. 
3095 *
3096 * @details This primitive handles TTI Indication. It essentially validates
3097 * the post structure and Transmit Time timing .
3098 *
3099 * @param[in] Pst*     pst          Pointer To a post Structure
3100 * @param[in] SuId     suId         Service user SAP Id
3101 * @param[in] RgrTtiIndInfo* ttiInd Information passed as a part of TTI indication from PHY to MAC. 
3102 * @return ROK/RFAILED 
3103 */
3104 S16 NxLiRgrTtiInd ARGS((
3105    Pst*                 pst,
3106    SuId                 suId,
3107    RgrTtiIndInfo        *ttiInd
3108 ));
3109 /** @} */
3110
3111 /** @brief Confirmation from MAC to RRM for the bind request for the interface SAPs.
3112  *
3113  * @details This Primitive handles the call for bind confirmation.
3114  * 
3115  * @param[in] Pst*  pst    A pointer to post structure.
3116  * @param[in] SuId  suId   Service User SAP Id.
3117  * @param[in] uint8_t    status An information on status confirmation.
3118  * @return S16
3119  */
3120 S16 NxLiRgrBndCfm ARGS((
3121    Pst*                 pst,
3122    SuId                 suId,
3123    uint8_t                   status
3124 ));
3125
3126 /** @brief Request from RRM to MAC to unbind the interface SAPs 
3127  *
3128  * @details This primitive unbinds the interface SAPs.It validates if the SAP is really bound.
3129  * 
3130  * @param[in] Pst*      pst    A pointer to post structure. 
3131  * @param[in] SpId      spId   Service Provider SAP Id.
3132  * @param[in] Reason    reason A cause for unbinding the SAPs.
3133  * @return S16
3134  */
3135 S16 NxLiRgrUbndReq ARGS((
3136    Pst*                 pst,
3137    SpId                 spId,
3138    Reason               reason
3139 ));
3140 /** @brief Configuration request from RRM to MAC for 
3141  * configuring Cell/UE/LC 
3142  *
3143  * @details The RRM configures the Cell/UE/LC using this primitive.
3144  *
3145  * @param[in]   Pst*  pst      A pointer to post structure.
3146  * @param[in]   SpId  spId     Service Provider SAP Id.
3147  * @param[in]   RgrCfgTransId  transId Transaction Id between RRM and MAC. 
3148  * @param[in]   RgrCfgReqInfo* cfgReqInfo A structure containing the configuration information.
3149  * @return   S16 
3150  */
3151 S16 NxLiRgrCfgReq ARGS((
3152    Pst*                 pst,
3153    SpId                 spId,
3154    RgrCfgTransId        transId,
3155    RgrCfgReqInfo *      cfgReqInfo
3156 ));
3157
3158 /** @brief Configuration confirm from MAC to RRM 
3159  *
3160  * @details This primitive confirms the RRM about the configuration reception request.
3161  * 
3162  * @param[in] Pst*      pst    A pointer to post structure. 
3163  * @param[in] SuId      suId   Service Provider SAP Id.
3164  * @param[in] RgrCfgTransId transId RRM to MAC transaction Id. 
3165  * @return S16
3166  */
3167 S16 NxLiRgrCfgCfm ARGS((
3168    Pst*                 pst,
3169    SuId                 suId,
3170    RgrCfgTransId        transId,
3171    uint8_t                   status
3172 ));
3173
3174 /** @name RGR_CQI_REPT */
3175 /** @{ */
3176 /* rgr_x_001.main_11 ccpu00117452 - MOD - Changed macro name from
3177    RGR_RRM_DLPWR_CNTRL to RGR_CQI_REPT */
3178 #ifdef RGR_CQI_REPT
3179 /** @brief Sta Indication from Scheduler to RRM 
3180  *
3181  * @details This primitive is used to send status indication
3182  *          from scheduler to RRM. 
3183  * 
3184  * @param[in] pst     Pointer to a post structure
3185  * @param[in] suId    Service User SAP Id
3186  * @param[in] staInd  Status Indication .
3187 */
3188 S16 NxLiRgrStaInd ARGS((
3189    Pst*                 pst,
3190    SuId                 suId,
3191    RgrStaIndInfo        *staInd
3192 ));
3193 #endif
3194 /** @} */
3195 /** @{ */
3196 /* LTE_ADV_FLAG_REMOVED_START */
3197 /** @brief LOAD INF Indication from Scheduler to RRM
3198  *
3199  * @details This primitive is used to send loadInf indication
3200  *          from scheduler to RRM.
3201  *
3202  * @param[in] pst         Pointer to a post structure
3203  * @param[in] suId        Service User SAP Id
3204  * @param[in] loadInfInd  LOAD INF Indication .
3205 */
3206 S16 NxLiRgrLoadInfInd ARGS((
3207    Pst*                  pst,
3208    SuId                  suId,
3209    RgrLoadInfIndInfo     *loadInfInd
3210 ));
3211 /* LTE_ADV_FLAG_REMOVED_END */
3212 /** @} */
3213
3214 #endif
3215 #if defined(LCRGR)
3216 /* rgr_x_001.main_3: Added TTI indication from MAC to RGR user */
3217 /** @name RGR_RRM_TICK */
3218 /** @{ */
3219 /** @brief Pack function for TTI indication from scheduler to RRM */
3220 S16 cmPkRgrTtiInd ARGS((
3221          Pst*                 pst,
3222          SuId                 suId,
3223          RgrTtiIndInfo        *ttiInd
3224          ));
3225 S16 cmPkRgrTtiIndInfo ARGS((
3226          RgrTtiIndInfo  *ttiInd,
3227          Buffer         *mBuf));
3228 /** @brief Unpack function for TTI indication from scheduler to RRM */
3229 S16 cmUnpkRgrTtiInd   ARGS((
3230          RgrTtiInd            func,
3231          Pst*                 pst,
3232          Buffer               *mBuf
3233          ));
3234 S16 cmUnpkRgrTtiIndInfo ARGS((
3235          RgrTtiIndInfo *param,
3236          Buffer        *mBuf
3237          ));
3238 /** @} */
3239 S16 cmPkRgrCfgReq ARGS((
3240    Pst*                 pst,
3241    RgrCfgTransId        transId,
3242    RgrCfgReqInfo *      cfgReqInfo
3243 ));
3244
3245 S16 cmUnpkRgrCfgReq ARGS((
3246    RgrCfgReq            func,
3247    Pst*                 pst,
3248    Buffer               *mBuf
3249 ));
3250
3251 S16 cmUnpkRgrCfgCfm ARGS((
3252    RgrCfgCfm            func,
3253    Pst*                 pst,
3254    Buffer               *mBuf
3255 ));
3256
3257 S16 cmPkRgrCfgTransId ARGS((
3258    RgrCfgTransId        *param,
3259    Buffer               *mBuf
3260 ));
3261 S16 cmUnpkRgrCfgTransId ARGS((
3262    RgrCfgTransId        *param,
3263    Buffer               *mBuf
3264 ));
3265 S16 cmPkRgrDlHqCfg ARGS((
3266    RgrDlHqCfg           *param,
3267    Buffer               *mBuf
3268 ));
3269 S16 cmUnpkRgrDlHqCfg ARGS((
3270    RgrDlHqCfg           *param,
3271    Buffer               *mBuf
3272 ));
3273 S16 cmPkRgrRntiCfg ARGS((
3274    RgrRntiCfg           *param,
3275    Buffer               *mBuf
3276 ));
3277 S16 cmUnpkRgrRntiCfg ARGS((
3278    RgrRntiCfg           *param,
3279    Buffer               *mBuf
3280 ));
3281 S16 cmPkRgrDlCmnCodeRateCfg ARGS((
3282    RgrDlCmnCodeRateCfg  *param,
3283    Buffer               *mBuf
3284 ));
3285 S16 cmUnpkRgrDlCmnCodeRateCfg ARGS((
3286    RgrDlCmnCodeRateCfg  *param,
3287    Buffer               *mBuf
3288 ));
3289 S16 cmPkRgrCfiCfg ARGS((
3290    RgrCfiCfg            *param,
3291    Buffer               *mBuf
3292 ));
3293 S16 cmUnpkRgrCfiCfg ARGS((
3294    RgrCfiCfg            *param,
3295    Buffer               *mBuf
3296 ));
3297 S16 cmPkRgrPuschSubBandCfg ARGS((
3298    RgrPuschSubBandCfg   *param,
3299    Buffer               *mBuf
3300 ));
3301 S16 cmUnpkRgrPuschSubBandCfg ARGS((
3302    RgrPuschSubBandCfg   *param,
3303    Buffer               *mBuf
3304 ));
3305 S16 cmPkRgrUlCmnCodeRateCfg ARGS((
3306    RgrUlCmnCodeRateCfg  *param,
3307    Buffer               *mBuf
3308 ));
3309 S16 cmUnpkRgrUlCmnCodeRateCfg ARGS((
3310    RgrUlCmnCodeRateCfg  *param,
3311    Buffer               *mBuf
3312 ));
3313 S16 cmPkRgrUlTrgCqiCfg ARGS((
3314    RgrUlTrgCqiCfg       *param,
3315    Buffer               *mBuf
3316 ));
3317 S16 cmUnpkRgrUlTrgCqiCfg ARGS((
3318    RgrUlTrgCqiCfg       *param,
3319    Buffer               *mBuf
3320 ));
3321 S16 cmPkRgrBwCfg ARGS((
3322    RgrBwCfg             *param,
3323    Buffer               *mBuf
3324 ));
3325 S16 cmUnpkRgrBwCfg ARGS((
3326    RgrBwCfg             *param,
3327    Buffer               *mBuf
3328 ));
3329 S16 cmPkRgrPhichCfg ARGS((
3330    RgrPhichCfg          *param,
3331    Buffer               *mBuf
3332 ));
3333 S16 cmUnpkRgrPhichCfg ARGS((
3334    RgrPhichCfg          *param,
3335    Buffer               *mBuf
3336 ));
3337 S16 cmPkRgrPucchCfg ARGS((
3338    RgrPucchCfg          *param,
3339    Buffer               *mBuf
3340 ));
3341 S16 cmUnpkRgrPucchCfg ARGS((
3342    RgrPucchCfg          *param,
3343    Buffer               *mBuf
3344 ));
3345 S16 cmPkRgrSrsCfg ARGS((
3346    RgrSrsCfg            *param,
3347    Buffer               *mBuf
3348 ));
3349 S16 cmUnpkRgrSrsCfg ARGS((
3350    RgrSrsCfg            *param,
3351    Buffer               *mBuf
3352 ));
3353 S16 cmPkRgrRachCfg ARGS((
3354    RgrRachCfg           *param,
3355    Buffer               *mBuf
3356 ));
3357 S16 cmUnpkRgrRachCfg ARGS((
3358    RgrRachCfg           *param,
3359    Buffer               *mBuf
3360 ));
3361 S16 cmPkRgrSiCfg ARGS((
3362    RgrSiCfg             *param,
3363    Buffer               *mBuf
3364 ));
3365 S16 cmUnpkRgrSiCfg ARGS((
3366    RgrSiCfg             *param,
3367    Buffer               *mBuf
3368 ));
3369 S16 cmPkRgrTpcRntiCfg ARGS((
3370    RgrTpcRntiCfg        *param,
3371    Buffer               *mBuf
3372 ));
3373 S16 cmUnpkRgrTpcRntiCfg ARGS((
3374    RgrTpcRntiCfg        *param,
3375    Buffer               *mBuf
3376 ));
3377 S16 cmPkRgrUlPwrCfg ARGS((
3378    RgrUlPwrCfg          *param,
3379    Buffer               *mBuf
3380 ));
3381 S16 cmUnpkRgrUlPwrCfg ARGS((
3382    RgrUlPwrCfg          *param,
3383    Buffer               *mBuf
3384 ));
3385 S16 cmPkRgrPuschCfg ARGS((
3386    RgrPuschCfg          *param,
3387    Buffer               *mBuf
3388 ));
3389 S16 cmUnpkRgrPuschCfg ARGS((
3390    RgrPuschCfg          *param,
3391    Buffer               *mBuf
3392 ));
3393 S16 cmPkRgrCodeBookRstCfg ARGS((
3394    RgrCodeBookRstCfg    *param,
3395    Buffer               *mBuf
3396 ));
3397 S16 cmUnpkRgrCodeBookRstCfg ARGS((
3398    RgrCodeBookRstCfg    *param,
3399    Buffer               *mBuf
3400 ));
3401 S16 cmPkRgrPreambleSetCfg ARGS((
3402    RgrPreambleSetCfg    *param,
3403    Buffer               *mBuf
3404 ));
3405 S16 cmUnpkRgrPreambleSetCfg ARGS((
3406    RgrPreambleSetCfg    *param,
3407    Buffer               *mBuf
3408 ));
3409 S16 cmPkRgrCmnLchCfg ARGS((
3410    RgrCmnLchCfg         *param,
3411    Buffer               *mBuf
3412 ));
3413 S16 cmUnpkRgrCmnLchCfg ARGS((
3414    RgrCmnLchCfg         *param,
3415    Buffer               *mBuf
3416 ));
3417 S16 cmPkRgrDlfsCfg ARGS((
3418    RgrDlfsCfg           *param,
3419    Buffer               *mBuf
3420 ));
3421 S16 cmUnpkRgrDlfsCfg ARGS((
3422    RgrDlfsCfg           *param,
3423    Buffer               *mBuf
3424 ));
3425
3426
3427 /** @name LTE_TDD */
3428 /** @{ */
3429 #ifdef LTE_TDD
3430 S16 cmPkRgrTddPrachInfo ARGS((
3431    RgrTddPrachInfo      *param,
3432    Buffer               *mBuf
3433 ));
3434 S16 cmUnpkRgrTddPrachInfo ARGS((
3435    RgrTddPrachInfo      *param,
3436    Buffer               *mBuf
3437 ));
3438 S16 cmPkRgrTddPrachRscInfo ARGS((
3439    RgrTddPrachRscInfo   *param,
3440    Buffer               *mBuf
3441 ));
3442 S16 cmUnpkRgrTddPrachRscInfo ARGS((
3443    RgrTddPrachRscInfo   *param,
3444    Buffer               *mBuf
3445 ));
3446 #endif /* LTE_TDD*/
3447 /** @} */
3448 S16 cmPkRgrEnbPfs ARGS((
3449    RgrEnbPfs         *param,
3450    Buffer               *mBuf
3451 ));
3452 S16 cmUnpkRgrEnbPfs ARGS((
3453    RgrEnbPfs         *param,
3454    Buffer               *mBuf
3455 ));
3456 S16 cmPkRgrCellCfg ARGS((
3457    RgrCellCfg           *param,
3458    Buffer               *mBuf
3459 ));
3460 S16 cmUnpkRgrCellCfg ARGS((
3461    RgrCellCfg           *param,
3462    Buffer               *mBuf
3463 ));
3464 S16 cmPkRgrUeAprdDlCqiCfg ARGS((
3465    RgrUeAprdDlCqiCfg    *param,
3466    Buffer               *mBuf
3467 ));
3468 S16 cmUnpkRgrUeAprdDlCqiCfg ARGS((
3469    RgrUeAprdDlCqiCfg    *param,
3470    Buffer               *mBuf
3471 ));
3472 S16 cmPkRgrSchedGnbCfg ARGS((
3473    RgrSchedEnbCfg       *param,
3474    Buffer               *mBuf
3475 ));
3476 S16 cmUnpkRgrSchedGnbCfg ARGS((
3477    RgrSchedEnbCfg       *param,
3478    Buffer               *mBuf
3479 ));
3480 S16 cmPkRgrUePrdDlCqiCfg ARGS((
3481    RgrUePrdDlCqiCfg     *param,
3482    Buffer               *mBuf
3483 ));
3484 S16 cmUnpkRgrUePrdDlCqiCfg ARGS((
3485    RgrUePrdDlCqiCfg     *param,
3486    Buffer               *mBuf
3487 ));
3488 S16 cmPkRgrUeDlCqiCfg ARGS((
3489    RgrUeDlCqiCfg        *param,
3490    Buffer               *mBuf
3491 ));
3492 S16 cmUnpkRgrUeDlCqiCfg ARGS((
3493    RgrUeDlCqiCfg        *param,
3494    Buffer               *mBuf
3495 ));
3496 S16 cmPkRgrUeMeasGapCfg ARGS((
3497    RgrUeMeasGapCfg      *param,
3498    Buffer               *mBuf
3499 ));
3500 S16 cmUnpkRgrUeMeasGapCfg ARGS((
3501    RgrUeMeasGapCfg      *param,
3502    Buffer               *mBuf
3503 ));
3504 /*rgr_x_001.main_11 ADD added changes for DRX*/
3505 S16 cmPkRgrDrxLongCycleOffst ARGS((
3506    RgrDrxLongCycleOffst *param,
3507    Buffer               *mBuf
3508 ));
3509 S16 cmUnpkRgrDrxLongCycleOffst ARGS((
3510    RgrDrxLongCycleOffst *param,
3511    Buffer               *mBuf
3512 ));
3513 S16 cmPkRgrDrxShortDrx ARGS((
3514    RgrDrxShortDrx       *param,
3515    Buffer               *mBuf
3516 ));
3517 S16 cmUnpkRgrDrxShortDrx ARGS((
3518    RgrDrxShortDrx       *param,
3519    Buffer               *mBuf
3520 ));
3521 S16 cmPkRgrUeDrxCfg ARGS((
3522    RgrUeDrxCfg          *param,
3523    Buffer               *mBuf
3524 ));
3525 S16 cmUnpkRgrUeDrxCfg ARGS((
3526    RgrUeDrxCfg          *param,
3527    Buffer               *mBuf
3528 ));
3529 S16 cmPkRgrUeCapCfg ARGS((
3530    RgrUeCapCfg          *param,
3531    Buffer               *mBuf
3532 ));
3533 S16 cmUnpkRgrUeCapCfg ARGS((
3534    RgrUeCapCfg          *param,
3535    Buffer               *mBuf
3536 ));
3537 S16 cmPkRgrUeAckNackRepCfg ARGS((
3538    RgrUeAckNackRepCfg   *param,
3539    Buffer               *mBuf
3540 ));
3541 S16 cmUnpkRgrUeAckNackRepCfg ARGS((
3542    RgrUeAckNackRepCfg   *param,
3543    Buffer               *mBuf
3544 ));
3545 S16 cmPkRgrUeTxModeCfg ARGS((
3546    RgrUeTxModeCfg       *param,
3547    Buffer               *mBuf
3548 ));
3549 S16 cmUnpkRgrUeTxModeCfg ARGS((
3550    RgrUeTxModeCfg       *param,
3551    Buffer               *mBuf
3552 ));
3553 S16 cmPkRgrUeUlHqCfg ARGS((
3554    RgrUeUlHqCfg         *param,
3555    Buffer               *mBuf
3556 ));
3557 S16 cmUnpkRgrUeUlHqCfg ARGS((
3558    RgrUeUlHqCfg         *param,
3559    Buffer               *mBuf
3560 ));
3561 S16 cmPkRgrUeGrpPwrCfg ARGS((
3562    RgrUeGrpPwrCfg       *param,
3563    Buffer               *mBuf
3564 ));
3565 S16 cmUnpkRgrUeGrpPwrCfg ARGS((
3566    RgrUeGrpPwrCfg       *param,
3567    Buffer               *mBuf
3568 ));
3569 S16 cmPkRgrUeUlPwrCfg ARGS((
3570    RgrUeUlPwrCfg        *param,
3571    Buffer               *mBuf
3572 ));
3573 S16 cmUnpkRgrUeUlPwrCfg ARGS((
3574    RgrUeUlPwrCfg        *param,
3575    Buffer               *mBuf
3576 ));
3577 S16 cmPkRgrUeQosCfg ARGS((
3578    RgrUeQosCfg          *param,
3579    Buffer               *mBuf
3580 ));
3581 S16 cmUnpkRgrUeQosCfg ARGS((
3582    RgrUeQosCfg          *param,
3583    Buffer               *mBuf
3584 ));
3585 S16 cmPkRgrUeTaTmrCfg ARGS((
3586    RgrUeTaTmrCfg        *param,
3587    Buffer               *mBuf
3588 ));
3589 S16 cmUnpkRgrUeTaTmrCfg ARGS((
3590    RgrUeTaTmrCfg        *param,
3591    Buffer               *mBuf
3592 ));
3593 /** @name RGR_V1 */
3594 /** @{ */
3595 #ifdef RGR_V1
3596 /* rgr_x_001.main_7: [ccpu00112398] Added periodicBSR-Timer and 
3597    retxBSR-Timer */
3598 S16 cmPkRgrUeBsrTmrCfg ARGS((
3599    RgrUeBsrTmrCfg       *param,
3600    Buffer               *mBuf
3601 ));
3602 S16 cmUnpkRgrUeBsrTmrCfg ARGS((
3603    RgrUeBsrTmrCfg       *param,
3604    Buffer               *mBuf
3605 ));
3606 #endif
3607 /** @} */
3608 S16 cmPkRgrUeCfg ARGS((
3609    RgrUeCfg             *param,
3610    Buffer               *mBuf
3611 ));
3612 S16 cmUnpkRgrUeCfg ARGS((
3613    RgrUeCfg             *param,
3614    Buffer               *mBuf
3615 ));
3616 S16 cmPkRgrLchQosCfg ARGS((
3617    RgrLchQosCfg         *param,
3618    Buffer               *mBuf
3619 ));
3620 S16 cmUnpkRgrLchQosCfg ARGS((
3621    RgrLchQosCfg         *param,
3622    Buffer               *mBuf
3623 ));
3624 S16 cmPkRgrDlLchCfg ARGS((
3625    RgrDlLchCfg          *param,
3626    Buffer               *mBuf
3627 ));
3628 S16 cmUnpkRgrDlLchCfg ARGS((
3629    RgrDlLchCfg          *param,
3630    Buffer               *mBuf
3631 ));
3632 S16 cmPkRgrUlLcgCfg ARGS((
3633    RgrUlLcgCfg          *param,
3634    Buffer               *mBuf
3635 ));
3636 S16 cmUnpkRgrUlLcgCfg ARGS((
3637    RgrUlLcgCfg          *param,
3638    Buffer               *mBuf
3639 ));
3640 S16 cmPkRgrLchCfg ARGS((
3641    RgrLchCfg            *param,
3642    Buffer               *mBuf
3643 ));
3644 S16 cmUnpkRgrLchCfg ARGS((
3645    RgrLchCfg            *param,
3646    Buffer               *mBuf
3647 ));
3648 S16 cmPkRgrLcgCfg ARGS((
3649    RgrLcgCfg            *param,
3650    Buffer               *mBuf
3651 ));
3652 S16 cmUnpkRgrLcgCfg ARGS((
3653    RgrLcgCfg            *param,
3654    Buffer               *mBuf
3655 ));
3656 S16 cmPkRgrCfg ARGS((
3657    RgrCfg               *param,
3658    Buffer               *mBuf
3659 ));
3660 S16 cmUnpkRgrCfg ARGS((
3661    RgrCfg               *param,
3662    Buffer               *mBuf
3663 ));
3664 S16 cmPkRgrActvTime ARGS((
3665    RgrActvTime          *param,
3666    Buffer               *mBuf
3667 ));
3668 S16 cmUnpkRgrActvTime ARGS((
3669    RgrActvTime          *param,
3670    Buffer               *mBuf
3671 ));
3672 S16 cmPkRgrCellRecfg ARGS((
3673    RgrCellRecfg         *param,
3674    Buffer               *mBuf
3675 ));
3676 S16 cmUnpkRgrCellRecfg ARGS((
3677    RgrCellRecfg         *param,
3678    Buffer               *mBuf
3679 ));
3680 S16 cmPkRgrUeRecfg ARGS((
3681    RgrUeRecfg           *param,
3682    Buffer               *mBuf
3683 ));
3684 S16 cmUnpkRgrUeRecfg ARGS((
3685    RgrUeRecfg           *param,
3686    Buffer               *mBuf
3687 ));
3688 S16 cmPkRgrLchRecfg ARGS((
3689    RgrLchRecfg          *param,
3690    Buffer               *mBuf
3691 ));
3692 S16 cmUnpkRgrLchRecfg ARGS((
3693    RgrLchRecfg          *param,
3694    Buffer               *mBuf
3695 ));
3696 S16 cmPkRgrLcgRecfg ARGS((
3697    RgrLcgRecfg          *param,
3698    Buffer               *mBuf
3699 ));
3700 S16 cmUnpkRgrLcgRecfg ARGS((
3701    RgrLcgRecfg          *param,
3702    Buffer               *mBuf
3703 ));
3704 S16 cmPkRgrRecfg ARGS((
3705    RgrRecfg             *param,
3706    Buffer               *mBuf
3707 ));
3708 S16 cmUnpkRgrRecfg ARGS((
3709    RgrRecfg             *param,
3710    Buffer               *mBuf
3711 ));
3712 S16 cmPkRgrDel ARGS((
3713    RgrDel               *param,
3714    Buffer               *mBuf
3715 ));
3716 S16 cmUnpkRgrDel ARGS((
3717    RgrDel               *param,
3718    Buffer               *mBuf
3719 ));
3720 S16 cmPkRgrRst ARGS((
3721    RgrRst               *param,
3722    Buffer               *mBuf
3723 ));
3724 S16 cmUnpkRgrRst ARGS((
3725    RgrRst               *param,
3726    Buffer               *mBuf
3727 ));
3728
3729 S16 cmPkRgrSonCfg   ARGS((
3730 RgrSonCfg *param,
3731 Buffer *mBuf
3732 ));
3733 S16 cmUnpkRgrSonCfg   ARGS((
3734 RgrSonCfg   *param,
3735 Buffer      *mBuf
3736 ));
3737 S16 cmPkRgrSonPrbCfg   ARGS((
3738 RgrPrbCfg *param,
3739 Buffer *mBuf
3740 ));
3741 S16 cmUnpkRgrSonPrbCfg   ARGS((
3742 RgrPrbCfg   *param,
3743 Buffer      *mBuf
3744 ));
3745 S16 cmPkRgrCfgReqInfo ARGS((
3746    RgrCfgReqInfo        *param,
3747    Buffer               *mBuf
3748 ));
3749 S16 cmUnpkRgrCfgReqInfo ARGS((
3750    RgrCfgReqInfo        *param,
3751    Buffer               *mBuf
3752 ));
3753
3754 #ifdef LTE_ADV 
3755 S16 cmUnPkRgrSCellActDeactEvnt ARGS((
3756    RgrSCellActDeactEvnt *param,
3757    Buffer *mBuf
3758 ));
3759
3760 S16 cmPkRgrSCellActDeactEvnt ARGS((
3761    RgrSCellActDeactEvnt *param,
3762    Buffer *mBuf
3763 ));
3764 #endif /* LTE_ADV */
3765
3766 S16 cmPkRgrUeTxAntSelCfg ARGS((
3767    RgrUeTxAntSelCfg     *param,
3768    Buffer               *mBuf
3769 ));
3770 S16 cmUnpkRgrUeTxAntSelCfg ARGS((
3771    RgrUeTxAntSelCfg     *param,
3772    Buffer               *mBuf
3773 ));
3774 S16 cmPkRgrUePuschDedCfg ARGS((
3775    RgrUePuschDedCfg     *param,
3776    Buffer               *mBuf
3777 ));
3778 S16 cmUnpkRgrUePuschDedCfg ARGS((
3779    RgrUePuschDedCfg     *param,
3780    Buffer               *mBuf
3781 ));
3782
3783 #ifdef TFU_UPGRADE
3784 S16 cmPkRgrUeDlPCqiSetup ARGS
3785 ((
3786 RgrUeDlPCqiSetup *param,
3787 Buffer *mBuf
3788 ));
3789
3790 S16 cmUnpkRgrUeDlPCqiSetup ARGS
3791 ((
3792 RgrUeDlPCqiSetup *param,
3793 Buffer *mBuf
3794 ));
3795
3796 S16 cmPkRgrUeUlSrsSetupCfg ARGS
3797 ((
3798 RgrUeUlSrsSetupCfg *param,
3799 Buffer *mBuf
3800 ));
3801
3802 S16 cmUnpkRgrUeUlSrsSetupCfg ARGS
3803 ((
3804 RgrUeUlSrsSetupCfg *param,
3805 Buffer *mBuf
3806 ));
3807
3808 S16 cmPkRgrUeSrSetupCfg ARGS
3809 ((
3810 RgrUeSrSetupCfg *param,
3811 Buffer *mBuf
3812 ));
3813
3814 S16 cmUnpkRgrUeSrSetupCfg ARGS
3815 ((
3816 RgrUeSrSetupCfg *param,
3817 Buffer *mBuf
3818 ));
3819
3820  S16 cmPkRgrUeSrCfg ARGS
3821 ((
3822 RgrUeSrCfg *param,
3823 Buffer *mBuf
3824 ));
3825
3826 S16 cmUnpkRgrUeSrCfg ARGS
3827 ((
3828 RgrUeSrCfg *param,
3829 Buffer *mBuf
3830 ));
3831
3832 S16 cmPkRgrUeUlSrsCfg ARGS
3833 ((
3834 RgrUeUlSrsCfg *param,
3835 Buffer *mBuf
3836 ));
3837
3838 S16 cmUnpkRgrUeUlSrsCfg ARGS
3839 ((
3840 RgrUeUlSrsCfg *param,
3841 Buffer *mBuf
3842 ));
3843
3844 #endif
3845 #endif
3846
3847 #ifdef DM
3848 /** @brief Request from RRM to MAC to bind the interface SAPs */
3849 S16 DmUiRgrBndReq ARGS((
3850    Pst*                 pst,
3851    SuId                 suId,
3852    SpId                 spId
3853 ));
3854 /** @brief Confirmation from MAC to RRM for the bind/unbind 
3855  * request for the interface SAPs */
3856 S16 DmUiRgrBndCfm ARGS((
3857    Pst*                 pst,
3858    SuId                 suId,
3859    uint8_t                   status
3860 ));
3861 /** @brief Request from RRM to MAC to unbind the interface SAPs */
3862 S16 DmUiRgrUbndReq ARGS((
3863    Pst*                 pst,
3864    SpId                 spId,
3865    Reason               reason
3866 ));
3867 /** @brief Configuration request from RRM to MAC for 
3868  * configuring Cell/UE/LC */
3869 S16 DmUiRgrCfgReq ARGS((
3870    Pst*                 pst,
3871    SpId                 spId,
3872    RgrCfgTransId        transId,
3873    RgrCfgReqInfo *      cfgReqInfo
3874 ));
3875 /** @brief Configuration confirm from MAC to RRM */
3876 S16 DmUiRgrCfgCfm ARGS((
3877    Pst*                 pst,
3878    SuId                 suId,
3879    RgrCfgTransId        transId,
3880    uint8_t                   status
3881 ));
3882 #endif
3883 /** @brief Sta Indication from Scheduler to RRM 
3884  *
3885  * @details This primitive is used to send status indication
3886  *          from scheduler to RRM. 
3887  * 
3888  * @param[in] pst     Pointer to a post structure
3889  * @param[in] suId    Service User SAP Id
3890  * @param[in] staInd  Status Indication .
3891 */
3892 S16 NxLiRgrUeStaInd ARGS((
3893    Pst*                 pst,
3894    SuId                 suId,
3895    RgrUeStaIndInfo      *ueStaInd
3896 ));
3897
3898 S16 cmPkRgrUeStaInd ARGS
3899 ((
3900 Pst* pst,
3901 SuId suId,
3902 RgrUeStaIndInfo* ueStaInd
3903 ));
3904
3905 S16 cmUnpkRgrUeStaInd ARGS
3906 ((
3907 RgrUeStaInd  func,
3908 Pst *pst,
3909 Buffer *mBuf
3910 ));
3911
3912 S16 cmPkRgrUeStaIndInfo ARGS
3913 ((
3914 RgrUeStaIndInfo *param,
3915 Buffer *mBuf
3916 ));
3917
3918
3919 S16 cmUnpkRgrUeStaIndInfo ARGS
3920 ((
3921 RgrUeStaIndInfo *param,
3922 Buffer *mBuf
3923 ));
3924
3925
3926 /* LTE_ADV_FLAG_REMOVED_START */
3927 S16 cmPkRgrLteAdvancedUeConfig ARGS((
3928             RgrLteAdvancedUeConfig *param,
3929             Buffer *mBuf
3930             ));
3931
3932 S16 cmUnpkRgrLteAdvancedUeConfig ARGS((
3933             RgrLteAdvancedUeConfig *param,
3934             Buffer *mBuf
3935             ));
3936
3937 S16 cmPkRgrAbsConfig ARGS((
3938             RgrAbsConfig *param,
3939             Buffer *mBuf
3940             ));
3941
3942 S16 cmUnpkRgrAbsConfig ARGS((
3943             RgrAbsConfig *param,
3944             Buffer *mBuf
3945             ));
3946
3947 S16 cmPkRgrSfrConfig ARGS((
3948             RgrSfrConfig *param,
3949             Buffer *mBuf
3950             ));
3951
3952 S16 cmUnpkRgrSfrConfig ARGS((
3953             RgrSfrConfig *param,
3954             Buffer *mBuf
3955             ));
3956
3957 S16 cmPkRgrCellLteAdvancedFeatureCfg ARGS((
3958             RgrLteAdvancedCellConfig *param,
3959             Buffer *mBuf
3960             ));
3961
3962 S16 cmUnpkRgrCellLteAdvancedFeatureCfg ARGS((
3963             RgrLteAdvancedCellConfig *param,
3964             Buffer *mBuf
3965             ));
3966
3967 S16 cmPkRgrDsfrConfig ARGS((
3968          RgrDsfrConfig *param,
3969          Buffer *mBuf
3970          ));
3971
3972 S16 cmUnpkRgrDsfrConfig ARGS((
3973          RgrDsfrConfig *param,
3974          Buffer *mBuf
3975          ));
3976 /* LTE_ADV_FLAG_REMOVED_END */
3977
3978 S16 cmPkRgrCellCsgParamCfg ARGS((
3979 RgrCellCsgParamCfg *param,
3980 Buffer *mBuf
3981 ));
3982 S16 cmUnpkRgrCellCsgParamCfg ARGS((
3983 RgrCellCsgParamCfg *param,
3984 Buffer *mBuf
3985 ));
3986 S16 cmPkRgrCellCntrlCmdCfg ARGS((
3987 RgrCellCntrlCmdCfg *param,
3988 Buffer *mBuf
3989 ));
3990 S16 cmUnpkRgrCellCntrlCmdCfg ARGS((
3991 RgrCellCntrlCmdCfg *param,
3992 Buffer *mBuf
3993 ));
3994
3995 #ifdef __cplusplus
3996 }
3997 #endif
3998 #endif /* __RGR_X__*/
3999
4000 /**********************************************************************
4001
4002          End of file
4003 **********************************************************************/