gr::gfdm::receiver_kernel_cc Class Reference

Demodulate a GFDM block This class initializes and performs all operations necessary to demodulate a GFDM block. More...

`#include <receiver_kernel_cc.h>`

Inheritance diagram for gr::gfdm::receiver_kernel_cc:
[legend]

## Public Types

typedef std::complex< float > | gfdm_complex
typedef boost::shared_ptr< receiver_kernel_cc > | sptr
Public Types inherited from gr::gfdm::gfdm_kernel_utils
typedef std::complex< float > | gfdm_complex

## Public Member Functions

| receiver_kernel_cc (int n_timeslots, int n_subcarriers, int overlap, std::vector< gfdm_complex > frequency_taps)
| ~receiver_kernel_cc ()
void | generic_work (gfdm_complex *out, const gfdm_complex *in)
void | generic_work_equalize (gfdm_complex *out, const gfdm_complex *in, const gfdm_complex *f_eq_in)
void | fft_filter_downsample (gfdm_complex *p_out, const gfdm_complex *p_in)
void | fft_equalize_filter_downsample (gfdm_complex *p_out, const gfdm_complex *p_in, const gfdm_complex *f_eq_in)
void | transform_subcarriers_to_td (gfdm_complex *p_out, const gfdm_complex *p_in)
void | cancel_sc_interference (gfdm_complex *p_out, const gfdm_complex *p_td_in, const gfdm_complex *p_fd_in)
void | filter_superposition (std::vector< std::vector< gfdm_complex > > &out, const gfdm_complex *in)
void | demodulate_subcarrier (std::vector< std::vector< gfdm_complex > > &out, std::vector< std::vector< gfdm_complex > > &sc_fdomain)
void | serialize_output (gfdm_complex out[], std::vector< std::vector< gfdm_complex > > &sc_symbols)
void | vectorize_2d (std::vector< std::vector< gfdm_complex > > &out_vector, const gfdm_complex *p_in)
void | remove_sc_interference (std::vector< std::vector< gfdm_complex > > &sc_symbols, std::vector< std::vector< gfdm_complex > > &sc_fdomain)
int | block_size ()
std::vector< gfdm_complex > | filter_taps ()
std::vector< gfdm_complex > | ic_filter_taps ()
int | timeslots ()
Public Member Functions inherited from gr::gfdm::gfdm_kernel_utils
| gfdm_kernel_utils ()
| ~gfdm_kernel_utils ()
fftwf_plan | initialize_fft (gfdm_complex *out_buf, gfdm_complex *in_buf, const int fft_size, bool forward)
float | calculate_signal_energy (const gfdm_complex *p_in, const int ninput_size)

## Detailed Description

Demodulate a GFDM block This class initializes and performs all operations necessary to demodulate a GFDM block.

The GFDM receiver kernel class provides all necessary operations to blocks which instantiate it. Further functions and methods not depending on GNU Radio should be implemented here. This receiver implementation is based on [Gas+13]. It is recommended to use overlap = 2 to make use of sparse frequency domain processing.

[Gas+13] I.S. Gaspar et al. "Low Complexity GFDM Receiver Based on Sparse Frequency Domain Processing"

## Member Typedef Documentation

## gfdm_complex

typedef std::complex<float> gr::gfdm::receiver_kernel_cc::gfdm_complex

## sptr

typedef boost::shared_ptr<receiver_kernel_cc> gr::gfdm::receiver_kernel_cc::sptr

## Constructor & Destructor Documentation

## receiver_kernel_cc()

gr::gfdm::receiver_kernel_cc::receiver_kernel_cc | ( | int | n_timeslots,
|  | int | n_subcarriers,
|  | int | overlap,
|  | std::vector< gfdm_complex > | frequency_taps
| ) |  |

## ~receiver_kernel_cc()

gr::gfdm::receiver_kernel_cc::~receiver_kernel_cc | ( |  | ) |

## Member Function Documentation

## block_size()

int gr::gfdm::receiver_kernel_cc::block_size | ( |  | ) |

inline

## cancel_sc_interference()

void gr::gfdm::receiver_kernel_cc::cancel_sc_interference | ( | gfdm_complex * | p_out,
|  | const gfdm_complex * | p_td_in,
|  | const gfdm_complex * | p_fd_in
| ) |  |

## demodulate_subcarrier()

void gr::gfdm::receiver_kernel_cc::demodulate_subcarrier | ( | std::vector< std::vector< gfdm_complex > > & | out,
|  | std::vector< std::vector< gfdm_complex > > & | sc_fdomain
| ) |  |

## fft_equalize_filter_downsample()

void gr::gfdm::receiver_kernel_cc::fft_equalize_filter_downsample | ( | gfdm_complex * | p_out,
|  | const gfdm_complex * | p_in,
|  | const gfdm_complex * | f_eq_in
| ) |  |

## fft_filter_downsample()

void gr::gfdm::receiver_kernel_cc::fft_filter_downsample | ( | gfdm_complex * | p_out,
|  | const gfdm_complex * | p_in
| ) |  |

## filter_superposition()

void gr::gfdm::receiver_kernel_cc::filter_superposition | ( | std::vector< std::vector< gfdm_complex > > & | out,
|  | const gfdm_complex * | in
| ) |  |

## filter_taps()

std::vector< gfdm_complex > gr::gfdm::receiver_kernel_cc::filter_taps | ( |  | ) |

## generic_work()

void gr::gfdm::receiver_kernel_cc::generic_work | ( | gfdm_complex * | out,
|  | const gfdm_complex * | in
| ) |  |

## generic_work_equalize()

void gr::gfdm::receiver_kernel_cc::generic_work_equalize | ( | gfdm_complex * | out,
|  | const gfdm_complex * | in,
|  | const gfdm_complex * | f_eq_in
| ) |  |

## ic_filter_taps()

std::vector< gfdm_complex > gr::gfdm::receiver_kernel_cc::ic_filter_taps | ( |  | ) |

## remove_sc_interference()

void gr::gfdm::receiver_kernel_cc::remove_sc_interference | ( | std::vector< std::vector< gfdm_complex > > & | sc_symbols,
|  | std::vector< std::vector< gfdm_complex > > & | sc_fdomain
| ) |  |

## serialize_output()

void gr::gfdm::receiver_kernel_cc::serialize_output | ( | gfdm_complex | out[],
|  | std::vector< std::vector< gfdm_complex > > & | sc_symbols
| ) |  |

## timeslots()

int gr::gfdm::receiver_kernel_cc::timeslots | ( |  | ) |

inline

## transform_subcarriers_to_td()

void gr::gfdm::receiver_kernel_cc::transform_subcarriers_to_td | ( | gfdm_complex * | p_out,
|  | const gfdm_complex * | p_in
| ) |  |

## vectorize_2d()

void gr::gfdm::receiver_kernel_cc::vectorize_2d | ( | std::vector< std::vector< gfdm_complex > > & | out_vector,
|  | const gfdm_complex * | p_in
| ) |  |

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

- receiver_kernel_cc.h