summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorChristian Daniel <cd@maintech.de>2013-09-26 23:19:00 +0200
committerChristian Daniel <cd@maintech.de>2013-09-26 23:19:00 +0200
commitcab9869fa0eed5762e571c54ba07cb72be96d131 (patch)
tree382687b502e7abfd624de304aae30a02899f5fa1 /plugins
parent0fa3f5213d071c759946e0e1501339cb2c2d17d1 (diff)
TCPSrc: save and restore configuration
Diffstat (limited to 'plugins')
-rw-r--r--plugins/channel/tcpsrc/tcpsrcgui.cpp57
-rw-r--r--plugins/channel/tcpsrc/tcpsrcgui.h7
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;