 |
GNU Radio Manual and C++ API Reference
3.9.4.0
The Free & Open Software Radio Ecosystem
|
|
Go to the documentation of this file.
11 #ifndef INCLUDED_DIGITAL_CONSTELLATION_H
12 #define INCLUDED_DIGITAL_CONSTELLATION_H
18 #include <boost/any.hpp>
31 typedef std::shared_ptr<constellation> constellation_sptr;
59 std::vector<int> pre_diff_code,
60 unsigned int rotational_symmetry,
61 unsigned int dimensionality,
62 normalization_t normalization = AMPLITUDE_NORMALIZATION);
67 void map_to_points(
unsigned int value,
gr_complex* points);
68 std::vector<gr_complex> map_to_points_v(
unsigned int value);
71 virtual unsigned int decision_maker(
const gr_complex* sample) = 0;
73 unsigned int decision_maker_v(std::vector<gr_complex> sample);
75 unsigned int decision_maker_pe(
const gr_complex* sample,
float* phase_error);
84 virtual void calc_euclidean_metric(
const gr_complex* sample,
float* metric);
85 virtual void calc_hard_symbol_metric(
const gr_complex* sample,
float* metric);
88 std::vector<gr_complex>
points() {
return d_constellation; }
91 std::vector<gr_complex> s_points();
93 std::vector<std::vector<gr_complex>> v_points();
109 return floor(log(
double(d_constellation.size())) / d_dimensionality / log(2.0));
112 unsigned int arity() {
return d_arity; }
114 constellation_sptr
base() {
return shared_from_this(); }
130 void gen_soft_dec_lut(
int precision,
float npwr = 1.0);
151 virtual std::vector<float> calc_soft_dec(
gr_complex sample,
float npwr = 1.0);
171 void set_soft_dec_lut(
const std::vector<std::vector<float>>& soft_dec_lut,
175 bool has_soft_dec_lut();
178 std::vector<std::vector<float>> soft_dec_lut();
190 std::vector<float> soft_decision_maker(
gr_complex sample);
209 float get_distance(
unsigned int index,
const gr_complex* sample);
210 unsigned int get_closest_point(
const gr_complex* sample);
232 typedef std::shared_ptr<constellation_calcdist>
sptr;
248 static sptr make(std::vector<gr_complex> constell,
249 std::vector<int> pre_diff_code,
250 unsigned int rotational_symmetry,
251 unsigned int dimensionality,
254 unsigned int decision_maker(
const gr_complex* sample)
override;
261 std::vector<int> pre_diff_code,
262 unsigned int rotational_symmetry,
263 unsigned int dimensionality,
297 std::vector<int> pre_diff_code,
298 unsigned int rotational_symmetry,
299 unsigned int dimensionality,
300 unsigned int n_sectors,
305 unsigned int decision_maker(
const gr_complex* sample)
override;
308 virtual unsigned int get_sector(
const gr_complex* sample) = 0;
309 virtual unsigned int calc_sector_value(
unsigned int sector) = 0;
310 void find_sector_values();
315 std::vector<int> sector_values;
339 typedef std::shared_ptr<constellation_rect>
sptr;
357 make(std::vector<gr_complex> constell,
358 std::vector<int> pre_diff_code,
359 unsigned int rotational_symmetry,
360 unsigned int real_sectors,
361 unsigned int imag_sectors,
362 float width_real_sectors,
363 float width_imag_sectors,
369 std::vector<int> pre_diff_code,
370 unsigned int rotational_symmetry,
371 unsigned int real_sectors,
372 unsigned int imag_sectors,
373 float width_real_sectors,
374 float width_imag_sectors,
377 unsigned int get_sector(
const gr_complex* sample)
override;
378 gr_complex calc_sector_center(
unsigned int sector);
379 unsigned int calc_sector_value(
unsigned int sector)
override;
382 unsigned int n_real_sectors;
383 unsigned int n_imag_sectors;
384 float d_width_real_sectors;
385 float d_width_imag_sectors;
413 typedef std::shared_ptr<constellation_expl_rect>
sptr;
416 std::vector<int> pre_diff_code,
417 unsigned int rotational_symmetry,
418 unsigned int real_sectors,
419 unsigned int imag_sectors,
420 float width_real_sectors,
421 float width_imag_sectors,
422 std::vector<unsigned int> sector_values);
427 std::vector<int> pre_diff_code,
428 unsigned int rotational_symmetry,
429 unsigned int real_sectors,
430 unsigned int imag_sectors,
431 float width_real_sectors,
432 float width_imag_sectors,
433 std::vector<unsigned int> sector_values);
437 return d_sector_values[sector];
441 std::vector<unsigned int> d_sector_values;
463 typedef std::shared_ptr<constellation_psk>
sptr;
466 static sptr make(std::vector<gr_complex> constell,
467 std::vector<int> pre_diff_code,
468 unsigned int n_sectors);
473 unsigned int get_sector(
const gr_complex* sample)
override;
475 unsigned int calc_sector_value(
unsigned int sector)
override;
478 std::vector<int> pre_diff_code,
479 unsigned int n_sectors);
502 typedef std::shared_ptr<constellation_bpsk>
sptr;
509 unsigned int decision_maker(
const gr_complex* sample)
override;
538 typedef std::shared_ptr<constellation_qpsk>
sptr;
545 unsigned int decision_maker(
const gr_complex* sample)
override;
573 typedef std::shared_ptr<constellation_dqpsk>
sptr;
580 unsigned int decision_maker(
const gr_complex* sample)
override;
610 typedef std::shared_ptr<constellation_8psk>
sptr;
617 unsigned int decision_maker(
const gr_complex* sample)
override;
646 typedef std::shared_ptr<constellation_8psk_natural>
sptr;
653 unsigned int decision_maker(
const gr_complex* sample)
override;
684 typedef std::shared_ptr<constellation_16qam>
sptr;
691 unsigned int decision_maker(
const gr_complex* sample)
override;
std::vector< int > d_pre_diff_code
Definition: constellation.h:195
@ POWER_NORMALIZATION
Definition: constellation.h:54
unsigned int dimensionality()
Returns the number of complex numbers in a single symbol.
Definition: constellation.h:105
float d_scalefactor
The factor by which the user given constellation points were scaled by to achieve an average amplitud...
Definition: constellation.h:202
Digital constellation for 16qam.
Definition: constellation.h:681
Digital constellation for natually mapped 8PSK.
Definition: constellation.h:643
@ AMPLITUDE_NORMALIZATION
Definition: constellation.h:55
std::shared_ptr< constellation_psk > sptr
Definition: constellation.h:463
float d_lut_scale
Definition: constellation.h:207
std::shared_ptr< constellation_expl_rect > sptr
Definition: constellation.h:413
constellation_sptr base()
Definition: constellation.h:114
std::vector< gr_complex > d_constellation
Definition: constellation.h:194
trellis_metric_type_t
Definition: metric_type.h:17
Digital constellation for BPSK .
Definition: constellation.h:499
float d_re_min
Definition: constellation.h:203
unsigned int calc_sector_value(unsigned int sector) override
Definition: constellation.h:435
normalization_t
Definition: constellation.h:52
Digital constellation for DQPSK.
Definition: constellation.h:570
void set_pre_diff_code(bool a)
Whether to apply an encoding before doing differential encoding. (e.g. gray coding)
Definition: constellation.h:99
std::shared_ptr< constellation_dqpsk > sptr
Definition: constellation.h:573
unsigned int rotational_symmetry()
Returns the order of rotational symmetry.
Definition: constellation.h:103
bool apply_pre_diff_code()
Whether to apply an encoding before doing differential encoding. (e.g. gray coding)
Definition: constellation.h:96
Digital constellation for QPSK.
Definition: constellation.h:535
std::shared_ptr< constellation_rect > sptr
Definition: constellation.h:339
pmt::pmt_t as_pmt()
Definition: constellation.h:116
std::vector< gr_complex > points()
Returns the set of points in this constellation.
Definition: constellation.h:88
An abstracted constellation object.
Definition: constellation.h:49
#define DIGITAL_API
Definition: gr-digital/include/gnuradio/digital/api.h:18
std::complex< float > gr_complex
Definition: gr_complex.h:15
Rectangular digital constellation.
Definition: constellation.h:410
bool d_apply_pre_diff_code
Definition: constellation.h:196
void calc_metric(int O, int D, const std::vector< T > &TABLE, const T *input, float *metric, digital::trellis_metric_type_t type)
int d_lut_precision
Definition: constellation.h:206
unsigned int bits_per_symbol()
Definition: constellation.h:107
Sectorized digital constellation.
Definition: constellation.h:280
unsigned int arity()
Definition: constellation.h:112
PMT_API pmt_t make_any(const boost::any &any)
make an any
std::vector< std::vector< float > > d_soft_dec_lut
Definition: constellation.h:205
std::shared_ptr< constellation_8psk_natural > sptr
Definition: constellation.h:646
std::vector< int > pre_diff_code()
Returns the encoding to apply before differential encoding.
Definition: constellation.h:101
constellation_psk
Definition: constellation.h:460
std::shared_ptr< pmt_base > pmt_t
typedef for shared pointer (transparent reference counting).
Definition: pmt.h:84
std::shared_ptr< constellation_8psk > sptr
Definition: constellation.h:610
std::shared_ptr< constellation_16qam > sptr
Definition: constellation.h:684
unsigned int d_rotational_symmetry
Definition: constellation.h:197
GNU Radio logging wrapper for log4cpp library (C++ port of log4j)
Definition: basic_block.h:29
unsigned int d_dimensionality
Definition: constellation.h:198
Digital constellation for 8PSK.
Definition: constellation.h:607
Calculate Euclidean distance for any constellation.
Definition: constellation.h:229
std::shared_ptr< constellation_qpsk > sptr
Definition: constellation.h:538
std::shared_ptr< constellation_bpsk > sptr
Definition: constellation.h:502
std::shared_ptr< constellation_calcdist > sptr
Definition: constellation.h:232
Rectangular digital constellation.
Definition: constellation.h:336
unsigned int d_arity
Definition: constellation.h:199
unsigned int n_sectors
Definition: constellation.h:312
@ NO_NORMALIZATION
Definition: constellation.h:53