defs.h 14.2 KB
Newer Older
ghaddab's avatar
ghaddab committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/*******************************************************************************
    OpenAirInterface 
    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
    along with OpenAirInterface.The full GNU General Public License is 
   included in this distribution in the file called "COPYING". If not, 
   see <http://www.gnu.org/licenses/>.

  Contact Information
  OpenAirInterface Admin: openair_admin@eurecom.fr
  OpenAirInterface Tech : openair_tech@eurecom.fr
  OpenAirInterface Dev  : openair4g-devel@eurecom.fr
  
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
43
#ifdef Rel10
#include "SCellToAddMod-r10.h"
#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
123
124
@param tdd_Config TDD UL/DL and S-subframe configurations
@param SIwindowsize Size of a SI window in frames where repetitions of a unique System Information message block is repeated 
@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
127
                         int CC_id,
			 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
137
138
@param CH_index Index of eNB for this configuration
@param tdd_Config TDD UL/DL and S-subframe configurations
@param SIwindowsize Size of a SI window in frames where repetitions of a unique System Information message block is repeated 
@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
141
                        int CC_id,
			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
155
			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).  
  @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
167
void phy_config_sib2_ue(module_id_t                     Mod_id,
                        int                         CC_id,
			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
178

/*! 
  \fn phy_config_afterHO_ue
  \brief Configure Common PHY parameters from mobilityControlInfo
  @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,
knopp's avatar
   
knopp committed
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
192
193
194
195
196
197
                               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 of SIB2 (at eNB).  
  @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
207
void phy_config_sib2_eNB(module_id_t                            Mod_id,
                         int                                CC_id,
			 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
227
228
229
void phy_config_dedicated_ue(module_id_t Mod_id,
                             int CC_id,
			     uint8_t CH_index,
                             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,
knopp's avatar
   
knopp committed
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
263
264
265
@param eNB_flag flag indicating whether the nodeis eNB (1) or UE (0)
@param index index of the node 
@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,
knopp's avatar
   
knopp committed
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
294
                              int CC_id,
			      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
306
307
void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *phy_vars_eNB);

/*
  \fn int phy_init_secsys_eNB(PHY_VARS_eNB *phy_vars_eNb)
\brief Allocate and Initialize the PHY variables relevant to the LTE implementation. 
@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
318
319
320
321
322
323
324
325
326
327
#ifdef Rel10
void phy_config_dedicated_scell_ue(uint8_t Mod_id,
				   uint8_t eNB_index,
				   SCellToAddMod_r10_t *sCellToAddMod_r10, 
				   int CC_id);

void phy_config_dedicated_scell_eNB(uint8_t Mod_id,
				    uint16_t rnti,
				    SCellToAddMod_r10_t *sCellToAddMod_r10, 
				    int CC_id);

#endif 
328
329
330
331
332
333
334
335
#endif


/*! !\fn void phy_cleanup(void)
\brief Cleanup the PHY variables*/ 
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