diff --git a/plugins/samplesource/audioinput/audioinput.cpp b/plugins/samplesource/audioinput/audioinput.cpp index 8e267e5e1..080a86cb1 100644 --- a/plugins/samplesource/audioinput/audioinput.cpp +++ b/plugins/samplesource/audioinput/audioinput.cpp @@ -346,11 +346,9 @@ void AudioInput::applySettings(const AudioInputSettings& settings, QListgetSampleRate(); m_centerFrequency = notif->getCenterFrequency(); m_deviceAPI->getDeviceEngineInputMessageQueue()->push(notif); diff --git a/plugins/samplesource/audioinput/audioinputgui.cpp b/plugins/samplesource/audioinput/audioinputgui.cpp index e6cd67f54..db0ae7a5f 100644 --- a/plugins/samplesource/audioinput/audioinputgui.cpp +++ b/plugins/samplesource/audioinput/audioinputgui.cpp @@ -104,7 +104,18 @@ bool AudioInputGui::deserialize(const QByteArray& data) bool AudioInputGui::handleMessage(const Message& message) { - if (AudioInput::MsgConfigureAudioInput::match(message)) + if (DSPSignalNotification::match(message)) + { + const DSPSignalNotification& notif = (DSPSignalNotification&) message; + m_sampleRate = notif.getSampleRate(); + m_centerFrequency = notif.getCenterFrequency(); + qDebug("AudioInputGui::handleInputMessages: DSPSignalNotification: SampleRate: %d", notif.getSampleRate()); + updateSampleRateAndFrequency(); + updateSpectrum(); + + return true; + } + else if (AudioInput::MsgConfigureAudioInput::match(message)) { const AudioInput::MsgConfigureAudioInput& cfg = (AudioInput::MsgConfigureAudioInput&) message; @@ -117,6 +128,7 @@ bool AudioInputGui::handleMessage(const Message& message) blockApplySettings(true); displaySettings(); blockApplySettings(false); + return true; } else if (AudioInput::MsgStartStop::match(message)) @@ -142,23 +154,9 @@ void AudioInputGui::handleInputMessages() { qDebug("AudioInputGui::handleInputMessages: message: %s", message->getIdentifier()); - if (DSPSignalNotification::match(*message)) - { - DSPSignalNotification* notif = (DSPSignalNotification*) message; - m_sampleRate = notif->getSampleRate(); - m_centerFrequency = notif->getCenterFrequency(); - qDebug("AudioInputGui::handleInputMessages: DSPSignalNotification: SampleRate: %d", notif->getSampleRate()); - updateSampleRateAndFrequency(); - + if (handleMessage(*message)) { delete message; } - else - { - if (handleMessage(*message)) - { - delete message; - } - } } } @@ -246,6 +244,7 @@ void AudioInputGui::displaySettings() ui->iqImbalance->setChecked(m_settings.m_iqImbalance); refreshSampleRates(ui->device->currentText()); displayFcTooltip(); + updateSpectrum(); } void AudioInputGui::displayFcTooltip() @@ -259,6 +258,15 @@ void AudioInputGui::displayFcTooltip() ui->fcPos->setToolTip(tr("Relative position of device center frequency: %1 kHz").arg(QString::number(fShift / 1000.0f, 'g', 5))); } +void AudioInputGui::updateSpectrum() +{ + bool realElseComplex = (m_settings.m_iqMapping == AudioInputSettings::L) + || (m_settings.m_iqMapping == AudioInputSettings::R); + m_deviceUISet->getSpectrum()->setCenterFrequency(0); + m_deviceUISet->getSpectrum()->setSampleRate(m_sampleRate); + m_deviceUISet->getSpectrum()->setSsbSpectrum(realElseComplex); +} + void AudioInputGui::on_device_currentIndexChanged(int index) { (void) index; diff --git a/plugins/samplesource/audioinput/audioinputgui.h b/plugins/samplesource/audioinput/audioinputgui.h index 61767a67c..277bb1572 100644 --- a/plugins/samplesource/audioinput/audioinputgui.h +++ b/plugins/samplesource/audioinput/audioinputgui.h @@ -66,6 +66,7 @@ private: void refreshSampleRates(QString deviceName); void displaySettings(); void displayFcTooltip(); + void updateSpectrum(); void sendSettings(); void updateSampleRateAndFrequency(); bool handleMessage(const Message& message); diff --git a/plugins/samplesource/audioinput/audioinputgui.ui b/plugins/samplesource/audioinput/audioinputgui.ui index b79790416..a34518db5 100644 --- a/plugins/samplesource/audioinput/audioinputgui.ui +++ b/plugins/samplesource/audioinput/audioinputgui.ui @@ -386,6 +386,9 @@ 10 + + 1 + 10 diff --git a/plugins/samplesource/audioinput/audioinputworker.cpp b/plugins/samplesource/audioinput/audioinputworker.cpp index a70967cd1..1e2e647b0 100644 --- a/plugins/samplesource/audioinput/audioinputworker.cpp +++ b/plugins/samplesource/audioinput/audioinputworker.cpp @@ -33,8 +33,7 @@ AudioInputWorker::AudioInputWorker(SampleSinkFifo* sampleFifo, AudioFifo *fifo, m_log2Decim(0), m_iqMapping(AudioInputSettings::IQMapping::L), m_convertBuffer(m_convBufSamples), - m_sampleFifo(sampleFifo), - m_quNCOPhase(0) + m_sampleFifo(sampleFifo) { } @@ -62,31 +61,10 @@ void AudioInputWorker::workIQ(unsigned int nbRead) { for (uint32_t i = 0; i < nbRead; i++) { - qint16 r = m_buf[i*2 + (m_iqMapping == AudioInputSettings::IQMapping::R ? 1 : 0)]; // real sample - - if (m_quNCOPhase == 0) // 0 - { - m_buf[i*2] = r; // 1 - m_buf[i*2+1] = 0; // 0 - m_quNCOPhase = 1; // next phase - } - else if (m_quNCOPhase == 1) // -pi/2 - { - m_buf[i*2] = 0; // 0 - m_buf[i*2+1] = -r; // -1 - m_quNCOPhase = 2; // next phase - } - else if (m_quNCOPhase == 2) // pi or -pi - { - m_buf[i*2] = -r; // -1 - m_buf[i*2+1] = 0; // 0 - m_quNCOPhase = 3; // next phase - } - else if (m_quNCOPhase == 3) // pi/2 - { - m_buf[i*2] = 0; // 0 - m_buf[i*2+1] = r; // 1 - m_quNCOPhase = 0; // next phase + if (m_iqMapping == AudioInputSettings::IQMapping::L) { + m_buf[i*2+1] = m_buf[i*2]; + } else { + m_buf[i*2] = m_buf[i*2+1]; } } } diff --git a/plugins/samplesource/audioinput/audioinputworker.h b/plugins/samplesource/audioinput/audioinputworker.h index ad7bfeb64..7624994cf 100644 --- a/plugins/samplesource/audioinput/audioinputworker.h +++ b/plugins/samplesource/audioinput/audioinputworker.h @@ -53,7 +53,6 @@ private: SampleVector m_convertBuffer; SampleSinkFifo* m_sampleFifo; Decimators m_decimatorsIQ; - int m_quNCOPhase; //!< Quarter sample rate pseudo NCO phase index (0, 90, 180, 270) void workIQ(unsigned int nbRead); void decimate(qint16 *buf, unsigned int nbRead);