4#include "JS8_Audio/AudioDevice.h"
20class Modulator final :
public AudioDevice {
24 enum class State { Synchronizing, Active, Idle };
28 explicit Modulator(QObject *parent =
nullptr) : AudioDevice{parent} {}
37 bool isIdle()
const {
return m_state.load() == State::Idle; }
41 void close()
override;
50 m_audioFrequency = audioFrequency;
55 Q_SLOT
void start(
double audioFrequency,
int submode,
double tx_delay,
57 Q_SLOT
void stop(
bool quick =
false);
58 Q_SLOT
void tune(
bool state =
true);
63 qint64
readData(
char *, qint64)
override;
64 qint64 writeData(
char const *, qint64)
override {
76 qint64 bytesAvailable()
const override {
return 8000; }
81 QPointer<SoundOutput> m_stream;
82 std::atomic<State> m_state = State::Idle;
83 bool m_quickClose =
false;
84 bool m_tuning =
false;
85 double m_audioFrequency;
86 double m_audioFrequency0;
92 qint64 m_silentFrames;
qint64 readData(char *, qint64) override
Read data from the modulator.
Definition Modulator.cpp:178
Q_SLOT void tune(bool state=true)
Set tuning mode.
Definition Modulator.cpp:139
Q_SLOT void start(double audioFrequency, int submode, double tx_delay, SoundOutput *stream, Channel channel)
Start the modulation process.
Definition Modulator.cpp:38
Q_SLOT void setAudioFrequency(double const audioFrequency)
Definition Modulator.h:49
void close() override
Close the modulator.
Definition Modulator.cpp:159
bool isIdle() const
Definition Modulator.h:37
Q_SLOT void stop(bool quick=false)
Stop the modulation process.
Definition Modulator.cpp:150
Definition SoundOutput.h:13