|
TinyModem
Header-only software audio modem library
|
Configuration of the PSK modem (PSKEncoder, PSKDecoder): differential PSK with cosine shaped transitions like PSK31, compatible with fldigi. More...
#include <PSK.h>


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) |
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.
|
inline |
|
inline |
bits per symbol: 1 (BPSK), 2 (QPSK) or 3 (8PSK)
|
inlinestatic |
true if the mode is a PSK mode
|
inline |
Checks the configuration: returns false (and logs the reason) if invalid.
|
inlinestaticprotected |
|
inline |
number of samples per symbol
|
inline |
Selects e.g. "psk31", "qpsk63" or "8psk250": returns false if invalid. The other settings are kept.
| bool tinymodem::PSKConfig::afc = true |
receiver: frequency tracking (automatic frequency control)
| float tinymodem::PSKConfig::carrier_freq = 1000.0f |
carrier frequency in Hz
| uint8_t tinymodem::PSKConfig::channel = 0 |
receiver: input channel which is used for the decoding
| float tinymodem::PSKConfig::min_amplitude = 0.005f |
receiver: minimum signal level (1.0 = full scale)
| PSKModulation tinymodem::PSKConfig::modulation = PSKModulation::BPSK |
modulation (bits per symbol)
| int tinymodem::PSKConfig::postamble_symbols = 32 |
transmitter: number of symbols with a steady carrier after the data
| int tinymodem::PSKConfig::preamble_symbols = 32 |
transmitter: number of phase reversals before the data
| float tinymodem::PSKConfig::rx_noise = 0.0f |
receiver: (testing only) amplitude of added uniform noise
| bool tinymodem::PSKConfig::rx_one = false |
receiver: stop after the first transmission
| float tinymodem::PSKConfig::symbol_rate = 31.25f |
symbols per second
| float tinymodem::PSKConfig::volume = 1.0f |
transmit amplitude (0.0 - 1.0)