TinyModem
Header-only software audio modem library
Loading...
Searching...
No Matches
tinymodem::OFDMConfig Struct Reference

Configuration of the OFDM modem (OFDMEncoder, OFDMDecoder): the data is transmitted in parallel on carriers subcarriers with differential QPSK (2 bits per carrier and symbol). Each symbol has a cyclic prefix (guard interval) against echoes. More...

#include <OFDM.h>

Inheritance diagram for tinymodem::OFDMConfig:
Collaboration diagram for tinymodem::OFDMConfig:

Public Member Functions

 OFDMConfig ()
bool setMode (const char *mode)
 Selects "ofdm16", "ofdm32" or "ofdm64": returns false if invalid.
int fftSize () const
 length of the useful part of a symbol (DFT size) in samples
int prefixSize () const
 length of the cyclic prefix in samples
int firstBin () const
 DFT bin of the first carrier: even, for the sync symbol.
float carrierFrequency (int idx) const
 frequency of the carrier with the indicated index
float symbolRate () const
 OFDM symbols per second.
float bitRate () const
 data bits per second
bool isValid () const
 Checks the configuration: returns false (and logs the reason) if invalid.

Static Public Member Functions

static bool isMode (const char *mode)
 true if the mode is an OFDM mode
static int headerSymbols (int carriers)
 Number of symbols of the header (32 bits, one bit per carrier).
static int knownPhase (int symbol, int carrier)

Public Attributes

int carriers = 32
 number of carriers (4 - 128)
float carrier_spacing = 62.5f
 distance of the carriers in Hz
float first_freq = 1000.0f
 frequency of the first carrier in Hz
float guard = 0.25f
 length of the cyclic prefix relative to the symbol (0.0 - 0.5)
float volume = 1.0f
 transmit amplitude (0.0 - 1.0)
int max_frame = 512
 transmitter: max number of bytes per frame
float sync_threshold = 0.5f
 receiver: minimum normalized correlation of the sync symbol
bool rx_one = false
 receiver: stop after the first frame
uint8_t channel = 0
 receiver: input channel which is used for the decoding
float rx_noise = 0.0f
 receiver: (testing only) amplitude of added uniform noise

Static Protected Member Functions

static int modeCarriers (const char *mode)

Detailed Description

Configuration of the OFDM modem (OFDMEncoder, OFDMDecoder): the data is transmitted in parallel on carriers subcarriers with differential QPSK (2 bits per carrier and symbol). Each symbol has a cyclic prefix (guard interval) against echoes.

setMode() selects "ofdm16", "ofdm32" or "ofdm64": all use the band from 1000 Hz to about 3000 Hz and transmit 3200 bit/s. More carriers result in longer symbols with a longer guard interval.

Constructor & Destructor Documentation

◆ OFDMConfig()

tinymodem::OFDMConfig::OFDMConfig ( )
inline

Member Function Documentation

◆ bitRate()

float tinymodem::OFDMConfig::bitRate ( ) const
inline

data bits per second

◆ carrierFrequency()

float tinymodem::OFDMConfig::carrierFrequency ( int idx) const
inline

frequency of the carrier with the indicated index

◆ fftSize()

int tinymodem::OFDMConfig::fftSize ( ) const
inline

length of the useful part of a symbol (DFT size) in samples

◆ firstBin()

int tinymodem::OFDMConfig::firstBin ( ) const
inline

DFT bin of the first carrier: even, for the sync symbol.

◆ headerSymbols()

int tinymodem::OFDMConfig::headerSymbols ( int carriers)
inlinestatic

Number of symbols of the header (32 bits, one bit per carrier).

◆ isMode()

bool tinymodem::OFDMConfig::isMode ( const char * mode)
inlinestatic

true if the mode is an OFDM mode

◆ isValid()

bool tinymodem::OFDMConfig::isValid ( ) const
inline

Checks the configuration: returns false (and logs the reason) if invalid.

◆ knownPhase()

int tinymodem::OFDMConfig::knownPhase ( int symbol,
int carrier )
inlinestatic

Known phase (0 - 3, in steps of 90 degrees) of a carrier in the sync (symbol = 0) and reference (symbol = 1) symbols

◆ modeCarriers()

int tinymodem::OFDMConfig::modeCarriers ( const char * mode)
inlinestaticprotected

◆ prefixSize()

int tinymodem::OFDMConfig::prefixSize ( ) const
inline

length of the cyclic prefix in samples

◆ setMode()

bool tinymodem::OFDMConfig::setMode ( const char * mode)
inline

Selects "ofdm16", "ofdm32" or "ofdm64": returns false if invalid.

◆ symbolRate()

float tinymodem::OFDMConfig::symbolRate ( ) const
inline

OFDM symbols per second.

Member Data Documentation

◆ carrier_spacing

float tinymodem::OFDMConfig::carrier_spacing = 62.5f

distance of the carriers in Hz

◆ carriers

int tinymodem::OFDMConfig::carriers = 32

number of carriers (4 - 128)

◆ channel

uint8_t tinymodem::OFDMConfig::channel = 0

receiver: input channel which is used for the decoding

◆ first_freq

float tinymodem::OFDMConfig::first_freq = 1000.0f

frequency of the first carrier in Hz

◆ guard

float tinymodem::OFDMConfig::guard = 0.25f

length of the cyclic prefix relative to the symbol (0.0 - 0.5)

◆ max_frame

int tinymodem::OFDMConfig::max_frame = 512

transmitter: max number of bytes per frame

◆ rx_noise

float tinymodem::OFDMConfig::rx_noise = 0.0f

receiver: (testing only) amplitude of added uniform noise

◆ rx_one

bool tinymodem::OFDMConfig::rx_one = false

receiver: stop after the first frame

◆ sync_threshold

float tinymodem::OFDMConfig::sync_threshold = 0.5f

receiver: minimum normalized correlation of the sync symbol

◆ volume

float tinymodem::OFDMConfig::volume = 1.0f

transmit amplitude (0.0 - 1.0)


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