From 9987c7db4f8a1937254d729ad22fe42e91b3f641 Mon Sep 17 00:00:00 2001 From: Edouard Griffiths Date: Wed, 30 Sep 2015 18:56:00 +0200 Subject: [PATCH] New preset design. Implement for BladeRF interim #2 --- .../samplesource/bladerf/bladerfsettings.cpp | 100 ++++++++++++++++++ .../samplesource/bladerf/bladerfsettings.h | 47 ++++++++ 2 files changed, 147 insertions(+) create mode 100644 plugins/samplesource/bladerf/bladerfsettings.cpp create mode 100644 plugins/samplesource/bladerf/bladerfsettings.h diff --git a/plugins/samplesource/bladerf/bladerfsettings.cpp b/plugins/samplesource/bladerf/bladerfsettings.cpp new file mode 100644 index 000000000..ea918c7a7 --- /dev/null +++ b/plugins/samplesource/bladerf/bladerfsettings.cpp @@ -0,0 +1,100 @@ +/////////////////////////////////////////////////////////////////////////////////// +// 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 "bladerfsettings.h" + +BladeRFSettings::BladeRFSettings() +{ + resetToDefaults(); +} + +void BladeRFSettings::resetToDefaults() +{ + m_centerFrequency = 435000*1000; + m_devSampleRate = 3072000; + m_lnaGain = 0; + m_vga1 = 20; + m_vga2 = 9; + m_bandwidth = 1500000; + m_log2Decim = 0; + m_fcPos = FC_POS_INFRA; + m_xb200 = false; + m_xb200Path = BLADERF_XB200_MIX; + m_xb200Filter = BLADERF_XB200_AUTO_1DB; + m_dcBlock = false; + m_iqCorrection = false; +} + +QByteArray BladeRFSettings::serialize() const +{ + SimpleSerializer s(1); + + s.writeS32(1, m_devSampleRate); + s.writeS32(2, m_lnaGain); + s.writeS32(3, m_vga1); + s.writeS32(4, m_vga2); + s.writeS32(5, m_bandwidth); + s.writeS32(6, m_log2Decim); + s.writeS32(7, (int) m_fcPos); + s.writeBool(8, m_xb200); + s.writeS32(9, (int) m_xb200Path); + s.writeS32(10, (int) m_xb200Filter); + s.writeBool(11, m_dcBlock); + s.writeBool(12, m_iqCorrection); + + return s.final(); +} + +bool BladeRFSettings::deserialize(const QByteArray& data) +{ + SimpleDeserializer d(data); + + if (!d.isValid()) + { + resetToDefaults(); + return false; + } + + if (d.getVersion() == SampleSourceSerializer::getSerializerVersion()) + { + int intval; + + d.readS32(1, &m_devSampleRate); + d.readS32(2, &m_lnaGain); + d.readS32(3, &m_vga1); + d.readS32(4, &m_vga2); + d.readS32(5, &m_bandwidth); + d.readS32(6, &m_log2Decim); + d.readS32(7, &intval); + m_fcPos = (fcPos_t) intval; + d.readBool(8, &m_xb200); + d.readS32(9, &intval); + m_xb200Path = (bladerf_xb200_path) intval; + d.readS32(10, &intval); + m_xb200Filter = (bladerf_xb200_filter) intval; + d.readBool(11, &m_dcBlock); + d.readBool(12, &m_iqCorrection); + + return true; + } + else + { + resetToDefaults(); + return false; + } +} diff --git a/plugins/samplesource/bladerf/bladerfsettings.h b/plugins/samplesource/bladerf/bladerfsettings.h new file mode 100644 index 000000000..2224ea2e5 --- /dev/null +++ b/plugins/samplesource/bladerf/bladerfsettings.h @@ -0,0 +1,47 @@ +/////////////////////////////////////////////////////////////////////////////////// +// 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 _BLADERF_BLADERFSETTINGS_H_ +#define _BLADERF_BLADERFSETTINGS_H_ + +struct BladeRFSettings { + typedef enum { + FC_POS_INFRA = 0, + FC_POS_SUPRA, + FC_POS_CENTER + } fcPos_t; + + quint64 m_centerFrequency; + qint32 m_devSampleRate; + qint32 m_lnaGain; + qint32 m_vga1; + qint32 m_vga2; + qint32 m_bandwidth; + quint32 m_log2Decim; + fcPos_t m_fcPos; + bool m_xb200; + bladerf_xb200_path m_xb200Path; + bladerf_xb200_filter m_xb200Filter; + bool m_dcBlock; + bool m_iqCorrection; + + BladeRFSettings(); + void resetToDefaults(); + QByteArray serialize() const; + bool deserialize(const QByteArray& data); +}; + +#endif /* _BLADERF_BLADERFSETTINGS_H_ */