AaroniaRTSA output: fixed center frequency and sample rate getter and setter

This commit is contained in:
f4exb 2023-05-23 13:51:27 +02:00
parent a6fa12ab3b
commit 2b6f033b89
3 changed files with 12 additions and 30 deletions

View File

@ -44,14 +44,12 @@ MESSAGE_CLASS_DEFINITION(AaroniaRTSAOutput::MsgSetStatus, Message)
AaroniaRTSAOutput::AaroniaRTSAOutput(DeviceAPI *deviceAPI) : AaroniaRTSAOutput::AaroniaRTSAOutput(DeviceAPI *deviceAPI) :
m_deviceAPI(deviceAPI), m_deviceAPI(deviceAPI),
m_settings(), m_settings(),
m_centerFrequency(0),
m_sampleRate(48000),
m_deviceDescription("AaroniaRTSAOutput"), m_deviceDescription("AaroniaRTSAOutput"),
m_worker(nullptr), m_worker(nullptr),
m_workerThread(nullptr), m_workerThread(nullptr),
m_running(false) m_running(false)
{ {
m_sampleSourceFifo.resize(SampleSourceFifo::getSizePolicy(m_sampleRate)); m_sampleSourceFifo.resize(SampleSourceFifo::getSizePolicy(m_settings.m_sampleRate));
m_deviceAPI->setNbSinkStreams(1); m_deviceAPI->setNbSinkStreams(1);
m_networkManager = new QNetworkAccessManager(); m_networkManager = new QNetworkAccessManager();
QObject::connect( QObject::connect(
@ -174,40 +172,26 @@ const QString& AaroniaRTSAOutput::getDeviceDescription() const
int AaroniaRTSAOutput::getSampleRate() const int AaroniaRTSAOutput::getSampleRate() const
{ {
return m_sampleRate; return m_settings.m_sampleRate;
}
void AaroniaRTSAOutput::setSampleRate(int sampleRate)
{
m_sampleRate = sampleRate;
m_sampleSourceFifo.resize(SampleSourceFifo::getSizePolicy(m_sampleRate));
DSPSignalNotification *notif = new DSPSignalNotification(m_sampleRate, m_centerFrequency); // Frequency in Hz for the DSP engine
m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif);
if (getMessageQueueToGUI())
{
MsgReportSampleRateAndFrequency *msg = MsgReportSampleRateAndFrequency::create(m_sampleRate, m_centerFrequency);
getMessageQueueToGUI()->push(msg);
}
} }
quint64 AaroniaRTSAOutput::getCenterFrequency() const quint64 AaroniaRTSAOutput::getCenterFrequency() const
{ {
return m_centerFrequency; return m_settings.m_centerFrequency;
} }
void AaroniaRTSAOutput::setCenterFrequency(qint64 centerFrequency) void AaroniaRTSAOutput::setCenterFrequency(qint64 centerFrequency)
{ {
m_centerFrequency = centerFrequency; AaroniaRTSAOutputSettings settings = m_settings;
settings.m_centerFrequency = centerFrequency;
DSPSignalNotification *notif = new DSPSignalNotification(m_sampleRate, m_centerFrequency); // Frequency in Hz for the DSP engine MsgConfigureAaroniaRTSAOutput* message = MsgConfigureAaroniaRTSAOutput::create(settings, QList<QString>{"centerFrequency"}, false);
m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif); m_inputMessageQueue.push(message);
if (getMessageQueueToGUI()) if (m_guiMessageQueue)
{ {
MsgReportSampleRateAndFrequency *msg = MsgReportSampleRateAndFrequency::create(m_sampleRate, m_centerFrequency); MsgConfigureAaroniaRTSAOutput* messageToGUI = MsgConfigureAaroniaRTSAOutput::create(settings, QList<QString>{"centerFrequency"}, false);
getMessageQueueToGUI()->push(msg); m_guiMessageQueue->push(messageToGUI);
} }
} }

View File

@ -139,7 +139,7 @@ public:
virtual void setMessageQueueToGUI(MessageQueue *queue); virtual void setMessageQueueToGUI(MessageQueue *queue);
virtual const QString& getDeviceDescription() const; virtual const QString& getDeviceDescription() const;
virtual int getSampleRate() const; virtual int getSampleRate() const;
virtual void setSampleRate(int sampleRate); virtual void setSampleRate(int sampleRate) { (void) sampleRate; }
virtual quint64 getCenterFrequency() const; virtual quint64 getCenterFrequency() const;
virtual void setCenterFrequency(qint64 centerFrequency); virtual void setCenterFrequency(qint64 centerFrequency);
std::time_t getStartingTimeStamp() const; std::time_t getStartingTimeStamp() const;
@ -182,8 +182,6 @@ private:
DeviceAPI *m_deviceAPI; DeviceAPI *m_deviceAPI;
QMutex m_mutex; QMutex m_mutex;
AaroniaRTSAOutputSettings m_settings; AaroniaRTSAOutputSettings m_settings;
qint64 m_centerFrequency;
int m_sampleRate;
QString m_deviceDescription; QString m_deviceDescription;
QNetworkAccessManager *m_networkManager; QNetworkAccessManager *m_networkManager;
QNetworkRequest m_networkRequest; QNetworkRequest m_networkRequest;

View File

@ -150,7 +150,7 @@ void AaroniaRTSAOutputWorker::callbackPart(int16_t *buf, SampleVector& data, uns
void AaroniaRTSAOutputWorker::postData(QJsonDocument jdoc, int16_t *samplesArray, int nSamples) void AaroniaRTSAOutputWorker::postData(QJsonDocument jdoc, int16_t *samplesArray, int nSamples)
{ {
QUrl url(tr("http://%1/sample").arg(m_serverAddress)); QUrl url(tr("http://%1/sample").arg(m_serverAddress));
qDebug() << "AaroniaRTSAOutputWorker::postData:" << url; // qDebug() << "AaroniaRTSAOutputWorker::postData:" << url;
QNetworkRequest request(url); QNetworkRequest request(url);
request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/json")); request.setHeader(QNetworkRequest::ContentTypeHeader, QString("application/json"));
QByteArray byteArray = jdoc.toJson(QJsonDocument::Compact); QByteArray byteArray = jdoc.toJson(QJsonDocument::Compact);