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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*******************************************************************************
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
Address : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE
*******************************************************************************/
/*! \file PHY/LTE_TRANSPORT/pilots_mbsfn.c
* \brief Top-level routines for generating DL mbsfn reference signals
* \authors S. Paranche, R. Knopp
* \date 2012
* \version 0.1
* \company Eurecom
* \email: knopp@eurecom.fr
* \note
* \warning
*/
//#include "defs.h"
#include "PHY/defs.h"
int generate_mbsfn_pilot(PHY_VARS_eNB *phy_vars_eNB,
mod_sym_t **txdataF,
int16_t amp,
uint16_t subframe) {
LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_eNB->lte_frame_parms;
uint32_t subframe_offset,Nsymb,samples_per_symbol;
if (subframe<0 || subframe>= 10) {
msg("generate_mbsfn_pilots_subframe: subframe not in range (%d)\n",subframe);
return(-1);
}
Nsymb = (frame_parms->Ncp==NORMAL) ? 7 : 6;
subframe_offset = subframe*frame_parms->ofdm_symbol_size*Nsymb<<1;
samples_per_symbol = frame_parms->ofdm_symbol_size;
// printf("tti %d : offset %d (slot %d)\n",tti,tti_offset,slot_offset);
//Generate Pilots
//antenna 4 symbol 2 Slot 0
lte_dl_mbsfn(phy_vars_eNB,
&txdataF[0][subframe_offset+(2*samples_per_symbol)],
amp,
subframe,
0);
//antenna 4 symbol 0 slot 1
lte_dl_mbsfn(phy_vars_eNB,
&txdataF[0][subframe_offset+(6*samples_per_symbol)],
amp,
subframe,
1);
//antenna 4 symbol 4 slot 1
lte_dl_mbsfn(phy_vars_eNB,
&txdataF[0][subframe_offset+(10*samples_per_symbol)],
amp,
subframe,
2);
return(0);
}