defs.h 14.6 KB
Newer Older
ghaddab's avatar
ghaddab committed
1
/*******************************************************************************
2
    OpenAirInterface
ghaddab's avatar
ghaddab committed
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    Copyright(c) 1999 - 2014 Eurecom

    OpenAirInterface is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.


    OpenAirInterface is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
17
18
    along with OpenAirInterface.The full GNU General Public License is
   included in this distribution in the file called "COPYING". If not,
ghaddab's avatar
ghaddab committed
19
20
21
22
23
   see <http://www.gnu.org/licenses/>.

  Contact Information
  OpenAirInterface Admin: openair_admin@eurecom.fr
  OpenAirInterface Tech : openair_tech@eurecom.fr
24
  OpenAirInterface Dev  : openair4g-devel@lists.eurecom.fr
25

ghaddab's avatar
ghaddab committed
26
  Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
ghaddab's avatar
ghaddab committed
27
28

 *******************************************************************************/
29
30
31
32
33
34
35
36
37
38
39
#ifndef __INIT_DEFS__H__
#define __INIT_DEFS__H__

#include "PHY/defs.h"

#ifdef OPENAIR_LTE
#include "SystemInformationBlockType2.h"
//#include "RadioResourceConfigCommonSIB.h"
#include "RadioResourceConfigDedicated.h"
#include "TDD-Config.h"
#include "MBSFN-SubframeConfigList.h"
40
#include "MobilityControlInfo.h"
41
42
#ifdef Rel10
#include "SCellToAddMod-r10.h"
43
#endif
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#else

/**
\fn int phy_init(unsigned char nb_antennas_tx)
\brief Allocate and Initialize the PHY variables after receiving static configuration
@param nb_antennas_tx Number of TX antennas
*/
int phy_init(unsigned char nb_antennas_tx);
#endif

#ifdef OPENAIR_LTE

/** @addtogroup _PHY_STRUCTURES_
 * @{
 */

/*!
\fn int phy_init_top(LTE_DL_FRAME_PARMS *frame_parms)
\brief Allocate and Initialize the PHY variables after receiving static configuration
@param frame_parms Pointer to LTE_DL_FRAME_PARMS (common configuration)
@returns 0 on success
gauthier's avatar
gauthier committed
65
 */
66
67
68
69
int phy_init_top(LTE_DL_FRAME_PARMS *frame_parms);


/*!
70
71
72
\brief Allocate and Initialize the PHY variables relevant to the LTE implementation.
\details Only a subset of phy_vars_ue is initialized.
@param[out] phy_vars_ue Pointer to UE Variables
73
74
75
@param nb_connected_eNB Number of eNB that UE can process in one PDSCH demodulation subframe
@param abstraction_flag 1 indicates memory should be allocated for abstracted MODEM
@returns 0 on success
76
77
@returns -1 if any memory allocation failed
@note The current implementation will never return -1, but segfault.
gauthier's avatar
gauthier committed
78
 */
79
int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue,
gauthier's avatar
gauthier committed
80
81
                    int          nb_connected_eNB,
                    uint8_t         abstraction_flag);
82
83

/*!
84
85
86
\brief Allocate and initialize the PHY variables relevant to the LTE implementation (eNB).
\details Only a subset of phy_vars_eNb is initialized.
@param[out] phy_vars_eNb Pointer to eNB Variables
87
@param is_secondary_eNb Flag to indicate this eNB gets synch from another
88
@param cooperation_flag 0 for no cooperation, 1 for Delay Diversity and 2 for Distributed Alamouti
89
90
@param abstraction_flag 1 indicates memory should be allocated for abstracted MODEM
@returns 0 on success
91
92
@returns -1 if any memory allocation failed
@note The current implementation will never return -1, but segfault.
gauthier's avatar
gauthier committed
93
 */
94
int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNb,
gauthier's avatar
gauthier committed
95
96
97
                     unsigned char is_secondary_eNb,
                     unsigned char cooperation_flag,
                     unsigned char abstraction_flag);
98

99
100
/** \brief Configure LTE_DL_FRAME_PARMS with components derived after initial synchronization (MIB decoding + primary/secondary synch).
\details The basically allows configuration of \f$N_{\mathrm{RB}}^{\mathrm{DL}}\f$, the cell id  \f$N_{\mathrm{ID}}^{\mathrm{cell}}\f$, the normal/extended prefix mode, the frame type (FDD/TDD), \f$N_{\mathrm{cp}}\f$, the number of TX antennas at eNB (\f$p\f$) and the number of PHICH groups, \f$N_{\mathrm{group}}^{\mathrm{PHICH}}\f$
101
102
103
104
105
106
107
@param lte_frame_parms pointer to LTE parameter structure
@param N_RB_DL Number of DL resource blocks
@param Nid_cell Cell ID
@param Ncp Normal/Extended Prefix flag
@param frame_type FDD/TDD framing
@param p_eNB Number of eNB TX antennas
@param phich_config Pointer to PHICH_CONFIG_COMMON
gauthier's avatar
gauthier committed
108
 */
109
void phy_config_mib(LTE_DL_FRAME_PARMS *lte_frame_parms,
gauthier's avatar
gauthier committed
110
111
112
113
114
115
                    uint8_t                N_RB_DL,
                    uint8_t                Nid_cell,
                    uint8_t                Ncp,
                    uint8_t                frame_type,
                    uint8_t                p_eNB,
                    PHICH_CONFIG_COMMON *phich_config);
116
117


118
119
/** \brief Configure LTE_DL_FRAME_PARMS with components derived after reception of SIB1.
\details From a PHY perspective this allows configuration of TDD framing parameters and SI reception.
120
@param Mod_id Instance ID of eNB
knopp's avatar
   
knopp committed
121
@param CC_id Component Carrier index
122
@param tdd_Config TDD UL/DL and S-subframe configurations
123
@param SIwindowsize Size of a SI window in frames where repetitions of a unique System Information message block is repeated
124
@param SIperiod Periodicity of System Information Messages (in multiples of a frame)*/
gauthier's avatar
gauthier committed
125
void phy_config_sib1_eNB(module_id_t    Mod_id,
knopp's avatar
   
knopp committed
126
                         int CC_id,
127
                         TDD_Config_t  *tdd_Config,
gauthier's avatar
gauthier committed
128
129
                         uint8_t           SIwindowsize,
                         uint16_t            SIperiod);
130

131
132
/** \brief Configure LTE_DL_FRAME_PARMS with components derived after reception of SIB1.
\details From a PHY perspective this allows configuration of TDD framing parameters and SI reception.
133
@param Mod_id Instance ID of UE
knopp's avatar
   
knopp committed
134
@param CC_id Component Carrier index
135
136
@param CH_index Index of eNB for this configuration
@param tdd_Config TDD UL/DL and S-subframe configurations
137
@param SIwindowsize Size of a SI window in frames where repetitions of a unique System Information message block is repeated
138
@param SIperiod Periodicity of System Information Messages (in multiples of a frame)*/
gauthier's avatar
gauthier committed
139
void phy_config_sib1_ue(module_id_t   Mod_id,
knopp's avatar
   
knopp committed
140
                        int CC_id,
141
                        uint8_t          CH_index,
gauthier's avatar
gauthier committed
142
143
144
                        TDD_Config_t *tdd_Config,
                        uint8_t          SIwindowsize,
                        uint16_t           SIperiod);
145
146
147


/*!
knopp's avatar
   
knopp committed
148
  \fn void phy_config_sib2_ue(module_id_t Mod_id,uint8_t CC_id,uint8_t CH_index,
149
150
151
152
153
154
      RadioResourceConfigCommonSIB_t *radioResourceConfigCommon,
      ARFCN_ValueEUTRA_t *ul_CArrierFreq,
            long *ul_Bandwidth,
      AdditionalSpectrumEmission_t additionalSpectrumEmission,
      struct MBSFN_SubframeConfigList *mbsfn_SubframeConfigList)
  \brief Configure LTE_DL_FRAME_PARMS with components derived after reception of SIB2 (at UE).
155
  @param Mod_id Instance id
knopp's avatar
   
knopp committed
156
  @param CC_id
157
  @param CH_index Index of CH to which UE is connected
knopp's avatar
   
knopp committed
158
  @param CC_id Component Carrier Index
159
160
161
162
163
  @param radioResourceConfigCommon Radio Configuration from SIB2
  @param ul_CarrierFreq UL carrier ARFCN, null if optional (i.e. implicit from DL)
  @param ul_Bandwidth UL bandwidth, null if optional (i.e. same as DL)
  @param additionalSpectrumEmission UL parameter (see 36.101)
  @param mbsfn_SubframeConfigList MBSFN subframe configuration
gauthier's avatar
gauthier committed
164
 */
knopp's avatar
   
knopp committed
165
166
void phy_config_sib2_ue(module_id_t                     Mod_id,
                        int                         CC_id,
167
                        uint8_t                         CH_index,
gauthier's avatar
gauthier committed
168
169
170
171
172
                        RadioResourceConfigCommonSIB_t  *radioResourceConfigCommon,
                        ARFCN_ValueEUTRA_t              *ul_CArrierFreq,
                        long                            *ul_Bandwidth,
                        AdditionalSpectrumEmission_t    *additionalSpectrumEmission,
                        struct MBSFN_SubframeConfigList *mbsfn_SubframeConfigList);
173

174

175
/*!
176
177
  \fn phy_config_afterHO_ue
  \brief Configure Common PHY parameters from mobilityControlInfo
178
  @param Mod_id
knopp's avatar
   
knopp committed
179
  @param CC_id
180
181
182
183
  @param eNB_index
  @param mobilityControlInfo pointer to the mobility control information for handover
  @param ho_failed flag to indicated whether the ho was successful or not
 */
gauthier's avatar
gauthier committed
184
void phy_config_afterHO_ue(module_id_t Mod_id,
185
                           uint8_t CC_id,
186
                           uint8_t eNB_index,
gauthier's avatar
gauthier committed
187
188
                           MobilityControlInfo_t *mobilityControlInfo,
                           uint8_t ho_failed);
189
/*!
gauthier's avatar
gauthier committed
190
  \fn void phy_config_sib2_eNB(module_id_t Mod_id,
191
                               RadioResourceConfigCommonSIB_t *radioResourceConfigCommon,
192
193
194
195
196
             ARFCN_ValueEUTRA_t *ul_CArrierFreq,
             long *ul_Bandwidth,
             AdditionalSpectrumEmission_t additionalSpectrumEmission,
             struct MBSFN_SubframeConfigList  *mbsfn_SubframeConfigList)
  \brief Configure LTE_DL_FRAME_PARMS with components of SIB2 (at eNB).
197
  @param Mod_id Instance id
knopp's avatar
   
knopp committed
198
  @param Mod_id Component Carrier index
199
200
201
202
203
  @param radioResourceConfigCommon Radio Configuration from SIB2
  @param ul_CarrierFreq UL carrier ARFCN, null if optional (i.e. implicit from DL)
  @param ul_Bandwidth UL bandwidth, null if optional (i.e. same as DL)
  @param additionalSpectrumEmission UL parameter (see 36.101)
  @param mbsfn_SubframeConfigList MBSFN subframe configuration
gauthier's avatar
gauthier committed
204
 */
knopp's avatar
   
knopp committed
205
206
void phy_config_sib2_eNB(module_id_t                            Mod_id,
                         int                                CC_id,
207
                         RadioResourceConfigCommonSIB_t         *radioResourceConfigCommon,
gauthier's avatar
gauthier committed
208
209
210
211
                         ARFCN_ValueEUTRA_t                     *ul_CArrierFreq,
                         long                                   *ul_Bandwidth,
                         AdditionalSpectrumEmission_t           *additionalSpectrumEmission,
                         struct MBSFN_SubframeConfigList        *mbsfn_SubframeConfigList);
212
213
214


/*!
knopp's avatar
   
knopp committed
215
\fn void phy_config_dedicated_ue(module_id_t Mod_id,uint8_t CC_id,uint8_t CH_index,
216
               struct PhysicalConfigDedicated *physicalConfigDedicated)
217
218
\brief Configure UE dedicated parameters.
\details Invoked upon reception of RRCConnectionSetup or RRCConnectionReconfiguration from eNB.
219
@param Mod_id Instance ID for eNB
knopp's avatar
   
knopp committed
220
@param CC_id Component Carrier index
221
222
223
@param CH_index Index of eNB for this configuration
@param physicalConfigDedicated PHY Configuration information

gauthier's avatar
gauthier committed
224
 */
knopp's avatar
   
knopp committed
225
226
void phy_config_dedicated_ue(module_id_t Mod_id,
                             int CC_id,
227
                             uint8_t CH_index,
knopp's avatar
   
knopp committed
228
229
                             struct PhysicalConfigDedicated *physicalConfigDedicated);

230
231

/**
232
233
\brief Configure UE MBSFN common parameters.
\details Invoked upon reception of SIB13 from eNB.
234
@param Mod_id Instance ID for UE
knopp's avatar
   
knopp committed
235
@param CC_id Component Carrier Index
236
237
238
@param CH_index eNB id (for multiple eNB reception)
@param mbsfn_Area_idx Index of MBSFN-Area for which this command operates
@param mbsfn_AreaId_r9 MBSFN-Area Id
gauthier's avatar
gauthier committed
239
 */
240

gauthier's avatar
gauthier committed
241
void phy_config_sib13_ue(module_id_t Mod_id,
knopp's avatar
   
knopp committed
242
                         int CC_id,uint8_t CH_index,int mbsfn_Area_idx,
gauthier's avatar
gauthier committed
243
                         long mbsfn_AreaId_r9);
244
245

/**
246
247
\brief Configure eNB MBSFN common parameters.
\details Invoked upon transmission of SIB13 from eNB.
248
@param Mod_id Instance ID for eNB
knopp's avatar
   
knopp committed
249
@param CC_id Component Carrier index
250
251
@param mbsfn_Area_idx Index of MBSFN-Area for which this command operates
@param mbsfn_AreaId_r9 MBSFN-Area Id
gauthier's avatar
gauthier committed
252
253
 */
void phy_config_sib13_eNB(module_id_t Mod_id,
254
                          int CC_id,
gauthier's avatar
gauthier committed
255
256
                          int mbsfn_Area_idx,
                          long mbsfn_AreaId_r9);
257
258
259
260

/**
\brief Configure cba rnti for .
@param Mod_id Instance ID for eNB
knopp's avatar
   
knopp committed
261
@param CC_id Component Carrier Index
262
@param eNB_flag flag indicating whether the nodeis eNB (1) or UE (0)
263
@param index index of the node
264
265
@param cba_rnti rnti for the cba transmission
@param num_active_cba_groups num active cba group
gauthier's avatar
gauthier committed
266
 */
knopp's avatar
   
knopp committed
267
void  phy_config_cba_rnti (module_id_t Mod_id,int CC_id,eNB_flag_t eNB_flag, uint8_t index, rnti_t cba_rnti, uint8_t cba_group_id, uint8_t num_active_cba_groups);
268
269
270

/** \brief Configure RRC inter-cell measurements procedures
@param Mod_id Index of UE
knopp's avatar
   
knopp committed
271
@param CC_id
272
273
274
@param eNB_index Index of corresponding eNB
@param n_adj_cells Number of adjacent cells on which to perform the measuremnts
@param adj_cell_id Array of cell ids of adjacent cells
gauthier's avatar
gauthier committed
275
276
 */
void phy_config_meas_ue(module_id_t Mod_id,
277
                        uint8_t CC_id,
278
                        uint8_t eNB_index,
gauthier's avatar
gauthier committed
279
280
                        uint8_t n_adj_cells,
                        uint32_t *adj_cell_id);
281
282

/*!
gauthier's avatar
gauthier committed
283
\fn void phy_config_dedicated_eNB(module_id_t Mod_id,uint16_t rnti,
284
                                  struct PhysicalConfigDedicated *physicalConfigDedicated)
285
286
\brief Prepare for configuration of PHY with dedicated parameters.
\details Invoked just prior to transmission of RRCConnectionSetup or RRCConnectionReconfiguration at eNB.
287
@param Mod_id Instance ID for eNB
knopp's avatar
   
knopp committed
288
@param CC_id Component Carrier index
289
290
@param rnti rnti for UE context
@param physicalConfigDedicated PHY Configuration information
gauthier's avatar
gauthier committed
291
292
 */
void phy_config_dedicated_eNB(module_id_t Mod_id,
knopp's avatar
   
knopp committed
293
                              int CC_id,
294
                              rnti_t rnti,
gauthier's avatar
gauthier committed
295
                              struct PhysicalConfigDedicated *physicalConfigDedicated);
296
297
298
299
300

/*!
\fn void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *phy_vars_eNB)
\brief Configure PHY with dedicated parameters between configuration of DLSCH (n) and ULSCH (n+4) in current subframe (n).
@param phy_vars_eNB Pointer to PHY_VARS_eNB structure
gauthier's avatar
gauthier committed
301
 */
302
303
304
305
void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *phy_vars_eNB);

/*
  \fn int phy_init_secsys_eNB(PHY_VARS_eNB *phy_vars_eNb)
306
\brief Allocate and Initialize the PHY variables relevant to the LTE implementation.
307
@param phy_vars_eNb pointer to LTE parameter structure for the eNb
gauthier's avatar
gauthier committed
308
 */
309
310
311
312
313
314
315
int phy_init_secsys_eNB(PHY_VARS_eNB *phy_vars_eNb);


void phy_init_lte_top(LTE_DL_FRAME_PARMS *lte_frame_parms);

//void copy_lte_parms_to_phy_framing(LTE_DL_FRAME_PARMS *frame_parm, PHY_FRAMING *phy_framing);

316
317
#ifdef Rel10
void phy_config_dedicated_scell_ue(uint8_t Mod_id,
318
319
320
                                   uint8_t eNB_index,
                                   SCellToAddMod_r10_t *sCellToAddMod_r10,
                                   int CC_id);
321
322

void phy_config_dedicated_scell_eNB(uint8_t Mod_id,
323
324
325
                                    uint16_t rnti,
                                    SCellToAddMod_r10_t *sCellToAddMod_r10,
                                    int CC_id);
326

327
#endif
328
329
330
331
#endif


/*! !\fn void phy_cleanup(void)
332
\brief Cleanup the PHY variables*/
333
334
335
void phy_cleanup(void);

#ifdef OPENAIR_LTE
gauthier's avatar
gauthier committed
336
int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms,uint8_t osf);
337
338
339
340
341
342
void dump_frame_parms(LTE_DL_FRAME_PARMS *frame_parms);
#endif

/** @} */
#endif