1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-01 21:54:55 -04:00

Source plugins: put a serializer and deserializer in the core plugin for server. NFM demod: fixed deserializer

This commit is contained in:
f4exb
2017-12-28 03:21:48 +01:00
parent 1ee6abc3d3
commit 8399baeb4e
36 changed files with 682 additions and 69 deletions
@@ -128,7 +128,16 @@ bool FCDProPlusGui::deserialize(const QByteArray& data)
bool FCDProPlusGui::handleMessage(const Message& message __attribute__((unused)))
{
if (FCDProPlusInput::MsgStartStop::match(message))
if (FCDProPlusInput::MsgConfigureFCD::match(message))
{
const FCDProPlusInput::MsgConfigureFCD& cfg = (FCDProPlusInput::MsgConfigureFCD&) message;
m_settings = cfg.getSettings();
blockApplySettings(true);
displaySettings();
blockApplySettings(false);
return true;
}
else if (FCDProPlusInput::MsgStartStop::match(message))
{
FCDProPlusInput::MsgStartStop& notif = (FCDProPlusInput::MsgStartStop&) message;
blockApplySettings(true);
@@ -157,6 +157,33 @@ void FCDProPlusInput::stop()
m_running = false;
}
QByteArray FCDProPlusInput::serialize() const
{
return m_settings.serialize();
}
bool FCDProPlusInput::deserialize(const QByteArray& data)
{
bool success = true;
if (!m_settings.deserialize(data))
{
m_settings.resetToDefaults();
success = false;
}
MsgConfigureFCD* message = MsgConfigureFCD::create(m_settings, true);
m_inputMessageQueue.push(message);
if (m_guiMessageQueue)
{
MsgConfigureFCD* messageToGUI = MsgConfigureFCD::create(m_settings, true);
m_guiMessageQueue->push(messageToGUI);
}
return success;
}
const QString& FCDProPlusInput::getDeviceDescription() const
{
return m_deviceDescription;
@@ -172,6 +199,21 @@ quint64 FCDProPlusInput::getCenterFrequency() const
return m_settings.m_centerFrequency;
}
void FCDProPlusInput::setCenterFrequency(qint64 centerFrequency)
{
FCDProPlusSettings settings = m_settings;
settings.m_centerFrequency = centerFrequency;
MsgConfigureFCD* message = MsgConfigureFCD::create(settings, false);
m_inputMessageQueue.push(message);
if (m_guiMessageQueue)
{
MsgConfigureFCD* messageToGUI = MsgConfigureFCD::create(settings, false);
m_guiMessageQueue->push(messageToGUI);
}
}
bool FCDProPlusInput::handleMessage(const Message& message)
{
if(MsgConfigureFCD::match(message))
@@ -17,12 +17,13 @@
#ifndef INCLUDE_FCDINPUT_H
#define INCLUDE_FCDINPUT_H
#include <dsp/devicesamplesource.h>
#include <QString>
#include <QByteArray>
#include <inttypes.h>
#include <dsp/devicesamplesource.h>
#include "fcdproplussettings.h"
#include "fcdhid.h"
#include <QString>
#include <inttypes.h>
struct fcd_buffer {
void *start;
@@ -104,10 +105,14 @@ public:
virtual bool start();
virtual void stop();
virtual QByteArray serialize() const;
virtual bool deserialize(const QByteArray& data);
virtual void setMessageQueueToGUI(MessageQueue *queue) { m_guiMessageQueue = queue; }
virtual const QString& getDeviceDescription() const;
virtual int getSampleRate() const;
virtual quint64 getCenterFrequency() const;
virtual void setCenterFrequency(qint64 centerFrequency);
virtual bool handleMessage(const Message& message);