Adding new commiter to ODU-High repo
[o-du/l2.git] / src / cm / ctf.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 PHY layer
22   
23   Type:     C Include File 
24   
25   Desc:     Structures, variables, and typedefs required by the LTE PHY 
26             and PHY-User Control (CTF) interface.
27
28   File:     ctf.x 
29
30 **********************************************************************/
31
32 #ifndef __CTF_X__
33 #define __CTF_X__
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 /**
40   * @file 
41   * @brief CTF Interface File.
42   */
43
44 /**
45  * @brief
46  * Configuration transaction identifier.
47  */
48 /* Data Structures for CTF */
49
50 /** 
51   @brief Transaction ID between CTF and User. */
52 typedef struct ctfCfgTransId {
53    uint8_t trans[CTF_CFG_TRANSID_SIZE]; /*!< User transaction ID */
54 } CtfCfgTransId;
55
56
57 /* Enumerations for CTF */
58 /**
59  * @enum ctfBandwidth
60  * This element enumerates the Bandwidth values for PHY in terms of RBs. */
61 typedef enum {
62    CTF_BW_RB_6,
63    CTF_BW_RB_15,
64    CTF_BW_RB_25,
65    CTF_BW_RB_50,
66    CTF_BW_RB_75,
67    CTF_BW_RB_100   
68 } CtfBandwidth;
69
70 /**
71  * @enum ctfDuplexMode
72  * This element enumerates the duplex mode for the entire system at PHY. 
73 */
74 typedef enum {
75    CTF_DUPMODE_FDD=1,
76    CTF_DUPMODE_TDD   
77 } CtfDuplexMode;
78
79 /**
80  * @enum ctfSCSpacing
81  * This element enumerates the sub-carrier spacing for configuration at PHY. 
82 */
83 typedef enum {
84    CTF_SC_SPACING_15KHZ,
85    CTF_SC_SPACING_7DOT5KHZ   
86 } CtfSCSpacing;
87
88 /**
89  * @enum ctfCPCfg
90  * This element enumerates the cyclic prefix for use at PHY.
91 */
92 typedef enum {
93    CTF_CP_NORMAL,
94    CTF_CP_EXTENDED   
95 } CtfCPCfg;
96
97 /**
98  * @brief
99  * This element enumerates the number of antenna ports for configuration at PHY.
100 */
101 typedef enum {
102    CTF_AP_CNT_1 = 1,
103    CTF_AP_CNT_2 = 2,
104    CTF_AP_CNT_4 = 4  
105 } CtfAntennaPortsCount;
106
107 /**
108  * @enum ctfPhichDuration
109  * This element enumerates the duration for PHICH configuration at PHY.
110 */
111 typedef enum {
112    CTF_PHICH_DUR_NORMAL,
113    CTF_PHICH_DUR_EXTENDED   
114 } CtfPhichDuration;
115
116 /**
117  * @enum ctfPhichResource
118  * This element enumerates the resources for PHICH configuration at PHY.
119 */
120 typedef enum {
121    CTF_PHICH_RSRC_ONESIXTH,
122    CTF_PHICH_RSRC_HALF,
123    CTF_PHICH_RSRC_ONE,
124    CTF_PHICH_RSRC_TWO   
125 } CtfPhichResource;
126
127 /**
128  * @enum ctfPuschHoppingMode
129  * This element enumerates the hopping mode for PUSCH configuration at PHY.
130 */
131 typedef enum {
132    CTF_PUSCH_HOPMODE_INTER_SUBFRM,
133    CTF_PUSCH_HOPMODE_INTRAANDINTERSUBFRM   
134 } CtfPuschHoppingMode;
135
136 /**
137  * @enum ctfPucchDeltaShift
138  * This element enumerates the delta shift for PUCCH configuration at PHY.
139 */
140 typedef enum {
141    CTF_PUCCH_DELTASHIFT1,
142    CTF_PUCCH_DELTASHIFT2,
143    CTF_PUCCH_DELTASHIFT3   
144 } CtfPucchDeltaShift;
145
146 /**
147  * @enum ctfPdschPaParam
148  * This element enumerates the parameter PA for PDSCH configuration at PHY.
149  * Each enum value maps to a PA value in dBs.
150 */
151 typedef enum {
152    CTF_PDSCH_PA_MINUS_6,
153    CTF_PDSCH_PA_MINUS_4DOT77,
154    CTF_PDSCH_PA_MINUS_3,
155    CTF_PDSCH_PA_MINUS_1DOT77,
156    CTF_PDSCH_PA_ZERO,
157    CTF_PDSCH_PA_ONE,
158    CTF_PDSCH_PA_TWO,
159    CTF_PDSCH_PA_THREE   
160 } CtfPdschPaParam;
161
162 /**
163  * @enum CtfCqiRptModeAperiodic
164  * This element enumerates the Aperiodic CQI reporting configuration at PHY.
165 */
166 typedef enum {
167    CTF_CQI_RPT_MODE_APERIODIC_RM12, /*!< Corresponds to Mode 1-2 */
168    CTF_CQI_RPT_MODE_APERIODIC_RM20, /*!< Corresponds to Mode 2-0 */
169    CTF_CQI_RPT_MODE_APERIODIC_RM22, /*!< Corresponds to Mode 2-2 */
170    CTF_CQI_RPT_MODE_APERIODIC_RM30, /*!< Corresponds to Mode 3-0 */
171    CTF_CQI_RPT_MODE_APERIODIC_RM31  /*!< Corresponds to Mode 3-1 */
172 } CtfCqiRptModeAperiodic;
173
174 /**
175  * @enum CtfUeTxAntSelectType 
176  * This element enumerates the UE TX Antenna selection configuration at PHY.
177 */
178 typedef enum {
179    CTF_UE_TX_ANT_SELECT_CLOSEDLOOP, /*!< Closed loop selection */
180    CTF_UE_TX_ANT_SELECT_OPENLOOP    /*!< Open loop selection */
181 } CtfUeTxAntSelectType;
182
183 /**
184  * @enum CtfPucchRepFactor 
185  * This element enumerates the repetition factors for PUCCH configuration.
186 */
187 typedef enum {
188    CTF_PUCCH_REP_FACTOR_N2,   /*!< Pucch repetition factor of 2 */
189    CTF_PUCCH_REP_FACTOR_N4,   /*!< Pucch repetition factor of 4 */
190    CTF_PUCCH_REP_FACTOR_N6    /*!< Pucch repetition factor of 6 */
191 } CtfPucchRepFactor;
192
193 #ifdef CTF_VER3
194 /* ctf_x_001.main_4:115549: */
195  /**
196   * @enum CtfTddAckNackFBMode
197   * This element enumerates the ACK/NACK feedback mode for TDD mode of
198   *  PUCCH configuration.
199  */
200  typedef enum {
201     CTF_PUCCH_TDD_ACKNACK_FB_MODE_BUNDLING, /*!< Bundling option */
202     CTF_PUCCH_TDD_ACKNACK_FB_MODE_MUXING    /*!< Multiplexing option */
203  } CtfTddAckNackFBMode;
204 #endif /* CTF_VER3 */
205
206 /**
207  * @enum CtfUeTxAntMode 
208  * This element enumerates the UE Transmission mode.
209 */
210 typedef enum {
211    CTF_UE_TX_ANT_MODE_TM1, /*!< Transmission Mode 1 */
212    CTF_UE_TX_ANT_MODE_TM2, /*!< Transmission Mode 2 */
213    CTF_UE_TX_ANT_MODE_TM3, /*!< Transmission Mode 3 */
214    CTF_UE_TX_ANT_MODE_TM4, /*!< Transmission Mode 4 */
215    CTF_UE_TX_ANT_MODE_TM5, /*!< Transmission Mode 5 */
216    CTF_UE_TX_ANT_MODE_TM6, /*!< Transmission Mode 6 */
217    CTF_UE_TX_ANT_MODE_TM7 /*!< Transmission Mode 7 */
218 /* ctf_x_001.main_2: Added transmission mode 8*/
219 #ifdef CTF_VER1
220    ,CTF_UE_TX_ANT_MODE_TM8  /*!< Transmission Mode 8 */
221 #endif
222 } CtfUeTxAntMode;
223 /* ctf_x_001.main_3:Added enum for CTF reconfiguration */
224 /**
225  * @enum CtfReCfgType 
226  * This element enumerates the CTF reconfiguration type
227 */
228 typedef enum {
229    CTF_MAJOR_RECFG,   /*!< CTF Major reconfiguration */
230    CTF_MINOR_RECFG   /*!< CTF Minor reconfiguration */
231 } CtfReCfgType;
232
233 /**
234  *  @brief
235  *  UE ID information
236  */
237 typedef struct ctfUeInfo {
238    CmLteCellId    cellId;     /*!< Cell ID */
239    CmLteRnti      ueId;       /*!< UE ID */
240 }CtfUeInfo;
241
242 /* Data Structures for CTF */
243 /**
244  * @brief   Bandwidth Configuration.
245  * @details This structure contains the uplink and downlink bandwidth 
246  *          information for configuration at PHY.
247 */
248 typedef struct ctfBwCfgInfo {
249    Bool   pres;       /*!< Present field */
250    CtfBandwidth   dlBw;       /*!< Downlink Bandwidth in RBs */
251    CtfBandwidth   ulBw;       /*!< Uplink Bandwidth in RBs */
252    uint8_t             eUtraBand;  /*!< EUTRA Operating Band - 36.104 (5.5)
253                                    FDD:(1..14), TDD:(33..40) */
254 } CtfBwCfgInfo;
255
256 /**
257  * @brief   Transmission Scheme Configuration.
258  * @details This structure contains the transmission scheme related information.
259 */
260 typedef struct ctfTxSchemeCfg {
261    Bool pres; /*!< Present field */
262    CtfDuplexMode  duplexMode; /*!< Duplexing Mode: TDD/FDD */
263    CtfSCSpacing   scSpacing;  /*!< Sub-carrier spacing */
264    CtfCPCfg       cycPfx;     /*!< Cyclic prefix */
265 } CtfTxSchemeCfg;
266
267 /**
268  * @brief   Antenna Ports configuration.
269  * @details This structure contains the antenna configuration information for 
270  *          configuration at PHY.
271 */
272 typedef struct ctfAntennaCfgInfo {
273    CtfAntennaPortsCount   antPortsCnt; /*!< Count of antenna ports */
274 } CtfAntennaCfgInfo;
275
276 /**
277  * @brief   PRACH configuration.
278  * @details This structure contains the configuration information for PRACH at PHY.
279  *          -# PRACH preamble sequences are generated by PHY using Zadoff-Chu 
280  *             sequences.[Ref: 36.211, 5.7.2]
281  *          -# PRACH preamble format is derived from PRACH Configuration Index.
282  *             [Ref: 36.211, Table 5.7.1-2]
283  *          -# PrachFreqOffset is the first physical resource block allocated to 
284  *             the PRACH opportunity considered for preamble format 0, 1, 2 and 3.
285  *             [Ref: 36.211, 5.7.1]
286 */
287 typedef struct ctfPrachCfgInfo {
288    Bool  pres;                   /*!< Indicates the presence of this info */
289    uint16_t   rootSequenceIndex;      /*!< Range (0..837) */
290    uint8_t    prachCfgIndex;          /*!< Prach Config Index (0..63) */
291    uint8_t    zeroCorrelationZoneCfg; /*!< Used for preamble sequence generation
292                                       (36.211, 5.7.2); FDD:0..15, TDD:0..6 */
293    Bool  highSpeedFlag;          /*!< TRUE: Restricted set, 
294                                       FALSE: Unrestricted Set */
295    uint8_t    prachFreqOffset;        /*!< Range(0..94) */
296 } CtfPrachCfgInfo;
297
298 /**
299  * @brief   PDSCH configuration.
300  * @details This structure contains the PDSCH configuration information for 
301  *          configuration at PHY.
302 */
303 typedef struct ctfPdschCfgInfo {
304    Bool           pres;       /*!< Indicates the presence of this info */
305    S16             refSigPwr;  /*!< Provides downlink reference signal EPRE, 
306                                    in (-60..50)dBm */
307    uint8_t             p_b;        /*!< Range(0..3) [36.213, 5.2] */ 
308 } CtfPdschCfgInfo;
309
310 /**
311  * @brief   Basic PUSCH configuration.
312  * @details This structure contains the basic PUSCH configuration information for 
313  *          configuration at PHY.
314 */
315 typedef struct ctfPuschCfgBasic {
316    uint8_t                   noOfsubBands;  /*!< Number of sub-bands, (1..4) */
317    CtfPuschHoppingMode  hoppingMode;   /*!< Hopping Mode */
318    uint8_t                   hoppingOffset; /*!< Hopping Offset(0..98) */
319    Bool                 enable64QAM;   /*!< 64 QAM,TRUE: enabled, 
320                                                    FALSE: disabled */
321 } CtfPuschCfgBasic;
322
323 /**
324  * @brief   PUSCH Uplink Reference Signals configuration.
325  * @details This structure contains the PUSCH configuration information for 
326  *          uplink reference signals configuration at PHY.
327 */
328 typedef struct ctfPuschUlRS {
329    Bool  grpHopEnabled; /*!< Group hopping, TRUE: enabled, FALSE: disabled */
330    Bool  seqHopEnabled; /*!< Sequence hopping, TRUE: enabled, FALSE: disabled */
331    uint8_t    grpNum;        /*!< Group number (0..29) */
332    uint8_t    cycShift;      /*!< Cyclic shift(0..7) */
333 } CtfPuschUlRS;
334
335 /**
336  * @brief   PUSCH configuration.
337  * @details This structure contains the information for PUSCH 
338  *          configuration at PHY.
339 */
340 typedef struct ctfPuschCfgInfo {
341    Bool              pres;          /*!< Indicates the presence of PUSCH configuration info */
342    CtfPuschCfgBasic  puschBasicCfg; /*!< PUSCH basic configuration */
343    CtfPuschUlRS      puschUlRS;     /*!< PUSCH uplink RS */
344 } CtfPuschCfgInfo;
345
346 /**
347  * @brief   PHICH configuration.
348  * @details This structure contains the duration and resource information for
349  *          PHICH configuration at PHY.
350 */
351 typedef struct ctfPhichCfgInfo {
352    Bool              pres;       /*!< Indicates the presence of PHICH 
353                                       configuration info */
354    CtfPhichDuration  duration;   /*!< PHICH duration, normal/extended, 
355                                       [36.211, 6.9.3-1] */
356    CtfPhichResource  resource;   /*!< PHICH Resource, Ng [36.211, 6.9] */
357 } CtfPhichCfgInfo;
358
359 /**
360  * @brief   PUCCH configuration.
361  * @details This structure contains the information for PUCCH
362  *          configuration at PHY.
363 */
364 typedef struct ctfPucchCfgInfo {
365    Bool  pres; /*!< Indicates the presence of PUCCH configuration info */
366    uint8_t    nRB;  /*!< Number of RBs that are available for use by 
367                     PUCCH formats (0..98) */
368    uint8_t    nCS;  /*!< Number of cyclic shifts used for PUCCH formats (0..7) */
369    uint16_t   n1PUCCH; /*!< PUCCH resource for transmission of ACK/NACK (0..2047) */
370    CtfPucchDeltaShift   deltaShift; /*!< PUCCH delta shift */
371 } CtfPucchCfgInfo;
372
373 /**
374  * @brief   SRS uplink configuration.
375  * @details This structure contains the information for setting-up/release
376  *          of uplink SRS configuration at PHY.
377 */
378 typedef struct ctfSrsUlCfgInfo {
379    Bool              pres;       /*!< Indicates the presence of UL SRS info */
380    uint8_t                srsCfgType; /*!< Setup/Release: The setup structure
381                                       is valid ,only if srcCfgType is setup. */
382    struct srsSetupS
383    {
384       uint8_t                srsBw;   /*!< SRS bandwidth config (0..7) */
385       uint8_t                sfCfg;   /*!< SRS sub-frame config (0..15) */
386       Bool              srsANSimultTx; /*!< Simultaneous transmisson 
387                                             of SRS and ACK/NACK */
388       Bool              srsMaxUpPts;   /*!< SRS MaxUpPTS: TRUE/FALSE, 
389                                             This field is valid only for TDD */
390    } srsSetup;
391 } CtfSrsUlCfgInfo;
392
393 /**
394  * @brief   Subframe Configuration for TDD mode.
395  * @details This structure contains the information for setting-up
396  *          the subframe for TDD mode at PHY.
397 */
398 typedef struct ctfTddSfCfgInfo {
399    Bool  pres;             /*!< Indicates if this info is valid */
400    uint8_t    sfAssignment;     /*!< UL-DL subframe assignment : (0..6)
401                                 36.211 Table 4.2-2 */
402    uint8_t    spclSfPatterns;   /*!< Special subframe configuration : (0..8)
403                                 36.211 Table 4.2-1 */
404 } CtfTddSfCfgInfo;
405
406 /* ctf_x_001.main_4: Added support for vendor specific parameters */
407 #ifdef CTF_VER3
408 /**
409  * @brief   Vendor Specific Parameter
410  * @details This structure contains the Parameters which is spaciftc to 
411  *     Vendor.
412  */
413
414 typedef struct ctfVendorSpecific{
415   uint16_t  buffLen ;  /*!<  Length of parameters in bytes */
416   uint8_t  *paramBuffer ; /*!< parameter Buffer */
417 } CtfVendorSpecific;
418 #endif
419 /* Cell specific configuration parameters */
420
421 /**
422  * @brief   Unlicensed Cell Configuration Information.
423  * @details This structure contains the information for setting-up
424  *          of an unlicensed SDL cell and its associated resources at PHY.
425 */
426 typedef struct ctfUnLicnsdCellCfg {
427    uint8_t            coExistMethod; /*!< Continuous/LTE-U/LAA */
428    uint8_t            lteOnPeriod; /*!< Percentage of time SDL
429                                    is active */
430    uint8_t            ccaMethod;   /*!< Clear channel assesment method */
431    Bool          adaptiveTx;  /*!< Indicates if the duty cycle is 
432                                    adaptive or fixed */
433    uint16_t           transPeriod; /*!< Defines the duty cycle */
434    uint16_t           listenPrd;   /*!< Time duration in us for clear channel 
435                                    assessment */
436    S16           energyTh;    /*!< Energy threshold in dBFS */
437    uint16_t           scanTimePrd; /*!< Time period for RF channel scan */
438    uint16_t           activityTh;  /*!< Percentage of time for activity detection
439                                    to select different EARFCN */
440    S32           txPowerLimit; /*! Reference Signal power for Unlicensed Cell */
441    uint8_t            numFreq;     /*!< Number of unlicensed channels */
442    uint32_t           earfcn[CTF_LTEU_MAX_EARFCN]; /*!< Unlicensed channels */
443 } CtfUnLicnsdCfgInfo;
444
445 typedef struct ctfLaaScanInd {
446    S32 status;
447    uint32_t nEarfcn;
448    uint32_t earfcn[CTF_LTEU_MAX_EARFCN];
449 } CtfLaaScanInd;
450
451 #ifdef EMTC_ENABLE
452 typedef struct ctfEmtcCElevelInfoLst {
453    uint8_t   firstPreamble;       /*!< for each CE mode, starting preamble */
454    uint8_t   lastPreamble;        /*!< for each CE mode, starting preamble */
455    uint8_t   emtcNumRepPerPreambleAtt;/*!< num of repetition per preamble attempt*/
456 }CtfEmtcCElevelInfoLst;
457 #endif
458  
459 /**
460  * @brief   Cell Configuration Information.
461  * @details This structure contains the information for setting-up
462  *          of a cell and its associated resources at PHY.
463 */
464 typedef struct ctfCellCfgInfo {
465    CmLteCellId       cellId;     /*!< Cell ID */
466    uint8_t                cellIdGrpId;/*!< Cell Identity Group ID (0..167) */
467    SpId          macSapId;   /*!< MAC SAP Id for Tfu Interface*/
468    SpId          schSapId;   /*!< Scheduler SAP Id for Tfu Interface */
469    /*ctf_x_001.main_3: Adding the remaining parameters */
470    Bool              physCellIdPres ;
471    uint8_t                physCellId; /*!< Cell ID (0..2) */
472    CtfBwCfgInfo      bwCfg;      /*!< Bandwidth configuration */
473    CtfTxSchemeCfg    txCfg;      /*!< Basic transmission scheme 
474                                       configuration [36.300, 5.1.1] */
475    CtfAntennaCfgInfo antennaCfg; /*!< Antenna configuration */
476    CtfPrachCfgInfo   prachCfg;   /*!< PRACH configuration */
477    CtfPdschCfgInfo   pdschCfg;   /*!< PDSCH configuration */
478    CtfPuschCfgInfo   puschCfg;   /*!< PUSCH configuration */
479    CtfPhichCfgInfo   phichCfg;   /*!< PHICH configuration */
480    CtfPucchCfgInfo   pucchCfg;   /*!< PUCCH configuration */
481    CtfSrsUlCfgInfo   srsUlCfg;   /*!< SRS UL configuration, setup case */
482    CtfTddSfCfgInfo   tddSfCfg;   /*!< SubFrame configuration for TDD only */
483    
484    /*ctf_x_001.main_3: Adding the remaining parameters */
485    uint16_t               syncSigPowOs;              /*!< Synchronization signal power offset */
486    Bool              syncSigPowOsPres;
487    uint16_t               cfiPowOs;                  /*!< Cfi Power Offset */
488    Bool              cfiPowOsPres;
489    uint16_t               dciPowOs;                  /*!< Dci Power Offser */
490    Bool              dciPowOsPres;
491    uint16_t               extWinMargin;              /*!< Extraction Window Marin */
492    Bool              extWinMarginPres;
493    uint16_t               pucchNoiseGamma;           /*!< PUCCH Noise Estimation Gamma*/
494    Bool              pucchNoiseGammaPres;
495    uint16_t               prachPkRatio4;             /*!< PRACH Format4 Peak Ratio */
496    Bool              prachPkRatio4Pres;
497    uint16_t               prachPkRatio0;             /*!< PRACH Format0 Peak Ratio */
498    Bool              prachPkRatio0Pres;
499    uint16_t               srsDopEstFactor;           /*!< Doppler Estimation Compensation Power */
500    Bool              srsDopEstFactorPres;
501    uint16_t               puschProbDtxAck;           /*!< Portability Dtx Ack PUSCH */
502    Bool              puschProbDtxAckPres;
503    uint16_t               pucchProbDtxAck;           /*!< Portability Dtx Ack PUCCH Format1 */
504    Bool              pucchProbDtxAckPres;
505
506    uint16_t               txAntennaPorts ;           /*!< The number of cell specific transmit antenna ports */
507    Bool              txAntennaPortsPres;
508    uint16_t               rxAntennaPorts ;           /*!< The number of cell specific receive antenna ports */
509    Bool              rxAntennaPortsPres ;
510
511    uint16_t               phySyncMode;               /*!< The method used by the PHY to signal the 1ms subframe */
512    Bool              phySyncModePres;
513    uint16_t               dataRepMode;               /*!< The data report mode for the uplink data */
514    Bool              dataRepModePres ;
515    uint16_t               rachSrRepMode;             /*!< The reporting mode for RACH.indication and SR.indcation */
516    Bool              rachSrRepModePres;
517    /* PHY configuration parameters */
518    uint16_t           opMode;
519    uint32_t           counter;
520    uint32_t           period;
521    S16           priSigPwr;
522    S16           secSigPwr;
523    uint16_t           dlEarfcn;
524    uint16_t           ulEarfcn;  
525 /*Start Fix for CR ccpu00123185 */ 
526    S16           pilotSigPwr;
527 /*End Fix for CR ccpu00123185 */
528    /* Added parameter for rgu dynamic delta*/
529    uint8_t            numDlUePerTti;
530    Bool          unLicnsdCfgPres; /*!< Flag to indicate unlicensed cell config */ 
531    CtfUnLicnsdCfgInfo lteUCfg; /*!< Unlicensed carrier config */
532 #ifdef EMTC_ENABLE
533         uint8_t                                 catMenabled;
534    uint8_t             mPdcchStart;
535    CtfEmtcCElevelInfoLst ceLevelInfo[CTF_MAX_CE_LEVEL];
536 #endif
537 } CtfCellCfgInfo;
538
539 /**
540  * @enum CtfCellStatus 
541  * This element enumerates the Cell Status for configuration at PHY.
542 */
543 typedef enum {
544    CTF_CELL_DOWN,    /*!< Cell DOWN selection */
545    CTF_CELL_UP       /*!< Cell UP selection */
546 } CtfCellStatus;
547
548 /**
549  * @brief   Cell Re-configuration Information.
550  * @details This structure contains the information for reconfiguration
551  *          of a cell and its associated resources at PHY.
552 */
553 typedef struct ctfCellRecfgInfo {
554    CtfReCfgType      ctfReCfgType ;
555    CmLteCellId       cellId;     /*!< Cell ID */
556    /*ctf_x_001.main_3: Adding the remaining parameters */
557    uint8_t                cellIdGrpId;/*!< Cell Identity Group ID (0..167) */
558    Bool              physCellIdPres ;
559    uint8_t                physCellId; /*!< Cell ID (0..2) */
560    CtfBwCfgInfo      bwCfg;      /*!< Bandwidth configuration */
561    CtfTxSchemeCfg    txCfg;      /*!< Basic transmission scheme 
562                                       configuration [36.300, 5.1.1] */
563    CtfAntennaCfgInfo antennaCfg; /*!< Antenna configuration */
564    CmLteTimingInfo   actvnTime;  /*!< Activation time, only SFN is valid */
565    CtfPrachCfgInfo   prachCfg;   /*!< PRACH configuration */
566    CtfPdschCfgInfo   pdschCfg;   /*!< PDSCH configuration */
567    CtfPuschCfgInfo   puschCfg;   /*!< PUSCH configuration */
568    CtfPhichCfgInfo   phichCfg;   /*!< PHICH configuration */
569    CtfPucchCfgInfo   pucchCfg;   /*!< PUCCH configuration */
570    CtfSrsUlCfgInfo   srsUlCfg;   /*!< SRS UL configuration, setup case */
571    CtfTddSfCfgInfo   tddSfCfg;   /*!< SubFrame configuration for TDD only */
572    /*ctf_x_001.main_3: Adding the remaining parameters */
573    uint16_t               syncSigPowOs;              /*!< Synchronization signal power offset */
574    Bool              syncSigPowOsPres;
575    uint16_t               cfiPowOs;                  /*!< Cfi Power Offset */
576    Bool              cfiPowOsPres;
577    uint16_t               dciPowOs;                  /*!< Dci Power Offser */
578    Bool              dciPowOsPres;
579    uint16_t               extWinMargin;              /*!< Extraction Window Marin */
580    Bool              extWinMarginPres;
581    uint16_t               pucchNoiseGamma;           /*!< PUCCH Noise Estimation Gamma*/
582    Bool              pucchNoiseGammaPres;
583    uint16_t               prachPkRatio4;             /*!< PRACH Format4 Peak Ratio */
584    Bool              prachPkRatio4Pres;
585    uint16_t               prachPkRatio0;             /*!< PRACH Format0 Peak Ratio */
586    Bool              prachPkRatio0Pres;
587    uint16_t               srsDopEstFactor;           /*!< Doppler Estimation Compensation Power */
588    Bool              srsDopEstFactorPres;
589    uint16_t               puschProbDtxAck;           /*!< Portability Dtx Ack PUSCH */
590    Bool              puschProbDtxAckPres;
591    uint16_t               pucchProbDtxAck;           /*!< Portability Dtx Ack PUCCH Format1 */
592    Bool              pucchProbDtxAckPres;
593
594    uint16_t               txAntennaPorts ;           /*!< The number of cell specific transmit antenna ports */
595    Bool              txAntennaPortsPres;
596    uint16_t               rxAntennaPorts ;           /*!< The number of cell specific receive antenna ports */
597    Bool              rxAntennaPortsPres ;
598
599    uint16_t               phySyncMode;               /*!< The method used by the PHY to signal the 1ms subframe */
600    Bool              phySyncModePres;
601    uint16_t               dataRepMode;               /*!< The data report mode for the uplink data */
602    Bool              dataRepModePres ;
603    uint16_t               rachSrRepMode;             /*!< The reporting mode for RACH.indication and SR.indcation */
604    Bool              rachSrRepModePres;
605 /*Start Fix for CR ccpu00123185 */ 
606    S16               pilotSigPwr;
607    S16               priSigPwr;
608    S16               secSigPwr;
609 /*End Fix for CR ccpu00123185 */ 
610    CtfCellStatus     ctfCellStatus; 
611 #ifdef ENABLE_API_LOG
612    uint8_t                enableAPILog;
613 #endif /* ENABLE_API_LOG */
614 } CtfCellRecfgInfo;
615
616 /* UE-specific/Dedicated config parameters */
617
618 /**
619  * @brief   Dedicated PDSCH Configuration.
620  * @details This structure contains the information for PDSCH configuration
621  *          specific to an UE.
622 */
623 typedef struct ctfDedPdschCfgInfo {
624    Bool              pres; /*!< Indicates the presence of PDSCH configuration info */
625    CtfPdschPaParam   pA;   /*!< Pa (in dB) */
626 } CtfDedPdschCfgInfo;
627
628 /**
629  * @brief   Dedicated PUCCH Configuration.
630  * @details This structure contains the information for setting-up/release 
631  *          PUCCH configuration specific to an UE.
632 */
633 typedef struct ctfDedPucchCfgInfo {
634    Bool              pres;             /*!< Indicates the presence of PUCCH info */
635    uint8_t                dedPucchCfgType;  /*!< Setup/Release */
636    struct pucchSetupS
637    {
638 #ifdef CTF_VER3
639       /* ctf_x_001.main_4:115549: */
640       Bool              repFactPres;   /*!< Indicates if repetition factor
641                                              is configured or not */
642 #endif /* CTF_VER3 */
643       CtfPucchRepFactor repFact;       /*!< ACK/NACK repetition factor */
644       uint16_t               n1PUCCHRep;    /*!< PUCCH resource to repeat the 
645                                             transmission of the corresponding 
646                                             ACK/NACK responce [36.213, 10.1] */
647    } pucchSetup;
648 #ifdef CTF_VER3
649    /* ctf_x_001.main_4:115549: */
650     Bool                 tddAckNackCfgPres; /*! Present flag for TDD 
651                                                 ACK/NACK config */
652     CtfTddAckNackFBMode  tddAckNackFBMode; /*!< TDD ACK/NACK Feedback Mode 
653                                                  (bundling, multiplexing) */
654 #endif /* CTF_VER3 */
655 } CtfDedPucchCfgInfo;
656
657 /**
658  * @brief   Dedicated PUSCH Configuration.
659  * @details This structure contains the information for PUCCH 
660  *          configuration specific to an UE.
661 */
662 typedef struct ctfDedPuschCfgInfo {
663    Bool     pres;             /*!< Indicates the presence of PUSCH info */
664    uint8_t       betaOffsetAckIdx; /*!< Beta offset ACK index, (0..15)
665                                    [36.213, Table 8.6.3.-1] */
666    uint8_t       betaOffsetRiIdx;  /*!< Beta offset RI index, (0..15)
667                                    [36.213, Table 8.6.3.-2] */
668    uint8_t       betaOffsetCqiIdx; /*!< Beta offset CQI index, (0..15)
669                                    [36.213, Table 8.6.3.-3] */
670 } CtfDedPuschCfgInfo;
671
672
673 /* ctf_x_001.main_2: Added pmiRiRpt and cqiMask*/
674 #ifdef CTF_VER1
675 /**
676  * @enum ctfPmiRiRptSetup
677  * This element enumerates the CQI PMI Report setup configuration at PHY.
678 */
679 typedef enum ctfPmiRiRptSetup
680 {
681    CTF_CQI_PMI_RPT_SETUP  /*!< PMI Report setup */
682 } CtfPmiRiRptSetup;
683
684 /**
685  * @struct ctfPmiRiRpt
686  * This struct contains the  CQI PMI Report setup configuration at PHY.
687 */
688 typedef struct ctfPmiRiRpt
689 {
690    Bool              pres;           /*!< Indicates presence of Pmi Ri Rpt */
691    CtfPmiRiRptSetup  pmiRiRptSetup;  /*!< PMI Report setup */
692 } CtfPmiRiRpt;
693
694 /**
695  * @enum ctfCqiMaskSetup
696  * This element enumerates the CQI reporting setup configuration at PHY.
697 */
698 typedef enum ctfCqiMaskSetup
699 {
700    CTF_CQI_RPT_SETUP  /*!< Cqi report setup */
701 } CtfCqiMaskSetup;
702
703 /**
704  * @struct ctfCqiMask
705  * This struct contains the CQI reporting setup configuration at PHY.
706 */
707 typedef struct ctfCqiMask
708 {
709    Bool             pres;     /*!< Presence field */
710    CtfCqiMaskSetup  cqiMaskSetup;  /*!< Cqi Report Setup */
711 } CtfCqiMask;
712 #endif /* CTF_VER1 */
713
714 #ifndef TFU_UPGRADE
715 /* ctf_x_001.main_2: Moved aPeriodic enum to seperate structure*/
716 #ifdef CTF_VER2
717 /* Moved aPeriodic enum to seperate structure */
718 /**
719  * @brief   APeriodic CQI Report Configuration.
720  * @details This structure contains the information for Aperiodic CQI report
721  *          related configuration specific to an UE.
722 */
723 typedef struct ctfCqiReportModeAPeriodic {
724     Bool pres;
725     CtfCqiRptModeAperiodic aPeriodicRptMode; /*!<Aperiodic CQI report*/
726 }CtfCqiRptModeAprd;
727 #endif /* CTF_VER2 */
728
729 /**
730  * @brief   Periodic CQI Report Configuration.
731  * @details This structure contains the information for periodic CQI report
732  *          related configuration specific to an UE.
733 */
734 typedef struct ctfCqiRptModePeriodic {
735 #ifdef CTF_VER2
736    Bool  pres;
737 #endif /* CTF_VER2 */
738    uint8_t    cqiPeriodicCfgType;     /*!< Configuration type: Setup/Release  */
739    struct cqiSetupS
740    {
741       uint16_t   cqiPUCCHRsrcIndx;    /*!< Range (0..1185) */
742       uint16_t   cqiPmiCfgIndx;       /*!< Range (0..1023) */
743       uint8_t    formatIndicator;     /*!< Type: Wideband/Subband */
744       struct subbandCqiS
745       {
746          uint8_t    k;                /*!< Range (1..4) */
747       } subbandCqi;              /*!< Valid only if formatIndicator is Subband */
748
749       Bool  riCfgPres;           /*!< RI Configuration index is present or absent */
750       uint16_t   riCfgIndx;           /*!< Range (0..1023) */
751       Bool  simultaneousAckNack; /*!< Simultaneous ACK/NACK with CQI support
752                                       TRUE: YES, FALSE: NO */
753 /* ctf_x_001.main_2: Added cqiMask*/
754 #ifdef CTF_VER1
755    CtfCqiMask   cqiMask;         /*!< cqi mask */
756 #endif /* CTF_VER1 */
757    } cqiSetup;                   /*!< Valid only if cqiPeriodicCfgType is Setup */
758 } CtfCqiRptModePeriodic;
759
760 /**
761  * @brief   CQI Report Configuration.
762  * @details This structure contains the information for CQI report
763  *          related configuration specific to an UE.
764 */
765 typedef struct ctfCqiReportCfgInfo {
766    Bool  pres;                /*!< Indicates the presence of this info  */
767 /* ctf_x_001.main_2: period and aperiodic rpt both can be configured simultaneously*/
768 #ifdef CTF_VER2
769    struct
770    {
771       CtfCqiRptModeAprd       aPeriodicRpt;
772       CtfCqiRptModePeriodic   periodicRpt;
773    } reportMode;
774 #else /* CTF_VER2 */
775    uint8_t    reportingMode;       /*!< Reporting mode: Periodic/Aperiodic */
776    union
777    {
778       CtfCqiRptModeAperiodic  aPeriodicRpt;
779       CtfCqiRptModePeriodic   periodicRpt;
780    } reportMode;
781 #endif /* CTF_VER2 */
782 /* ctf_x_001.main_2: Added PmiRiRpt*/
783 #ifdef CTF_VER1
784    CtfPmiRiRpt  pmiRiRpt;        /*!< Pmi Ri Report */
785 #endif /* CTF_VER1 */
786 } CtfCqiReportCfgInfo;
787
788 /**
789  * @brief   Dedicated Uplink SRS Configuration.
790  * @details This structure contains the information for setting-up/release
791  *          UL SRS configuration specific to an UE.
792 */
793 typedef struct ctfDedSrsUlCfgInfo {
794    Bool     pres;             /*!< Indicates the presence of SRS UL info */
795    uint8_t       dedSrsUlCfgType;  /*!< Setup/Release */
796    struct dedSrsSetupS
797    {
798       uint8_t       srsBw;         /*!< SRS bandwidth(0,1,2,3) */
799       uint8_t       srsHopngBw;    /*!< SRS hopping bandwidth (0,1,2,3) */
800       uint8_t       freqDmnPos;    /*!< Frequency domain position (0..23) */
801       Bool     duration;      /*!< Duration, FALSE: single, 
802                                              TRUE: indefinite */
803       uint16_t      srsCfgIdx;     /*!< SRS config index (0..1023) */
804       uint8_t       txComb;        /*!< transmission comb (0..1) */
805       uint8_t       cyclicShift;   /*!< Cyclic shift (0..7) */
806    } dedSrsSetup;
807 } CtfDedSrsUlCfgInfo;
808
809 /**
810  * @brief   Dedicated SR Configuration
811  * @details This structure contains the information for setting-up/release
812  *          SR configuration specific to an UE at PHY.
813 */
814 typedef struct ctfDedSRCfgInfo {
815    Bool     pres;          /*!< Indicates the presence of SR info */
816    uint8_t       dedSRCfgType;  /*!< Setup/Release */
817    struct dedSrSetupS
818    {
819       uint16_t      srPUCCHRi;  /*!< SR PUCCH Resource Index, n(1)PUCCH,SRI 
820                                 (0..2047) */
821       uint8_t       srCfgIdx;   /*!< SR config index, Isr (0..155) */
822    } dedSrSetup;           /*!< Valid only if dedSRCfgType is setup */
823 } CtfDedSRCfgInfo;
824 #endif /* TFU_UPGRADE */
825
826 #ifdef CTF_VER2
827 /* ctf_x_001.main_2 : Added enum for Code Book Subset Restriction */
828 /**
829  * @enum CtfCdBkSubsetRestnType
830  * This element enumerates the Code Book Subset Restriction 
831  * configuration at PHY for a UE.
832 */
833 typedef enum ctfCdBkSubsetRestnType
834 {
835    N2TX_ANT_TM3,     /*!< 2 Antenna Ports for transmissiom mode 3*/
836    N4TX_ANT_TM3,     /*!< 4 Antenna Ports for transmissiom mode 3*/
837    N2TX_ANT_TM4,     /*!< 2 Antenna Ports for transmissiom mode 4*/
838    N4TX_ANT_TM4,     /*!< 4 Antenna Ports for transmissiom mode 4*/
839    N2TX_ANT_TM5,     /*!< 2 Antenna Ports for transmissiom mode 5*/
840    N4TX_ANT_TM5,     /*!< 4 Antenna Ports for transmissiom mode 5*/
841    N2TX_ANT_TM6,     /*!< 2 Antenna Ports for transmissiom mode 6*/
842    N4TX_ANT_TM6      /*!< 4 Antenna Ports for transmissiom mode 6*/
843 }CtfCdBkSubsetRestnType;
844
845 /* nh005.201_LPR2 : Added new structure for Code Book Subset Restriction */
846 /**
847  * @struct  CtfDedAntCodeBkSubsetRes
848  * @brief Code Book Subset Restriction Configuration.
849  * @details This structure contains the information for 
850  *          codeBookSubsetRestriction  configuration specific to 
851  *          transmission mode of a UE Phy.
852 */
853 typedef struct ctfDedAntCodeBookSubsetRestn
854 {
855   CtfCdBkSubsetRestnType ctfCdBkRestType;
856   union
857   {
858       uint8_t   n2TxAntTm3;     /*!< 2 Antenna Ports for transmissiom mode 3*/
859       uint8_t   n4TxAntTm3;     /*!< 4 Antenna Ports for transmissiom mode 3*/
860       uint8_t   n2TxAntTm4;     /*!< 2 Antenna Ports for transmissiom mode 4*/
861       uint8_t   n4TxAntTm4[8];  /*!< 4 Antenna Ports for transmissiom mode 4*/
862       uint8_t   n2TxAntTm5;     /*!< 2 Antenna Ports for transmissiom mode 5*/
863       uint16_t  n4TxAntTm5;     /*!< 4 Antenna Ports for transmissiom mode 5*/
864       uint8_t   n2TxAntTm6;     /*!< 2 Antenna Ports for transmissiom mode 6*/
865       uint16_t  n4TxAntTm6;     /*!< 4 Antenna Ports for transmissiom mode 6*/
866   }codeBookSubsetRestn;
867 }CtfDedAntCodeBkSubsetRes;
868 #endif /* CTF_VER2 */
869
870 /**
871  * @brief   Dedicated Antenna Configuration.
872  * @details This structure contains the information for antenna related
873  *          configuration specific to an UE at PHY.
874 */
875 typedef struct ctfDedAntCfgInfo {
876    Bool              pres;   /*!< Indicates the presence of antenna configuration info */
877    CtfUeTxAntMode    txMode; /*!< Transmission Mode: 36.213, 7.1 */
878    struct ueTxAntSelectionS
879    {
880       uint8_t                      cfgType;       /*!< Setup/Release */
881       CtfUeTxAntSelectType    txAntSelect;   /*!< Closed/Open, valid only if
882                                                   cfgType is setup:36.213, 8.7 */
883    } ueTxAntSelection;
884 #ifdef CTF_VER2
885    /*ctf_x_001.main_2 : Added CodeBookSubsetRestriction Parameter */
886    CtfDedAntCodeBkSubsetRes codeBookSubsetRes;
887 #endif /* CTF_VER2 */
888 } CtfDedAntCfgInfo;
889
890 /**
891  * @brief   UE Category Configuration.
892  * @details This structure contains the information for configuring
893  *          the UE category at PHY.
894 */
895 typedef struct ctfUeCatCfgInfo {
896    Bool                 pres;       /*!< TRUE - indicates UE category is present */
897    CmLteUeCategory      ueCategory; /*!< UE category */
898 } CtfUeCatCfgInfo;
899
900 #ifdef TENB_AS_SECURITY
901 typedef struct ctfHdr{
902    CmLteCellId  cellId;
903    CmLteRnti   ueId;
904 }CtfHdr;
905
906 /**
907  * @brief   KeNB Information Configuration.
908  * @details This structure contains the input information for
909  *          deriving the AS security keys using HMAC-SHA256 KDF.
910 */
911 typedef struct ctfKenbCfgInfo{
912            uint8_t pres;
913            uint8_t algoType;
914            uint8_t secKey[CTF_SEC_KEY_LEN];
915 }CtfKenbCfgInfo;
916
917 #endif
918
919 /**
920  * @brief   Dedicated Configuration Information.
921  * @details This structure contains the information for configuration 
922  *          of UE-specific physical channel resources at PHY.
923 */
924 typedef struct ctfDedCfgInfo {
925    CmLteCellId          cellId;     /*!< Cell ID */
926    CmLteRnti            ueId;       /*!< UE ID */
927    CtfUeCatCfgInfo      ueCatCfg;   /*!< UE Cateogry configuration */
928    CtfDedPdschCfgInfo   pdschCfg;   /*!< PDSCH configuration */
929    CtfDedPucchCfgInfo   pucchCfg;   /*!< PUCCH configuration */
930    CtfDedPuschCfgInfo   puschCfg;   /*!< PUSCH configuration */
931 #ifndef TFU_UPGRADE
932    CtfCqiReportCfgInfo  cqiRptCfg;  /*!< CQI report configuration */
933    CtfDedSrsUlCfgInfo   srsUlCfg;   /*!< SRS UL configuration */
934    CtfDedSRCfgInfo      dedSRCfg;   /*!< SR configuration */
935 #endif /* TFU_UPGRADE */
936    CtfDedAntCfgInfo     antInfo;    /*!< Antenna configuration */
937 #ifdef EMTC_ENABLE
938    uint8_t                   isEmtcUe;   /*!< UE type is EMTC or not */
939 #endif
940 } CtfDedCfgInfo;
941
942 /** @brief Each Secondary cell configuration Info for a UE*/
943 typedef struct ctfUeSecCellCfgInfo
944 {
945   uint8_t                   sCellIdx; /*!< This will be secondary cell Idx */
946   uint16_t                  sCellId; /*!< This will be secondary cellId */
947 }CtfUeSecCellCfgInfo;
948
949 /** @brief Secondary cell action for a UE*/
950 typedef enum ctfScellAction                                           
951 {
952    CTF_SCELL_ADD,
953    CTF_SCELL_MOD_COMMON,
954    CTF_SCELL_MOD_DEDICATED,
955    CTF_SCELL_RELEASE
956 }CtfScellAction;
957
958 /** @brief Secondary Cell Configuration for a UE*/
959 typedef struct ctfSecCellCfgInfo
960 {
961   uint8_t                    numSCells;
962   CtfScellAction        sCellAction;
963   CtfUeSecCellCfgInfo   ueSCellDedCfg[CTF_MAX_SCELL_PER_UE];
964 }CtfSecCellCfgInfo;
965
966 /**
967  * @brief   Dedicated Re-configuration Information.
968  * @details This structure contains the information for re-configuration 
969  *          of UE-specific physical channel resources at PHY.
970 */
971 typedef struct ctfDedRecfgInfo {
972    CmLteCellId          cellId;     /*!< Cell ID */
973    CmLteRnti            ueId;       /*!< Old UE ID */
974    /* ctf_x_001.main_4: ReEst Fix */
975 #ifdef CTF_VER3
976    CmLteRnti            newUeId;       /*!< If ueId is not getting reconfigured,
977                                             both ueId and newUeId shell hold same
978                                             value. If ueId is getting reconfigured 
979                                             then these two value should be different
980                                             from each other */
981   #else
982      CmLteRnti            newUeId;       /*!< If ueId is not getting reconfigured,
983                                             both ueId and newUeId shell hold same
984                                             value. If ueId is getting reconfigured 
985                                             then these two value should be different
986                                             from each other */
987
988                                                                                         
989 #endif
990
991    CtfUeCatCfgInfo      ueCatCfg;   /*!< UE Cateogry configuration */
992    CtfDedPdschCfgInfo   pdschCfg;   /*!< PDSCH configuration */
993    CtfDedPucchCfgInfo   pucchCfg;   /*!< PUCCH configuration */
994    CtfDedPuschCfgInfo   puschCfg;   /*!< PUSCH configuration */
995 #ifndef TFU_UPGRADE
996    CtfDedSrsUlCfgInfo   srsUlCfg;   /*!< SRS UL configuration */
997    CtfDedSRCfgInfo      dedSRCfg;   /*!< SR configuration */
998 /*ctf_x_001.main_1*/ 
999    CtfCqiReportCfgInfo  cqiRptCfg;  /*!< CQI report configuration */
1000 #endif /* TFU_UPGRADE */
1001    CtfDedAntCfgInfo     antInfo;    /*!< Antenna configuration */
1002 /*Amit */
1003    CtfSecCellCfgInfo    sCellInfo;
1004 } CtfDedRecfgInfo;
1005
1006 /**
1007  * @brief   Cell Release Information.
1008  * @details This structure contains the information for release/removal 
1009  *          of a cell and its assocated resources at PHY.
1010 */
1011 typedef struct ctfCellReleaseInfo {
1012    CmLteCellId cellId; /*!< Cell ID */
1013 } CtfCellReleaseInfo;
1014
1015 /**
1016  * @brief   Dedicated Release Information
1017  * @details This structure contains the information for release/removal 
1018  *          of dedicated/UE-specific configuration at PHY.
1019 */
1020 typedef struct ctfDedReleaseInfo {
1021    CmLteCellId cellId;  /*!< Cell ID */
1022    CmLteRnti   ueId;    /*!< UE ID (rnti) */
1023    CtfSecCellCfgInfo    sCellInfo;
1024 } CtfDedReleaseInfo;
1025
1026 /**
1027  * @brief   Configuration Information.
1028  * @details This structure contains the information for setting-up 
1029  *          cell or UE-specific configuration at PHY.
1030 */
1031 typedef struct ctfCfgInfo {
1032    uint8_t cfgElem; /*!< Configuration element : Cell/UE */
1033    union
1034    {
1035       CtfCellCfgInfo cellCfg; /*!< Cell configuration */
1036       CtfDedCfgInfo  dedCfg;  /*!< UE configuration */
1037    } u;
1038 } CtfCfgInfo;
1039
1040 /**
1041  * @brief   Re-configuration Information.
1042  * @details This structure contains the information for re-configuring 
1043  *          cell or UE-specific configuration at PHY.
1044 */
1045 typedef struct ctfReCfgInfo {
1046    uint8_t cfgElem; /*!< Configuration element: Cell/UE */
1047    union
1048    {
1049       CtfCellRecfgInfo  cellRecfg;  /*!< Cell reconfiguration */
1050       CtfDedRecfgInfo   dedRecfg;   /*!< UE reconfiguration */
1051    } u;
1052 } CtfReCfgInfo;
1053
1054 /**
1055  * @brief   Release Configuration Information.
1056  * @details This structure contains the information for releasing 
1057  *          cell or UE-specific configuration at PHY.
1058 */
1059 typedef struct ctfReleaseInfo {
1060    uint8_t cfgElem; /*!< Configuration element : Cell/UE */
1061    union
1062    {
1063       CtfCellReleaseInfo  cellRel;  /*!< Cell release */
1064       CtfDedReleaseInfo   dedRel;   /*!< UE release */
1065    } u;
1066 } CtfReleaseInfo;
1067
1068
1069
1070 /**
1071  * @brief   Configuration Request Information.
1072  * @details This is the main structure in the configuration request primitive.
1073  *    -# This structure contains the configuration information as given by 
1074  *       the User to configure PHY layer for common/dedicated resources.
1075  *    -# It can contain Config/Reconfig/Release.
1076  *    -# The result of configuration is indicated in TfUiCtfCfgCfm. 
1077 */
1078 typedef struct ctfCfgReqInfo {
1079    uint8_t    cfgType; /*!< Configuration type: Config/Reconfig/Release */
1080    union
1081    {
1082       CtfCfgInfo     cfg;     /*!< Cell/UE Configuration information */
1083       CtfReCfgInfo   reCfg;   /*!< Cell/UE Reconfiguration information */
1084       CtfReleaseInfo release; /*!< Cell/UE Release information */
1085    } u;
1086 /* ctf_x_001.main_4: Added support for vendor specific parameters */
1087 #ifdef CTF_VER3
1088    CtfVendorSpecific  vendorParams ; /*!< Vendor Specific Parameter */ 
1089 #endif   
1090 } CtfCfgReqInfo;
1091
1092 #ifdef TENB_AS_SECURITY
1093 /********************************************************************************************************************************/
1094                               /*START OF KEY DERIVATION FUNTION (KDF) REQUEST STRUCTURES*/
1095 /********************************************************************************************************************************/
1096
1097 /*AS key generation input information structure*/
1098 typedef struct ctfAsKeyInfo{
1099            uint8_t intgAlgoType;                /*!SNOW3g or AES used in key derivation as well */
1100            uint8_t ciphAlgoType;                /*!SNOW3g or AES used in key derivation as well */
1101            uint8_t secKey[CTF_SEC_KEY_LEN]; /*!< eNodeB key received in initial context setup */
1102 }CtfAsKeyInfo;
1103
1104 /*Horizontal keNB derivation input information structure*/
1105 typedef struct ctfKenbStarInfo{
1106            uint16_t dlCarrFreq;             /*!< DL UARFCN*/ 
1107            uint16_t physCellId;             /*!< Physical cell ID*/
1108            uint8_t secKey[CTF_SEC_KEY_LEN]; /*!< Current eNodeB key at App used to derive keNB*. Horizontal KD */
1109 }CtfKenbStarInfo;
1110
1111 /*Vertical keNB derivation input information structure*/
1112 typedef struct ctfNhKeyInfo{
1113            uint16_t dlCarrFreq;             /*!< DL UARFCN*/ 
1114            uint16_t physCellId;             /*!< Physical cell ID*/
1115            uint8_t secKey[CTF_SEC_KEY_LEN]; /*!< NH key provided by MME used to derive keNB*. Vertical KD */
1116 }CtfNhKeyInfo;
1117
1118 typedef struct ctfKdfReqInfo {
1119    uint8_t    keyDerType; /*!< Keyderivation type type: for AS security keys/keNB* from keNB/keNB* from NH key */
1120    union
1121    {
1122       CtfAsKeyInfo      kEnbInf;       /*!< eNodeB key for for deriving AS security keys */
1123       CtfKenbStarInfo   kEnbStarInf;   /*!< eNodeB key for for deriving eNodeB* Key (Horizontal key derivation ref: ts 33.401) */
1124       CtfNhKeyInfo      nhKeyInf;      /*!< NH key for for deriving eNodeB* Key (Verticall key derivation ref: ts 33.401) */
1125    } u;
1126 } CtfKdfReqInfo;
1127
1128 /********************************************************************************************************************************/
1129                               /*END OF REQUEST STRUCTURES*/
1130 /********************************************************************************************************************************/
1131
1132
1133 /********************************************************************************************************************************/
1134                               /*START OF KEY DERIVATION FUNTION (KDF) CONFIRM STRUCTURES*/
1135 /********************************************************************************************************************************/
1136
1137 /*AS key generation output information structure*/
1138 typedef struct ctfAskeyCfmInfo{
1139           uint8_t intKey[CTF_SEC_KEY_LEN]; /*!< eNodeB key received in initial context setup */
1140           uint8_t upCiphKey[CTF_SEC_KEY_LEN]; /*!< eNodeB key received in initial context setup */
1141           uint8_t cpCiphKey[CTF_SEC_KEY_LEN]; /*!< eNodeB key received in initial context setup */
1142 }CtfAskeyCfmInfo;
1143
1144 /*Horizontal keNB derivation output information structure*/
1145 typedef struct ctfKenbStarCfmInfo{
1146            uint8_t secKey[CTF_SEC_KEY_LEN]; /*!< Current eNodeB key at App used to derive keNB*. Horizontal KD */
1147 }CtfKenbStarCfmInfo;
1148
1149 /*Vertical keNB derivation output information structure*/
1150 typedef struct ctfNhKeyCfmInfo{
1151            uint8_t secKey[CTF_SEC_KEY_LEN]; /*!< NH key provided by MME used to derive keNB*. Vertical KD */
1152 }CtfNhKeyCfmInfo;
1153
1154 typedef struct ctfKdfCfmInfo {
1155    uint8_t    keyDerType; /*!< Keyderivation type type: for AS security keys/keNB* from keNB/keNB* from NH key */
1156    union
1157    {
1158       CtfAskeyCfmInfo      kEnbInf;     /*!< AS security keys */
1159       CtfKenbStarCfmInfo   kEnbStarInf;  /*!< eNodeB* Key (Horizontal key derivation ref: ts 33.401) */
1160       CtfNhKeyCfmInfo      nhKeyInf;     /*!< eNodeB* Key (Verticall key derivation ref: ts 33.401) */
1161    } u;
1162 } CtfKdfCfmInfo;
1163 #endif
1164 /********************************************************************************************************************************/
1165                               /*START OF CNM REQUEST STRUCTURES*/
1166 /********************************************************************************************************************************/
1167
1168
1169 typedef struct ctfCnmVendorSpecificInfo{
1170         uint16_t        numOfVendorSpecifcParam;            /* Number of vendor specific parameters */
1171         uint32_t        vendorSpecifcParam[CTF_CNM_MAX_VENDOR_PARAMS]; /*List of vendor specific parameters */
1172 }CtfCnmVendorSpecificInfo;
1173
1174
1175
1176 typedef struct ctfCnmCellSyncReq {
1177         uint16_t                      nbrEarfcn;            /*earfcn of the neighbour to be synced with*/                               
1178         uint16_t                      nbrPCellId;           /*PCI of the neighbour to be synced with*/                          
1179         uint8_t                       nbrTxAntCount;        /*Number of Anttennas of the neighbour to be synced with
1180                                                          Possible values 1,2,4 */                               
1181     uint8_t                       nbrCellCp;            /* Cyclic perifx type of the neighbout cell 
1182                                                         * 0 : Normal Cp, 1:Extended Cp */
1183     uint8_t                       nbrCellNRb;           /* Number of Resource blocks of the neighbour cell 
1184                                                         * possible values 6,15,25,50,75,100 */
1185     uint8_t                       nbrSpecSfCfg;         /* Special Subframe configuraiton value of the neighbour cell */        
1186     CtfCnmVendorSpecificInfo ctfCnmVendorSpecificInfo;
1187 }CtfCnmCellSyncReq;
1188
1189
1190 typedef struct ctfCnmInitSyncReq {
1191         uint8_t                   searchType;           /*0: search for all cells.
1192                                                      *1: search for strongest cell. 
1193                                                                                                  *2: Search for specific cell. */
1194         uint8_t                    mibRequest;           /*Flag to indicate if MIB information 
1195                                                                         of the searched cell should be 
1196                                                                         indicated in cell search response message.*/
1197         uint16_t                   earfcn;               /*earfcn to the searched for */                                
1198         uint8_t                    measBandWidth;        /*Number of Rb */                                       
1199         uint16_t                   numOfPciList;         /*Number of Pci to be searched for */
1200         CtfCnmCellSyncReq     pciList[CTF_CNM_MAX_CELL_SEARCH];
1201 }CtfCnmInitSyncReq;
1202 /********************************************************************************************************************************/
1203                               /*END OF REQUEST STRUCTURES*/
1204 /********************************************************************************************************************************/
1205 /********************************************************************************************************************************/
1206                               /*START OF CNM CONFIRM STRUCTURES*/
1207 /********************************************************************************************************************************/
1208
1209 typedef struct ctfCnmMibInfo {
1210         uint16_t      sfn;               /* The radio frame the data was received on */
1211         uint8_t       numTxAntennas;     /* Number of TX antennas of the cell */
1212         uint8_t       phichDuration;     /* The PHICH duration of the cell 0-Normal 1-Extended*/
1213         uint8_t       phichResource;     /* 0=1/6, 1=1/2 , 2=1 ,3=2 */ 
1214         uint8_t       dlSystemBandWidht; /*Possible values 6,15,25,50,75,100 */
1215
1216 }CtfCnmMibInfo;
1217
1218
1219 typedef struct ctfCnmInitSyncInfo {
1220         uint16_t           pci;          /* Physical cell Id of the Cell */
1221         uint8_t            rsrp;         /* RSRP of the measured cell */
1222         uint8_t            mibValidFlag; /* 1=MIB present 0=MIB not present */
1223         uint16_t           localSfn;     /* The radio frame data was received on the local cell */
1224         CtfCnmMibInfo ctfCnmMibInfo;/* MIB information */
1225     CtfCnmVendorSpecificInfo ctfCnmVendorSpecificInfo;
1226 }CtfCnmInitSyncInfo;
1227
1228
1229 typedef struct ctfCnmInitSyncRsp {
1230         uint8_t                 status;             /*RFAILURE or ROK */
1231         uint16_t                earfcn;             /*Frequency channel of the searched cell */
1232         uint8_t                 numOfNeighbourInfo; /* number of neighboure Cell search Info */
1233         CtfCnmInitSyncInfo ctfCnmInitSyncInfo[CTF_CNM_MAX_CELL_SEARCH];
1234 }CtfCnmInitSyncRsp;
1235
1236 typedef struct ctfCnmCellSyncRsp {
1237         uint8_t                 status;             /*RFAILURE or ROK */
1238 }CtfCnmCellSyncRsp;
1239
1240 typedef struct ctfCnmCellSyncInd {
1241         uint8_t                 status;             /*RFAILURE or ROK */
1242     CtfCnmVendorSpecificInfo ctfCnmVendorSpecificInfo;
1243 }CtfCnmCellSyncInd;
1244
1245 /* Periodic REM for TPM */
1246 typedef struct ctfPeriodicRemCellInfo {
1247    uint16_t                     pci;
1248    uint8_t                      rsrp;
1249    uint8_t                      dlBw;
1250    uint8_t                      numTx;
1251 }CtfPeriodicRemCellInfo;
1252
1253 typedef struct ctfPeriodicRemCellSearchRsp {
1254    uint8_t    numCells;       /* Number of Cells */
1255    CtfPeriodicRemCellInfo   cellInfo[CTF_REM_MAX_CELL_SEARCH];
1256 }CtfPeriodicRemCellSearchRsp;
1257 /* Periodic REM for TPM End */
1258
1259 /********************************************************************************************************************************/
1260                               /*END OF CNM CONFIRM STRUCTURES*/
1261 /********************************************************************************************************************************/
1262 /* 
1263  * Function Prototypes 
1264 */
1265 /* Request from User to PHY to bind the CTF interface SAP. */
1266 typedef S16 (*CtfBndReq) ARGS((
1267    Pst*                 pst,
1268    SuId                 suId,
1269    SpId                 spId));
1270
1271 /* Confirmation from PHY to User for the bind request of the CTF interface SAP.
1272 */
1273 typedef S16 (*CtfBndCfm) ARGS((
1274    Pst*                 pst,
1275    SuId                 suId,
1276    uint8_t                   status));
1277
1278 /* Request from User to PHY to Unbind the CTF interface SAP. */
1279 typedef S16 (*CtfUbndReq) ARGS((
1280    Pst*                 pst,
1281    SpId                 spId,
1282    Reason               reason));
1283
1284 /* Configuration Request from User to PHY for cell or dedicated configuration. 
1285 */
1286 typedef S16 (*CtfCfgReq) ARGS((
1287    Pst*                 pst,
1288    SpId                 spId,
1289    CtfCfgTransId        transId,
1290    CtfCfgReqInfo*       cfgReqInfo));
1291
1292 /* Configuration Confirm from PHY to User. */
1293 typedef S16 (*CtfCfgCfm) ARGS((
1294    Pst*                 pst,
1295    SuId                 suId,
1296    CtfCfgTransId        transId,
1297    uint8_t                   status));
1298
1299 /* EnodeB stop indication from PHY to User. */
1300 typedef S16 (*CtfEnbStopInd) ARGS((
1301    Pst*                 pst,
1302    SuId                 suId,
1303    CtfCfgTransId        transId));
1304
1305 #ifdef TENB_AS_SECURITY
1306 typedef S16 (*CtfKdfReq) ARGS((
1307    Pst*                 pst,
1308    SpId                 spId,
1309    CtfCfgTransId        transId,
1310    CtfKdfReqInfo*       cfgReqInfo));
1311
1312 /* Configuration Confirm from PHY to User. */
1313 typedef S16 (*CtfKdfCfm) ARGS((
1314    Pst*                 pst,
1315    SuId                 suId,
1316    CtfCfgTransId        transId,
1317    CtfKdfCfmInfo*       kdfCfmInfo,
1318    uint8_t                   status));
1319 #endif
1320 /* CNM start */
1321 typedef S16 (*CtfCnmInitSyncReqMsg) ARGS((
1322    Pst*                 pst,
1323    SpId                 spId,
1324    CtfCfgTransId*        transId,
1325    CtfCnmInitSyncReq*    cnmInitSyncReq));
1326
1327 typedef S16 (*CtfCnmInitSyncRspMsg) ARGS((
1328    Pst*                 pst,
1329    SpId                 spId,
1330    CtfCfgTransId*       transId,
1331    CtfCnmInitSyncRsp*   cnmInitSyncRsp));
1332
1333 typedef S16 (*CtfCnmCellSyncReqMsg) ARGS((
1334    Pst*                 pst,
1335    SpId                 spId,
1336    CtfCfgTransId*        transId,
1337    CtfCnmCellSyncReq*   cnmCellSyncReq));
1338
1339 typedef S16 (*CtfCnmCellSyncRspMsg) ARGS((
1340    Pst*                 pst,
1341    SpId                 spId,
1342    CtfCfgTransId*       transId,
1343    CtfCnmCellSyncRsp*   cnmCellSyncRsp));
1344
1345 typedef S16 (*CtfCnmCellSyncIndMsg) ARGS((
1346    Pst*                 pst,
1347    SpId                 spId,
1348    CtfCfgTransId*       transId,
1349    CtfCnmCellSyncInd*   cnmCellSyncInd));
1350
1351 /*CNM end */
1352
1353 /* UE ID Change Request from User to PHY. */
1354 typedef S16 (*CtfUeIdChgReq) ARGS((
1355    Pst*                 pst,
1356    SpId                 spId,
1357    CtfCfgTransId        transId,
1358    CtfUeInfo *          ueInfo,
1359    CtfUeInfo *          newUeInfo));
1360
1361 /* UE ID Change Confirm from PHY to User. */
1362 typedef S16 (*CtfUeIdChgCfm) ARGS((
1363    Pst*                 pst,
1364    SuId                 suId,
1365    CtfCfgTransId        transId,
1366    CtfUeInfo *          ueInfo,
1367    CmStatus             status));
1368
1369 /** 
1370  * @brief Bind Request from PHY User to bind the CTF interface SAP.
1371  *
1372  * @details This primitiveis used to bind a user to the CTF interface.
1373  *          -# PHY layer registers this user, allocates a Service Access Point
1374  *          for this bind and records the identity of the service user.
1375  *          -# PHY issues a @ref TfUiCtfBndCfm to the service user after
1376  *          completing a successful bind.
1377  *
1378  * @param[in] pst  Pointer to the post structure. SSI uses pst for loosely 
1379  *                 coupled intertask communication.
1380  * @param[in] suId The service user SAP ID. The service user uses this
1381  *                 reference number to identify a SAP. The service user provides
1382  *                 this ID and the service provider retains it. The service 
1383  *                 provider provides this reference number in any further 
1384  *                 primitives that the service provider sends to the service 
1385  *                 user.
1386  * @param[in] spId The service provider SAP ID. The service provider uses this
1387  *                 reference number to identify its SAP. The service user 
1388  *                 provides this reference number in any further primitives 
1389  *                 that the service user sends to the service provider.
1390  *
1391  * @return S16
1392  *  -# ROK on success
1393  *  -# RFAILED on failure
1394  *
1395 */
1396 S16 TfUiCtfBndReq ARGS((
1397    Pst*                 pst,
1398    SuId                 suId,
1399    SpId                 spId
1400 ));
1401
1402 /** 
1403  * @brief Bind Confirm from PHY to User.
1404  *
1405  * @details This primitive is used to report the status of processing a bind 
1406  *          request. If the service user does not receive a bind confirm 
1407  *          primitive, it must stop trying to bind after a limited number of 
1408  *          retries. The service provider must send a bind confirm upon 
1409  *          receiving a bind request primitive from the service user. These 
1410  *          status values are requested:
1411  *          - CM_BND_OK: This status is reported when the bind request is 
1412  *                       successful.
1413  *          - CM_BND_NOK: This status is reported when the bind request is unsuccessful.
1414  *
1415  * @param[in] pst  Pointer to the post structure. SSI uses pst for loosely 
1416  *                 coupled intertask communication.
1417  * @param[in] suId The service user SAP ID. The service user uses this 
1418  *                 reference number to identify its lower control block.
1419  * @param[in] status The allowed values of status are:
1420  *                   CM_BND_OK   1
1421  *                   CM_BND_NOK  2
1422  *
1423  * @return S16
1424  * -# ROK 
1425  * -# RFAILED 
1426  *
1427 */
1428 S16 TfUiCtfBndCfm ARGS((
1429    Pst*                 pst,
1430    SuId                 suId,
1431    uint8_t                   status
1432 ));
1433
1434 /** 
1435  * @brief Unbind Request from PHY user.
1436  *
1437  * @details This primitive is used to unbind the user SAP. The SAP is not
1438  *          deallocated and hence a new bind request can be issued on this SAP
1439  *          (without reconfiguring the SAP in PHY).
1440  *
1441  * @param[in] pst Pointer to the post structure. SSI uses pst for loosely 
1442  *                coupled inter-task communication.
1443  * @param[in] spId The service provider SAP ID. The service provider uses this
1444  *                 this reference number to idenitfy the SAP.
1445  * @param[in] reason Defines the reason for the unbind.
1446  *
1447  * @return S16
1448  * -# ROK
1449  * -# RFAILED
1450  *
1451 */
1452 S16 TfUiCtfUbndReq ARGS((
1453    Pst*                 pst,
1454    SpId                 spId,
1455    Reason               reason
1456 ));
1457
1458 /** 
1459  * @brief Configuration Request from User.
1460  *
1461  * @details This primitive is used by User for the following at PHY:
1462  *          - Configure cell-related parameters.
1463  *          - Reconfigure cell-related parameters.
1464  *          - Release a cell context.
1465  *          - Configure UE-specific information.
1466  *          - Reconfigure UE-specific information.
1467  *          - Release UE-specific configuration.
1468  * The cell-specific configuration is identified using a cell identifier.
1469  * The UE-specific configuration is identified using a cell identifier and 
1470  * an UE identifier.
1471  * The configuration request primitive is assocated with a transaction 
1472  * identifier to correlate the configuration confirm returned by PHY.
1473  *
1474  * @param[in] pst Pointer to the service user task configuration structure.
1475  * @param[in] spId The service provider SAP ID.
1476  * @param[in] transId The transaction identifier.
1477  * @param[in] cfgReqInfo Pointer to the PHY(Cell/UE) configuration information.
1478  *
1479  * @return S16
1480  *  -# ROK
1481  *  -# RFAILED
1482  *
1483 */
1484 S16 TfUiCtfCfgReq ARGS((
1485    Pst*                 pst,
1486    SpId                 spId,
1487    CtfCfgTransId        transId,
1488    CtfCfgReqInfo*       cfgReqInfo
1489 ));
1490
1491 /** 
1492  * @brief Configuration Confirm from PHY to user.
1493  *
1494  * @details This primitive is used to indicate to the service user the status of
1495  *          configuration done at PHY as a response to configuration request.
1496  *          The status field in this primitive carries the status of processing
1497  *          this primitive at PHY. A configuration is treated as success, only 
1498  *          if it is successful at PHY. The primitive is associated with a 
1499  *          transaction identifier that is received in the request.
1500  *
1501  * @param[in] pst Pointer to the post structure. SSI uses pst for loosely coupled
1502  *                inter-task communication.
1503  * @param[in] suId    The service user SAP ID.
1504  * @param[in] transId The transaction identifier associated with the 
1505  *                    configuration request.
1506  * @param[in] status The status of the configuration request processing at PHY.
1507  *                   -# CTF_CFG_CFM_OK 1
1508  *                   -# CTF_CFG_CFM_NOK 2
1509  *
1510  * @return S16
1511  *    -# ROK
1512  *    -# RFAILED
1513  *
1514 */
1515 S16 TfUiCtfCfgCfm ARGS((
1516    Pst*                 pst,
1517    SuId                 suId,
1518    CtfCfgTransId        transId,
1519    uint8_t                   status
1520 ));
1521
1522 /** 
1523  * @brief Configuration Request from User.
1524  *
1525  * @details This primitive is used by User for the following at PHY:
1526  * The cell-specific configuration is identified using a cell identifier.
1527  * The UE-specific configuration is identified using a cell identifier and 
1528  * an UE identifier.
1529  * The configuration request primitive is assocated with a transaction 
1530  * identifier to correlate the configuration confirm returned by PHY.
1531  *
1532  * @param[in] pst Pointer to the service user task configuration structure.
1533  * @param[in] spId The service provider SAP ID.
1534  * @param[in] transId The transaction identifier.
1535  * @param[in] cfgReqInfo Pointer to the PHY(Cell/UE) configuration information.
1536  *
1537  * @return S16
1538  *  -# ROK
1539  *  -# RFAILED
1540  *
1541 */
1542 S16 TfUiCtfCnmCellSyncReq ARGS((
1543    Pst*                 pst,
1544    SpId                 spId,
1545    CtfCfgTransId *      transId,
1546    CtfCnmCellSyncReq*   cfgReq
1547 ));
1548
1549 /** 
1550  * @brief Configuration Confirm from PHY to user.
1551  *
1552  * @details This primitive is used to indicate to the service user the status of
1553  *          configuration done at PHY as a response to configuration request.
1554  *          The status field in this primitive carries the status of processing
1555  *          this primitive at PHY. A configuration is treated as success, only 
1556  *          if it is successful at PHY. The primitive is associated with a 
1557  *          transaction identifier that is received in the request.
1558  *
1559  * @param[in] pst Pointer to the post structure. SSI uses pst for loosely coupled
1560  *                inter-task communication.
1561  * @param[in] suId    The service user SAP ID.
1562  * @param[in] transId The transaction identifier associated with the 
1563  *                    configuration request.
1564  * @param[in] status The status of the configuration request processing at PHY.
1565  *                   -# CTF_CFG_CFM_OK 1
1566  *                   -# CTF_CFG_CFM_NOK 2
1567  *
1568  * @return S16
1569  *    -# ROK
1570  *    -# RFAILED
1571  *
1572 */
1573 S16 TfUiCtfCnmCellSyncRsp ARGS((
1574    Pst*                 pst,
1575    SuId                 suId,
1576    CtfCfgTransId  *     transId,
1577    CtfCnmCellSyncRsp *  cnmCellSyncRsp
1578 ));
1579
1580 /** 
1581  * @brief Configuration Request from User.
1582  *
1583  * @details This primitive is used by User for the following at PHY:
1584  * The cell-specific configuration is identified using a cell identifier.
1585  * The UE-specific configuration is identified using a cell identifier and 
1586  * an UE identifier.
1587  * The configuration request primitive is assocated with a transaction 
1588  * identifier to correlate the configuration confirm returned by PHY.
1589  *
1590  * @param[in] pst Pointer to the service user task configuration structure.
1591  * @param[in] spId The service provider SAP ID.
1592  * @param[in] transId The transaction identifier.
1593  * @param[in] cfgReqInfo Pointer to the PHY(Cell/UE) configuration information.
1594  *
1595  * @return S16
1596  *  -# ROK
1597  *  -# RFAILED
1598  *
1599 */
1600 S16 TfUiCtfCnmInitSyncReq ARGS((
1601    Pst*                 pst,
1602    SpId                 spId,
1603    CtfCfgTransId *      transId,
1604    CtfCnmInitSyncReq*   cfgReq
1605 ));
1606
1607 /** 
1608  * @brief Configuration Confirm from PHY to user.
1609  *
1610  * @details This primitive is used to indicate to the service user the status of
1611  *          configuration done at PHY as a response to configuration request.
1612  *          The status field in this primitive carries the status of processing
1613  *          this primitive at PHY. A configuration is treated as success, only 
1614  *          if it is successful at PHY. The primitive is associated with a 
1615  *          transaction identifier that is received in the request.
1616  *
1617  * @param[in] pst Pointer to the post structure. SSI uses pst for loosely coupled
1618  *                inter-task communication.
1619  * @param[in] suId    The service user SAP ID.
1620  * @param[in] transId The transaction identifier associated with the 
1621  *                    configuration request.
1622  * @param[in] status The status of the configuration request processing at PHY.
1623  *                   -# CTF_CFG_CFM_OK 1
1624  *                   -# CTF_CFG_CFM_NOK 2
1625  *
1626  * @return S16
1627  *    -# ROK
1628  *    -# RFAILED
1629  *
1630 */
1631 S16 TfUiCtfCnmInitSyncRsp ARGS((
1632    Pst*                 pst,
1633    SuId                 suId,
1634    CtfCfgTransId  *     transId,
1635    CtfCnmInitSyncRsp *  cnmInitSyncRsp
1636 ));
1637
1638 /** 
1639  * @brief Configuration Confirm from PHY to user.
1640  *
1641  * @details This primitive is used to indicate to the service user the status of
1642  *          configuration done at PHY as a response to configuration request.
1643  *          The status field in this primitive carries the status of processing
1644  *          this primitive at PHY. A configuration is treated as success, only 
1645  *          if it is successful at PHY. The primitive is associated with a 
1646  *          transaction identifier that is received in the request.
1647  *
1648  * @param[in] pst Pointer to the post structure. SSI uses pst for loosely coupled
1649  *                inter-task communication.
1650  * @param[in] suId    The service user SAP ID.
1651  * @param[in] transId The transaction identifier associated with the 
1652  *                    configuration request.
1653  * @param[in] status The status of the configuration request processing at PHY.
1654  *                   -# CTF_CFG_CFM_OK 1
1655  *                   -# CTF_CFG_CFM_NOK 2
1656  *
1657  * @return S16
1658  *    -# ROK
1659  *    -# RFAILED
1660  *
1661 */
1662 S16 TfUiCtfCnmCellSyncInd ARGS((
1663    Pst*                 pst,
1664    SuId                 suId,
1665    CtfCfgTransId  *     transId,
1666    CtfCnmCellSyncInd *  cnmCellSyncInd
1667 ));
1668
1669 /** 
1670  * @brief UE ID Change Request from User to PHY.
1671  *
1672  * @details This primitive is used by User for reconfiguring the C-RNTI
1673  *          at PHY of an UE.
1674  *
1675  * @param[in] pst Pointer to the service user task configuration structure.
1676  * @param[in] spId The service provider SAP ID.
1677  * @param[in] transId The transaction identifier.
1678  * @param[in] ueInfo UE ID (C-RNTI) of the UE.
1679  * @param[in] newUeInfo New UE ID (C-RNTI) for the UE denoted by ueInfo.
1680  *
1681  * @return S16
1682  *  -# ROK
1683  *  -# RFAILED
1684  *
1685 */
1686 S16 TfUiCtfUeIdChgReq ARGS((
1687    Pst*                 pst,
1688    SpId                 spId,
1689    CtfCfgTransId        transId,
1690    CtfUeInfo *          ueInfo,
1691    CtfUeInfo *          newUeInfo
1692 ));
1693
1694 /** 
1695  * @brief UE ID Change Confirm from PHY to user.
1696  *
1697  * @details This primitive is used to indicate to the service user the status of
1698  *          configuration done at PHY as a response to configuration request.
1699  *          The status field in this primitive carries the status of processing
1700  *          this primitive at PHY. A configuration is treated as success, only 
1701  *          if it is successful at PHY. The primitive is associated with a 
1702  *          transaction identifier that is received in the request.
1703  *
1704  * @param[in] pst Pointer to the post structure. SSI uses pst for loosely coupled
1705  *                inter-task communication.
1706  * @param[in] suId    The service user SAP ID.
1707  * @param[in] transId The transaction identifier associated with the configuration
1708  *                    request.
1709  * @param[in] status The status of the configuration request processging at PHY.
1710  *                   -# CTF_CFG_CFM_OK 1
1711  *                   -# CTF_CFG_CFM_NOK 2
1712  *
1713  * @return S16
1714  *    -# ROK
1715  *    -# RFAILED
1716  *
1717 */
1718 /** UE ID Change Confirm from PHY to User. */
1719 S16 TfUiCtfUeIdChgCfm ARGS((
1720    Pst*                 pst,
1721    SuId                 suId,
1722    CtfCfgTransId        transId,
1723    CtfUeInfo *          ueInfo,
1724    CmStatus             status
1725 ));
1726
1727
1728 #ifdef NH
1729 /* Request from User to PHY to Bind the CTF interface SAPs. */
1730 S16 NhLiCtfBndReq ARGS((
1731    Pst*                 pst,
1732    SuId                 suId,
1733    SpId                 spId
1734 ));
1735 /* Confirmation from PHY to User for the Bind/Unbind 
1736  * Request for the CTF interface SAP. */
1737 S16 NhLiCtfBndCfm ARGS((
1738    Pst*                 pst,
1739    SuId                 suId,
1740    uint8_t                   status
1741 ));
1742 /* Request from User to PHY to Unbind the CTF interface SAP. */
1743 S16 NhLiCtfUbndReq ARGS((
1744    Pst*                 pst,
1745    SpId                 spId,
1746    Reason               reason
1747 ));
1748 /* Configuration Request from User to PHY for 
1749  * cell or dedicated configuration. */
1750 S16 NhLiCtfCfgReq ARGS((
1751    Pst*                 pst,
1752    SpId                 spId,
1753    CtfCfgTransId        transId,
1754    CtfCfgReqInfo*       cfgReqInfo
1755 ));
1756 /* Configuration Confirm from PHY to User. */
1757 S16 NhLiCtfCfgCfm ARGS((
1758    Pst*                 pst,
1759    SuId                 suId,
1760    CtfCfgTransId        transId,
1761    uint8_t                   status 
1762 ));
1763 /** UE ID Change Request from User to PHY. */
1764 S16 NhLiCtfUeIdChgReq ARGS((
1765    Pst*                 pst,
1766    SpId                 spId,
1767    CtfCfgTransId        transId,
1768    CtfUeInfo *          ueInfo,
1769    CtfUeInfo *          newUeInfo
1770 ));
1771 /** UE ID Change Confirm from PHY to user. */
1772 S16 NhLiCtfUeIdChgCfm ARGS((
1773    Pst*                 pst,
1774    SuId                 suId,
1775    CtfCfgTransId        transId,
1776    CtfUeInfo *          ueInfo,
1777    CmStatus             status
1778 ));
1779 #endif /* NH */
1780
1781 #ifdef LCCTF
1782 /* Request from User to PHY to Bind the CTF interface SAP. */
1783 S16 cmPkCtfBndReq ARGS((
1784    Pst*                 pst,
1785    SuId                 suId,
1786    SpId                 spId
1787 ));
1788 /* Request from User to PHY to Bind the CTF interface SAP. */
1789 S16 cmUnpkCtfBndReq ARGS((
1790    CtfBndReq            func,
1791    Pst*                 pst,
1792    Buffer               *mBuf
1793 ));
1794 /* Confirmation from PHY to user for the Bind/Unbind 
1795  * Request for the CTF interface SAP.
1796 */
1797 S16 cmPkCtfBndCfm ARGS((
1798    Pst*                 pst,
1799    SuId                 suId,
1800    uint8_t                   status
1801 ));
1802 /* Confirmation from PHY to User for the Bind/Unbind 
1803  * Request for the CTF interface SAP.
1804 */
1805 S16 cmUnpkCtfBndCfm ARGS((
1806    CtfBndCfm            func,
1807    Pst*                 pst,
1808    Buffer               *mBuf
1809 ));
1810 /* Request from User to PHY to Unbind the CTF interface SAP. */
1811 S16 cmPkCtfUbndReq ARGS((
1812    Pst*                 pst,
1813    SpId                 spId,
1814    Reason               reason
1815 ));
1816 /* Request from User to PHY to Unbind the interface SAPs. */
1817 S16 cmUnpkCtfUbndReq ARGS((
1818    CtfUbndReq           func,
1819    Pst*                 pst,
1820    Buffer               *mBuf
1821 ));
1822 /* Configuration Request from User to PHY for 
1823  * cell or dedicated configuration. 
1824 */
1825 /* Cnm Start */
1826 S16 cmPkCtfCnmCellSyncReq ARGS((
1827    Pst*                 pst,
1828    SpId                 spId,
1829    CtfCfgTransId  *     transId,
1830    CtfCnmCellSyncReq *  ctfCnmCellSyncreq 
1831 ));
1832
1833 S16 cmUnpkCnmCellSyncReq ARGS((
1834    CtfCnmCellSyncReqMsg func,
1835    Pst*                 pst,
1836    Buffer               *mBuf
1837 ));
1838
1839 S16 cmPkCtfCnmCellSyncRsp ARGS((
1840    Pst*                 pst,
1841    SpId                 spId,
1842    CtfCfgTransId  *     transId,
1843    CtfCnmCellSyncRsp *  ctfCnmCellSyncrsp 
1844 ));
1845
1846 S16 cmUnpkCnmCellSyncRsp ARGS((
1847    CtfCnmCellSyncRspMsg func,
1848    Pst*                 pst,
1849    Buffer               *mBuf
1850 ));
1851
1852
1853 S16 cmPkCtfCnmCellSyncInd ARGS((
1854    Pst*                 pst,
1855    SpId                 spId,
1856    CtfCfgTransId  *     transId,
1857    CtfCnmCellSyncInd *  ctfCnmCellSyncind
1858 ));
1859
1860 S16 cmUnpkCnmCellSyncInd ARGS((
1861    CtfCnmCellSyncIndMsg func,
1862    Pst*                 pst,
1863    Buffer               *mBuf
1864 ));
1865
1866 S16 cmPkCtfCnmInitSyncReq ARGS((
1867    Pst*                 pst,
1868    SpId                 spId,
1869    CtfCfgTransId  *     transId,
1870    CtfCnmInitSyncReq *  ctfCnmInitSyncreq
1871 ));
1872 S16 cmUnpkCnmInitSyncReq ARGS((
1873    CtfCnmInitSyncReqMsg func,
1874    Pst*                 pst,
1875    Buffer               *mBuf
1876 ));
1877
1878 S16 cmPkCtfCnmInitSyncRsp ARGS((
1879    Pst*                 pst,
1880    SpId                 spId,
1881    CtfCfgTransId  *     transId,
1882    CtfCnmInitSyncRsp *  ctfCnmInitSyncrsp
1883 ));
1884
1885 S16 cmUnpkCnmInitSyncRsp ARGS((
1886    CtfCnmInitSyncRspMsg func,
1887    Pst*                 pst,
1888    Buffer               *mBuf
1889 ));
1890
1891
1892 /* Cnm End */
1893 #ifdef TENB_AS_SECURITY
1894 S16 cmPkCtfKdfReq ARGS((
1895    Pst*                 pst,
1896    SpId                 spId,
1897    CtfCfgTransId        transId,
1898    CtfKdfReqInfo  *     kdfReqInfo
1899 ));
1900 /* Configuration Request from User to PHY for 
1901  * cell or dedicated configuration.
1902 */
1903 S16 cmUnpkCtfKdfReq ARGS((
1904    CtfKdfReq            func,
1905    Pst*                 pst,
1906    Buffer               *mBuf
1907 ));
1908 /* Configuration Confirm from PHY to User. */
1909 S16 cmPkCtfkdfCfm ARGS((
1910    Pst*                 pst,
1911    SuId                 suId,
1912    CtfCfgTransId        transId,
1913    CtfKdfCfmInfo        *kdfCfmInfo,
1914    uint8_t                   status
1915 ));
1916 /* Configuration Confirm from PHY to User. */
1917 S16 cmUnpkCtfKdfCfm ARGS((
1918    CtfKdfCfm            func,
1919    Pst*                 pst,
1920    Buffer               *mBuf
1921 ));
1922
1923 #endif
1924 S16 cmPkCtfCfgReq ARGS((
1925    Pst*                 pst,
1926    SpId                 spId,
1927    CtfCfgTransId        transId,
1928    CtfCfgReqInfo  *     cfgReqInfo
1929 ));
1930 /* Configuration Request from User to PHY for 
1931  * cell or dedicated configuration.
1932 */
1933 S16 cmUnpkCtfCfgReq ARGS((
1934    CtfCfgReq            func,
1935    Pst*                 pst,
1936    Buffer               *mBuf
1937 ));
1938 /* Configuration Confirm from PHY to User. */
1939 S16 cmPkCtfCfgCfm ARGS((
1940    Pst*                 pst,
1941    SuId                 suId,
1942    CtfCfgTransId        transId,
1943    uint8_t                   status
1944 ));
1945 /* ENB-STOP Indication from PHY to User. */
1946 S16 cmPkCtfEnbStopInd ARGS((
1947    Pst*                 pst,
1948    SuId                 suId,
1949    CtfCfgTransId        transId
1950 ));
1951 /* Configuration Confirm from PHY to User. */
1952 S16 cmUnpkCtfCfgCfm ARGS((
1953    CtfCfgCfm            func,
1954    Pst*                 pst,
1955    Buffer               *mBuf
1956 ));
1957 /* unpack ENB-STOP Indication from PHY to User. */
1958 S16 cmUnpkCtfEnbStopInd ARGS((
1959    CtfEnbStopInd        func,
1960    Pst*                 pst,
1961    Buffer               *mBuf
1962 ));
1963 /** UE ID Change Request from User to PHY. */
1964 S16 cmPkCtfUeIdChgReq ARGS((
1965    Pst*                 pst,
1966    SpId                 spId,
1967    CtfCfgTransId        transId,
1968    CtfUeInfo *          ueInfo,
1969    CtfUeInfo *          newUeInfo
1970 ));
1971 /** UE ID Change Request from User to PHY. */
1972 S16 cmUnpkCtfUeIdChgReq ARGS((
1973    CtfUeIdChgReq        func,
1974    Pst*                 pst,
1975    Buffer               *mBuf
1976 ));
1977 /** UE ID Change Confirm from PHY to User. */
1978 S16 cmPkCtfUeIdChgCfm ARGS((
1979    Pst*                 pst,
1980    SuId                 suId,
1981    CtfCfgTransId        transId,
1982    CtfUeInfo *          ueInfo,
1983    CmStatus             status
1984 ));
1985 /** UE ID Change Confirm from PHY to User. */
1986 S16 cmUnpkCtfUeIdChgCfm ARGS((
1987    CtfUeIdChgCfm        func,
1988    Pst*                 pst,
1989    Buffer               *mBuf
1990 ));
1991
1992 /* Periodic REM Scan changes */
1993
1994 typedef S16 (*CtfPerRemCellSrchRsp) ARGS((
1995    Pst*                          pst,
1996    SpId                          spId,
1997    CtfCfgTransId*                transId,
1998    CtfPeriodicRemCellSearchRsp*  sniffCellRsp));
1999
2000 S16 cmUnpkPerRemCellSrchRsp ARGS ((
2001    CtfPerRemCellSrchRsp  func,
2002    Pst*                  pst,
2003    Buffer                *mBuf
2004 ));
2005
2006 S16 cmUnpkCtfPerRemCellSrch ARGS ((
2007 CtfPeriodicRemCellSearchRsp *param,
2008 Buffer *mBuf
2009 ));
2010
2011 S16 cmUnpkCtfPerRemScanCellInfo ARGS ((
2012 CtfPeriodicRemCellInfo *param,
2013 Buffer *mBuf
2014 ));
2015
2016 S16 cmPkCtfPeriodicCellSearchRsp ARGS ((
2017 CtfPeriodicRemCellSearchRsp *param,
2018 Buffer *mBuf
2019 ));
2020
2021 S16 cmPkCtfPeriodicRemCellSearchRsp ARGS ((
2022 Pst* pst,
2023 SpId spId,
2024 CtfCfgTransId *transId,
2025 CtfPeriodicRemCellSearchRsp *CellCfgRsp
2026 ));
2027
2028 S16 cmPkPerRemScanCellInfo ARGS ((
2029 CtfPeriodicRemCellInfo *param,
2030 Buffer *mBuf
2031 ));
2032
2033 /* Periodic REM Scan changes End */
2034 #endif /* LCCTF */
2035
2036 #ifdef DM
2037 /* Request from User to PHY to Bind the CTF interface SAP. */
2038 S16 DmUiCtfBndReq ARGS((
2039    Pst*                 pst,
2040    SuId                 suId,
2041    SpId                 spId
2042 ));
2043 /* Confirmation from PHY to User for the Bind/Unbind 
2044  * Request for the CTF interface SAP.
2045 */
2046 S16 DmUiCtfBndCfm ARGS((
2047    Pst*                 pst,
2048    SuId                 suId,
2049    uint8_t                   status
2050 ));
2051 /* Request from User to PHY to Unbind the CTF interface SAP. */
2052 S16 DmUiCtfUbndReq ARGS((
2053    Pst*                 pst,
2054    SpId                 spId,
2055    Reason               reason
2056 ));
2057 /* Configuration Request from User to PHY for 
2058  * cell or dedicated configuration.
2059 */
2060 S16 DmUiCtfCfgReq ARGS((
2061    Pst*                 pst,
2062    SpId                 spId,
2063    CtfCfgTransId        transId,
2064    CtfCfgReqInfo*       cfgReqInfo
2065 ));
2066 /* Configuration Confirm from PHY to User. */
2067 S16 DmUiCtfCfgCfm ARGS((
2068    Pst*                 pst,
2069    SuId                 suId,
2070    CtfCfgTransId        transId,
2071    uint8_t                   status
2072 ));
2073 /** UE ID Change Request from User to PHY. */
2074 S16 DmUiCtfUeIdChgReq ARGS((
2075    Pst*                 pst,
2076    SpId                 spId,
2077    CtfCfgTransId        transId,
2078    CtfUeInfo *          ueInfo,
2079    CtfUeInfo *          newUeInfo
2080 ));
2081 /** UE ID Change Confirm from PHY to user. */
2082 S16 DmUiCtfUeIdChgCfm ARGS((
2083    Pst*                 pst,
2084    SuId                 suId,
2085    CtfCfgTransId        transId,
2086    CtfUeInfo *          ueInfo,
2087    uint8_t                   status
2088 ));
2089 #endif /* DM */
2090
2091 /*****************************************************************************
2092  *                      PACK/UNPACK FUNCTIONS
2093  ****************************************************************************/
2094 #ifdef LCCTF
2095 S16 cmPkCtfCfgTransId ARGS((
2096    CtfCfgTransId        *param,
2097    Buffer               *mBuf
2098 ));
2099 S16 cmUnpkCtfCfgTransId ARGS((
2100    CtfCfgTransId        *param,
2101    Buffer               *mBuf
2102 ));
2103 S16 cmPkCtfUeInfo ARGS((
2104    CtfUeInfo            *param,
2105    Buffer               *mBuf
2106 ));
2107 S16 cmUnpkCtfUeInfo ARGS((
2108    CtfUeInfo            *param,
2109    Buffer               *mBuf
2110 ));
2111 S16 cmPkCtfBwCfgInfo ARGS((
2112    CtfBwCfgInfo         *param,
2113    Buffer               *mBuf
2114 ));
2115 S16 cmUnpkCtfBwCfgInfo ARGS((
2116    CtfBwCfgInfo         *param,
2117    Buffer               *mBuf
2118 ));
2119 S16 cmPkCtfTxSchemeCfg ARGS((
2120    CtfTxSchemeCfg       *param,
2121    Buffer               *mBuf
2122 ));
2123 S16 cmUnpkCtfTxSchemeCfg ARGS((
2124    CtfTxSchemeCfg       *param,
2125    Buffer               *mBuf
2126 ));
2127 S16 cmPkCtfAntennaCfgInfo ARGS((
2128    CtfAntennaCfgInfo    *param,
2129    Buffer               *mBuf
2130 ));
2131 S16 cmUnpkCtfAntennaCfgInfo ARGS((
2132    CtfAntennaCfgInfo    *param,
2133    Buffer               *mBuf
2134 ));
2135 S16 cmPkCtfPrachCfgInfo ARGS((
2136    CtfPrachCfgInfo      *param,
2137    Buffer               *mBuf
2138 ));
2139 S16 cmUnpkCtfPrachCfgInfo ARGS((
2140    CtfPrachCfgInfo      *param,
2141    Buffer               *mBuf
2142 ));
2143 S16 cmPkCtfPdschCfgInfo ARGS((
2144    CtfPdschCfgInfo      *param,
2145    Buffer               *mBuf
2146 ));
2147 S16 cmUnpkCtfPdschCfgInfo ARGS((
2148    CtfPdschCfgInfo      *param,
2149    Buffer               *mBuf
2150 ));
2151 S16 cmPkCtfPuschCfgBasic ARGS((
2152    CtfPuschCfgBasic     *param,
2153    Buffer               *mBuf
2154 ));
2155 S16 cmUnpkCtfPuschCfgBasic ARGS((
2156    CtfPuschCfgBasic     *param,
2157    Buffer               *mBuf
2158 ));
2159 S16 cmPkCtfPuschUlRS ARGS((
2160    CtfPuschUlRS         *param,
2161    Buffer               *mBuf
2162 ));
2163 S16 cmUnpkCtfPuschUlRS ARGS((
2164    CtfPuschUlRS         *param,
2165    Buffer               *mBuf
2166 ));
2167 S16 cmPkCtfPuschCfgInfo ARGS((
2168    CtfPuschCfgInfo      *param,
2169    Buffer               *mBuf
2170 ));
2171 S16 cmUnpkCtfPuschCfgInfo ARGS((
2172    CtfPuschCfgInfo      *param,
2173    Buffer               *mBuf
2174 ));
2175 S16 cmPkCtfPhichCfgInfo ARGS((
2176    CtfPhichCfgInfo      *param,
2177    Buffer               *mBuf
2178 ));
2179 S16 cmUnpkCtfPhichCfgInfo ARGS((
2180    CtfPhichCfgInfo      *param,
2181    Buffer               *mBuf
2182 ));
2183 S16 cmPkCtfPucchCfgInfo ARGS((
2184    CtfPucchCfgInfo      *param,
2185    Buffer               *mBuf
2186 ));
2187 S16 cmUnpkCtfPucchCfgInfo ARGS((
2188    CtfPucchCfgInfo      *param,
2189    Buffer               *mBuf
2190 ));
2191 S16 cmPkCtfSrsUlCfgInfo ARGS((
2192    CtfSrsUlCfgInfo      *param,
2193    Buffer               *mBuf
2194 ));
2195 S16 cmUnpkCtfSrsUlCfgInfo ARGS((
2196    CtfSrsUlCfgInfo      *param,
2197    Buffer               *mBuf
2198 ));
2199 S16 cmPkCtfTddSfCfgInfo ARGS((
2200    CtfTddSfCfgInfo      *param,
2201    Buffer               *mBuf
2202 ));
2203 S16 cmUnpkCtfTddSfCfgInfo ARGS((
2204    CtfTddSfCfgInfo      *param,
2205    Buffer               *mBuf
2206 ));
2207 S16 cmPkCtfCellCfgInfo ARGS((
2208    CtfCellCfgInfo       *param,
2209    Buffer               *mBuf
2210 ));
2211 S16 cmUnpkCtfCellCfgInfo ARGS((
2212    CtfCellCfgInfo       *param,
2213    Buffer               *mBuf
2214 ));
2215 S16 cmPkCtfCellRecfgInfo ARGS((
2216    CtfCellRecfgInfo     *param,
2217    Buffer               *mBuf
2218 ));
2219 S16 cmUnpkCtfCellRecfgInfo ARGS((
2220    CtfCellRecfgInfo     *param,
2221    Buffer               *mBuf
2222 ));
2223 S16 cmPkCtfDedPdschCfgInfo ARGS((
2224    CtfDedPdschCfgInfo   *param,
2225    Buffer               *mBuf
2226 ));
2227 S16 cmUnpkCtfDedPdschCfgInfo ARGS((
2228    CtfDedPdschCfgInfo   *param,
2229    Buffer               *mBuf
2230 ));
2231 S16 cmPkCtfDedPucchCfgInfo ARGS((
2232    CtfDedPucchCfgInfo   *param,
2233    Buffer               *mBuf
2234 ));
2235 S16 cmUnpkCtfDedPucchCfgInfo ARGS((
2236    CtfDedPucchCfgInfo   *param,
2237    Buffer               *mBuf
2238 ));
2239 S16 cmPkCtfDedPuschCfgInfo ARGS((
2240    CtfDedPuschCfgInfo   *param,
2241    Buffer               *mBuf
2242 ));
2243 S16 cmUnpkCtfDedPuschCfgInfo ARGS((
2244    CtfDedPuschCfgInfo   *param,
2245    Buffer               *mBuf
2246 ));
2247 #ifndef TFU_UPGRADE
2248 S16 cmPkCtfCqiRptModePeriodic ARGS((
2249    CtfCqiRptModePeriodic *param,
2250    Buffer               *mBuf
2251 ));
2252 S16 cmUnpkCtfCqiRptModePeriodic ARGS((
2253    CtfCqiRptModePeriodic *param,
2254    Buffer               *mBuf
2255 ));
2256 S16 cmPkCtfCqiReportCfgInfo ARGS((
2257    CtfCqiReportCfgInfo  *param,
2258    Buffer               *mBuf
2259 ));
2260 S16 cmUnpkCtfCqiReportCfgInfo ARGS((
2261    CtfCqiReportCfgInfo  *param,
2262    Buffer               *mBuf
2263 ));
2264 S16 cmPkCtfDedSrsUlCfgInfo ARGS((
2265    CtfDedSrsUlCfgInfo   *param,
2266    Buffer               *mBuf
2267 ));
2268 S16 cmUnpkCtfDedSrsUlCfgInfo ARGS((
2269    CtfDedSrsUlCfgInfo   *param,
2270    Buffer               *mBuf
2271 ));
2272 S16 cmPkCtfDedSRCfgInfo ARGS((
2273    CtfDedSRCfgInfo      *param,
2274    Buffer               *mBuf
2275 ));
2276 S16 cmUnpkCtfDedSRCfgInfo ARGS((
2277    CtfDedSRCfgInfo      *param,
2278    Buffer               *mBuf
2279 ));
2280 #endif /* TFU_UPGRADE */
2281 S16 cmPkCtfDedAntCfgInfo ARGS((
2282    CtfDedAntCfgInfo     *param,
2283    Buffer               *mBuf
2284 ));
2285 S16 cmUnpkCtfDedAntCfgInfo ARGS((
2286    CtfDedAntCfgInfo     *param,
2287    Buffer               *mBuf
2288 ));
2289
2290 S16 cmPkCtfUeSecCellCfgInfo ARGS((
2291 CtfUeSecCellCfgInfo *param,
2292 Buffer *mBuf
2293 ));
2294
2295 S16 cmPkCtfSecCellCfgInfo ARGS((
2296 CtfSecCellCfgInfo *param,
2297 Buffer *mBuf
2298 ));
2299
2300 S16 cmUnpkCtfUeSecCellCfgInfo ARGS((
2301 CtfUeSecCellCfgInfo *param,
2302 Buffer *mBuf
2303 ));
2304
2305 S16 cmUnpkCtfSecCellCfgInfo ARGS((
2306 CtfSecCellCfgInfo *param,
2307 Buffer *mBuf
2308 ));
2309
2310 S16 cmPkCtfUeCatCfgInfo ARGS((
2311    CtfUeCatCfgInfo      *param,
2312    Buffer               *mBuf
2313 ));
2314 S16 cmUnpkCtfUeCatCfgInfo ARGS((
2315    CtfUeCatCfgInfo      *param,
2316    Buffer               *mBuf
2317 ));
2318 S16 cmPkCtfDedCfgInfo ARGS((
2319    CtfDedCfgInfo        *param,
2320    Buffer               *mBuf
2321 ));
2322 S16 cmUnpkCtfDedCfgInfo ARGS((
2323    CtfDedCfgInfo        *param,
2324    Buffer               *mBuf
2325 ));
2326 S16 cmPkCtfDedRecfgInfo ARGS((
2327    CtfDedRecfgInfo      *param,
2328    Buffer               *mBuf
2329 ));
2330 S16 cmUnpkCtfDedRecfgInfo ARGS((
2331    CtfDedRecfgInfo      *param,
2332    Buffer               *mBuf
2333 ));
2334 S16 cmPkCtfCellReleaseInfo ARGS((
2335    CtfCellReleaseInfo   *param,
2336    Buffer               *mBuf
2337 ));
2338 S16 cmUnpkCtfCellReleaseInfo ARGS((
2339    CtfCellReleaseInfo   *param,
2340    Buffer               *mBuf
2341 ));
2342 S16 cmPkCtfDedReleaseInfo ARGS((
2343    CtfDedReleaseInfo    *param,
2344    Buffer               *mBuf
2345 ));
2346 S16 cmUnpkCtfDedReleaseInfo ARGS((
2347    CtfDedReleaseInfo    *param,
2348    Buffer               *mBuf
2349 ));
2350 S16 cmPkCtfCfgInfo ARGS((
2351    CtfCfgInfo           *param,
2352    Buffer               *mBuf
2353 ));
2354 S16 cmUnpkCtfCfgInfo ARGS((
2355    CtfCfgInfo           *param,
2356    Buffer               *mBuf
2357 ));
2358 S16 cmPkCtfReCfgInfo ARGS((
2359    CtfReCfgInfo         *param,
2360    Buffer               *mBuf
2361 ));
2362 S16 cmUnpkCtfReCfgInfo ARGS((
2363    CtfReCfgInfo         *param,
2364    Buffer               *mBuf
2365 ));
2366 S16 cmPkCtfReleaseInfo ARGS((
2367    CtfReleaseInfo       *param,
2368    Buffer               *mBuf
2369 ));
2370 S16 cmUnpkCtfReleaseInfo ARGS((
2371    CtfReleaseInfo       *param,
2372    Buffer               *mBuf
2373 ));
2374 S16 cmPkCtfCfgReqInfo ARGS((
2375    CtfCfgReqInfo        *param,
2376    Buffer               *mBuf
2377 ));
2378 /* ctf_x_001.main_4: Added support for vendor specific parameters */
2379 S16 cmUnpkCtfCfgReqInfo ARGS((
2380    Pst                  *pst,
2381    CtfCfgReqInfo        *param,
2382    Buffer               *mBuf
2383 ));
2384
2385 #ifdef CTF_VER3
2386 S16 cmPkCtfVendorSpecParams ARGS((
2387    CtfVendorSpecific *param,
2388    Buffer *mBuf
2389 ));
2390
2391 S16 cmUnpkCtfVendorSpecParams ARGS((
2392     Pst*                 pst,
2393     CtfVendorSpecific *param,
2394     Buffer *mBuf
2395 ));
2396 #endif /* CTF_VER3*/
2397
2398 /* Starts - Fix for CR ccpu00123185 */
2399 S16 cmPkCtfCellPwrcfgInfo ARGS((
2400
2401     CtfCellRecfgInfo *param,
2402     Buffer *mBuf
2403 ));
2404
2405 S16 cmPkCtfCellStop ARGS((
2406     CtfCellRecfgInfo *param,
2407     Buffer *mBuf
2408 ));
2409
2410 S16 cmUnpkCtfCellPwrcfgInfo ARGS((
2411     CtfCellRecfgInfo *param,
2412     Buffer *mBuf
2413 ));
2414 S16 cmUnpkCtfCellStop ARGS((
2415     CtfCellRecfgInfo *param,
2416     Buffer *mBuf
2417 ));
2418 /* Ends - Fix for CR ccpu00123185 */
2419 #ifdef TENB_AS_SECURITY
2420 S16 cmPkCtfNhKeyInfo ARGS(
2421 (
2422 CtfNhKeyInfo *param,
2423 Buffer *mBuf
2424 ));
2425 S16 cmPkCtfKenbStarInfo ARGS(
2426 (
2427 CtfKenbStarInfo *param,
2428 Buffer *mBuf
2429 ));
2430 S16 cmPkCtfAskeyInfo ARGS(
2431 (
2432 CtfAsKeyInfo *param,
2433 Buffer *mBuf
2434 ));
2435 S16 cmPkCtfKdfReqInfo ARGS(
2436 (
2437 CtfKdfReqInfo *param,
2438 Buffer *mBuf
2439  ));
2440 S16 cmPkCtfKdfReq ARGS(
2441 (
2442 Pst* pst,
2443 SpId spId,
2444 CtfCfgTransId transId,
2445 CtfKdfReqInfo* kdfReqInfo
2446 ));
2447 S16 cmUnpkCtfNhKeyInfo ARGS(
2448 (
2449 CtfNhKeyInfo *param,
2450 Buffer *mBuf
2451 ));
2452 S16 cmUnpkCtfKenbStarInfo ARGS(
2453 (
2454 CtfKenbStarInfo *param,
2455 Buffer *mBuf
2456 ));
2457 S16 cmUnpkCtfAskeyInfo ARGS(
2458 (
2459 CtfAsKeyInfo *param,
2460 Buffer *mBuf
2461 ));
2462 S16 cmUnpkCtfKdfReqInfo ARGS(
2463 (
2464 CtfKdfReqInfo *param,
2465 Buffer *mBuf
2466  ));
2467 S16 cmUnpkCtfKdfReq ARGS(
2468 (
2469 CtfKdfReq func,
2470 Pst *pst,
2471 Buffer *mBuf
2472 ));
2473 S16 cmPkCtfNhKeyCfmInfo ARGS(
2474 (
2475 CtfNhKeyCfmInfo *param,
2476 Buffer *mBuf
2477 ));
2478 S16 cmPkCtfKenbStarCfmInfo ARGS(
2479 (
2480 CtfKenbStarCfmInfo *param,
2481 Buffer *mBuf
2482 ));
2483 S16 cmPkCtfAskeyCfmInfo ARGS(
2484 (
2485 CtfAskeyCfmInfo *param,
2486 Buffer *mBuf
2487 ));
2488 S16 cmPkCtfKdfCfmInfo ARGS(
2489 (
2490 CtfKdfCfmInfo *param,
2491 Buffer *mBuf
2492  ));
2493 S16 cmPkCtfKdfCfm ARGS(
2494 (
2495 Pst* pst,
2496 SuId suId,
2497 CtfCfgTransId transId,
2498 CtfKdfCfmInfo *kdfCfmInfo,
2499 uint8_t status
2500 ));
2501 S16 cmUnpkCtfNhKeyCfmInfo ARGS(
2502 (
2503 CtfNhKeyCfmInfo *param,
2504 Buffer *mBuf
2505 ));
2506 S16 cmUnpkCtfKenbStarCfmInfo ARGS(
2507 (
2508 CtfKenbStarCfmInfo *param,
2509 Buffer *mBuf
2510 ));
2511 S16 cmUnpkCtfAskeyCfmInfo ARGS(
2512 (
2513 CtfAskeyCfmInfo *param,
2514 Buffer *mBuf
2515 ));
2516 S16 cmUnpkCtfKdfCfmInfo ARGS(
2517 (
2518 CtfKdfCfmInfo *param,
2519 Buffer *mBuf
2520 ));
2521 S16 cmUnpkCtfKdfCfm ARGS(
2522 (
2523 CtfKdfCfm func,
2524 Pst *pst,
2525 Buffer *mBuf
2526 ));
2527 #endif
2528 #endif /* LCCTF */
2529
2530 S16 UrUiCtfHandleSnfMsgs ARGS((
2531 Pst*                 pst,
2532 Buffer*              mBuf
2533 ));
2534
2535 S16 cmPkCtfCnmVendorSpecificInfo ARGS((
2536 CtfCnmVendorSpecificInfo *param,
2537 Buffer *mBuf
2538 ));
2539
2540 S16 cmPkCtfCtfCnmCellSyncReq ARGS((
2541 CtfCnmCellSyncReq *param,
2542 Buffer *mBuf
2543 ));
2544
2545 S16 cmUnpkCtfCnmVendorSpecificInfo ARGS((
2546 CtfCnmVendorSpecificInfo *param,
2547 Buffer *mBuf
2548 ));
2549
2550 S16 cmUnpkCtfCtfCnmCellSyncReq ARGS((
2551 CtfCnmCellSyncReq *param,
2552 Buffer *mBuf
2553 ));
2554
2555 S16 cmPkCtfCnmCellSyncReq ARGS((
2556 Pst* pst,
2557 SpId spId,
2558 CtfCfgTransId *transId,
2559 CtfCnmCellSyncReq * cfgReqInfo
2560 ));
2561
2562 S16 cmUnpkCtfCnmCellSyncReq ARGS((
2563 CtfCnmCellSyncReqMsg func,
2564 Pst *pst,
2565 Buffer *mBuf
2566 ));
2567
2568 S16 cmPkCtfCnmInitSyncReq ARGS((
2569 Pst* pst,
2570 SpId spId,
2571 CtfCfgTransId *transId,
2572 CtfCnmInitSyncReq * cfgReqInfo
2573 ));
2574
2575 S16 cmUnpkCtfCnmInitSyncReq ARGS((
2576 CtfCnmInitSyncReqMsg func,
2577 Pst *pst,
2578 Buffer *mBuf
2579 ));
2580
2581 S16 cmPkCtfctfCnmMibInfo ARGS((
2582 CtfCnmMibInfo *param,
2583 Buffer *mBuf
2584 ));
2585
2586 S16 cmPkCtfctfCnmInitSyncInfo ARGS((
2587 CtfCnmInitSyncInfo *param,
2588 Buffer *mBuf
2589 ));
2590
2591 S16 cmPkCtfCnmInitSyncRsp ARGS((
2592 Pst* pst,
2593 SpId spId,
2594 CtfCfgTransId *transId,
2595 CtfCnmInitSyncRsp * cfgRspInfo
2596 ));
2597
2598 S16 cmUnpkCtfctfCnmMibInfo ARGS((
2599 CtfCnmMibInfo *param,
2600 Buffer *mBuf
2601 ));
2602
2603 S16 cmUnpkctfCnmInitSyncInfo ARGS(( 
2604 CtfCnmInitSyncInfo *param,
2605 Buffer *mBuf
2606 ));
2607
2608 S16 cmUnpkCtfCnmInitSyncRspMsg ARGS((
2609 CtfCnmInitSyncRsp *param,
2610 Buffer *mBuf
2611 ));
2612
2613 S16 cmUnpkCtfCnmInitSyncRsp ARGS((
2614 CtfCnmInitSyncRspMsg func,
2615 Pst *pst,
2616 Buffer *mBuf
2617 ));
2618
2619 S16 cmPkCtfCnmCellSyncRsp ARGS((
2620 Pst* pst,
2621 SpId spId,
2622 CtfCfgTransId *transId,
2623 CtfCnmCellSyncRsp * cfgRspInfo
2624 ));
2625
2626 S16 cmUnpkCtfCnmSyncRspMsg ARGS((
2627 CtfCnmCellSyncRsp *param,
2628 Buffer *mBuf
2629 ));
2630
2631 S16 cmUnpkCtfCnmCellSyncRsp ARGS((
2632 CtfCnmCellSyncRspMsg func,
2633 Pst *pst,
2634 Buffer *mBuf
2635 ));
2636
2637 S16 cmPkCtfCnmCellSyncInd ARGS(( 
2638 Pst* pst,
2639 SpId spId,
2640 CtfCfgTransId *transId,
2641 CtfCnmCellSyncInd * cfgIndInfo
2642 ));
2643
2644 S16 cmUnpkCtfCnmSyncIndMsg ARGS(( 
2645 CtfCnmCellSyncInd *param,
2646 Buffer *mBuf
2647 ));
2648
2649 S16 cmUnpkCtfCnmCellSyncInd ARGS((
2650 CtfCnmCellSyncIndMsg func,
2651 Pst *pst,
2652 Buffer *mBuf
2653 ));
2654
2655 S16 cmPkCtfcfgReqInfo ARGS((
2656 CtfCnmInitSyncReq *param,
2657 Buffer *mBuf
2658 ));
2659
2660 S16 cmUnpkCtfsyncReqInfo ARGS((
2661 CtfCnmInitSyncReq *param,
2662 Buffer *mBuf
2663 ));
2664
2665 S16 cmPkCtfcfgRspInfo ARGS((
2666 CtfCnmInitSyncRsp *param,
2667 Buffer *mBuf
2668 ));
2669
2670 S16 cmPkCtfCellSyncRsp ARGS((
2671 CtfCnmCellSyncRsp *param,
2672 Buffer *mBuf
2673 ));
2674
2675 S16 cmPkCtfcfgIndInfo ARGS((
2676 CtfCnmCellSyncInd *param,
2677 Buffer *mBuf
2678 ));
2679
2680 #ifdef __cplusplus
2681 }
2682 #endif
2683 #endif /* __CTF_X__ */
2684
2685 /**********************************************************************
2686          End of file
2687  **********************************************************************/