GNU Radio 3.6.5 C++ API

digital_ofdm_chanest_vcvc Class Reference

Estimate channel and coarse frequency offset for OFDM from preamblesInput: OFDM symbols (in frequency domain). The first one (or two) symbols are expected to be synchronisation symbols, which are used to estimate the coarse freq offset and the initial equalizer taps (these symbols are removed from the stream). The following n_data_symbols are passed through unmodified (the actual equalisation must be done elsewhere). Output: The data symbols, without the synchronisation symbols. The first data symbol passed through has two tags: 'ofdm_sync_carr_offset' (integer), the coarse frequency offset as number of carriers, and 'ofdm_sync_eq_taps' (complex vector). Any tags attached to the synchronisation symbols are attached to the first data symbol. All other tags are propagated as expected. More...

#include <digital_ofdm_chanest_vcvc.h>

Inheritance diagram for digital_ofdm_chanest_vcvc:
gr_block gr_basic_block gr_msg_accepter gruel::msg_accepter

List of all members.

Public Member Functions

 ~digital_ofdm_chanest_vcvc ()
void forecast (int noutput_items, gr_vector_int &ninput_items_required)
 Estimate input requirements given output request.
int general_work (int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
 compute output items from input items

Friends

DIGITAL_API
digital_ofdm_chanest_vcvc_sptr 
digital_make_ofdm_chanest_vcvc (const std::vector< gr_complex > &sync_symbol1, const std::vector< gr_complex > &sync_symbol2, int n_data_symbols, int eq_noise_red_len, int max_carr_offset, bool force_one_sync_symbol)

Detailed Description

Estimate channel and coarse frequency offset for OFDM from preambles

Input: OFDM symbols (in frequency domain). The first one (or two) symbols are expected to be synchronisation symbols, which are used to estimate the coarse freq offset and the initial equalizer taps (these symbols are removed from the stream). The following n_data_symbols are passed through unmodified (the actual equalisation must be done elsewhere). Output: The data symbols, without the synchronisation symbols. The first data symbol passed through has two tags: 'ofdm_sync_carr_offset' (integer), the coarse frequency offset as number of carriers, and 'ofdm_sync_eq_taps' (complex vector). Any tags attached to the synchronisation symbols are attached to the first data symbol. All other tags are propagated as expected.

Note: The vector on ofdm_sync_eq_taps is already frequency-corrected, whereas the rest is not.

This block assumes the frequency offset is even (i.e. an integer multiple of 2).

[1] Schmidl, T.M. and Cox, D.C., "Robust frequency and timing synchronization for OFDM", Communications, IEEE Transactions on, 1997. [2] K.D. Kammeyer, "Nachrichtenuebertragung," Chapter. 16.3.2.


Constructor & Destructor Documentation

digital_ofdm_chanest_vcvc::~digital_ofdm_chanest_vcvc ( )

Member Function Documentation

void digital_ofdm_chanest_vcvc::forecast ( int  noutput_items,
gr_vector_int ninput_items_required 
) [virtual]

Estimate input requirements given output request.

Parameters:
noutput_itemsnumber of output items to produce
ninput_items_requirednumber of input items required on each input stream

Given a request to product noutput_items, estimate the number of data items required on each input stream. The estimate doesn't have to be exact, but should be close.

Reimplemented from gr_block.

int digital_ofdm_chanest_vcvc::general_work ( int  noutput_items,
gr_vector_int ninput_items,
gr_vector_const_void_star input_items,
gr_vector_void_star output_items 
) [virtual]

compute output items from input items

Parameters:
noutput_itemsnumber of output items to write on each output stream
ninput_itemsnumber of input items available on each input stream
input_itemsvector of pointers to the input items, one entry per input stream
output_itemsvector of pointers to the output items, one entry per output stream
Returns:
number of items actually written to each output stream, or -1 on EOF. It is OK to return a value less than noutput_items. -1 <= return value <= noutput_items

general_work must call consume or consume_each to indicate how many items were consumed on each input stream.

Reimplemented from gr_block.


Friends And Related Function Documentation

DIGITAL_API digital_ofdm_chanest_vcvc_sptr digital_make_ofdm_chanest_vcvc ( const std::vector< gr_complex > &  sync_symbol1,
const std::vector< gr_complex > &  sync_symbol2,
int  n_data_symbols,
int  eq_noise_red_len,
int  max_carr_offset,
bool  force_one_sync_symbol 
) [friend]

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