Loading...
Searching...
No Matches
constellation_soft_decoder_cf.h
Go to the documentation of this file.
/* -*- c++ -*- */
/*
* Copyright 2013 Free Software Foundation, Inc.
*
* This file is part of GNU Radio
*
* SPDX-License-Identifier: GPL-3.0-or-later
*
*/
#ifndef INCLUDED_DIGITAL_CONSTELLATION_SOFT_DECODER_CF_H
#define INCLUDED_DIGITAL_CONSTELLATION_SOFT_DECODER_CF_H
#include <gnuradio/digital/api.h>
#include <gnuradio/digital/constellation.h>
#include <gnuradio/sync_interpolator.h>
namespace gr {
namespace digital {
/*!
* \brief Constellation Decoder
* \ingroup symbol_coding_blk
*
* \details
* Decode a constellation's points from a complex space to soft
* bits based on the map and soft decision LUT of the \p
* constellation object.
*
* Does not support constellations of dimensionality higher than 1 \p
*
* npwr sets the noise power to use for soft decoding.
* this is equivalent to 10**(-SNR/10) if the constellation is
* received at unit average power. defaults to -1 allowing npwr
* and LUT in the constellation object to be used as-is.
* values above 0 will recalculate LUT and set the constellation object.
* noise powers in the range of 0.01-1 are common.
*
*/
class DIGITAL_API constellation_soft_decoder_cf : virtual public sync_interpolator
{
public:
// gr::digital::constellation_soft_decoder_cf::sptr
typedef std::shared_ptr<constellation_soft_decoder_cf> sptr;
/*!
* \brief Make constellation decoder block.
*
* \param constellation A constellation derived from class
* 'constellation'. Use base() method to get a shared pointer to
* this base class type.
* \param npwr sets expected noise power, default -1 set unused.
*/
static sptr make(constellation_sptr constellation, float npwr = -1);
/*!
* set constellation noise power for soft decision calculation
*
* \param d_npwr sets expected noise power.
*/
virtual void set_npwr(float d_npwr) = 0;
/*!
* Set a new constellation object for decoding
*
* \param constellation A constellation derived from class
* 'constellation'. Use base() method to get a shared pointer to
* this base class type.
*/
virtual void set_constellation(constellation_sptr constellation) = 0;
};
} /* namespace digital */
} /* namespace gr */
#endif /* INCLUDED_DIGITAL_CONSTELLATION_SOFT_DECODER_CF_H */
gr::digital::constellation_soft_decoder_cf
Constellation Decoder.
Definition constellation_soft_decoder_cf.h:41
gr::digital::constellation_soft_decoder_cf::sptr
std::shared_ptr< constellation_soft_decoder_cf > sptr
Definition constellation_soft_decoder_cf.h:44
gr::digital::constellation_soft_decoder_cf::set_npwr
virtual void set_npwr(float d_npwr)=0
gr::digital::constellation_soft_decoder_cf::set_constellation
virtual void set_constellation(constellation_sptr constellation)=0
gr::digital::constellation_soft_decoder_cf::make
static sptr make(constellation_sptr constellation, float npwr=-1)
Make constellation decoder block.
gr::digital::constellation
An abstracted constellation object.
Definition constellation.h:50
gr::sync_interpolator
synchronous 1:N input to output with history
Definition sync_interpolator.h:26
constellation.h
api.h
DIGITAL_API
#define DIGITAL_API
Definition gr-digital/include/gnuradio/digital/api.h:18
gr
GNU Radio logging wrapper.
Definition basic_block.h:29
sync_interpolator.h