GNU Radio 3.7.1 C++ API
|
Create frequency domain OFDM symbols from complex values, add pilots. More...
#include <ofdm_carrier_allocator_cvc.h>
Public Types | |
typedef boost::shared_ptr < ofdm_carrier_allocator_cvc > | sptr |
Public Member Functions | |
virtual std::string | len_tag_key ()=0 |
virtual const int | fft_len ()=0 |
virtual std::vector < std::vector< int > > | occupied_carriers ()=0 |
Static Public Member Functions | |
static sptr | make (int fft_len, const std::vector< std::vector< int > > &occupied_carriers, const std::vector< std::vector< int > > &pilot_carriers, const std::vector< std::vector< gr_complex > > &pilot_symbols, const std::vector< std::vector< gr_complex > > &sync_words, const std::string &len_tag_key="packet_len", const bool output_is_shifted=true) |
Create frequency domain OFDM symbols from complex values, add pilots.
This block turns a stream of complex, scalar modulation symbols into vectors which are the input for an IFFT in an OFDM transmitter. It also supports the possibility of placing pilot symbols onto the carriers.
The carriers can be allocated freely, if a carrier is not allocated, it is set to zero. This allows doing OFDMA-style carrier allocations.
Input: A tagged stream of complex scalars. The first item must have a tag containing the number of complex symbols in this frame. Output: A tagged stream of complex vectors of length fft_len. This can directly be connected to an FFT block. Make sure to set this block to 'reverse' for the IFFT. If output_is_shifted
is true, the FFT block must activate FFT shifting, otherwise, set shifting to false. If given, sync words are prepended to the output. Note that sync words are prepended verbatim, make sure they are shifted (or not).
Carrier indexes are always such that index 0 is the DC carrier (note: you should not allocate this carrier). The carriers below the DC carrier are either indexed with negative numbers, or with indexes larger than fft_len/2
. Index -1 and index fft_len-1
both identify the carrier below the DC carrier.
virtual const int gr::digital::ofdm_carrier_allocator_cvc::fft_len | ( | ) | [pure virtual] |
virtual std::string gr::digital::ofdm_carrier_allocator_cvc::len_tag_key | ( | ) | [pure virtual] |
static sptr gr::digital::ofdm_carrier_allocator_cvc::make | ( | int | fft_len, |
const std::vector< std::vector< int > > & | occupied_carriers, | ||
const std::vector< std::vector< int > > & | pilot_carriers, | ||
const std::vector< std::vector< gr_complex > > & | pilot_symbols, | ||
const std::vector< std::vector< gr_complex > > & | sync_words, | ||
const std::string & | len_tag_key = "packet_len" , |
||
const bool | output_is_shifted = true |
||
) | [static] |
virtual std::vector<std::vector<int> > gr::digital::ofdm_carrier_allocator_cvc::occupied_carriers | ( | ) | [pure virtual] |