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

Configuration of the PSK modem (PSKEncoder, PSKDecoder): differential PSK with cosine shaped transitions like PSK31, compatible with fldigi. More...

#include <PSK.h>

Inheritance diagram for tinymodem::PSKConfig:
Collaboration diagram for tinymodem::PSKConfig:

Public Member Functions

 PSKConfig ()
bool setMode (const char *mode)
int bitsPerSymbol () const
 bits per symbol: 1 (BPSK), 2 (QPSK) or 3 (8PSK)
float samplesPerSymbol () const
 number of samples per symbol
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 a PSK mode

Public Attributes

float symbol_rate = 31.25f
 symbols per second
PSKModulation modulation = PSKModulation::BPSK
 modulation (bits per symbol)
float carrier_freq = 1000.0f
 carrier frequency in Hz
float volume = 1.0f
 transmit amplitude (0.0 - 1.0)
int preamble_symbols = 32
 transmitter: number of phase reversals before the data
int postamble_symbols = 32
 transmitter: number of symbols with a steady carrier after the data
bool afc = true
 receiver: frequency tracking (automatic frequency control)
float min_amplitude = 0.005f
 receiver: minimum signal level (1.0 = full scale)
bool rx_one = false
 receiver: stop after the first transmission
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 float modeRate (const char *mode, PSKModulation &mod)

Detailed Description

Configuration of the PSK modem (PSKEncoder, PSKDecoder): differential PSK with cosine shaped transitions like PSK31, compatible with fldigi.

setMode() selects "psk31", "psk63", "psk125", "psk250" or "psk500" (BPSK, 31.25 to 500 baud), "qpsk31" to "qpsk500" (QPSK with a K=5 convolutional code, same speed with FEC) or "8psk125", "8psk250", "8psk500" and "8psk1000" (8PSK without FEC, 3 bits per symbol). The carrier frequency is 1000 Hz by default: 8psk500 and 8psk1000 raise it to twice the symbol rate.

Constructor & Destructor Documentation

◆ PSKConfig()

tinymodem::PSKConfig::PSKConfig ( )
inline

Member Function Documentation

◆ bitsPerSymbol()

int tinymodem::PSKConfig::bitsPerSymbol ( ) const
inline

bits per symbol: 1 (BPSK), 2 (QPSK) or 3 (8PSK)

◆ isMode()

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

true if the mode is a PSK mode

◆ isValid()

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

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

◆ modeRate()

float tinymodem::PSKConfig::modeRate ( const char * mode,
PSKModulation & mod )
inlinestaticprotected

◆ samplesPerSymbol()

float tinymodem::PSKConfig::samplesPerSymbol ( ) const
inline

number of samples per symbol

◆ setMode()

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

Selects e.g. "psk31", "qpsk63" or "8psk250": returns false if invalid. The other settings are kept.

Member Data Documentation

◆ afc

bool tinymodem::PSKConfig::afc = true

receiver: frequency tracking (automatic frequency control)

◆ carrier_freq

float tinymodem::PSKConfig::carrier_freq = 1000.0f

carrier frequency in Hz

◆ channel

uint8_t tinymodem::PSKConfig::channel = 0

receiver: input channel which is used for the decoding

◆ min_amplitude

float tinymodem::PSKConfig::min_amplitude = 0.005f

receiver: minimum signal level (1.0 = full scale)

◆ modulation

PSKModulation tinymodem::PSKConfig::modulation = PSKModulation::BPSK

modulation (bits per symbol)

◆ postamble_symbols

int tinymodem::PSKConfig::postamble_symbols = 32

transmitter: number of symbols with a steady carrier after the data

◆ preamble_symbols

int tinymodem::PSKConfig::preamble_symbols = 32

transmitter: number of phase reversals before the data

◆ rx_noise

float tinymodem::PSKConfig::rx_noise = 0.0f

receiver: (testing only) amplitude of added uniform noise

◆ rx_one

bool tinymodem::PSKConfig::rx_one = false

receiver: stop after the first transmission

◆ symbol_rate

float tinymodem::PSKConfig::symbol_rate = 31.25f

symbols per second

◆ volume

float tinymodem::PSKConfig::volume = 1.0f

transmit amplitude (0.0 - 1.0)


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