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_framemapper_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_FRAMEMAPPER_CC_IMPL_H
22 #define INCLUDED_DTV_DVBT2_FRAMEMAPPER_CC_IMPL_H
23 
25 #include "dvb/dvb_defines.h"
26 
27 #define KBCH_1_4 3072
28 #define NBCH_1_4 3240
29 #define KBCH_1_2 7032
30 #define NBCH_1_2 7200
31 
32 #define KSIG_PRE 200
33 #define KSIG_POST 350
34 #define NBCH_PARITY 168
35 
36 typedef struct{
37  int type;
38  int bwt_ext;
39  int s1;
40  int s2;
43  int papr;
44  int l1_mod;
45  int l1_cod;
51  int cell_id;
58  int num_rf;
63  int reserved;
64  int crc_32;
65 }L1Pre;
66 
67 typedef struct{
69  int num_plp;
70  int num_aux;
72  int rf_idx;
73  int frequency;
74  int plp_id;
75  int plp_type;
77  int ff_flag;
81  int plp_cod;
82  int plp_mod;
92  int plp_mode;
97  int frame_idx;
108 }L1Post;
109 
110 typedef struct{
113 }L1Signalling;
114 
115 typedef struct{
120 
121 typedef struct{
126 
127 namespace gr {
128  namespace dtv {
129 
131  {
132  private:
133  int cell_size;
134  int stream_items;
135  int mapped_items;
136  int l1_constellation;
137  int fft_size;
138  int eta_mod;
139  int t2_frames;
140  int t2_frame_num;
141  int l1_scrambled;
142  int fef_present;
143  int fef_length;
144  int fef_interval;
145  int N_P2;
146  int C_P2;
147  int N_FC;
148  int C_FC;
149  int C_DATA;
150  int N_post;
151  int N_punc;
152  L1Signalling L1_Signalling[1];
153  void add_l1pre(gr_complex *);
154  void add_l1post(gr_complex *, int);
155  int add_crc32_bits(unsigned char *, int);
156  unsigned int m_poly_s_12[6];
157  int poly_mult(const int*, int, const int*, int, int*);
158  void poly_pack(const int*, unsigned int*, int);
159  void poly_reverse(int*, int*, int);
160  inline void reg_6_shift(unsigned int*);
161  void bch_poly_build_tables(void);
162  void l1pre_ldpc_lookup_generate(void);
163  void l1post_ldpc_lookup_generate(void);
164  void init_dummy_randomizer(void);
165  void init_l1_randomizer(void);
166  l1pre_ldpc_encode_table l1pre_ldpc_encode;
167  l1post_ldpc_encode_table l1post_ldpc_encode;
168  unsigned char l1_temp[FRAME_SIZE_SHORT];
169  unsigned char l1_interleave[FRAME_SIZE_SHORT];
170  unsigned char l1_map[KBCH_1_2];
171  unsigned char l1_randomize[KBCH_1_2];
172  gr_complex *zigzag_interleave;
173  gr_complex *dummy_randomize;
174  gr_complex l1pre_cache[1840];
175  gr_complex unmodulated;
176  gr_complex m_bpsk[2];
177  gr_complex m_qpsk[4];
178  gr_complex m_16qam[16];
179  gr_complex m_64qam[64];
180 
181  const static int ldpc_tab_1_4S[9][13];
182  const static int ldpc_tab_1_2S[20][9];
183 
184  const static int pre_puncture[36];
185  const static int post_padding_bqpsk[20];
186  const static int post_padding_16qam[20];
187  const static int post_padding_64qam[20];
188  const static int post_puncture_bqpsk[25];
189  const static int post_puncture_16qam[25];
190  const static int post_puncture_64qam[25];
191 
192  const static int mux16[8];
193  const static int mux64[12];
194 
195  public:
196  dvbt2_framemapper_cc_impl(dvb_framesize_t framesize, dvb_code_rate_t rate, dvb_constellation_t constellation, dvbt2_rotation_t rotation, int fecblocks, int tiblocks, dvbt2_extended_carrier_t carriermode, dvbt2_fftsize_t fftsize, dvbt2_guardinterval_t guardinterval, dvbt2_l1constellation_t l1constellation, dvbt2_pilotpattern_t pilotpattern, int t2frames, int numdatasyms, dvbt2_papr_t paprmode, dvbt2_version_t version, dvbt2_preamble_t preamble, dvbt2_inputmode_t inputmode, dvbt2_reservedbiasbits_t reservedbiasbits, dvbt2_l1scrambled_t l1scrambled, dvbt2_inband_t inband);
198 
199  void forecast (int noutput_items, gr_vector_int &ninput_items_required);
200 
201  int general_work(int noutput_items,
202  gr_vector_int &ninput_items,
203  gr_vector_const_void_star &input_items,
204  gr_vector_void_star &output_items);
205  };
206 
207  } // namespace dtv
208 } // namespace gr
209 
210 #endif /* INCLUDED_DTV_DVBT2_FRAMEMAPPER_CC_IMPL_H */
211 
#define KBCH_1_2
Definition: dvbt2_framemapper_cc_impl.h:29
int plp_group_id
Definition: dvbt2_framemapper_cc_impl.h:80
#define LDPC_ENCODE_TABLE_LENGTH
Definition: dvb_defines.h:56
int sub_slice_interval
Definition: dvbt2_framemapper_cc_impl.h:98
int l1_repetition_flag
Definition: dvbt2_framemapper_cc_impl.h:41
int regen_flag
Definition: dvbt2_framemapper_cc_impl.h:56
int frequency
Definition: dvbt2_framemapper_cc_impl.h:73
int static_flag
Definition: dvbt2_framemapper_cc_impl.h:93
int l1_post_size
Definition: dvbt2_framemapper_cc_impl.h:47
dvbt2_pilotpattern_t
Definition: dvbt2_config.h:91
int l1_cod
Definition: dvbt2_framemapper_cc_impl.h:45
int num_rf
Definition: dvbt2_framemapper_cc_impl.h:58
int network_id
Definition: dvbt2_framemapper_cc_impl.h:52
int plp_mod
Definition: dvbt2_framemapper_cc_impl.h:82
dvbt2_inputmode_t
Definition: dvbt2_config.h:37
int plp_start
Definition: dvbt2_framemapper_cc_impl.h:104
int num_t2_frames
Definition: dvbt2_framemapper_cc_impl.h:54
int ff_flag
Definition: dvbt2_framemapper_cc_impl.h:77
Definition: dvbt2_framemapper_cc_impl.h:115
Definition: dvbt2_framemapper_cc_impl.h:67
int table_length
Definition: dvbt2_framemapper_cc_impl.h:116
dvb_constellation_t
Definition: dvb_config.h:80
Definition: dvbt2_framemapper_cc_impl.h:36
int l1_post_extension
Definition: dvbt2_framemapper_cc_impl.h:57
int t2_system_id
Definition: dvbt2_framemapper_cc_impl.h:53
int start_rf_idx
Definition: dvbt2_framemapper_cc_impl.h:101
int guard_interval
Definition: dvbt2_framemapper_cc_impl.h:42
int l1_change_counter
Definition: dvbt2_framemapper_cc_impl.h:100
int l1_post_scrambled
Definition: dvbt2_framemapper_cc_impl.h:61
int current_rf_index
Definition: dvbt2_framemapper_cc_impl.h:59
L1Post l1post_data
Definition: dvbt2_framemapper_cc_impl.h:112
int reserved_5
Definition: dvbt2_framemapper_cc_impl.h:107
L1Pre l1pre_data
Definition: dvbt2_framemapper_cc_impl.h:111
Definition: dvbt2_framemapper_cc_impl.h:130
int frame_interval
Definition: dvbt2_framemapper_cc_impl.h:86
int type_2_start
Definition: dvbt2_framemapper_cc_impl.h:99
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
int in_band_a_flag
Definition: dvbt2_framemapper_cc_impl.h:89
dvbt2_version_t
Definition: dvbt2_config.h:102
int rf_idx
Definition: dvbt2_framemapper_cc_impl.h:72
int aux_config_rfu
Definition: dvbt2_framemapper_cc_impl.h:71
int l1_fec_type
Definition: dvbt2_framemapper_cc_impl.h:46
#define FRAME_SIZE_SHORT
Definition: dvb_defines.h:48
int frame_idx
Definition: dvbt2_framemapper_cc_impl.h:97
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
int plp_payload_type
Definition: dvbt2_framemapper_cc_impl.h:76
std::vector< int > gr_vector_int
Definition: gnuradio-runtime/include/gnuradio/types.h:33
int plp_cod
Definition: dvbt2_framemapper_cc_impl.h:81
int first_frame_idx
Definition: dvbt2_framemapper_cc_impl.h:79
int in_band_b_flag
Definition: dvbt2_framemapper_cc_impl.h:90
Include this header to use the message passing features.
Definition: logger.h:129
Definition: dvbt2_framemapper_cc_impl.h:121
dvbt2_preamble_t
Definition: dvbt2_config.h:47
int reserved_1
Definition: dvbt2_framemapper_cc_impl.h:91
int pilot_pattern
Definition: dvbt2_framemapper_cc_impl.h:49
dvbt2_rotation_t
Definition: dvbt2_config.h:26
int time_il_length
Definition: dvbt2_framemapper_cc_impl.h:87
int bwt_ext
Definition: dvbt2_framemapper_cc_impl.h:38
int l1_mod
Definition: dvbt2_framemapper_cc_impl.h:44
dvbt2_l1constellation_t
Definition: dvbt2_config.h:84
int t2_version
Definition: dvbt2_framemapper_cc_impl.h:60
int plp_id
Definition: dvbt2_framemapper_cc_impl.h:74
int cell_id
Definition: dvbt2_framemapper_cc_impl.h:51
int table_length
Definition: dvbt2_framemapper_cc_impl.h:122
GR_RUNTIME_API const std::string version()
return version string defined by cmake (GrVersion.cmake)
int static_padding_flag
Definition: dvbt2_framemapper_cc_impl.h:94
dvbt2_papr_t
Definition: dvbt2_config.h:77
int reserved
Definition: dvbt2_framemapper_cc_impl.h:63
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
int s2
Definition: dvbt2_framemapper_cc_impl.h:40
dvbt2_inband_t
Definition: dvbt2_config.h:128
void forecast(int noutput_items, gr_vector_int &ninput_items_required)
Estimate input requirements given output request.
int plp_num_blocks_max
Definition: dvbt2_framemapper_cc_impl.h:85
Maps T2 frames.Input: Cell and time interleaved QPSK, 16QAM, 64QAM or 256QAM modulated cells...
Definition: dvbt2_framemapper_cc.h:39
int plp_rotation
Definition: dvbt2_framemapper_cc_impl.h:83
int crc_32
Definition: dvbt2_framemapper_cc_impl.h:64
int first_rf_idx
Definition: dvbt2_framemapper_cc_impl.h:78
int plp_id_dynamic
Definition: dvbt2_framemapper_cc_impl.h:103
int sub_slices_per_frame
Definition: dvbt2_framemapper_cc_impl.h:68
int tx_id_availability
Definition: dvbt2_framemapper_cc_impl.h:50
int num_aux
Definition: dvbt2_framemapper_cc_impl.h:70
int fef_length_msb
Definition: dvbt2_framemapper_cc_impl.h:95
Definition: dvbt2_framemapper_cc_impl.h:110
int plp_fec_type
Definition: dvbt2_framemapper_cc_impl.h:84
int num_plp
Definition: dvbt2_framemapper_cc_impl.h:69
dvbt2_extended_carrier_t
Definition: dvbt2_config.h:42
dvbt2_guardinterval_t
Definition: dvbt2_config.h:67
int num_data_symbols
Definition: dvbt2_framemapper_cc_impl.h:55
int plp_type
Definition: dvbt2_framemapper_cc_impl.h:75
int l1_post_info_size
Definition: dvbt2_framemapper_cc_impl.h:48
dvb_framesize_t
Definition: dvb_config.h:75
int reserved_3
Definition: dvbt2_framemapper_cc_impl.h:102
int s1
Definition: dvbt2_framemapper_cc_impl.h:39
dvbt2_reservedbiasbits_t
Definition: dvbt2_config.h:108
int papr
Definition: dvbt2_framemapper_cc_impl.h:43
dvbt2_framemapper_cc_impl(dvb_framesize_t framesize, dvb_code_rate_t rate, dvb_constellation_t constellation, dvbt2_rotation_t rotation, int fecblocks, int tiblocks, dvbt2_extended_carrier_t carriermode, dvbt2_fftsize_t fftsize, dvbt2_guardinterval_t guardinterval, dvbt2_l1constellation_t l1constellation, dvbt2_pilotpattern_t pilotpattern, int t2frames, int numdatasyms, dvbt2_papr_t paprmode, dvbt2_version_t version, dvbt2_preamble_t preamble, dvbt2_inputmode_t inputmode, dvbt2_reservedbiasbits_t reservedbiasbits, dvbt2_l1scrambled_t l1scrambled, dvbt2_inband_t inband)
int plp_num_blocks
Definition: dvbt2_framemapper_cc_impl.h:105
dvbt2_l1scrambled_t
Definition: dvbt2_config.h:113
int plp_mode
Definition: dvbt2_framemapper_cc_impl.h:92
dvb_code_rate_t
Definition: dvb_config.h:31
int time_il_type
Definition: dvbt2_framemapper_cc_impl.h:88
int reserved_4
Definition: dvbt2_framemapper_cc_impl.h:106
int type
Definition: dvbt2_framemapper_cc_impl.h:37
int t2_base_lite
Definition: dvbt2_framemapper_cc_impl.h:62
int reserved_2
Definition: dvbt2_framemapper_cc_impl.h:96