2012-05-22 17:09:48 +00:00
|
|
|
#ifndef SOUNDOUT_H
|
|
|
|
#define SOUNDOUT_H
|
|
|
|
#include <QtCore>
|
|
|
|
#include <QDebug>
|
|
|
|
|
|
|
|
// An instance of this thread sends audio data to a specified soundcard.
|
|
|
|
// Output can be muted while underway, preserving waveform timing when
|
|
|
|
// transmission is resumed.
|
|
|
|
|
|
|
|
class SoundOutThread : public QThread
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
protected:
|
|
|
|
virtual void run();
|
|
|
|
|
|
|
|
public:
|
|
|
|
// Constructs (but does not start) a SoundOutThread
|
|
|
|
SoundOutThread()
|
|
|
|
: quitExecution(false) // Initialize some private members
|
|
|
|
, m_txOK(false)
|
|
|
|
, m_txMute(false)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
public:
|
|
|
|
void setOutputDevice(qint32 n);
|
2012-09-26 00:48:49 +00:00
|
|
|
void setPeriod(int ntrperiod, int nsps);
|
2012-10-05 19:14:45 +00:00
|
|
|
void setTxFreq(int n);
|
2012-10-26 14:03:43 +00:00
|
|
|
void setTxSNR(double snr);
|
2013-04-14 14:11:20 +00:00
|
|
|
void setTune(bool b);
|
2012-11-13 20:23:03 +00:00
|
|
|
double samFacOut();
|
2012-05-22 17:09:48 +00:00
|
|
|
bool quitExecution; //If true, thread exits gracefully
|
|
|
|
|
|
|
|
// Private members
|
|
|
|
private:
|
2012-10-26 14:03:43 +00:00
|
|
|
double m_txsnrdb; //if < 0, add noise to Tx audio
|
2012-11-13 20:23:03 +00:00
|
|
|
double m_SamFacOut; //(Output sample rate)/48000.0
|
2012-05-22 17:09:48 +00:00
|
|
|
qint32 m_nDevOut; //Output device number
|
2012-10-05 17:13:21 +00:00
|
|
|
qint32 m_TRperiod; //T/R period (s)
|
2012-09-26 00:48:49 +00:00
|
|
|
qint32 m_nsps; //Samples per symbol (at 12000 Hz)
|
2012-10-05 19:14:45 +00:00
|
|
|
qint32 m_txFreq;
|
2012-10-26 14:03:43 +00:00
|
|
|
bool m_txOK; //Enable Tx audio
|
|
|
|
bool m_txMute; //Mute temporarily
|
2013-04-14 14:11:20 +00:00
|
|
|
bool m_tune;
|
2012-05-22 17:09:48 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|