From 19a7170188ed7a96894c9ec3313c69ffaeb453fc Mon Sep 17 00:00:00 2001 From: Edouard Griffiths Date: Wed, 30 Sep 2015 13:31:32 +0200 Subject: [PATCH] New preset design (single). Applied to Airspy. Interim state #2 --- .../samplesource/airspy/airspysettings.cpp | 91 +++++++++++++++++++ plugins/samplesource/airspy/airspysettings.h | 45 +++++++++ 2 files changed, 136 insertions(+) create mode 100644 plugins/samplesource/airspy/airspysettings.cpp create mode 100644 plugins/samplesource/airspy/airspysettings.h diff --git a/plugins/samplesource/airspy/airspysettings.cpp b/plugins/samplesource/airspy/airspysettings.cpp new file mode 100644 index 000000000..3537eee63 --- /dev/null +++ b/plugins/samplesource/airspy/airspysettings.cpp @@ -0,0 +1,91 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2015 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#include +#include "util/simpleserializer.h" +#include "airspysettings.h" + +AirspySettings::AirspySettings() +{ + resetToDefaults(); +} + +void AirspySettings::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; + m_dcBlock = false; + m_iqCorrection = false; +} + +QByteArray AirspySettings::serialize() const +{ + SimpleSerializer s(1); + + s.writeS32(1, m_LOppmTenths); + s.writeU32(2, m_devSampleRateIndex); + s.writeU32(3, m_log2Decim); + s.writeS32(4, m_fcPos); + s.writeU32(5, m_lnaGain); + s.writeU32(6, m_mixerGain); + s.writeU32(7, m_vgaGain); + s.writeBool(8, m_biasT); + s.writeBool(9, m_dcBlock); + s.writeBool(10, m_iqCorrection); + + return s.final(); +} + +bool AirspySettings::deserialize(const QByteArray& data) +{ + SimpleDeserializer d(data); + + if (!d.isValid()) + { + resetToDefaults(); + return false; + } + + if (d.getVersion() == 1) + { + int intval; + + d.readS32(1, &m_LOppmTenths, 0); + d.readU32(2, &m_devSampleRateIndex, 0); + d.readU32(3, &m_log2Decim, 0); + d.readS32(4, &m_fcPos, 0); + d.readU32(5, &m_lnaGain, 14); + d.readU32(6, &m_mixerGain, 15); + d.readU32(7, &m_vgaGain, 4); + d.readBool(8, &m_biasT, false); + d.readBool(9, &m_dcBlock, false); + d.readBool(10, &m_iqCorrection, false); + + return true; + } + else + { + resetToDefaults(); + return false; + } +} diff --git a/plugins/samplesource/airspy/airspysettings.h b/plugins/samplesource/airspy/airspysettings.h new file mode 100644 index 000000000..1378d4e74 --- /dev/null +++ b/plugins/samplesource/airspy/airspysettings.h @@ -0,0 +1,45 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2015 Edouard Griffiths, F4EXB // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef _AIRSPY_AIRSPYSETTINGS_H_ +#define _AIRSPY_AIRSPYSETTINGS_H_ + +struct AirspySettings { + typedef enum { + FC_POS_INFRA = 0, + FC_POS_SUPRA, + FC_POS_CENTER + } fcPos_t; + + 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; + bool m_dcBlock; + bool m_iqCorrection; + + AirspySettings(); + void resetToDefaults(); + QByteArray serialize() const; + bool deserialize(const QByteArray& data); +}; + +#endif /* _AIRSPY_AIRSPYSETTINGS_H_ */