GNU Radio Manual and C++ API Reference  3.7.7
The Free & Open Software Radio Ecosystem
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
dvbt2_pilotgenerator_cc_impl.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2015 Free Software Foundation, Inc.
4  *
5  * This is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 3, or (at your option)
8  * any later version.
9  *
10  * This software is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this software; see the file COPYING. If not, write to
17  * the Free Software Foundation, Inc., 51 Franklin Street,
18  * Boston, MA 02110-1301, USA.
19  */
20 
21 #ifndef INCLUDED_DTV_DVBT2_PILOTGENERATOR_CC_IMPL_H
22 #define INCLUDED_DTV_DVBT2_PILOTGENERATOR_CC_IMPL_H
23 
25 #include <gnuradio/fft/fft.h>
26 #include "dvb/dvb_defines.h"
27 
28 #define CHIPS 2624
29 #define MAX_CARRIERS 27841
30 
41 };
42 
43 namespace gr {
44  namespace dtv {
45 
47  {
48  private:
49  int active_items;
50  int num_symbols;
51  int fft_size;
52  int left_nulls;
53  int right_nulls;
54  int pilot_pattern;
55  int carrier_mode;
56  int papr_mode;
57  int equalization_enable;
58  float normalization;
59  gr_complex p2_bpsk[2];
60  gr_complex sp_bpsk[2];
61  gr_complex cp_bpsk[2];
62  gr_complex p2_bpsk_inverted[2];
63  gr_complex sp_bpsk_inverted[2];
64  gr_complex cp_bpsk_inverted[2];
65  gr_complex inverse_sinc[32768];
66  int prbs[MAX_CARRIERS];
67  int pn_sequence[CHIPS];
68  int p2_carrier_map[MAX_CARRIERS];
69  int data_carrier_map[MAX_CARRIERS];
70  int fc_carrier_map[MAX_CARRIERS];
71  int N_P2;
72  int C_P2;
73  int N_FC;
74  int C_FC;
75  int C_DATA;
76  int K_EXT;
77  int C_PS;
78  int K_OFFSET;
79  int dx;
80  int dy;
81  int miso;
82  int miso_group;
83  void init_prbs(void);
84  void init_pilots(int);
85 
86  fft::fft_complex *ofdm_fft;
87  int ofdm_fft_size;
88 
89  const static unsigned char pn_sequence_table[CHIPS / 8];
90  const static int p2_papr_map_1k[10];
91  const static int p2_papr_map_2k[18];
92  const static int p2_papr_map_4k[36];
93  const static int p2_papr_map_8k[72];
94  const static int p2_papr_map_16k[144];
95  const static int p2_papr_map_32k[288];
96  const static int tr_papr_map_1k[10];
97  const static int tr_papr_map_2k[18];
98  const static int tr_papr_map_4k[36];
99  const static int tr_papr_map_8k[72];
100  const static int tr_papr_map_16k[144];
101  const static int tr_papr_map_32k[288];
102  const static int pp1_cp1[20];
103  const static int pp1_cp2[25];
104  const static int pp1_cp5[44];
105  const static int pp2_cp1[20];
106  const static int pp2_cp2[22];
107  const static int pp2_cp3[2];
108  const static int pp2_cp4[2];
109  const static int pp2_cp5[41];
110  const static int pp2_cp6[88];
111  const static int pp3_cp1[22];
112  const static int pp3_cp2[20];
113  const static int pp3_cp3[1];
114  const static int pp3_cp5[44];
115  const static int pp3_cp6[49];
116  const static int pp4_cp1[20];
117  const static int pp4_cp2[23];
118  const static int pp4_cp3[1];
119  const static int pp4_cp4[2];
120  const static int pp4_cp5[44];
121  const static int pp4_cp6[86];
122  const static int pp5_cp1[19];
123  const static int pp5_cp2[23];
124  const static int pp5_cp3[3];
125  const static int pp5_cp4[1];
126  const static int pp5_cp5[44];
127  const static int pp6_cp5[88];
128  const static int pp6_cp6[88];
129  const static int pp7_cp1[15];
130  const static int pp7_cp2[30];
131  const static int pp7_cp3[5];
132  const static int pp7_cp4[3];
133  const static int pp7_cp5[35];
134  const static int pp7_cp6[92];
135  const static int pp8_cp4[47];
136  const static int pp8_cp5[39];
137  const static int pp8_cp6[89];
138  const static int pp2_8k[4];
139  const static int pp3_8k[2];
140  const static int pp4_8k[2];
141  const static int pp7_8k[5];
142  const static int pp8_8k[5];
143  const static int pp1_16k[4];
144  const static int pp2_16k[2];
145  const static int pp3_16k[2];
146  const static int pp4_16k[2];
147  const static int pp5_16k[2];
148  const static int pp6_16k[2];
149  const static int pp7_16k[3];
150  const static int pp8_16k[3];
151  const static int pp2_32k[2];
152  const static int pp4_32k[2];
153  const static int pp6_32k[4];
154  const static int pp7_32k[2];
155  const static int pp8_32k[6];
156 
157  public:
158  dvbt2_pilotgenerator_cc_impl(dvbt2_extended_carrier_t carriermode, dvbt2_fftsize_t fftsize, dvbt2_pilotpattern_t pilotpattern, dvbt2_guardinterval_t guardinterval, int numdatasyms, dvbt2_papr_t paprmode, dvbt2_version_t version, dvbt2_preamble_t preamble, dvbt2_misogroup_t misogroup, dvbt2_equalization_t equalization, dvbt2_bandwidth_t bandwidth, int vlength);
160 
161  void forecast (int noutput_items, gr_vector_int &ninput_items_required);
162 
163  int general_work(int noutput_items,
164  gr_vector_int &ninput_items,
165  gr_vector_const_void_star &input_items,
166  gr_vector_void_star &output_items);
167  };
168 
169  } // namespace dtv
170 } // namespace gr
171 
172 #endif /* INCLUDED_DTV_DVBT2_PILOTGENERATOR_CC_IMPL_H */
173 
Definition: dvbt2_pilotgenerator_cc_impl.h:39
dvbt2_pilotpattern_t
Definition: dvbt2_config.h:91
Definition: dvbt2_pilotgenerator_cc_impl.h:33
Definition: dvbt2_pilotgenerator_cc_impl.h:36
dvbt2_pilotgenerator_cc_impl(dvbt2_extended_carrier_t carriermode, dvbt2_fftsize_t fftsize, dvbt2_pilotpattern_t pilotpattern, dvbt2_guardinterval_t guardinterval, int numdatasyms, dvbt2_papr_t paprmode, dvbt2_version_t version, dvbt2_preamble_t preamble, dvbt2_misogroup_t misogroup, dvbt2_equalization_t equalization, dvbt2_bandwidth_t bandwidth, int vlength)
FFT: complex in, complex out.
Definition: fft.h:71
Definition: dvbt2_pilotgenerator_cc_impl.h:35
#define CHIPS
Definition: dvbt2_pilotgenerator_cc_impl.h:28
Adds pilots to T2 frames.Input: Frequency interleaved T2 frame. Output: T2 frame with pilots (in time...
Definition: dvbt2_pilotgenerator_cc.h:38
dvbt2_bandwidth_t
Definition: dvbt2_config.h:138
std::vector< const void * > gr_vector_const_void_star
Definition: gnuradio-runtime/include/gnuradio/types.h:38
dvbt2_fftsize_t
Definition: dvbt2_config.h:55
dvbt2_version_t
Definition: dvbt2_config.h:102
std::vector< void * > gr_vector_void_star
Definition: gnuradio-runtime/include/gnuradio/types.h:37
std::complex< float > gr_complex
Definition: gr_complex.h:27
std::vector< int > gr_vector_int
Definition: gnuradio-runtime/include/gnuradio/types.h:33
dvbt2_misogroup_t
Definition: dvbt2_config.h:118
Include this header to use the message passing features.
Definition: logger.h:129
#define MAX_CARRIERS
Definition: dvbt2_pilotgenerator_cc_impl.h:29
dvbt2_preamble_t
Definition: dvbt2_config.h:47
Definition: dvbt2_pilotgenerator_cc_impl.h:37
dvbt2_carrier_type_t
Definition: dvbt2_paprtr_cc_impl.h:32
GR_RUNTIME_API const std::string version()
return version string defined by cmake (GrVersion.cmake)
dvbt2_papr_t
Definition: dvbt2_config.h:77
void forecast(int noutput_items, gr_vector_int &ninput_items_required)
Estimate input requirements given output request.
int general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
compute output items from input items
Definition: dvbt2_pilotgenerator_cc_impl.h:40
Definition: dvbt2_pilotgenerator_cc_impl.h:34
Definition: dvbt2_pilotgenerator_cc_impl.h:32
Definition: dvbt2_pilotgenerator_cc_impl.h:38
dvbt2_extended_carrier_t
Definition: dvbt2_config.h:42
dvbt2_guardinterval_t
Definition: dvbt2_config.h:67
Definition: dvbt2_pilotgenerator_cc_impl.h:46
dvbt2_equalization_t
Definition: dvbt2_config.h:133