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

DTMF (touch tone) modulator: each written character 0-9, *, #, A-D (also a-d) is sent as a tone pair of DTMFConfig::tone_ms followed by a pause of DTMFConfig::pause_ms. A ',' adds a pause of DTMFConfig::comma_ms, all other characters are ignored. The tones fade in and out within 2 ms to avoid clicks. More...

#include <DTMFEncoder.h>

Inheritance diagram for tinymodem::DTMFEncoder:
Collaboration diagram for tinymodem::DTMFEncoder:

Public Member Functions

 DTMFEncoder ()=default
 DTMFEncoder (Print &out)
DTMFConfig defaultConfig ()
 Provides a default configuration.
void setOutput (Print &out) override
void setAudioInfo (audio_tools::AudioInfo info) override
 Defines the sample rate and number of channels of the generated audio.
audio_tools::AudioInfo audioInfo () override
bool begin (DTMFConfig config)
 Starts the processing with the indicated configuration.
bool begin () override
void end () override
size_t write (const uint8_t *data, size_t len) override
 Sends the keys.
bool writeKey (char key)
bool endTransmission (size_t silence_samples=0) override
bool writeIdle (size_t nsamples) override
 Sends silence for the indicated number of samples.
bool isTransmitting () override
 true between the first key and endTransmission()
float symbolRate () override
 Keys per second.
DTMFConfig & config ()
 The configuration which was provided in begin().
 operator bool () override
Public Member Functions inherited from tinymodem::ModemEncoder
void setOutput (Print &out) override
void setGenerator (audio_tools::SoundGenerator< int16_t > &generator)
audio_tools::SoundGenerator< int16_t > & getGenerator ()
 Provides the active tone generator.
void writeSilence (size_t nsamples)
 Writes the indicated number of samples of silence.
void writeTone (float freq, size_t nsamples)
 Writes a tone for the indicated number of samples.
void flush ()
 Ends the transmission.
const char * mime () override

Protected Member Functions

void sendKey (int row, int column)
void silence (int ms)

Protected Attributes

DTMFConfig cfg
SampleOutput samples
bool is_active = false
bool transmitting = false
Protected Attributes inherited from tinymodem::ModemEncoder
ToneOutput tones

Static Protected Attributes

static constexpr float RAMP_MS = 2.0f

Detailed Description

DTMF (touch tone) modulator: each written character 0-9, *, #, A-D (also a-d) is sent as a tone pair of DTMFConfig::tone_ms followed by a pause of DTMFConfig::pause_ms. A ',' adds a pause of DTMFConfig::comma_ms, all other characters are ignored. The tones fade in and out within 2 ms to avoid clicks.

Constructor & Destructor Documentation

◆ DTMFEncoder() [1/2]

tinymodem::DTMFEncoder::DTMFEncoder ( )
default

◆ DTMFEncoder() [2/2]

tinymodem::DTMFEncoder::DTMFEncoder ( Print & out)
inline

Member Function Documentation

◆ audioInfo()

audio_tools::AudioInfo tinymodem::DTMFEncoder::audioInfo ( )
inlineoverride

◆ begin() [1/2]

bool tinymodem::DTMFEncoder::begin ( )
inlineoverride

◆ begin() [2/2]

bool tinymodem::DTMFEncoder::begin ( DTMFConfig config)
inline

Starts the processing with the indicated configuration.

◆ config()

DTMFConfig & tinymodem::DTMFEncoder::config ( )
inline

The configuration which was provided in begin().

◆ defaultConfig()

DTMFConfig tinymodem::DTMFEncoder::defaultConfig ( )
inline

Provides a default configuration.

◆ end()

void tinymodem::DTMFEncoder::end ( )
inlineoverride

◆ endTransmission()

bool tinymodem::DTMFEncoder::endTransmission ( size_t silence_samples = 0)
inlineoverridevirtual

Ends the transmission (and adds optional silence): returns true if a transmission was ended

Implements tinymodem::ModemEncoder.

◆ isTransmitting()

bool tinymodem::DTMFEncoder::isTransmitting ( )
inlineoverridevirtual

true between the first key and endTransmission()

Implements tinymodem::ModemEncoder.

◆ operator bool()

tinymodem::DTMFEncoder::operator bool ( )
inlineoverride

◆ sendKey()

void tinymodem::DTMFEncoder::sendKey ( int row,
int column )
inlineprotected

◆ setAudioInfo()

void tinymodem::DTMFEncoder::setAudioInfo ( audio_tools::AudioInfo info)
inlineoverride

Defines the sample rate and number of channels of the generated audio.

◆ setOutput()

void tinymodem::DTMFEncoder::setOutput ( Print & out)
inlineoverride

◆ silence()

void tinymodem::DTMFEncoder::silence ( int ms)
inlineprotected

◆ symbolRate()

float tinymodem::DTMFEncoder::symbolRate ( )
inlineoverridevirtual

Keys per second.

Implements tinymodem::ModemEncoder.

◆ write()

size_t tinymodem::DTMFEncoder::write ( const uint8_t * data,
size_t len )
inlineoverride

Sends the keys.

◆ writeIdle()

bool tinymodem::DTMFEncoder::writeIdle ( size_t nsamples)
inlineoverridevirtual

Sends silence for the indicated number of samples.

Reimplemented from tinymodem::ModemEncoder.

◆ writeKey()

bool tinymodem::DTMFEncoder::writeKey ( char key)
inline

Sends a single key (e.g. '5' or '#'): returns false if the character is not a DTMF key

Member Data Documentation

◆ cfg

DTMFConfig tinymodem::DTMFEncoder::cfg
protected

◆ is_active

bool tinymodem::DTMFEncoder::is_active = false
protected

◆ RAMP_MS

float tinymodem::DTMFEncoder::RAMP_MS = 2.0f
staticconstexprprotected

◆ samples

SampleOutput tinymodem::DTMFEncoder::samples
protected

◆ transmitting

bool tinymodem::DTMFEncoder::transmitting = false
protected

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