35 FSKEncoder(audio_tools::SoundGenerator<int16_t>& generator) {
38 FSKEncoder(Print& out, audio_tools::SoundGenerator<int16_t>& generator) {
52 cfg.sample_rate = info.sample_rate;
53 cfg.channels = info.channels;
54 cfg.bits_per_sample = info.bits_per_sample;
60 using audio_tools::AudioEncoder::begin;
72 LOGE(
"FSKEncoder: invalid configuration (max 64 bits per frame)");
76 LOGE(
"FSKEncoder: transmit is not supported for this mode");
80 LOGE(
"FSKEncoder: bits_per_sample must be 16, not %d",
85 LOGE(
"FSKEncoder: invalid number of channels: %d",
110 size_t write(
const uint8_t* data,
size_t len)
override {
112 for (
size_t j = 0; j < len; j++)
writeChar(data[j]);
120 for (
int j = 0; j <
active_cfg.trailer_bits; j++)
122 if (silence_samples)
tone(0, silence_samples);
180 for (
int j = 0; j <
active_cfg.leader_bits; j++)
184 int nwords =
p_codec->encode(words, ch);
189 for (
int j = 0; j <
active_cfg.tx_sync_bytes; j++)
193 for (
int j = 0; j < nwords; j++)
204 unsigned bit = msb_first ? (bits >> (c.
data_bits - i - 1)) & 1
213 void tone(
float freq,
size_t nsamples) {
tones.tone(freq, nsamples); }
ASCII 8-bit data (passthrough).
Definition DataCodecs.h:47
Baudot (ITA2) 5-bit data.
Definition DataCodecs.h:65
Converts between characters and the data bits of a frame.
Definition DataCodecs.h:32
ModemConfig & config()
Definition FSKEncoder.h:146
audio_tools::AudioInfo audioInfo() override
Definition FSKEncoder.h:58
bool isTransmitting() override
true between the first character and endTransmission()
Definition FSKEncoder.h:136
void tone(float freq, size_t nsamples)
Definition FSKEncoder.h:213
FSKEncoder(Print &out)
Definition FSKEncoder.h:34
ModemConfig active_cfg
Definition FSKEncoder.h:155
void writeChar(uint8_t ch)
Definition FSKEncoder.h:176
bool endTransmission(size_t silence_samples=0) override
Definition FSKEncoder.h:118
size_t bitSamples()
Number of samples of one bit.
Definition FSKEncoder.h:142
size_t bit_nsamples
Definition FSKEncoder.h:159
float symbolRate() override
Bits per second.
Definition FSKEncoder.h:139
void startTransmission()
Definition FSKEncoder.h:169
FSKEncoder(audio_tools::SoundGenerator< int16_t > &generator)
Definition FSKEncoder.h:35
bool begin() override
Definition FSKEncoder.h:68
bool begin(ModemConfig config)
Starts the processing with the indicated modem configuration.
Definition FSKEncoder.h:63
size_t write(const uint8_t *data, size_t len) override
Modulates the characters.
Definition FSKEncoder.h:110
AsciiCodec ascii
Definition FSKEncoder.h:156
int transmitting
Definition FSKEncoder.h:161
const ModemConfig & activeConfig() const
The active configuration with all derived values (e.g. frequencies).
Definition FSKEncoder.h:149
void setAudioInfo(audio_tools::AudioInfo info) override
Defines the sample rate and number of channels of the generated audio.
Definition FSKEncoder.h:51
bool writeIdle(size_t nsamples) override
Sends the idle (mark) tone for the indicated number of samples.
Definition FSKEncoder.h:128
float idleFreq()
Definition FSKEncoder.h:164
FSKEncoder(Print &out, audio_tools::SoundGenerator< int16_t > &generator)
Definition FSKEncoder.h:38
void transmitFrame(uint64_t bits, bool msb_first)
Definition FSKEncoder.h:197
ModemConfig defaultConfig()
Provides a default configuration for a 1200 baud Bell 202 modem.
Definition FSKEncoder.h:44
DataCodec * p_codec
Definition FSKEncoder.h:158
ModemConfig cfg
Definition FSKEncoder.h:154
BaudotCodec baudot
Definition FSKEncoder.h:157
void end() override
Definition FSKEncoder.h:104
bool is_active
Definition FSKEncoder.h:162
Common API of the modulators (FSKEncoder, MFSKEncoder): the written data is converted to 16 bit PCM a...
Definition ModemBase.h:286
void setOutput(Print &out) override
Definition ModemBase.h:288
void setGenerator(audio_tools::SoundGenerator< int16_t > &generator)
Definition ModemBase.h:293
ToneOutput tones
Definition ModemBase.h:334
TinyModem: software audio modems and packets with error correction.
Definition AX25.h:11
@ BAUDOT
Baudot 5 bit (RTTY, TDD).
Definition ModemConfig.h:15
Configuration of the FSK modem. The fields correspond to the command line options of minimodem....
Definition ModemConfig.h:32
int start_bits
number of start bits (-1 = auto)
Definition ModemConfig.h:50
float stop_bits
number of stop bits (-1 = auto)
Definition ModemConfig.h:52
bool setMode(const char *mode, bool keep_options=false)
Definition ModemConfig.h:109
float space_freq
space frequency in Hz (0 = auto)
Definition ModemConfig.h:44
bool invert_start_stop
invert the start and stop bits
Definition ModemConfig.h:54
int data_bits
number of data bits per frame (0 = auto)
Definition ModemConfig.h:48
float mark_freq
mark frequency in Hz (0 = auto)
Definition ModemConfig.h:42