mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-26 09:48:45 -05:00
Web API: report Tx channel info summary
This commit is contained in:
parent
dc50ba1249
commit
4169833b4d
@ -41,6 +41,7 @@ const int AMMod::m_levelNbSamples = 480; // every 10ms
|
|||||||
|
|
||||||
AMMod::AMMod(DeviceSinkAPI *deviceAPI) :
|
AMMod::AMMod(DeviceSinkAPI *deviceAPI) :
|
||||||
m_deviceAPI(deviceAPI),
|
m_deviceAPI(deviceAPI),
|
||||||
|
m_absoluteFrequencyOffset(0),
|
||||||
m_movingAverage(40, 0),
|
m_movingAverage(40, 0),
|
||||||
m_volumeAGC(40, 0),
|
m_volumeAGC(40, 0),
|
||||||
m_audioFifo(4800),
|
m_audioFifo(4800),
|
||||||
@ -296,6 +297,7 @@ bool AMMod::handleMessage(const Message& cmd)
|
|||||||
AMModSettings settings = cfg.getSettings();
|
AMModSettings settings = cfg.getSettings();
|
||||||
|
|
||||||
// These settings are set with DownChannelizer::MsgChannelizerNotification
|
// These settings are set with DownChannelizer::MsgChannelizerNotification
|
||||||
|
m_absoluteFrequencyOffset = settings.m_inputFrequencyOffset;
|
||||||
settings.m_basebandSampleRate = m_settings.m_basebandSampleRate;
|
settings.m_basebandSampleRate = m_settings.m_basebandSampleRate;
|
||||||
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
||||||
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
#include "dsp/basebandsamplesource.h"
|
#include "dsp/basebandsamplesource.h"
|
||||||
|
#include "channel/channelsourceapi.h"
|
||||||
#include "dsp/nco.h"
|
#include "dsp/nco.h"
|
||||||
#include "dsp/ncof.h"
|
#include "dsp/ncof.h"
|
||||||
#include "dsp/interpolator.h"
|
#include "dsp/interpolator.h"
|
||||||
@ -38,7 +39,7 @@ class ThreadedBasebandSampleSource;
|
|||||||
class UpChannelizer;
|
class UpChannelizer;
|
||||||
class DeviceSinkAPI;
|
class DeviceSinkAPI;
|
||||||
|
|
||||||
class AMMod : public BasebandSampleSource {
|
class AMMod : public BasebandSampleSource, public ChannelSourceAPI {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -234,6 +235,10 @@ public:
|
|||||||
virtual void stop();
|
virtual void stop();
|
||||||
virtual bool handleMessage(const Message& cmd);
|
virtual bool handleMessage(const Message& cmd);
|
||||||
|
|
||||||
|
virtual int getDeltaFrequency() const { return m_absoluteFrequencyOffset; }
|
||||||
|
virtual void getIdentifier(QString& id) { id = objectName(); }
|
||||||
|
virtual void getTitle(QString& title) { title = m_settings.m_title; }
|
||||||
|
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
|
|
||||||
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
||||||
@ -259,7 +264,9 @@ private:
|
|||||||
DeviceSinkAPI* m_deviceAPI;
|
DeviceSinkAPI* m_deviceAPI;
|
||||||
ThreadedBasebandSampleSource* m_threadedChannelizer;
|
ThreadedBasebandSampleSource* m_threadedChannelizer;
|
||||||
UpChannelizer* m_channelizer;
|
UpChannelizer* m_channelizer;
|
||||||
|
|
||||||
AMModSettings m_settings;
|
AMModSettings m_settings;
|
||||||
|
int m_absoluteFrequencyOffset;
|
||||||
|
|
||||||
NCO m_carrierNco;
|
NCO m_carrierNco;
|
||||||
NCOF m_toneNco;
|
NCOF m_toneNco;
|
||||||
|
@ -41,6 +41,7 @@ void AMModSettings::resetToDefaults()
|
|||||||
m_channelMute = false;
|
m_channelMute = false;
|
||||||
m_playLoop = false;
|
m_playLoop = false;
|
||||||
m_rgbColor = QColor(255, 255, 0).rgb();
|
m_rgbColor = QColor(255, 255, 0).rgb();
|
||||||
|
m_title = "AM Modulator";
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray AMModSettings::serialize() const
|
QByteArray AMModSettings::serialize() const
|
||||||
@ -62,6 +63,8 @@ QByteArray AMModSettings::serialize() const
|
|||||||
s.writeBlob(8, m_channelMarker->serialize());
|
s.writeBlob(8, m_channelMarker->serialize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s.writeString(9, m_title);
|
||||||
|
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,6 +101,8 @@ bool AMModSettings::deserialize(const QByteArray& data)
|
|||||||
m_channelMarker->deserialize(bytetmp);
|
m_channelMarker->deserialize(bytetmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
d.readString(9, &m_title, "AM Modulator");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -34,6 +34,7 @@ struct AMModSettings
|
|||||||
bool m_channelMute;
|
bool m_channelMute;
|
||||||
bool m_playLoop;
|
bool m_playLoop;
|
||||||
quint32 m_rgbColor;
|
quint32 m_rgbColor;
|
||||||
|
QString m_title;
|
||||||
|
|
||||||
Serializable *m_channelMarker;
|
Serializable *m_channelMarker;
|
||||||
Serializable *m_cwKeyerGUI;
|
Serializable *m_cwKeyerGUI;
|
||||||
|
@ -50,6 +50,7 @@ const int ATVMod::m_ssbFftLen = 1024;
|
|||||||
|
|
||||||
ATVMod::ATVMod(DeviceSinkAPI *deviceAPI) :
|
ATVMod::ATVMod(DeviceSinkAPI *deviceAPI) :
|
||||||
m_deviceAPI(deviceAPI),
|
m_deviceAPI(deviceAPI),
|
||||||
|
m_absoluteFrequencyOffset(0),
|
||||||
m_modPhasor(0.0f),
|
m_modPhasor(0.0f),
|
||||||
m_tvSampleRate(1000000),
|
m_tvSampleRate(1000000),
|
||||||
m_evenImage(true),
|
m_evenImage(true),
|
||||||
@ -527,6 +528,7 @@ bool ATVMod::handleMessage(const Message& cmd)
|
|||||||
ATVModSettings settings = cfg.getSettings();
|
ATVModSettings settings = cfg.getSettings();
|
||||||
|
|
||||||
// These settings are set with UpChannelizer::MsgChannelizerNotification
|
// These settings are set with UpChannelizer::MsgChannelizerNotification
|
||||||
|
m_absoluteFrequencyOffset = settings.m_inputFrequencyOffset;
|
||||||
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
||||||
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "dsp/basebandsamplesource.h"
|
#include "dsp/basebandsamplesource.h"
|
||||||
|
#include "channel/channelsourceapi.h"
|
||||||
#include "dsp/nco.h"
|
#include "dsp/nco.h"
|
||||||
#include "dsp/interpolator.h"
|
#include "dsp/interpolator.h"
|
||||||
#include "dsp/movingaverage.h"
|
#include "dsp/movingaverage.h"
|
||||||
@ -40,7 +41,7 @@ class DeviceSinkAPI;
|
|||||||
class ThreadedBasebandSampleSource;
|
class ThreadedBasebandSampleSource;
|
||||||
class UpChannelizer;
|
class UpChannelizer;
|
||||||
|
|
||||||
class ATVMod : public BasebandSampleSource {
|
class ATVMod : public BasebandSampleSource, public ChannelSourceAPI {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -400,6 +401,10 @@ public:
|
|||||||
virtual void stop();
|
virtual void stop();
|
||||||
virtual bool handleMessage(const Message& cmd);
|
virtual bool handleMessage(const Message& cmd);
|
||||||
|
|
||||||
|
virtual int getDeltaFrequency() const { return m_absoluteFrequencyOffset; }
|
||||||
|
virtual void getIdentifier(QString& id) { id = objectName(); }
|
||||||
|
virtual void getTitle(QString& title) { title = m_settings.m_title; }
|
||||||
|
|
||||||
int getEffectiveSampleRate() const { return m_tvSampleRate; };
|
int getEffectiveSampleRate() const { return m_tvSampleRate; };
|
||||||
double getMagSq() const { return m_movingAverage.average(); }
|
double getMagSq() const { return m_movingAverage.average(); }
|
||||||
void getCameraNumbers(std::vector<int>& numbers);
|
void getCameraNumbers(std::vector<int>& numbers);
|
||||||
@ -456,7 +461,9 @@ private:
|
|||||||
DeviceSinkAPI* m_deviceAPI;
|
DeviceSinkAPI* m_deviceAPI;
|
||||||
ThreadedBasebandSampleSource* m_threadedChannelizer;
|
ThreadedBasebandSampleSource* m_threadedChannelizer;
|
||||||
UpChannelizer* m_channelizer;
|
UpChannelizer* m_channelizer;
|
||||||
|
|
||||||
ATVModSettings m_settings;
|
ATVModSettings m_settings;
|
||||||
|
int m_absoluteFrequencyOffset;
|
||||||
|
|
||||||
NCO m_carrierNco;
|
NCO m_carrierNco;
|
||||||
Complex m_modSample;
|
Complex m_modSample;
|
||||||
|
@ -49,6 +49,7 @@ void ATVModSettings::resetToDefaults()
|
|||||||
m_forceDecimator = false;
|
m_forceDecimator = false;
|
||||||
m_overlayText = "ATV";
|
m_overlayText = "ATV";
|
||||||
m_rgbColor = QColor(255, 255, 255).rgb();
|
m_rgbColor = QColor(255, 255, 255).rgb();
|
||||||
|
m_title = "ATV Modulator";
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray ATVModSettings::serialize() const
|
QByteArray ATVModSettings::serialize() const
|
||||||
@ -74,6 +75,8 @@ QByteArray ATVModSettings::serialize() const
|
|||||||
s.writeBlob(15, m_channelMarker->serialize());
|
s.writeBlob(15, m_channelMarker->serialize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s.writeString(16, m_title);
|
||||||
|
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,6 +123,8 @@ bool ATVModSettings::deserialize(const QByteArray& data)
|
|||||||
m_channelMarker->deserialize(bytetmp);
|
m_channelMarker->deserialize(bytetmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
d.readString(16, &m_title, "ATV Modulator");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -78,6 +78,7 @@ struct ATVModSettings
|
|||||||
bool m_forceDecimator; //!< Forces decimator even when channel and source sample rates are equal
|
bool m_forceDecimator; //!< Forces decimator even when channel and source sample rates are equal
|
||||||
QString m_overlayText;
|
QString m_overlayText;
|
||||||
quint32 m_rgbColor;
|
quint32 m_rgbColor;
|
||||||
|
QString m_title;
|
||||||
|
|
||||||
QString m_udpAddress;
|
QString m_udpAddress;
|
||||||
uint16_t m_udpPort;
|
uint16_t m_udpPort;
|
||||||
|
@ -44,6 +44,7 @@ const int NFMMod::m_levelNbSamples = 480; // every 10ms
|
|||||||
|
|
||||||
NFMMod::NFMMod(DeviceSinkAPI *deviceAPI) :
|
NFMMod::NFMMod(DeviceSinkAPI *deviceAPI) :
|
||||||
m_deviceAPI(deviceAPI),
|
m_deviceAPI(deviceAPI),
|
||||||
|
m_absoluteFrequencyOffset(0),
|
||||||
m_modPhasor(0.0f),
|
m_modPhasor(0.0f),
|
||||||
m_movingAverage(40, 0),
|
m_movingAverage(40, 0),
|
||||||
m_volumeAGC(40, 0),
|
m_volumeAGC(40, 0),
|
||||||
@ -309,6 +310,7 @@ bool NFMMod::handleMessage(const Message& cmd)
|
|||||||
|
|
||||||
NFMModSettings settings = cfg.getSettings();
|
NFMModSettings settings = cfg.getSettings();
|
||||||
|
|
||||||
|
m_absoluteFrequencyOffset = settings.m_inputFrequencyOffset;
|
||||||
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
||||||
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
#include "dsp/basebandsamplesource.h"
|
#include "dsp/basebandsamplesource.h"
|
||||||
|
#include "channel/channelsourceapi.h"
|
||||||
#include "dsp/nco.h"
|
#include "dsp/nco.h"
|
||||||
#include "dsp/ncof.h"
|
#include "dsp/ncof.h"
|
||||||
#include "dsp/interpolator.h"
|
#include "dsp/interpolator.h"
|
||||||
@ -40,7 +41,7 @@ class DeviceSinkAPI;
|
|||||||
class ThreadedBasebandSampleSource;
|
class ThreadedBasebandSampleSource;
|
||||||
class UpChannelizer;
|
class UpChannelizer;
|
||||||
|
|
||||||
class NFMMod : public BasebandSampleSource {
|
class NFMMod : public BasebandSampleSource, public ChannelSourceAPI {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -236,6 +237,10 @@ public:
|
|||||||
virtual void stop();
|
virtual void stop();
|
||||||
virtual bool handleMessage(const Message& cmd);
|
virtual bool handleMessage(const Message& cmd);
|
||||||
|
|
||||||
|
virtual int getDeltaFrequency() const { return m_absoluteFrequencyOffset; }
|
||||||
|
virtual void getIdentifier(QString& id) { id = objectName(); }
|
||||||
|
virtual void getTitle(QString& title) { title = m_settings.m_title; }
|
||||||
|
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
|
|
||||||
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
||||||
@ -261,7 +266,9 @@ private:
|
|||||||
DeviceSinkAPI* m_deviceAPI;
|
DeviceSinkAPI* m_deviceAPI;
|
||||||
ThreadedBasebandSampleSource* m_threadedChannelizer;
|
ThreadedBasebandSampleSource* m_threadedChannelizer;
|
||||||
UpChannelizer* m_channelizer;
|
UpChannelizer* m_channelizer;
|
||||||
|
|
||||||
NFMModSettings m_settings;
|
NFMModSettings m_settings;
|
||||||
|
int m_absoluteFrequencyOffset;
|
||||||
|
|
||||||
NCO m_carrierNco;
|
NCO m_carrierNco;
|
||||||
NCOF m_toneNco;
|
NCOF m_toneNco;
|
||||||
|
@ -58,6 +58,7 @@ void NFMModSettings::resetToDefaults()
|
|||||||
m_ctcssOn = false;
|
m_ctcssOn = false;
|
||||||
m_ctcssIndex = 0;
|
m_ctcssIndex = 0;
|
||||||
m_rgbColor = QColor(255, 0, 0).rgb();
|
m_rgbColor = QColor(255, 0, 0).rgb();
|
||||||
|
m_title = "NFM Modulator";
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray NFMModSettings::serialize() const
|
QByteArray NFMModSettings::serialize() const
|
||||||
@ -82,6 +83,7 @@ QByteArray NFMModSettings::serialize() const
|
|||||||
|
|
||||||
s.writeBool(9, m_ctcssOn);
|
s.writeBool(9, m_ctcssOn);
|
||||||
s.writeS32(10, m_ctcssIndex);
|
s.writeS32(10, m_ctcssIndex);
|
||||||
|
s.writeString(12, m_title);
|
||||||
|
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
@ -123,6 +125,8 @@ bool NFMModSettings::deserialize(const QByteArray& data)
|
|||||||
m_channelMarker->deserialize(bytetmp);
|
m_channelMarker->deserialize(bytetmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
d.readString(12, &m_title, "NFM Modulator");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -42,6 +42,7 @@ struct NFMModSettings
|
|||||||
bool m_ctcssOn;
|
bool m_ctcssOn;
|
||||||
int m_ctcssIndex;
|
int m_ctcssIndex;
|
||||||
quint32 m_rgbColor;
|
quint32 m_rgbColor;
|
||||||
|
QString m_title;
|
||||||
|
|
||||||
Serializable *m_channelMarker;
|
Serializable *m_channelMarker;
|
||||||
Serializable *m_cwKeyerGUI;
|
Serializable *m_cwKeyerGUI;
|
||||||
|
@ -43,6 +43,7 @@ const int SSBMod::m_ssbFftLen = 1024;
|
|||||||
|
|
||||||
SSBMod::SSBMod(DeviceSinkAPI *deviceAPI) :
|
SSBMod::SSBMod(DeviceSinkAPI *deviceAPI) :
|
||||||
m_deviceAPI(deviceAPI),
|
m_deviceAPI(deviceAPI),
|
||||||
|
m_absoluteFrequencyOffset(0),
|
||||||
m_SSBFilter(0),
|
m_SSBFilter(0),
|
||||||
m_DSBFilter(0),
|
m_DSBFilter(0),
|
||||||
m_SSBFilterBuffer(0),
|
m_SSBFilterBuffer(0),
|
||||||
@ -569,6 +570,7 @@ bool SSBMod::handleMessage(const Message& cmd)
|
|||||||
SSBModSettings settings = cfg.getSettings();
|
SSBModSettings settings = cfg.getSettings();
|
||||||
|
|
||||||
// These settings are set with UpChannelizer::MsgChannelizerNotification
|
// These settings are set with UpChannelizer::MsgChannelizerNotification
|
||||||
|
m_absoluteFrequencyOffset = settings.m_inputFrequencyOffset;
|
||||||
settings.m_basebandSampleRate = m_settings.m_basebandSampleRate;
|
settings.m_basebandSampleRate = m_settings.m_basebandSampleRate;
|
||||||
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
||||||
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
#include "dsp/basebandsamplesource.h"
|
#include "dsp/basebandsamplesource.h"
|
||||||
|
#include "channel/channelsourceapi.h"
|
||||||
#include "dsp/basebandsamplesink.h"
|
#include "dsp/basebandsamplesink.h"
|
||||||
#include "dsp/ncof.h"
|
#include "dsp/ncof.h"
|
||||||
#include "dsp/interpolator.h"
|
#include "dsp/interpolator.h"
|
||||||
@ -39,7 +40,7 @@ class DeviceSinkAPI;
|
|||||||
class ThreadedBasebandSampleSource;
|
class ThreadedBasebandSampleSource;
|
||||||
class UpChannelizer;
|
class UpChannelizer;
|
||||||
|
|
||||||
class SSBMod : public BasebandSampleSource {
|
class SSBMod : public BasebandSampleSource, public ChannelSourceAPI {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -237,6 +238,10 @@ public:
|
|||||||
virtual void stop();
|
virtual void stop();
|
||||||
virtual bool handleMessage(const Message& cmd);
|
virtual bool handleMessage(const Message& cmd);
|
||||||
|
|
||||||
|
virtual int getDeltaFrequency() const { return m_absoluteFrequencyOffset; }
|
||||||
|
virtual void getIdentifier(QString& id) { id = objectName(); }
|
||||||
|
virtual void getTitle(QString& title) { title = m_settings.m_title; }
|
||||||
|
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
|
|
||||||
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
||||||
@ -262,7 +267,9 @@ private:
|
|||||||
DeviceSinkAPI* m_deviceAPI;
|
DeviceSinkAPI* m_deviceAPI;
|
||||||
ThreadedBasebandSampleSource* m_threadedChannelizer;
|
ThreadedBasebandSampleSource* m_threadedChannelizer;
|
||||||
UpChannelizer* m_channelizer;
|
UpChannelizer* m_channelizer;
|
||||||
|
|
||||||
SSBModSettings m_settings;
|
SSBModSettings m_settings;
|
||||||
|
int m_absoluteFrequencyOffset;
|
||||||
|
|
||||||
NCOF m_carrierNco;
|
NCOF m_carrierNco;
|
||||||
NCOF m_toneNco;
|
NCOF m_toneNco;
|
||||||
|
@ -70,6 +70,7 @@ void SSBModSettings::resetToDefaults()
|
|||||||
m_rgbColor = QColor(0, 255, 0).rgb();
|
m_rgbColor = QColor(0, 255, 0).rgb();
|
||||||
m_udpAddress = "127.0.0.1";
|
m_udpAddress = "127.0.0.1";
|
||||||
m_udpPort = 9999;
|
m_udpPort = 9999;
|
||||||
|
m_title = "SSB Modulator";
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray SSBModSettings::serialize() const
|
QByteArray SSBModSettings::serialize() const
|
||||||
@ -106,6 +107,8 @@ QByteArray SSBModSettings::serialize() const
|
|||||||
s.writeBlob(18, m_channelMarker->serialize());
|
s.writeBlob(18, m_channelMarker->serialize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s.writeString(19, m_title);
|
||||||
|
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,6 +167,13 @@ bool SSBModSettings::deserialize(const QByteArray& data)
|
|||||||
d.readS32(17, &tmp, 20);
|
d.readS32(17, &tmp, 20);
|
||||||
m_agcOrder = tmp / 100.0;
|
m_agcOrder = tmp / 100.0;
|
||||||
|
|
||||||
|
if (m_channelMarker) {
|
||||||
|
d.readBlob(18, &bytetmp);
|
||||||
|
m_channelMarker->deserialize(bytetmp);
|
||||||
|
}
|
||||||
|
|
||||||
|
d.readString(19, &m_title, "SSB Modulator");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -55,6 +55,8 @@ struct SSBModSettings
|
|||||||
QString m_udpAddress;
|
QString m_udpAddress;
|
||||||
uint16_t m_udpPort;
|
uint16_t m_udpPort;
|
||||||
|
|
||||||
|
QString m_title;
|
||||||
|
|
||||||
Serializable *m_channelMarker;
|
Serializable *m_channelMarker;
|
||||||
Serializable *m_spectrumGUI;
|
Serializable *m_spectrumGUI;
|
||||||
Serializable *m_cwKeyerGUI;
|
Serializable *m_cwKeyerGUI;
|
||||||
|
@ -322,6 +322,7 @@ bool WFMMod::handleMessage(const Message& cmd)
|
|||||||
|
|
||||||
WFMModSettings settings = cfg.getSettings();
|
WFMModSettings settings = cfg.getSettings();
|
||||||
|
|
||||||
|
m_absoluteFrequencyOffset = settings.m_inputFrequencyOffset;
|
||||||
settings.m_basebandSampleRate = m_settings.m_basebandSampleRate;
|
settings.m_basebandSampleRate = m_settings.m_basebandSampleRate;
|
||||||
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
||||||
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
#include "dsp/basebandsamplesource.h"
|
#include "dsp/basebandsamplesource.h"
|
||||||
|
#include "channel/channelsourceapi.h"
|
||||||
#include "dsp/nco.h"
|
#include "dsp/nco.h"
|
||||||
#include "dsp/ncof.h"
|
#include "dsp/ncof.h"
|
||||||
#include "dsp/interpolator.h"
|
#include "dsp/interpolator.h"
|
||||||
@ -39,7 +40,7 @@ class DeviceSinkAPI;
|
|||||||
class ThreadedBasebandSampleSource;
|
class ThreadedBasebandSampleSource;
|
||||||
class UpChannelizer;
|
class UpChannelizer;
|
||||||
|
|
||||||
class WFMMod : public BasebandSampleSource {
|
class WFMMod : public BasebandSampleSource, public ChannelSourceAPI {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -235,6 +236,10 @@ public:
|
|||||||
virtual void stop();
|
virtual void stop();
|
||||||
virtual bool handleMessage(const Message& cmd);
|
virtual bool handleMessage(const Message& cmd);
|
||||||
|
|
||||||
|
virtual int getDeltaFrequency() const { return m_absoluteFrequencyOffset; }
|
||||||
|
virtual void getIdentifier(QString& id) { id = objectName(); }
|
||||||
|
virtual void getTitle(QString& title) { title = m_settings.m_title; }
|
||||||
|
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
|
|
||||||
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
CWKeyer *getCWKeyer() { return &m_cwKeyer; }
|
||||||
@ -262,6 +267,7 @@ private:
|
|||||||
UpChannelizer* m_channelizer;
|
UpChannelizer* m_channelizer;
|
||||||
|
|
||||||
WFMModSettings m_settings;
|
WFMModSettings m_settings;
|
||||||
|
int m_absoluteFrequencyOffset;
|
||||||
|
|
||||||
NCO m_carrierNco;
|
NCO m_carrierNco;
|
||||||
NCOF m_toneNco;
|
NCOF m_toneNco;
|
||||||
|
@ -49,6 +49,7 @@ void WFMModSettings::resetToDefaults()
|
|||||||
m_channelMute = false;
|
m_channelMute = false;
|
||||||
m_playLoop = false;
|
m_playLoop = false;
|
||||||
m_rgbColor = QColor(0, 0, 255).rgb();
|
m_rgbColor = QColor(0, 0, 255).rgb();
|
||||||
|
m_title = "WFM Modulator";
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray WFMModSettings::serialize() const
|
QByteArray WFMModSettings::serialize() const
|
||||||
@ -71,6 +72,8 @@ QByteArray WFMModSettings::serialize() const
|
|||||||
s.writeBlob(9, m_channelMarker->serialize());
|
s.writeBlob(9, m_channelMarker->serialize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
s.writeString(10, m_title);
|
||||||
|
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,6 +111,8 @@ bool WFMModSettings::deserialize(const QByteArray& data)
|
|||||||
m_channelMarker->deserialize(bytetmp);
|
m_channelMarker->deserialize(bytetmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
d.readString(10, &m_title, "WFM Modulator");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -38,6 +38,7 @@ struct WFMModSettings
|
|||||||
bool m_channelMute;
|
bool m_channelMute;
|
||||||
bool m_playLoop;
|
bool m_playLoop;
|
||||||
quint32 m_rgbColor;
|
quint32 m_rgbColor;
|
||||||
|
QString m_title;
|
||||||
|
|
||||||
Serializable *m_channelMarker;
|
Serializable *m_channelMarker;
|
||||||
Serializable *m_cwKeyerGUI;
|
Serializable *m_cwKeyerGUI;
|
||||||
|
@ -346,6 +346,7 @@ bool UDPSink::handleMessage(const Message& cmd)
|
|||||||
UDPSinkSettings settings = cfg.getSettings();
|
UDPSinkSettings settings = cfg.getSettings();
|
||||||
|
|
||||||
// These settings are set with DownChannelizer::MsgChannelizerNotification
|
// These settings are set with DownChannelizer::MsgChannelizerNotification
|
||||||
|
m_absoluteFrequencyOffset = settings.m_inputFrequencyOffset;
|
||||||
settings.m_basebandSampleRate = m_settings.m_basebandSampleRate;
|
settings.m_basebandSampleRate = m_settings.m_basebandSampleRate;
|
||||||
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
settings.m_outputSampleRate = m_settings.m_outputSampleRate;
|
||||||
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset;
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
|
||||||
#include "dsp/basebandsamplesource.h"
|
#include "dsp/basebandsamplesource.h"
|
||||||
|
#include "channel/channelsourceapi.h"
|
||||||
#include "dsp/basebandsamplesink.h"
|
#include "dsp/basebandsamplesink.h"
|
||||||
#include "dsp/interpolator.h"
|
#include "dsp/interpolator.h"
|
||||||
#include "dsp/movingaverage.h"
|
#include "dsp/movingaverage.h"
|
||||||
@ -34,7 +35,7 @@ class DeviceSinkAPI;
|
|||||||
class ThreadedBasebandSampleSource;
|
class ThreadedBasebandSampleSource;
|
||||||
class UpChannelizer;
|
class UpChannelizer;
|
||||||
|
|
||||||
class UDPSink : public BasebandSampleSource {
|
class UDPSink : public BasebandSampleSource, public ChannelSourceAPI {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -95,6 +96,10 @@ public:
|
|||||||
virtual void pull(Sample& sample);
|
virtual void pull(Sample& sample);
|
||||||
virtual bool handleMessage(const Message& cmd);
|
virtual bool handleMessage(const Message& cmd);
|
||||||
|
|
||||||
|
virtual int getDeltaFrequency() const { return m_absoluteFrequencyOffset; }
|
||||||
|
virtual void getIdentifier(QString& id) { id = objectName(); }
|
||||||
|
virtual void getTitle(QString& title) { title = m_settings.m_title; }
|
||||||
|
|
||||||
double getMagSq() const { return m_magsq; }
|
double getMagSq() const { return m_magsq; }
|
||||||
double getInMagSq() const { return m_inMagsq; }
|
double getInMagSq() const { return m_inMagsq; }
|
||||||
int32_t getBufferGauge() const { return m_udpHandler.getBufferGauge(); }
|
int32_t getBufferGauge() const { return m_udpHandler.getBufferGauge(); }
|
||||||
@ -157,6 +162,8 @@ private:
|
|||||||
UpChannelizer* m_channelizer;
|
UpChannelizer* m_channelizer;
|
||||||
|
|
||||||
UDPSinkSettings m_settings;
|
UDPSinkSettings m_settings;
|
||||||
|
int m_absoluteFrequencyOffset;
|
||||||
|
|
||||||
Real m_squelch;
|
Real m_squelch;
|
||||||
|
|
||||||
NCO m_carrierNco;
|
NCO m_carrierNco;
|
||||||
|
@ -48,6 +48,7 @@ void UDPSinkSettings::resetToDefaults()
|
|||||||
m_udpAddress = "127.0.0.1";
|
m_udpAddress = "127.0.0.1";
|
||||||
m_udpPort = 9999;
|
m_udpPort = 9999;
|
||||||
m_rgbColor = QColor(225, 25, 99).rgb();
|
m_rgbColor = QColor(225, 25, 99).rgb();
|
||||||
|
m_title = "UDP Sample Sink";
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray UDPSinkSettings::serialize() const
|
QByteArray UDPSinkSettings::serialize() const
|
||||||
@ -76,6 +77,8 @@ QByteArray UDPSinkSettings::serialize() const
|
|||||||
s.writeS32(17, roundf(m_gainIn * 10.0));
|
s.writeS32(17, roundf(m_gainIn * 10.0));
|
||||||
s.writeString(18, m_udpAddress);
|
s.writeString(18, m_udpAddress);
|
||||||
s.writeU32(19, m_udpPort);
|
s.writeU32(19, m_udpPort);
|
||||||
|
s.writeString(20, m_title);
|
||||||
|
|
||||||
return s.final();
|
return s.final();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,6 +153,8 @@ bool UDPSinkSettings::deserialize(const QByteArray& data)
|
|||||||
m_udpPort = 9999;
|
m_udpPort = 9999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
d.readString(20, &m_title, "UDP Sample Sink");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -56,6 +56,8 @@ struct UDPSinkSettings
|
|||||||
QString m_udpAddress;
|
QString m_udpAddress;
|
||||||
uint16_t m_udpPort;
|
uint16_t m_udpPort;
|
||||||
|
|
||||||
|
QString m_title;
|
||||||
|
|
||||||
Serializable *m_channelMarker;
|
Serializable *m_channelMarker;
|
||||||
Serializable *m_spectrumGUI;
|
Serializable *m_spectrumGUI;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user