diff options
author | Christian Daniel <cd@maintech.de> | 2013-09-26 23:19:00 +0200 |
---|---|---|
committer | Christian Daniel <cd@maintech.de> | 2013-09-26 23:19:00 +0200 |
commit | cab9869fa0eed5762e571c54ba07cb72be96d131 (patch) | |
tree | 382687b502e7abfd624de304aae30a02899f5fa1 /plugins | |
parent | 0fa3f5213d071c759946e0e1501339cb2c2d17d1 (diff) |
TCPSrc: save and restore configuration
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/channel/tcpsrc/tcpsrcgui.cpp | 57 | ||||
-rw-r--r-- | plugins/channel/tcpsrc/tcpsrcgui.h | 7 |
2 files changed, 61 insertions, 3 deletions
diff --git a/plugins/channel/tcpsrc/tcpsrcgui.cpp b/plugins/channel/tcpsrc/tcpsrcgui.cpp index 3b3168b..dbaa52f 100644 --- a/plugins/channel/tcpsrc/tcpsrcgui.cpp +++ b/plugins/channel/tcpsrc/tcpsrcgui.cpp @@ -4,6 +4,7 @@ #include "dsp/channelizer.h" #include "dsp/spectrumvis.h" #include "dsp/threadedsamplesink.h" +#include "util/simpleserializer.h" #include "ui_tcpsrcgui.h" TCPSrcGUI* TCPSrcGUI::create(PluginAPI* pluginAPI) @@ -33,12 +34,57 @@ void TCPSrcGUI::resetToDefaults() QByteArray TCPSrcGUI::serialize() const { - return QByteArray(); + SimpleSerializer s(1); + s.writeBlob(1, saveState()); + s.writeS32(2, m_channelMarker->getCenterFrequency()); + s.writeS32(3, m_sampleFormat); + s.writeReal(4, m_outputSampleRate); + s.writeReal(5, m_rfBandwidth); + s.writeS32(6, m_tcpPort); + return s.final(); } bool TCPSrcGUI::deserialize(const QByteArray& data) { - return false; + SimpleDeserializer d(data); + + if(!d.isValid()) { + resetToDefaults(); + return false; + } + + if(d.getVersion() == 1) { + QByteArray bytetmp; + qint32 s32tmp; + Real realtmp; + d.readBlob(1, &bytetmp); + restoreState(bytetmp); + d.readS32(2, &s32tmp, 0); + m_channelMarker->setCenterFrequency(s32tmp); + d.readS32(3, &s32tmp, TCPSrc::FormatS8); + switch(s32tmp) { + case TCPSrc::FormatS8: + ui->sampleFormat->setCurrentIndex(0); + break; + case TCPSrc::FormatS16LE: + ui->sampleFormat->setCurrentIndex(1); + break; + default: + ui->sampleFormat->setCurrentIndex(0); + break; + } + d.readReal(4, &realtmp, 25000); + ui->sampleRate->setText(QString("%1").arg(realtmp, 0)); + d.readReal(5, &realtmp, 20000); + ui->rfBandwidth->setText(QString("%1").arg(realtmp, 0)); + d.readS32(6, &s32tmp, 9999); + ui->tcpPort->setText(QString("%1").arg(s32tmp)); + applySettings(); + return true; + } else { + resetToDefaults(); + return false; + } } bool TCPSrcGUI::handleMessage(Message* message) @@ -113,7 +159,7 @@ void TCPSrcGUI::applySettings() outputSampleRate = 25000; Real rfBandwidth = ui->rfBandwidth->text().toDouble(&ok); if((!ok) || (rfBandwidth > outputSampleRate)) - rfBandwidth = outputSampleRate / 1.05; + rfBandwidth = outputSampleRate; int tcpPort = ui->tcpPort->text().toInt(&ok); if((!ok) || (tcpPort < 1) || (tcpPort > 65535)) tcpPort = 9999; @@ -143,6 +189,11 @@ void TCPSrcGUI::applySettings() break; } + m_sampleFormat = sampleFormat; + m_outputSampleRate = outputSampleRate; + m_rfBandwidth = rfBandwidth; + m_tcpPort = tcpPort; + m_tcpSrc->configure(m_threadedSampleSink->getMessageQueue(), sampleFormat, outputSampleRate, diff --git a/plugins/channel/tcpsrc/tcpsrcgui.h b/plugins/channel/tcpsrc/tcpsrcgui.h index 9e52fb7..e8ebe5b 100644 --- a/plugins/channel/tcpsrc/tcpsrcgui.h +++ b/plugins/channel/tcpsrc/tcpsrcgui.h @@ -4,6 +4,7 @@ #include <QHostAddress> #include "gui/rollupwidget.h" #include "plugin/plugingui.h" +#include "tcpsrc.h" class PluginAPI; class ChannelMarker; @@ -45,6 +46,12 @@ private: PluginAPI* m_pluginAPI; ChannelMarker* m_channelMarker; + // settings + TCPSrc::SampleFormat m_sampleFormat; + Real m_outputSampleRate; + Real m_rfBandwidth; + int m_tcpPort; + // RF path ThreadedSampleSink* m_threadedSampleSink; Channelizer* m_channelizer; |