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_paprtr_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_PAPRTR_CC_IMPL_H
22 #define INCLUDED_DTV_DVBT2_PAPRTR_CC_IMPL_H
23 
25 #include <gnuradio/fft/fft.h>
26 #include "dvb/dvb_defines.h"
27 
28 #define MAX_CARRIERS 27841
29 #define MAX_FFTSIZE 32768
30 #define MAX_PAPRTONES 288
31 
39 };
40 
41 namespace gr {
42  namespace dtv {
43 
45  {
46  private:
47  int num_symbols;
48  int fft_size;
49  int left_nulls;
50  int right_nulls;
51  int pilot_pattern;
52  int carrier_mode;
53  int papr_mode;
54  int version_num;
55  double v_clip;
56  int num_iterations;
57  const int *papr_map;
58  const int *p2_papr_map;
59  const int *tr_papr_map;
60  int p2_carrier_map[MAX_CARRIERS];
61  int data_carrier_map[MAX_CARRIERS];
62  int fc_carrier_map[MAX_CARRIERS];
63  gr_complex *ones_freq;
64  gr_complex *ones_time;
65  gr_complex *c;
66  gr_complex *ctemp;
67  float *magnitude;
68  gr_complex *r;
69  gr_complex *rNew;
70  gr_complex *v;
71  float alphaLimit[MAX_PAPRTONES];
72  float alphaLimitMax[MAX_PAPRTONES];
73  int N_P2;
74  int N_FC;
75  int K_EXT;
76  int C_PS;
77  int N_TR;
78  int dx;
79  int dy;
80  int shift;
81  void init_pilots(int);
82 
83  fft::fft_complex *papr_fft;
84  int papr_fft_size;
85 
86  const static int p2_papr_map_1k[10];
87  const static int p2_papr_map_2k[18];
88  const static int p2_papr_map_4k[36];
89  const static int p2_papr_map_8k[72];
90  const static int p2_papr_map_16k[144];
91  const static int p2_papr_map_32k[288];
92  const static int tr_papr_map_1k[10];
93  const static int tr_papr_map_2k[18];
94  const static int tr_papr_map_4k[36];
95  const static int tr_papr_map_8k[72];
96  const static int tr_papr_map_16k[144];
97  const static int tr_papr_map_32k[288];
98 
99  public:
100  dvbt2_paprtr_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, float vclip, int iterations, int vlength);
102 
103  int work(int noutput_items,
104  gr_vector_const_void_star &input_items,
105  gr_vector_void_star &output_items);
106  };
107 
108  } // namespace dtv
109 } // namespace gr
110 
111 #endif /* INCLUDED_DTV_DVBT2_PAPRTR_CC_IMPL_H */
112 
dvbt2_pilotpattern_t
Definition: dvbt2_config.h:91
int work(int noutput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
just like gr::block::general_work, only this arranges to call consume_each for you ...
Definition: dvbt2_paprtr_cc_impl.h:38
Definition: dvbt2_paprtr_cc_impl.h:35
FFT: complex in, complex out.
Definition: fft.h:71
Definition: dvbt2_paprtr_cc_impl.h:34
std::vector< const void * > gr_vector_const_void_star
Definition: gnuradio-runtime/include/gnuradio/types.h:38
Definition: cc_common.h:45
Peak to Average Power Ratio (PAPR) reduction.Input: A T2 frame of OFDM symbols. Output: A T2 frame of...
Definition: dvbt2_paprtr_cc.h:38
dvbt2_fftsize_t
Definition: dvbt2_config.h:55
dvbt2_version_t
Definition: dvbt2_config.h:102
Definition: dvbt2_paprtr_cc_impl.h:44
dvbt2_paprtr_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, float vclip, int iterations, int vlength)
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
Include this header to use the message passing features.
Definition: logger.h:129
Definition: dvbt2_paprtr_cc_impl.h:36
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
Definition: dvbt2_paprtr_cc_impl.h:37
#define MAX_CARRIERS
Definition: dvbt2_paprtr_cc_impl.h:28
dvbt2_extended_carrier_t
Definition: dvbt2_config.h:42
dvbt2_guardinterval_t
Definition: dvbt2_config.h:67
Definition: dvbt2_paprtr_cc_impl.h:33
#define MAX_PAPRTONES
Definition: dvbt2_paprtr_cc_impl.h:30