From 4657790fd6fd6463fa466f70bd41f6e659cc7f0c Mon Sep 17 00:00:00 2001 From: Edouard Griffiths Date: Wed, 30 Sep 2015 13:23:20 +0200 Subject: [PATCH] New preset design (single). Applied to Airspy. Interim state #1 --- plugins/samplesource/airspy/CMakeLists.txt | 4 +- plugins/samplesource/airspy/airspygui.cpp | 6 +- plugins/samplesource/airspy/airspygui.h | 2 +- plugins/samplesource/airspy/airspyinput.cpp | 86 ++++----------------- plugins/samplesource/airspy/airspyinput.h | 36 ++------- 5 files changed, 29 insertions(+), 105 deletions(-) diff --git a/plugins/samplesource/airspy/CMakeLists.txt b/plugins/samplesource/airspy/CMakeLists.txt index 5eaeaa731..b734742df 100644 --- a/plugins/samplesource/airspy/CMakeLists.txt +++ b/plugins/samplesource/airspy/CMakeLists.txt @@ -4,7 +4,7 @@ set(airspy_SOURCES airspygui.cpp airspyinput.cpp airspyplugin.cpp - airspyserializer.cpp + airspysettings.cpp airspythread.cpp ) @@ -12,7 +12,7 @@ set(airspy_HEADERS airspygui.h airspyinput.h airspyplugin.h - airspyserializer.h + airspysettings.h airspythread.h ) diff --git a/plugins/samplesource/airspy/airspygui.cpp b/plugins/samplesource/airspy/airspygui.cpp index 877913fc4..b60f08528 100644 --- a/plugins/samplesource/airspy/airspygui.cpp +++ b/plugins/samplesource/airspy/airspygui.cpp @@ -226,13 +226,13 @@ void AirspyGui::on_decim_valueChanged(int value) void AirspyGui::on_fcPos_currentIndexChanged(int index) { if (index == 0) { - m_settings.m_fcPos = AirspyInput::FC_POS_INFRA; + m_settings.m_fcPos = AirspySettings::FC_POS_INFRA; sendSettings(); } else if (index == 1) { - m_settings.m_fcPos = AirspyInput::FC_POS_SUPRA; + m_settings.m_fcPos = AirspySettings::FC_POS_SUPRA; sendSettings(); } else if (index == 2) { - m_settings.m_fcPos = AirspyInput::FC_POS_CENTER; + m_settings.m_fcPos = AirspySettings::FC_POS_CENTER; sendSettings(); } } diff --git a/plugins/samplesource/airspy/airspygui.h b/plugins/samplesource/airspy/airspygui.h index 50c478c49..67777c450 100644 --- a/plugins/samplesource/airspy/airspygui.h +++ b/plugins/samplesource/airspy/airspygui.h @@ -55,7 +55,7 @@ private: Ui::AirspyGui* ui; PluginAPI* m_pluginAPI; - AirspyInput::Settings m_settings; + AirspySettings m_settings; QTimer m_updateTimer; std::vector m_rates; SampleSource* m_sampleSource; diff --git a/plugins/samplesource/airspy/airspyinput.cpp b/plugins/samplesource/airspy/airspyinput.cpp index b7fc7f7ec..ab2d62be9 100644 --- a/plugins/samplesource/airspy/airspyinput.cpp +++ b/plugins/samplesource/airspy/airspyinput.cpp @@ -29,72 +29,6 @@ MESSAGE_CLASS_DEFINITION(AirspyInput::MsgConfigureAirspy, Message) MESSAGE_CLASS_DEFINITION(AirspyInput::MsgReportAirspy, Message) -AirspyInput::Settings::Settings() : - m_centerFrequency(435000*1000), - m_devSampleRateIndex(0), - m_LOppmTenths(0), - m_lnaGain(14), - m_mixerGain(15), - m_vgaGain(4), - m_log2Decim(0), - m_fcPos(FC_POS_CENTER), - m_biasT(false) -{ -} - -void AirspyInput::Settings::resetToDefaults() -{ - m_centerFrequency = 435000*1000; - m_devSampleRateIndex = 0; - m_LOppmTenths = 0; - m_lnaGain = 14; - m_mixerGain = 15; - m_vgaGain = 4; - m_log2Decim = 0; - m_fcPos = FC_POS_CENTER; - m_biasT = false; -} - -QByteArray AirspyInput::Settings::serialize() const -{ - AirspySerializer::AirspyData data; - - data.m_data.m_frequency = m_centerFrequency; - data.m_LOppmTenths = m_LOppmTenths; - data.m_sampleRateIndex = m_devSampleRateIndex; - data.m_log2Decim = m_log2Decim; - data.m_fcPos = (qint32) m_fcPos; - data.m_lnaGain = m_lnaGain; - data.m_mixerGain = m_mixerGain; - data.m_vgaGain = m_vgaGain; - data.m_biasT = m_biasT; - - QByteArray byteArray; - - AirspySerializer::writeSerializedData(data, byteArray); - - return byteArray; -} - -bool AirspyInput::Settings::deserialize(const QByteArray& serializedData) -{ - AirspySerializer::AirspyData data; - - bool valid = AirspySerializer::readSerializedData(serializedData, data); - - m_centerFrequency = data.m_data.m_frequency; - m_LOppmTenths = data.m_LOppmTenths; - m_devSampleRateIndex = data.m_sampleRateIndex; - m_log2Decim = data.m_log2Decim; - m_fcPos = (fcPos_t) data.m_fcPos; - m_lnaGain = data.m_lnaGain; - m_mixerGain = data.m_mixerGain; - m_vgaGain = data.m_vgaGain; - m_biasT = data.m_biasT; - - return valid; -} - AirspyInput::AirspyInput() : m_settings(), m_dev(0), @@ -281,7 +215,7 @@ void AirspyInput::setCenterFrequency(quint64 freq_hz) } } -bool AirspyInput::applySettings(const Settings& settings, bool force) +bool AirspyInput::applySettings(const AirspySettings& settings, bool force) { QMutexLocker mutexLocker(&m_mutex); @@ -290,6 +224,18 @@ bool AirspyInput::applySettings(const Settings& settings, bool force) qDebug() << "AirspyInput::applySettings"; + if (m_settings.m_dcBlock != settings.m_dcBlock) + { + m_settings.m_dcBlock = settings.m_dcBlock; + DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); + } + + if (m_settings.m_iqCorrection != settings.m_iqCorrection) + { + m_settings.m_iqCorrection = settings.m_iqCorrection; + DSPEngine::instance()->configureCorrections(m_settings.m_dcBlock, m_settings.m_iqCorrection); + } + if ((m_settings.m_devSampleRateIndex != settings.m_devSampleRateIndex) || force) { forwardChange = true; @@ -352,19 +298,19 @@ bool AirspyInput::applySettings(const Settings& settings, bool force) m_settings.m_centerFrequency = settings.m_centerFrequency; m_settings.m_LOppmTenths = settings.m_LOppmTenths; - if ((m_settings.m_log2Decim == 0) || (m_settings.m_fcPos == FC_POS_CENTER)) + if ((m_settings.m_log2Decim == 0) || (m_settings.m_fcPos == AirspySettings::FC_POS_CENTER)) { deviceCenterFrequency = m_settings.m_centerFrequency; f_img = deviceCenterFrequency; } else { - if (m_settings.m_fcPos == FC_POS_INFRA) + if (m_settings.m_fcPos == AirspySettings::FC_POS_INFRA) { deviceCenterFrequency = m_settings.m_centerFrequency + (devSampleRate / 4); f_img = deviceCenterFrequency + devSampleRate/2; } - else if (m_settings.m_fcPos == FC_POS_SUPRA) + else if (m_settings.m_fcPos == AirspySettings::FC_POS_SUPRA) { deviceCenterFrequency = m_settings.m_centerFrequency - (devSampleRate / 4); f_img = deviceCenterFrequency - devSampleRate/2; diff --git a/plugins/samplesource/airspy/airspyinput.h b/plugins/samplesource/airspy/airspyinput.h index aa2639efd..2f2527c1c 100644 --- a/plugins/samplesource/airspy/airspyinput.h +++ b/plugins/samplesource/airspy/airspyinput.h @@ -18,6 +18,7 @@ #define INCLUDE_AIRSPYINPUT_H #include "dsp/samplesource.h" +#include "airspysettings.h" #include #include @@ -25,44 +26,21 @@ class AirspyThread; class AirspyInput : public SampleSource { public: - typedef enum { - FC_POS_INFRA = 0, - FC_POS_SUPRA, - FC_POS_CENTER - } fcPos_t; - - struct Settings { - quint64 m_centerFrequency; - qint32 m_LOppmTenths; - quint32 m_devSampleRateIndex; - quint32 m_lnaGain; - quint32 m_mixerGain; - quint32 m_vgaGain; - quint32 m_log2Decim; - fcPos_t m_fcPos; - bool m_biasT; - - Settings(); - void resetToDefaults(); - QByteArray serialize() const; - bool deserialize(const QByteArray& data); - }; - class MsgConfigureAirspy : public Message { MESSAGE_CLASS_DECLARATION public: - const Settings& getSettings() const { return m_settings; } + const AirspySettings& getSettings() const { return m_settings; } - static MsgConfigureAirspy* create(const Settings& settings) + static MsgConfigureAirspy* create(const AirspySettings& settings) { return new MsgConfigureAirspy(settings); } private: - Settings m_settings; + AirspySettings m_settings; - MsgConfigureAirspy(const Settings& settings) : + MsgConfigureAirspy(const AirspySettings& settings) : Message(), m_settings(settings) { } @@ -103,12 +81,12 @@ public: virtual bool handleMessage(const Message& message); private: - bool applySettings(const Settings& settings, bool force); + bool applySettings(const AirspySettings& settings, bool force); struct airspy_device *open_airspy_from_sequence(int sequence); void setCenterFrequency(quint64 freq); QMutex m_mutex; - Settings m_settings; + AirspySettings m_settings; struct airspy_device* m_dev; AirspyThread* m_airspyThread; QString m_deviceDescription;