mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-06-05 23:45:00 -04:00
Source plugins: put a serializer and deserializer in the core plugin for server. NFM demod: fixed deserializer
This commit is contained in:
@@ -119,7 +119,16 @@ bool AirspyGui::deserialize(const QByteArray& data)
|
||||
|
||||
bool AirspyGui::handleMessage(const Message& message)
|
||||
{
|
||||
if (AirspyInput::MsgStartStop::match(message))
|
||||
if (AirspyInput::MsgConfigureAirspy::match(message))
|
||||
{
|
||||
const AirspyInput::MsgConfigureAirspy& cfg = (AirspyInput::MsgConfigureAirspy&) message;
|
||||
m_settings = cfg.getSettings();
|
||||
blockApplySettings(true);
|
||||
displaySettings();
|
||||
blockApplySettings(false);
|
||||
return true;
|
||||
}
|
||||
else if (AirspyInput::MsgStartStop::match(message))
|
||||
{
|
||||
AirspyInput::MsgStartStop& notif = (AirspyInput::MsgStartStop&) message;
|
||||
blockApplySettings(true);
|
||||
|
||||
@@ -213,6 +213,33 @@ void AirspyInput::stop()
|
||||
m_running = false;
|
||||
}
|
||||
|
||||
QByteArray AirspyInput::serialize() const
|
||||
{
|
||||
return m_settings.serialize();
|
||||
}
|
||||
|
||||
bool AirspyInput::deserialize(const QByteArray& data)
|
||||
{
|
||||
bool success = true;
|
||||
|
||||
if (!m_settings.deserialize(data))
|
||||
{
|
||||
m_settings.resetToDefaults();
|
||||
success = false;
|
||||
}
|
||||
|
||||
MsgConfigureAirspy* message = MsgConfigureAirspy::create(m_settings, true);
|
||||
m_inputMessageQueue.push(message);
|
||||
|
||||
if (m_guiMessageQueue)
|
||||
{
|
||||
MsgConfigureAirspy* messageToGUI = MsgConfigureAirspy::create(m_settings, true);
|
||||
m_guiMessageQueue->push(messageToGUI);
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
|
||||
const QString& AirspyInput::getDeviceDescription() const
|
||||
{
|
||||
return m_deviceDescription;
|
||||
@@ -229,6 +256,21 @@ quint64 AirspyInput::getCenterFrequency() const
|
||||
return m_settings.m_centerFrequency;
|
||||
}
|
||||
|
||||
void AirspyInput::setCenterFrequency(qint64 centerFrequency)
|
||||
{
|
||||
AirspySettings settings = m_settings;
|
||||
settings.m_centerFrequency = centerFrequency;
|
||||
|
||||
MsgConfigureAirspy* message = MsgConfigureAirspy::create(settings, false);
|
||||
m_inputMessageQueue.push(message);
|
||||
|
||||
if (m_guiMessageQueue)
|
||||
{
|
||||
MsgConfigureAirspy* messageToGUI = MsgConfigureAirspy::create(settings, false);
|
||||
m_guiMessageQueue->push(messageToGUI);
|
||||
}
|
||||
}
|
||||
|
||||
bool AirspyInput::handleMessage(const Message& message)
|
||||
{
|
||||
if (MsgConfigureAirspy::match(message))
|
||||
@@ -285,7 +327,7 @@ bool AirspyInput::handleMessage(const Message& message)
|
||||
}
|
||||
}
|
||||
|
||||
void AirspyInput::setCenterFrequency(quint64 freq_hz)
|
||||
void AirspyInput::setDeviceCenterFrequency(quint64 freq_hz)
|
||||
{
|
||||
qint64 df = ((qint64)freq_hz * m_settings.m_LOppmTenths) / 10000000LL;
|
||||
freq_hz += df;
|
||||
@@ -294,11 +336,11 @@ void AirspyInput::setCenterFrequency(quint64 freq_hz)
|
||||
|
||||
if (rc != AIRSPY_SUCCESS)
|
||||
{
|
||||
qWarning("AirspyInput::setCenterFrequency: could not frequency to %llu Hz", freq_hz);
|
||||
qWarning("AirspyInput::setDeviceCenterFrequency: could not frequency to %llu Hz", freq_hz);
|
||||
}
|
||||
else
|
||||
{
|
||||
qWarning("AirspyInput::setCenterFrequency: frequency set to %llu Hz", freq_hz);
|
||||
qWarning("AirspyInput::setDeviceCenterFrequency: frequency set to %llu Hz", freq_hz);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -401,7 +443,7 @@ bool AirspyInput::applySettings(const AirspySettings& settings, bool force)
|
||||
|
||||
if (m_dev != 0)
|
||||
{
|
||||
setCenterFrequency(deviceCenterFrequency);
|
||||
setDeviceCenterFrequency(deviceCenterFrequency);
|
||||
|
||||
qDebug() << "AirspyInput::applySettings: center freq: " << m_settings.m_centerFrequency << " Hz"
|
||||
<< " device center freq: " << deviceCenterFrequency << " Hz"
|
||||
|
||||
@@ -17,11 +17,12 @@
|
||||
#ifndef INCLUDE_AIRSPYINPUT_H
|
||||
#define INCLUDE_AIRSPYINPUT_H
|
||||
|
||||
#include <dsp/devicesamplesource.h>
|
||||
|
||||
#include "airspysettings.h"
|
||||
#include <libairspy/airspy.h>
|
||||
#include <QString>
|
||||
#include <QByteArray>
|
||||
|
||||
#include <libairspy/airspy.h>
|
||||
#include <dsp/devicesamplesource.h>
|
||||
#include "airspysettings.h"
|
||||
|
||||
class DeviceSourceAPI;
|
||||
class AirspyThread;
|
||||
@@ -98,10 +99,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);
|
||||
const std::vector<uint32_t>& getSampleRates() const { return m_sampleRates; }
|
||||
|
||||
virtual bool handleMessage(const Message& message);
|
||||
@@ -123,7 +128,7 @@ private:
|
||||
void closeDevice();
|
||||
bool applySettings(const AirspySettings& settings, bool force);
|
||||
struct airspy_device *open_airspy_from_sequence(int sequence);
|
||||
void setCenterFrequency(quint64 freq);
|
||||
void setDeviceCenterFrequency(quint64 freq);
|
||||
|
||||
DeviceSourceAPI *m_deviceAPI;
|
||||
QMutex m_mutex;
|
||||
|
||||
Reference in New Issue
Block a user