GNU Radio 3.5.1 C++ API
digital_constellation Class Reference

An abstracted constellation objectThe constellation objects hold the necessary information to pass around constellation information for modulators and demodulators. These objects contain the mapping between the bits and the constellation points used to represent them as well as methods for slicing the symbol space. Various implementations are possible for efficiency and ease of use. More...

#include <digital_constellation.h>

Inheritance diagram for digital_constellation:

List of all members.

Public Member Functions

 digital_constellation (std::vector< gr_complex > constellation, std::vector< unsigned int > pre_diff_code, unsigned int rotational_symmetry, unsigned int dimensionality)
 digital_constellation ()
void map_to_points (unsigned int value, gr_complex *points)
 Returns the constellation points for a symbol value.
std::vector< gr_complexmap_to_points_v (unsigned int value)
virtual unsigned int decision_maker (const gr_complex *sample)=0
 Returns the constellation point that matches best.
unsigned int decision_maker_v (std::vector< gr_complex > sample)
 Takes a vector rather than a pointer. Better for SWIG wrapping.
unsigned int decision_maker_pe (const gr_complex *sample, float *phase_error)
 Also calculates the phase error.
unsigned int decision_maker_e (const gr_complex *sample, float *error)
 Calculates distance.
virtual void calc_metric (const gr_complex *sample, float *metric, trellis_metric_type_t type)
 Calculates metrics for all points in the constellation. For use with the viterbi algorithm.
virtual void calc_euclidean_metric (const gr_complex *sample, float *metric)
virtual void calc_hard_symbol_metric (const gr_complex *sample, float *metric)
std::vector< gr_complexpoints ()
 Returns the set of points in this constellation.
std::vector< gr_complexs_points ()
 Returns the vector of points in this constellation. Raise error if dimensionality is not one.
std::vector< std::vector
< gr_complex > > 
v_points ()
 Returns a vector of vectors of points.
bool apply_pre_diff_code ()
 Whether to apply an encoding before doing differential encoding. (e.g. gray coding)
void set_pre_diff_code (bool a)
 Whether to apply an encoding before doing differential encoding. (e.g. gray coding)
std::vector< unsigned int > pre_diff_code ()
 Returns the encoding to apply before differential encoding.
unsigned int rotational_symmetry ()
 Returns the order of rotational symmetry.
unsigned int dimensionality ()
 Returns the number of complex numbers in a single symbol.
unsigned int bits_per_symbol ()
unsigned int arity ()
digital_constellation_sptr base ()

Protected Member Functions

float get_distance (unsigned int index, const gr_complex *sample)
unsigned int get_closest_point (const gr_complex *sample)
void calc_arity ()

Protected Attributes

std::vector< gr_complexd_constellation
std::vector< unsigned int > d_pre_diff_code
bool d_apply_pre_diff_code
unsigned int d_rotational_symmetry
unsigned int d_dimensionality
unsigned int d_arity

Detailed Description

An abstracted constellation object

The constellation objects hold the necessary information to pass around constellation information for modulators and demodulators. These objects contain the mapping between the bits and the constellation points used to represent them as well as methods for slicing the symbol space. Various implementations are possible for efficiency and ease of use.

Standard constellations (BPSK, QPSK, QAM, etc) can be inherited from this class and overloaded to perform optimized slicing and constellation mappings.


Constructor & Destructor Documentation

digital_constellation::digital_constellation ( std::vector< gr_complex constellation,
std::vector< unsigned int >  pre_diff_code,
unsigned int  rotational_symmetry,
unsigned int  dimensionality 
)
digital_constellation::digital_constellation ( )

Member Function Documentation

bool digital_constellation::apply_pre_diff_code ( ) [inline]

Whether to apply an encoding before doing differential encoding. (e.g. gray coding)

unsigned int digital_constellation::arity ( ) [inline]
digital_constellation_sptr digital_constellation::base ( ) [inline]
unsigned int digital_constellation::bits_per_symbol ( ) [inline]
void digital_constellation::calc_arity ( ) [protected]
virtual void digital_constellation::calc_euclidean_metric ( const gr_complex sample,
float *  metric 
) [virtual]
virtual void digital_constellation::calc_hard_symbol_metric ( const gr_complex sample,
float *  metric 
) [virtual]
virtual void digital_constellation::calc_metric ( const gr_complex sample,
float *  metric,
trellis_metric_type_t  type 
) [virtual]

Calculates metrics for all points in the constellation. For use with the viterbi algorithm.

virtual unsigned int digital_constellation::decision_maker ( const gr_complex sample) [pure virtual]
unsigned int digital_constellation::decision_maker_e ( const gr_complex sample,
float *  error 
)

Calculates distance.

unsigned int digital_constellation::decision_maker_pe ( const gr_complex sample,
float *  phase_error 
)

Also calculates the phase error.

unsigned int digital_constellation::decision_maker_v ( std::vector< gr_complex sample)

Takes a vector rather than a pointer. Better for SWIG wrapping.

unsigned int digital_constellation::dimensionality ( ) [inline]

Returns the number of complex numbers in a single symbol.

unsigned int digital_constellation::get_closest_point ( const gr_complex sample) [protected]
float digital_constellation::get_distance ( unsigned int  index,
const gr_complex sample 
) [protected]
void digital_constellation::map_to_points ( unsigned int  value,
gr_complex points 
)

Returns the constellation points for a symbol value.

std::vector<gr_complex> digital_constellation::map_to_points_v ( unsigned int  value)
std::vector<gr_complex> digital_constellation::points ( ) [inline]

Returns the set of points in this constellation.

std::vector<unsigned int> digital_constellation::pre_diff_code ( ) [inline]

Returns the encoding to apply before differential encoding.

unsigned int digital_constellation::rotational_symmetry ( ) [inline]

Returns the order of rotational symmetry.

std::vector<gr_complex> digital_constellation::s_points ( )

Returns the vector of points in this constellation. Raise error if dimensionality is not one.

void digital_constellation::set_pre_diff_code ( bool  a) [inline]

Whether to apply an encoding before doing differential encoding. (e.g. gray coding)

std::vector<std::vector<gr_complex> > digital_constellation::v_points ( )

Returns a vector of vectors of points.


Member Data Documentation

unsigned int digital_constellation::d_arity [protected]
unsigned int digital_constellation::d_dimensionality [protected]

The documentation for this class was generated from the following file: