phy_init.h 16.2 KB
Newer Older
1
2
3
4
5
/*
 * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The OpenAirInterface Software Alliance licenses this file to You under
Cédric Roux's avatar
Cédric Roux committed
6
 * the OAI Public License, Version 1.1  (the "License"); you may not use this file
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 * except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.openairinterface.org/?page_id=698
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *-------------------------------------------------------------------------------
 * For more information about the OpenAirInterface (OAI) Software Alliance:
 *      contact@openairinterface.org
 */

22
23
24
#ifndef __INIT_DEFS__H__
#define __INIT_DEFS__H__

25
26
#include "PHY/defs_eNB.h"
#include "PHY/defs_UE.h"
27
28
#include "PHY/defs_gNB.h"
#include "PHY/defs_nr_UE.h"
29

30
31
32
33
#include "SystemInformationBlockType2.h"
//#include "RadioResourceConfigCommonSIB.h"
#include "RadioResourceConfigDedicated.h"
#include "TDD-Config.h"
34
#include "PHICH-Config.h"
35
#include "MBSFN-SubframeConfigList.h"
36
#include "MobilityControlInfo.h"
Cédric Roux's avatar
Cédric Roux committed
37
#if defined(Rel10) || defined(Rel14)
38
#include "SCellToAddMod-r10.h"
39
#endif
40
41
42
43
/** @addtogroup _PHY_STRUCTURES_
 * @{
 */

44
45
46
47
48
49
50
/*!
\fn int l1_top_init_eNB(void)
\brief Initialize north interface for L1
@returns 0 on success
 */
int l1_north_init_eNB(void);

51
52
53
54
55
/*!
\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
56
 */
57
58
59
60
int phy_init_top(LTE_DL_FRAME_PARMS *frame_parms);


/*!
knopp's avatar
knopp committed
61
\brief Allocate and Initialize the PHY variables relevant to the LTE ue signal buffers.
62
63
\details Only a subset of phy_vars_ue is initialized.
@param[out] phy_vars_ue Pointer to UE Variables
64
65
66
@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
67
68
@returns -1 if any memory allocation failed
@note The current implementation will never return -1, but segfault.
gauthier's avatar
gauthier committed
69
 */
Cédric Roux's avatar
Cédric Roux committed
70
int init_lte_ue_signal(PHY_VARS_UE *phy_vars_ue,
knopp's avatar
knopp committed
71
72
73
74
75
76
77
78
79
			   int          nb_connected_eNB,
			   uint8_t         abstraction_flag);

/*!
\brief Allocate and initialize the PHY variables releated to the transport channel buffers (UL/DL)
@param ue Pointer to UE L1 context
@param abstraction flag Indicates that abstraction is used in L1
*/
void init_lte_ue_transport(PHY_VARS_UE *ue,int absraction_flag);
80
81

/*!
82
83
84
\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
85
86
87
@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
88
89
@returns -1 if any memory allocation failed
@note The current implementation will never return -1, but segfault.
gauthier's avatar
gauthier committed
90
 */
91
int phy_init_lte_eNB(PHY_VARS_eNB *phy_vars_eNb,
gauthier's avatar
gauthier committed
92
93
                     unsigned char is_secondary_eNb,
                     unsigned char abstraction_flag);
94

95
96
97
98
99
100
101
/*!
\brief Free the PHY variables relevant to the LTE implementation (eNB).
\details Only a subset of phy_vars_eNb is freed (those who have been allocated with phy_init_lte_eNB()).
@param[in] phy_vars_eNb Pointer to eNB Variables
 */
void phy_free_lte_eNB(PHY_VARS_eNB *phy_vars_eNb);

102
103
/** \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$
104
105
106
107
108
109
@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 p_eNB Number of eNB TX antennas
@param phich_config Pointer to PHICH_CONFIG_COMMON
gauthier's avatar
gauthier committed
110
 */
111
112
113
114
115
116
117
118
119
120
121
void phy_config_mib_eNB(int                    Mod_id,
			int                    CC_id,
			int                    eutra_band,
			int                    N_RB_DL,
			PHICH_Config_t         *phich_config,
			int                    Nid_cell,
			int                    Ncp,
			int                    p_eNB,
			uint32_t               dl_CarrierFreq,
			uint32_t               ul_CarrierFreq);

122
123


124
125
/** \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.
126
@param Mod_id Instance ID of eNB
knopp's avatar
   
knopp committed
127
@param CC_id Component Carrier index
128
@param tdd_Config TDD UL/DL and S-subframe configurations
129
@param SIwindowsize Size of a SI window in frames where repetitions of a unique System Information message block is repeated
130
@param SIperiod Periodicity of System Information Messages (in multiples of a frame)*/
gauthier's avatar
gauthier committed
131
void phy_config_sib1_eNB(module_id_t    Mod_id,
knopp's avatar
   
knopp committed
132
                         int CC_id,
133
                         TDD_Config_t  *tdd_Config,
gauthier's avatar
gauthier committed
134
135
                         uint8_t           SIwindowsize,
                         uint16_t            SIperiod);
136

137
138
/** \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.
139
@param Mod_id Instance ID of UE
knopp's avatar
   
knopp committed
140
@param CC_id Component Carrier index
141
142
@param CH_index Index of eNB for this configuration
@param tdd_Config TDD UL/DL and S-subframe configurations
143
@param SIwindowsize Size of a SI window in frames where repetitions of a unique System Information message block is repeated
144
@param SIperiod Periodicity of System Information Messages (in multiples of a frame)*/
gauthier's avatar
gauthier committed
145
void phy_config_sib1_ue(module_id_t   Mod_id,
knopp's avatar
   
knopp committed
146
                        int CC_id,
147
                        uint8_t          CH_index,
gauthier's avatar
gauthier committed
148
149
150
                        TDD_Config_t *tdd_Config,
                        uint8_t          SIwindowsize,
                        uint16_t           SIperiod);
151
152
153


/*!
knopp's avatar
   
knopp committed
154
  \fn void phy_config_sib2_ue(module_id_t Mod_id,uint8_t CC_id,uint8_t CH_index,
155
156
157
158
159
160
      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).
161
  @param Mod_id Instance id
knopp's avatar
   
knopp committed
162
  @param CC_id
163
  @param CH_index Index of CH to which UE is connected
knopp's avatar
   
knopp committed
164
  @param CC_id Component Carrier Index
165
166
167
168
169
  @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
170
 */
knopp's avatar
   
knopp committed
171
172
void phy_config_sib2_ue(module_id_t                     Mod_id,
                        int                         CC_id,
173
                        uint8_t                         CH_index,
gauthier's avatar
gauthier committed
174
175
176
177
178
                        RadioResourceConfigCommonSIB_t  *radioResourceConfigCommon,
                        ARFCN_ValueEUTRA_t              *ul_CArrierFreq,
                        long                            *ul_Bandwidth,
                        AdditionalSpectrumEmission_t    *additionalSpectrumEmission,
                        struct MBSFN_SubframeConfigList *mbsfn_SubframeConfigList);
179

180

181
/*!
182
183
  \fn phy_config_afterHO_ue
  \brief Configure Common PHY parameters from mobilityControlInfo
184
  @param Mod_id
knopp's avatar
   
knopp committed
185
  @param CC_id
186
187
188
189
  @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
190
void phy_config_afterHO_ue(module_id_t Mod_id,
191
                           uint8_t CC_id,
192
                           uint8_t eNB_index,
gauthier's avatar
gauthier committed
193
194
                           MobilityControlInfo_t *mobilityControlInfo,
                           uint8_t ho_failed);
195
/*!
gauthier's avatar
gauthier committed
196
  \fn void phy_config_sib2_eNB(module_id_t Mod_id,
197
                               RadioResourceConfigCommonSIB_t *radioResourceConfigCommon,
198
199
200
201
202
             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).
203
  @param Mod_id Instance id
knopp's avatar
   
knopp committed
204
  @param Mod_id Component Carrier index
205
206
207
208
209
  @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
210
 */
knopp's avatar
   
knopp committed
211
212
void phy_config_sib2_eNB(module_id_t                            Mod_id,
                         int                                CC_id,
213
                         RadioResourceConfigCommonSIB_t         *radioResourceConfigCommon,
gauthier's avatar
gauthier committed
214
215
216
217
                         ARFCN_ValueEUTRA_t                     *ul_CArrierFreq,
                         long                                   *ul_Bandwidth,
                         AdditionalSpectrumEmission_t           *additionalSpectrumEmission,
                         struct MBSFN_SubframeConfigList        *mbsfn_SubframeConfigList);
218
219
220


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

gauthier's avatar
gauthier committed
230
 */
knopp's avatar
   
knopp committed
231
232
void phy_config_dedicated_ue(module_id_t Mod_id,
                             int CC_id,
233
                             uint8_t CH_index,
knopp's avatar
   
knopp committed
234
235
                             struct PhysicalConfigDedicated *physicalConfigDedicated);

Bilel's avatar
Bilel committed
236
237
238
239
240
241
242
243
244
/*!
\fn void phy_config_harq_ue(module_id_t Mod_id,uint8_t CC_id,uint8_t CH_index,
               uint16_t max_harq_tx)
\brief Configure UE UL max harq Tx.
\details Invoked upon reception of RRCConnectionSetup or RRCConnectionReconfiguration from eNB.
@param Mod_id Instance ID for eNB
@param CC_id Component Carrier index
@param CH_index Index of eNB for this configuration
@param max_harq_tx max harq tx information
245

Bilel's avatar
Bilel committed
246
247
248
 */
void phy_config_harq_ue(module_id_t Mod_id,int CC_id,uint8_t CH_index,
                           uint16_t max_harq_tx);
249
/**
250
251
\brief Configure UE MBSFN common parameters.
\details Invoked upon reception of SIB13 from eNB.
252
@param Mod_id Instance ID for UE
knopp's avatar
   
knopp committed
253
@param CC_id Component Carrier Index
254
255
256
@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
257
 */
258

gauthier's avatar
gauthier committed
259
void phy_config_sib13_ue(module_id_t Mod_id,
knopp's avatar
   
knopp committed
260
                         int CC_id,uint8_t CH_index,int mbsfn_Area_idx,
gauthier's avatar
gauthier committed
261
                         long mbsfn_AreaId_r9);
262
263

/**
264
265
\brief Configure eNB MBSFN common parameters.
\details Invoked upon transmission of SIB13 from eNB.
266
@param Mod_id Instance ID for eNB
knopp's avatar
   
knopp committed
267
@param CC_id Component Carrier index
268
269
@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
270
271
 */
void phy_config_sib13_eNB(module_id_t Mod_id,
272
                          int CC_id,
gauthier's avatar
gauthier committed
273
274
                          int mbsfn_Area_idx,
                          long mbsfn_AreaId_r9);
275
276
277
278

/**
\brief Configure cba rnti for .
@param Mod_id Instance ID for eNB
knopp's avatar
   
knopp committed
279
@param CC_id Component Carrier Index
280
@param eNB_flag flag indicating whether the nodeis eNB (1) or UE (0)
281
@param index index of the node
282
283
@param cba_rnti rnti for the cba transmission
@param num_active_cba_groups num active cba group
gauthier's avatar
gauthier committed
284
 */
knopp's avatar
   
knopp committed
285
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);
286
287
288

/** \brief Configure RRC inter-cell measurements procedures
@param Mod_id Index of UE
knopp's avatar
   
knopp committed
289
@param CC_id
290
291
292
@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
293
294
 */
void phy_config_meas_ue(module_id_t Mod_id,
295
                        uint8_t CC_id,
296
                        uint8_t eNB_index,
gauthier's avatar
gauthier committed
297
298
                        uint8_t n_adj_cells,
                        uint32_t *adj_cell_id);
299
300

/*!
gauthier's avatar
gauthier committed
301
\fn void phy_config_dedicated_eNB(module_id_t Mod_id,uint16_t rnti,
302
                                  struct PhysicalConfigDedicated *physicalConfigDedicated)
303
304
\brief Prepare for configuration of PHY with dedicated parameters.
\details Invoked just prior to transmission of RRCConnectionSetup or RRCConnectionReconfiguration at eNB.
305
@param Mod_id Instance ID for eNB
knopp's avatar
   
knopp committed
306
@param CC_id Component Carrier index
307
308
@param rnti rnti for UE context
@param physicalConfigDedicated PHY Configuration information
gauthier's avatar
gauthier committed
309
310
 */
void phy_config_dedicated_eNB(module_id_t Mod_id,
knopp's avatar
   
knopp committed
311
                              int CC_id,
312
                              rnti_t rnti,
gauthier's avatar
gauthier committed
313
                              struct PhysicalConfigDedicated *physicalConfigDedicated);
314
315
316
317
318

/*!
\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
319
 */
320
321
322
323
void phy_config_dedicated_eNB_step2(PHY_VARS_eNB *phy_vars_eNB);

/*
  \fn int phy_init_secsys_eNB(PHY_VARS_eNB *phy_vars_eNb)
324
\brief Allocate and Initialize the PHY variables relevant to the LTE implementation.
325
@param phy_vars_eNb pointer to LTE parameter structure for the eNb
gauthier's avatar
gauthier committed
326
 */
327
328
int phy_init_secsys_eNB(PHY_VARS_eNB *phy_vars_eNb);

329
void free_lte_top(void);
330

knopp's avatar
knopp committed
331
void init_lte_top(LTE_DL_FRAME_PARMS *lte_frame_parms);
332
333
334

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

knopp's avatar
knopp committed
335
336
337
void lte_param_init(PHY_VARS_eNB **eNBp,
		    PHY_VARS_UE **UEp,
		    RU_t **rup,
Cédric Roux's avatar
Cédric Roux committed
338
		    unsigned char N_tx_port_eNB,
knopp's avatar
knopp committed
339
                    unsigned char N_tx_phy,
340
341
		    unsigned char N_rx_ru,
		    unsigned char N_rx_ue,
342
343
		    unsigned char transmission_mode,
		    uint8_t extended_prefix_flag,
Cédric Roux's avatar
Cédric Roux committed
344
		    frame_t frame_type,
345
346
347
		    uint16_t Nid_cell,
		    uint8_t tdd_config,
		    uint8_t N_RB_DL,
knopp's avatar
knopp committed
348
		    uint8_t pa,
349
350
351
352
		    uint8_t threequarter_fs,
                    uint8_t osf,
		    uint32_t perfect_ce);

knopp's avatar
knopp committed
353

Cédric Roux's avatar
Cédric Roux committed
354
#if defined(Rel10) || defined(Rel14)
355
void phy_config_dedicated_scell_ue(uint8_t Mod_id,
356
357
358
                                   uint8_t eNB_index,
                                   SCellToAddMod_r10_t *sCellToAddMod_r10,
                                   int CC_id);
359
360

void phy_config_dedicated_scell_eNB(uint8_t Mod_id,
361
362
363
                                    uint16_t rnti,
                                    SCellToAddMod_r10_t *sCellToAddMod_r10,
                                    int CC_id);
364

365
#endif
366

367
368
369


/*! !\fn void phy_cleanup(void)
370
\brief Cleanup the PHY variables*/
371
372
void phy_cleanup(void);

373
void phy_config_request(PHY_Config_t *phy_config);
374

gauthier's avatar
gauthier committed
375
int init_frame_parms(LTE_DL_FRAME_PARMS *frame_parms,uint8_t osf);
376
void dump_frame_parms(LTE_DL_FRAME_PARMS *frame_parms);
Guy De Souza's avatar
Guy De Souza committed
377
int nr_init_frame_parms(nfapi_config_request_t* config, NR_DL_FRAME_PARMS *frame_parms);
hongzhi wang's avatar
hongzhi wang committed
378
int nr_init_frame_parms_ue(nfapi_config_request_t* config, NR_DL_FRAME_PARMS *frame_parms);
Guy De Souza's avatar
Guy De Souza committed
379
380
void nr_dump_frame_parms(NR_DL_FRAME_PARMS *frame_parms);
int phy_init_nr_gNB(PHY_VARS_gNB *gNB, unsigned char is_secondary_gNB, unsigned char abstraction_flag);
Guy De Souza's avatar
Guy De Souza committed
381
void nr_phy_config_request(PHY_VARS_gNB *gNB);
Guy De Souza's avatar
Guy De Souza committed
382
void phy_free_nr_gNB(PHY_VARS_gNB *gNB);
383

384
385
386
/** @} */
#endif