defs.h 14.8 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
#ifndef __INIT_DEFS__H__
#define __INIT_DEFS__H__

#include "PHY/defs.h"

34

35 36 37 38 39
#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
/** @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
53
 */
54 55 56 57
int phy_init_top(LTE_DL_FRAME_PARMS *frame_parms);


/*!
58 59 60
\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
61 62 63
@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
64 65
@returns -1 if any memory allocation failed
@note The current implementation will never return -1, but segfault.
66
 */
67
int phy_init_lte_ue(PHY_VARS_UE *phy_vars_ue,
68 69
                    int          nb_connected_eNB,
                    uint8_t         abstraction_flag);
70 71

/*!
72 73 74
\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
75 76 77
@param is_secondary_eNb Flag to indicate this eNB gets synch from another
@param abstraction_flag 1 indicates memory should be allocated for abstracted MODEM
@returns 0 on success
78 79
@returns -1 if any memory allocation failed
@note The current implementation will never return -1, but segfault.
80
 */
81
int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNb,
82 83
                     unsigned char is_secondary_eNb,
                     unsigned char abstraction_flag);
84

85 86
/** \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$
87 88 89 90 91 92 93
@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
94
 */
95
void phy_config_mib(LTE_DL_FRAME_PARMS *lte_frame_parms,
96 97 98 99 100 101
                    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);
102 103


104 105
/** \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.
106
@param Mod_id Instance ID of eNB
knopp's avatar
knopp committed
107
@param CC_id Component Carrier index
108
@param tdd_Config TDD UL/DL and S-subframe configurations
109
@param SIwindowsize Size of a SI window in frames where repetitions of a unique System Information message block is repeated
110
@param SIperiod Periodicity of System Information Messages (in multiples of a frame)*/
111
void phy_config_sib1_eNB(module_id_t    Mod_id,
knopp's avatar
knopp committed
112
                         int CC_id,
113
                         TDD_Config_t  *tdd_Config,
114 115
                         uint8_t           SIwindowsize,
                         uint16_t            SIperiod);
116

117 118
/** \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.
119
@param Mod_id Instance ID of UE
knopp's avatar
knopp committed
120
@param CC_id Component Carrier index
121 122
@param CH_index Index of eNB for this configuration
@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)*/
125
void phy_config_sib1_ue(module_id_t   Mod_id,
knopp's avatar
knopp committed
126
                        int CC_id,
127
                        uint8_t          CH_index,
128 129 130
                        TDD_Config_t *tdd_Config,
                        uint8_t          SIwindowsize,
                        uint16_t           SIperiod);
131 132 133


/*!
knopp's avatar
knopp committed
134
  \fn void phy_config_sib2_ue(module_id_t Mod_id,uint8_t CC_id,uint8_t CH_index,
135 136 137 138 139 140
      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).
141
  @param Mod_id Instance id
knopp's avatar
knopp committed
142
  @param CC_id
143
  @param CH_index Index of CH to which UE is connected
knopp's avatar
knopp committed
144
  @param CC_id Component Carrier Index
145 146 147 148 149
  @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
150
 */
knopp's avatar
knopp committed
151 152
void phy_config_sib2_ue(module_id_t                     Mod_id,
                        int                         CC_id,
153
                        uint8_t                         CH_index,
154 155 156 157 158
                        RadioResourceConfigCommonSIB_t  *radioResourceConfigCommon,
                        ARFCN_ValueEUTRA_t              *ul_CArrierFreq,
                        long                            *ul_Bandwidth,
                        AdditionalSpectrumEmission_t    *additionalSpectrumEmission,
                        struct MBSFN_SubframeConfigList *mbsfn_SubframeConfigList);
159

160

161
/*!
162 163
  \fn phy_config_afterHO_ue
  \brief Configure Common PHY parameters from mobilityControlInfo
164
  @param Mod_id
knopp's avatar
knopp committed
165
  @param CC_id
166 167 168 169
  @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
 */
170
void phy_config_afterHO_ue(module_id_t Mod_id,
171
                           uint8_t CC_id,
172
                           uint8_t eNB_index,
173 174
                           MobilityControlInfo_t *mobilityControlInfo,
                           uint8_t ho_failed);
175
/*!
176
  \fn void phy_config_sib2_eNB(module_id_t Mod_id,
177
                               RadioResourceConfigCommonSIB_t *radioResourceConfigCommon,
178 179 180 181 182
             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).
183
  @param Mod_id Instance id
knopp's avatar
knopp committed
184
  @param Mod_id Component Carrier index
185 186 187 188 189
  @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
190
 */
knopp's avatar
knopp committed
191 192
void phy_config_sib2_eNB(module_id_t                            Mod_id,
                         int                                CC_id,
193
                         RadioResourceConfigCommonSIB_t         *radioResourceConfigCommon,
194 195 196 197
                         ARFCN_ValueEUTRA_t                     *ul_CArrierFreq,
                         long                                   *ul_Bandwidth,
                         AdditionalSpectrumEmission_t           *additionalSpectrumEmission,
                         struct MBSFN_SubframeConfigList        *mbsfn_SubframeConfigList);
198 199 200


/*!
knopp's avatar
knopp committed
201
\fn void phy_config_dedicated_ue(module_id_t Mod_id,uint8_t CC_id,uint8_t CH_index,
202
               struct PhysicalConfigDedicated *physicalConfigDedicated)
203 204
\brief Configure UE dedicated parameters.
\details Invoked upon reception of RRCConnectionSetup or RRCConnectionReconfiguration from eNB.
205
@param Mod_id Instance ID for eNB
knopp's avatar
knopp committed
206
@param CC_id Component Carrier index
207 208 209
@param CH_index Index of eNB for this configuration
@param physicalConfigDedicated PHY Configuration information

210
 */
knopp's avatar
knopp committed
211 212
void phy_config_dedicated_ue(module_id_t Mod_id,
                             int CC_id,
213
                             uint8_t CH_index,
knopp's avatar
knopp committed
214 215
                             struct PhysicalConfigDedicated *physicalConfigDedicated);

216 217

/**
218 219
\brief Configure UE MBSFN common parameters.
\details Invoked upon reception of SIB13 from eNB.
220
@param Mod_id Instance ID for UE
knopp's avatar
knopp committed
221
@param CC_id Component Carrier Index
222 223 224
@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
225
 */
226

227
void phy_config_sib13_ue(module_id_t Mod_id,
knopp's avatar
knopp committed
228
                         int CC_id,uint8_t CH_index,int mbsfn_Area_idx,
229
                         long mbsfn_AreaId_r9);
230 231

/**
232 233
\brief Configure eNB MBSFN common parameters.
\details Invoked upon transmission of SIB13 from eNB.
234
@param Mod_id Instance ID for eNB
knopp's avatar
knopp committed
235
@param CC_id Component Carrier index
236 237
@param mbsfn_Area_idx Index of MBSFN-Area for which this command operates
@param mbsfn_AreaId_r9 MBSFN-Area Id
238 239
 */
void phy_config_sib13_eNB(module_id_t Mod_id,
240
                          int CC_id,
241 242
                          int mbsfn_Area_idx,
                          long mbsfn_AreaId_r9);
243 244 245 246

/**
\brief Configure cba rnti for .
@param Mod_id Instance ID for eNB
knopp's avatar
knopp committed
247
@param CC_id Component Carrier Index
248
@param eNB_flag flag indicating whether the nodeis eNB (1) or UE (0)
249
@param index index of the node
250 251
@param cba_rnti rnti for the cba transmission
@param num_active_cba_groups num active cba group
252
 */
knopp's avatar
knopp committed
253
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);
254 255 256

/** \brief Configure RRC inter-cell measurements procedures
@param Mod_id Index of UE
knopp's avatar
knopp committed
257
@param CC_id
258 259 260
@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
261 262
 */
void phy_config_meas_ue(module_id_t Mod_id,
263
                        uint8_t CC_id,
264
                        uint8_t eNB_index,
265 266
                        uint8_t n_adj_cells,
                        uint32_t *adj_cell_id);
267 268

/*!
269
\fn void phy_config_dedicated_eNB(module_id_t Mod_id,uint16_t rnti,
270
                                  struct PhysicalConfigDedicated *physicalConfigDedicated)
271 272
\brief Prepare for configuration of PHY with dedicated parameters.
\details Invoked just prior to transmission of RRCConnectionSetup or RRCConnectionReconfiguration at eNB.
273
@param Mod_id Instance ID for eNB
knopp's avatar
knopp committed
274
@param CC_id Component Carrier index
275 276
@param rnti rnti for UE context
@param physicalConfigDedicated PHY Configuration information
277 278
 */
void phy_config_dedicated_eNB(module_id_t Mod_id,
knopp's avatar
knopp committed
279
                              int CC_id,
280
                              rnti_t rnti,
281
                              struct PhysicalConfigDedicated *physicalConfigDedicated);
282 283 284 285 286

/*!
\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
287
 */
288 289 290 291
void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *phy_vars_eNB);

/*
  \fn int phy_init_secsys_eNB(PHY_VARS_eNB *phy_vars_eNb)
292
\brief Allocate and Initialize the PHY variables relevant to the LTE implementation.
293
@param phy_vars_eNb pointer to LTE parameter structure for the eNb
294
 */
295 296 297 298 299 300 301
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);

302 303 304 305 306 307 308 309 310 311 312 313
void lte_param_init(unsigned char N_tx, 
		    unsigned char N_rx,
		    unsigned char transmission_mode,
		    uint8_t extended_prefix_flag,
		    frame_t frame_type, 
		    uint16_t Nid_cell,
		    uint8_t tdd_config,
		    uint8_t N_RB_DL,
		    uint8_t threequarter_fs,
                    uint8_t osf,
		    uint32_t perfect_ce);

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

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

325
#endif
326

327 328 329


/*! !\fn void phy_cleanup(void)
330
\brief Cleanup the PHY variables*/
331 332
void phy_cleanup(void);

333

334
int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms,uint8_t osf);
335
void dump_frame_parms(LTE_DL_FRAME_PARMS *frame_parms);
336 337 338 339 340 341 342 343 344 345 346 347

void lte_param_init(unsigned char N_tx, 
		    unsigned char N_rx,
		    unsigned char transmission_mode,
		    uint8_t extended_prefix_flag,
		    frame_t frame_type, 
		    uint16_t Nid_cell,
		    uint8_t tdd_config,
		    uint8_t N_RB_DL,
		    uint8_t threequarter_fs,
                    uint8_t osf,
		    uint32_t perfect_ce);
348 349 350 351

/** @} */
#endif