mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-26 09:48:45 -05:00
Renamed UDPSink to UDPSource
This commit is contained in:
parent
87b9cff3c2
commit
f58cc3cc07
@ -75,8 +75,6 @@ private:
|
||||
|
||||
int m_srate;
|
||||
|
||||
//UDPSink<Real> m_udpDebug; // UDP debug
|
||||
|
||||
static const Real m_pllBeta;
|
||||
static const Real m_fsc;
|
||||
};
|
||||
|
@ -1,27 +1,27 @@
|
||||
project(udpsink)
|
||||
project(udpsource)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
|
||||
set(udpsink_SOURCES
|
||||
udpsink.cpp
|
||||
udpsinkgui.cpp
|
||||
udpsinkplugin.cpp
|
||||
udpsinkudphandler.cpp
|
||||
udpsinkmsg.cpp
|
||||
udpsinksettings.cpp
|
||||
set(udpsource_SOURCES
|
||||
udpsource.cpp
|
||||
udpsourcegui.cpp
|
||||
udpsourceplugin.cpp
|
||||
udpsourceudphandler.cpp
|
||||
udpsourcemsg.cpp
|
||||
udpsourcesettings.cpp
|
||||
)
|
||||
|
||||
set(udpsink_HEADERS
|
||||
udpsink.h
|
||||
udpsinkgui.h
|
||||
udpsinkplugin.h
|
||||
udpsinkudphandler.h
|
||||
udpsinkmsg.h
|
||||
udpsinksettings.h
|
||||
set(udpsource_HEADERS
|
||||
udpsource.h
|
||||
udpsourcegui.h
|
||||
udpsourceplugin.h
|
||||
udpsourceudphandler.h
|
||||
udpsourcemsg.h
|
||||
udpsourcesettings.h
|
||||
)
|
||||
|
||||
set(udpsink_FORMS
|
||||
udpsinkgui.ui
|
||||
set(udpsource_FORMS
|
||||
udpsourcegui.ui
|
||||
)
|
||||
|
||||
include_directories(
|
||||
@ -35,21 +35,21 @@ add_definitions(${QT_DEFINITIONS})
|
||||
add_definitions(-DQT_PLUGIN)
|
||||
add_definitions(-DQT_SHARED)
|
||||
|
||||
qt5_wrap_ui(udpsink_FORMS_HEADERS ${udpsink_FORMS})
|
||||
qt5_wrap_ui(udpsource_FORMS_HEADERS ${udpsource_FORMS})
|
||||
|
||||
add_library(modudpsink SHARED
|
||||
${udpsink_SOURCES}
|
||||
${udpsink_HEADERS_MOC}
|
||||
${udpsink_FORMS_HEADERS}
|
||||
add_library(udpsource SHARED
|
||||
${udpsource_SOURCES}
|
||||
${udpsource_HEADERS_MOC}
|
||||
${udpsource_FORMS_HEADERS}
|
||||
)
|
||||
|
||||
target_link_libraries(modudpsink
|
||||
target_link_libraries(udpsource
|
||||
${QT_LIBRARIES}
|
||||
sdrbase
|
||||
sdrgui
|
||||
swagger
|
||||
)
|
||||
|
||||
target_link_libraries(modudpsink Qt5::Core Qt5::Widgets Qt5::Network)
|
||||
target_link_libraries(udpsource Qt5::Core Qt5::Widgets Qt5::Network)
|
||||
|
||||
install(TARGETS modudpsink DESTINATION lib/plugins/channeltx)
|
||||
install(TARGETS udpsource DESTINATION lib/plugins/channeltx)
|
||||
|
@ -26,18 +26,18 @@
|
||||
#include "dsp/dspcommands.h"
|
||||
#include "util/db.h"
|
||||
|
||||
#include "udpsinkmsg.h"
|
||||
#include "udpsink.h"
|
||||
#include "udpsource.h"
|
||||
#include "udpsourcemsg.h"
|
||||
|
||||
MESSAGE_CLASS_DEFINITION(UDPSink::MsgConfigureUDPSink, Message)
|
||||
MESSAGE_CLASS_DEFINITION(UDPSink::MsgConfigureChannelizer, Message)
|
||||
MESSAGE_CLASS_DEFINITION(UDPSink::MsgUDPSinkSpectrum, Message)
|
||||
MESSAGE_CLASS_DEFINITION(UDPSink::MsgResetReadIndex, Message)
|
||||
MESSAGE_CLASS_DEFINITION(UDPSource::MsgConfigureUDPSink, Message)
|
||||
MESSAGE_CLASS_DEFINITION(UDPSource::MsgConfigureChannelizer, Message)
|
||||
MESSAGE_CLASS_DEFINITION(UDPSource::MsgUDPSinkSpectrum, Message)
|
||||
MESSAGE_CLASS_DEFINITION(UDPSource::MsgResetReadIndex, Message)
|
||||
|
||||
const QString UDPSink::m_channelIdURI = "sdrangel.channeltx.udpsink";
|
||||
const QString UDPSink::m_channelId = "UDPSink";
|
||||
const QString UDPSource::m_channelIdURI = "sdrangel.channeltx.udpsource";
|
||||
const QString UDPSource::m_channelId = "UDPSource";
|
||||
|
||||
UDPSink::UDPSink(DeviceSinkAPI *deviceAPI) :
|
||||
UDPSource::UDPSource(DeviceSinkAPI *deviceAPI) :
|
||||
ChannelSourceAPI(m_channelIdURI),
|
||||
m_deviceAPI(deviceAPI),
|
||||
m_basebandSampleRate(48000),
|
||||
@ -80,7 +80,7 @@ UDPSink::UDPSink(DeviceSinkAPI *deviceAPI) :
|
||||
m_deviceAPI->addChannelAPI(this);
|
||||
}
|
||||
|
||||
UDPSink::~UDPSink()
|
||||
UDPSource::~UDPSource()
|
||||
{
|
||||
m_deviceAPI->removeChannelAPI(this);
|
||||
m_deviceAPI->removeThreadedSource(m_threadedChannelizer);
|
||||
@ -90,18 +90,18 @@ UDPSink::~UDPSink()
|
||||
delete[] m_SSBFilterBuffer;
|
||||
}
|
||||
|
||||
void UDPSink::start()
|
||||
void UDPSource::start()
|
||||
{
|
||||
m_udpHandler.start();
|
||||
applyChannelSettings(m_basebandSampleRate, m_outputSampleRate, m_inputFrequencyOffset, true);
|
||||
}
|
||||
|
||||
void UDPSink::stop()
|
||||
void UDPSource::stop()
|
||||
{
|
||||
m_udpHandler.stop();
|
||||
}
|
||||
|
||||
void UDPSink::pull(Sample& sample)
|
||||
void UDPSource::pull(Sample& sample)
|
||||
{
|
||||
if (m_settings.m_channelMute)
|
||||
{
|
||||
@ -147,9 +147,9 @@ void UDPSink::pull(Sample& sample)
|
||||
sample.m_imag = (FixReal) ci.imag();
|
||||
}
|
||||
|
||||
void UDPSink::modulateSample()
|
||||
void UDPSource::modulateSample()
|
||||
{
|
||||
if (m_settings.m_sampleFormat == UDPSinkSettings::FormatSnLE) // Linear I/Q transponding
|
||||
if (m_settings.m_sampleFormat == UDPSourceSettings::FormatSnLE) // Linear I/Q transponding
|
||||
{
|
||||
Sample s;
|
||||
|
||||
@ -173,7 +173,7 @@ void UDPSink::modulateSample()
|
||||
m_modSample.imag(0.0f);
|
||||
}
|
||||
}
|
||||
else if (m_settings.m_sampleFormat == UDPSinkSettings::FormatNFM)
|
||||
else if (m_settings.m_sampleFormat == UDPSourceSettings::FormatNFM)
|
||||
{
|
||||
qint16 t;
|
||||
readMonoSample(t);
|
||||
@ -196,7 +196,7 @@ void UDPSink::modulateSample()
|
||||
m_modSample.imag(0.0f);
|
||||
}
|
||||
}
|
||||
else if (m_settings.m_sampleFormat == UDPSinkSettings::FormatAM)
|
||||
else if (m_settings.m_sampleFormat == UDPSourceSettings::FormatAM)
|
||||
{
|
||||
qint16 t;
|
||||
readMonoSample(t);
|
||||
@ -217,7 +217,7 @@ void UDPSink::modulateSample()
|
||||
m_modSample.imag(0.0f);
|
||||
}
|
||||
}
|
||||
else if ((m_settings.m_sampleFormat == UDPSinkSettings::FormatLSB) || (m_settings.m_sampleFormat == UDPSinkSettings::FormatUSB))
|
||||
else if ((m_settings.m_sampleFormat == UDPSourceSettings::FormatLSB) || (m_settings.m_sampleFormat == UDPSourceSettings::FormatUSB))
|
||||
{
|
||||
qint16 t;
|
||||
Complex c, ci;
|
||||
@ -235,7 +235,7 @@ void UDPSink::modulateSample()
|
||||
ci.real((t / SDR_TX_SCALEF) * m_settings.m_gainOut);
|
||||
ci.imag(0.0f);
|
||||
|
||||
n_out = m_SSBFilter->runSSB(ci, &filtered, (m_settings.m_sampleFormat == UDPSinkSettings::FormatUSB));
|
||||
n_out = m_SSBFilter->runSSB(ci, &filtered, (m_settings.m_sampleFormat == UDPSourceSettings::FormatUSB));
|
||||
|
||||
if (n_out > 0)
|
||||
{
|
||||
@ -279,7 +279,7 @@ void UDPSink::modulateSample()
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSink::calculateLevel(Real sample)
|
||||
void UDPSource::calculateLevel(Real sample)
|
||||
{
|
||||
if (m_levelCalcCount < m_levelNbSamples)
|
||||
{
|
||||
@ -298,7 +298,7 @@ void UDPSink::calculateLevel(Real sample)
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSink::calculateLevel(Complex sample)
|
||||
void UDPSource::calculateLevel(Complex sample)
|
||||
{
|
||||
Real t = std::abs(sample);
|
||||
|
||||
@ -318,12 +318,12 @@ void UDPSink::calculateLevel(Complex sample)
|
||||
}
|
||||
}
|
||||
|
||||
bool UDPSink::handleMessage(const Message& cmd)
|
||||
bool UDPSource::handleMessage(const Message& cmd)
|
||||
{
|
||||
if (UpChannelizer::MsgChannelizerNotification::match(cmd))
|
||||
{
|
||||
UpChannelizer::MsgChannelizerNotification& notif = (UpChannelizer::MsgChannelizerNotification&) cmd;
|
||||
qDebug() << "UDPSink::handleMessage: MsgChannelizerNotification";
|
||||
qDebug() << "UDPSource::handleMessage: MsgChannelizerNotification";
|
||||
|
||||
applyChannelSettings(notif.getBasebandSampleRate(), notif.getSampleRate(), notif.getFrequencyOffset());
|
||||
|
||||
@ -332,7 +332,7 @@ bool UDPSink::handleMessage(const Message& cmd)
|
||||
else if (MsgConfigureChannelizer::match(cmd))
|
||||
{
|
||||
MsgConfigureChannelizer& cfg = (MsgConfigureChannelizer&) cmd;
|
||||
qDebug() << "UDPSink::handleMessage: MsgConfigureChannelizer:"
|
||||
qDebug() << "UDPSource::handleMessage: MsgConfigureChannelizer:"
|
||||
<< " sampleRate: " << cfg.getSampleRate()
|
||||
<< " centerFrequency: " << cfg.getCenterFrequency();
|
||||
|
||||
@ -345,15 +345,15 @@ bool UDPSink::handleMessage(const Message& cmd)
|
||||
else if (MsgConfigureUDPSink::match(cmd))
|
||||
{
|
||||
MsgConfigureUDPSink& cfg = (MsgConfigureUDPSink&) cmd;
|
||||
qDebug() << "UDPSink::handleMessage: MsgConfigureUDPSink";
|
||||
qDebug() << "UDPSource::handleMessage: MsgConfigureUDPSink";
|
||||
|
||||
applySettings(cfg.getSettings(), cfg.getForce());
|
||||
|
||||
return true;
|
||||
}
|
||||
else if (UDPSinkMessages::MsgSampleRateCorrection::match(cmd))
|
||||
else if (UDPSourceMessages::MsgSampleRateCorrection::match(cmd))
|
||||
{
|
||||
UDPSinkMessages::MsgSampleRateCorrection& cfg = (UDPSinkMessages::MsgSampleRateCorrection&) cmd;
|
||||
UDPSourceMessages::MsgSampleRateCorrection& cfg = (UDPSourceMessages::MsgSampleRateCorrection&) cmd;
|
||||
Real newSampleRate = m_actualInputSampleRate + cfg.getCorrectionFactor() * m_actualInputSampleRate;
|
||||
|
||||
// exclude values too way out nominal sample rate (20%)
|
||||
@ -378,7 +378,7 @@ bool UDPSink::handleMessage(const Message& cmd)
|
||||
if (m_sampleRateAvgCounter == m_sampleRateAverageItems)
|
||||
{
|
||||
float avgRate = m_sampleRateSum / m_sampleRateAverageItems;
|
||||
qDebug("UDPSink::handleMessage: MsgSampleRateCorrection: corr: %+.6f new rate: %.0f: avg rate: %.0f",
|
||||
qDebug("UDPSource::handleMessage: MsgSampleRateCorrection: corr: %+.6f new rate: %.0f: avg rate: %.0f",
|
||||
cfg.getCorrectionFactor(),
|
||||
m_actualInputSampleRate,
|
||||
avgRate);
|
||||
@ -388,7 +388,7 @@ bool UDPSink::handleMessage(const Message& cmd)
|
||||
}
|
||||
// else
|
||||
// {
|
||||
// qDebug("UDPSink::handleMessage: MsgSampleRateCorrection: corr: %+.6f new rate: %.0f",
|
||||
// qDebug("UDPSource::handleMessage: MsgSampleRateCorrection: corr: %+.6f new rate: %.0f",
|
||||
// cfg.getCorrectionFactor(),
|
||||
// m_actualInputSampleRate);
|
||||
// }
|
||||
@ -407,7 +407,7 @@ bool UDPSink::handleMessage(const Message& cmd)
|
||||
{
|
||||
MsgUDPSinkSpectrum& spc = (MsgUDPSinkSpectrum&) cmd;
|
||||
m_spectrumEnabled = spc.getEnabled();
|
||||
qDebug() << "UDPSink::handleMessage: MsgUDPSinkSpectrum: m_spectrumEnabled: " << m_spectrumEnabled;
|
||||
qDebug() << "UDPSource::handleMessage: MsgUDPSinkSpectrum: m_spectrumEnabled: " << m_spectrumEnabled;
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -417,7 +417,7 @@ bool UDPSink::handleMessage(const Message& cmd)
|
||||
m_udpHandler.resetReadIndex();
|
||||
m_settingsMutex.unlock();
|
||||
|
||||
qDebug() << "UDPSink::handleMessage: MsgResetReadIndex";
|
||||
qDebug() << "UDPSource::handleMessage: MsgResetReadIndex";
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -438,21 +438,21 @@ bool UDPSink::handleMessage(const Message& cmd)
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSink::setSpectrum(bool enabled)
|
||||
void UDPSource::setSpectrum(bool enabled)
|
||||
{
|
||||
Message* cmd = MsgUDPSinkSpectrum::create(enabled);
|
||||
getInputMessageQueue()->push(cmd);
|
||||
}
|
||||
|
||||
void UDPSink::resetReadIndex()
|
||||
void UDPSource::resetReadIndex()
|
||||
{
|
||||
Message* cmd = MsgResetReadIndex::create();
|
||||
getInputMessageQueue()->push(cmd);
|
||||
}
|
||||
|
||||
void UDPSink::applyChannelSettings(int basebandSampleRate, int outputSampleRate, int inputFrequencyOffset, bool force)
|
||||
void UDPSource::applyChannelSettings(int basebandSampleRate, int outputSampleRate, int inputFrequencyOffset, bool force)
|
||||
{
|
||||
qDebug() << "UDPSink::applyChannelSettings:"
|
||||
qDebug() << "UDPSource::applyChannelSettings:"
|
||||
<< " basebandSampleRate: " << basebandSampleRate
|
||||
<< " outputSampleRate: " << outputSampleRate
|
||||
<< " inputFrequencyOffset: " << inputFrequencyOffset;
|
||||
@ -480,9 +480,9 @@ void UDPSink::applyChannelSettings(int basebandSampleRate, int outputSampleRate,
|
||||
m_inputFrequencyOffset = inputFrequencyOffset;
|
||||
}
|
||||
|
||||
void UDPSink::applySettings(const UDPSinkSettings& settings, bool force)
|
||||
void UDPSource::applySettings(const UDPSourceSettings& settings, bool force)
|
||||
{
|
||||
qDebug() << "UDPSink::applySettings:"
|
||||
qDebug() << "UDPSource::applySettings:"
|
||||
<< " m_inputFrequencyOffset: " << settings.m_inputFrequencyOffset
|
||||
<< " m_sampleFormat: " << settings.m_sampleFormat
|
||||
<< " m_inputSampleRate: " << settings.m_inputSampleRate
|
||||
@ -575,12 +575,12 @@ void UDPSink::applySettings(const UDPSinkSettings& settings, bool force)
|
||||
m_settings = settings;
|
||||
}
|
||||
|
||||
QByteArray UDPSink::serialize() const
|
||||
QByteArray UDPSource::serialize() const
|
||||
{
|
||||
return m_settings.serialize();
|
||||
}
|
||||
|
||||
bool UDPSink::deserialize(const QByteArray& data)
|
||||
bool UDPSource::deserialize(const QByteArray& data)
|
||||
{
|
||||
if (m_settings.deserialize(data))
|
||||
{
|
||||
@ -597,7 +597,7 @@ bool UDPSink::deserialize(const QByteArray& data)
|
||||
}
|
||||
}
|
||||
|
||||
int UDPSink::webapiSettingsGet(
|
||||
int UDPSource::webapiSettingsGet(
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
{
|
||||
@ -607,17 +607,17 @@ int UDPSink::webapiSettingsGet(
|
||||
return 200;
|
||||
}
|
||||
|
||||
int UDPSink::webapiSettingsPutPatch(
|
||||
int UDPSource::webapiSettingsPutPatch(
|
||||
bool force,
|
||||
const QStringList& channelSettingsKeys,
|
||||
SWGSDRangel::SWGChannelSettings& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
{
|
||||
UDPSinkSettings settings = m_settings;
|
||||
UDPSourceSettings settings = m_settings;
|
||||
bool frequencyOffsetChanged = false;
|
||||
|
||||
if (channelSettingsKeys.contains("sampleFormat")) {
|
||||
settings.m_sampleFormat = (UDPSinkSettings::SampleFormat) response.getUdpSinkSettings()->getSampleFormat();
|
||||
settings.m_sampleFormat = (UDPSourceSettings::SampleFormat) response.getUdpSinkSettings()->getSampleFormat();
|
||||
}
|
||||
if (channelSettingsKeys.contains("inputSampleRate")) {
|
||||
settings.m_inputSampleRate = response.getUdpSinkSettings()->getInputSampleRate();
|
||||
@ -678,7 +678,7 @@ int UDPSink::webapiSettingsPutPatch(
|
||||
|
||||
if (frequencyOffsetChanged)
|
||||
{
|
||||
UDPSink::MsgConfigureChannelizer *msgChan = UDPSink::MsgConfigureChannelizer::create(
|
||||
UDPSource::MsgConfigureChannelizer *msgChan = UDPSource::MsgConfigureChannelizer::create(
|
||||
settings.m_inputSampleRate,
|
||||
settings.m_inputFrequencyOffset);
|
||||
m_inputMessageQueue.push(msgChan);
|
||||
@ -698,7 +698,7 @@ int UDPSink::webapiSettingsPutPatch(
|
||||
return 200;
|
||||
}
|
||||
|
||||
int UDPSink::webapiReportGet(
|
||||
int UDPSource::webapiReportGet(
|
||||
SWGSDRangel::SWGChannelReport& response,
|
||||
QString& errorMessage __attribute__((unused)))
|
||||
{
|
||||
@ -708,7 +708,7 @@ int UDPSink::webapiReportGet(
|
||||
return 200;
|
||||
}
|
||||
|
||||
void UDPSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const UDPSinkSettings& settings)
|
||||
void UDPSource::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const UDPSourceSettings& settings)
|
||||
{
|
||||
response.getUdpSinkSettings()->setSampleFormat((int) settings.m_sampleFormat);
|
||||
response.getUdpSinkSettings()->setInputSampleRate(settings.m_inputSampleRate);
|
||||
@ -742,7 +742,7 @@ void UDPSink::webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& respo
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSink::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response)
|
||||
void UDPSource::webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response)
|
||||
{
|
||||
response.getUdpSinkReport()->setInputPowerDb(CalcDb::dbPower(getInMagSq()));
|
||||
response.getUdpSinkReport()->setChannelPowerDb(CalcDb::dbPower(getMagSq()));
|
@ -14,8 +14,8 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef PLUGINS_CHANNELTX_UDPSINK_UDPSINK_H_
|
||||
#define PLUGINS_CHANNELTX_UDPSINK_UDPSINK_H_
|
||||
#ifndef PLUGINS_CHANNELTX_UDPSINK_UDPSOURCE_H_
|
||||
#define PLUGINS_CHANNELTX_UDPSINK_UDPSOURCE_H_
|
||||
|
||||
#include <QObject>
|
||||
|
||||
@ -28,14 +28,14 @@
|
||||
#include "dsp/fftfilt.h"
|
||||
#include "util/message.h"
|
||||
|
||||
#include "udpsinkudphandler.h"
|
||||
#include "udpsinksettings.h"
|
||||
#include "udpsourcesettings.h"
|
||||
#include "udpsourceudphandler.h"
|
||||
|
||||
class DeviceSinkAPI;
|
||||
class ThreadedBasebandSampleSource;
|
||||
class UpChannelizer;
|
||||
|
||||
class UDPSink : public BasebandSampleSource, public ChannelSourceAPI {
|
||||
class UDPSource : public BasebandSampleSource, public ChannelSourceAPI {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
@ -43,19 +43,19 @@ public:
|
||||
MESSAGE_CLASS_DECLARATION
|
||||
|
||||
public:
|
||||
const UDPSinkSettings& getSettings() const { return m_settings; }
|
||||
const UDPSourceSettings& getSettings() const { return m_settings; }
|
||||
bool getForce() const { return m_force; }
|
||||
|
||||
static MsgConfigureUDPSink* create(const UDPSinkSettings& settings, bool force)
|
||||
static MsgConfigureUDPSink* create(const UDPSourceSettings& settings, bool force)
|
||||
{
|
||||
return new MsgConfigureUDPSink(settings, force);
|
||||
}
|
||||
|
||||
private:
|
||||
UDPSinkSettings m_settings;
|
||||
UDPSourceSettings m_settings;
|
||||
bool m_force;
|
||||
|
||||
MsgConfigureUDPSink(const UDPSinkSettings& settings, bool force) :
|
||||
MsgConfigureUDPSink(const UDPSourceSettings& settings, bool force) :
|
||||
Message(),
|
||||
m_settings(settings),
|
||||
m_force(force)
|
||||
@ -86,8 +86,8 @@ public:
|
||||
{ }
|
||||
};
|
||||
|
||||
UDPSink(DeviceSinkAPI *deviceAPI);
|
||||
virtual ~UDPSink();
|
||||
UDPSource(DeviceSinkAPI *deviceAPI);
|
||||
virtual ~UDPSource();
|
||||
virtual void destroy() { delete this; }
|
||||
|
||||
void setSpectrumSink(BasebandSampleSink* spectrum) { m_spectrum = spectrum; }
|
||||
@ -183,7 +183,7 @@ private:
|
||||
int m_basebandSampleRate;
|
||||
Real m_outputSampleRate;
|
||||
int m_inputFrequencyOffset;
|
||||
UDPSinkSettings m_settings;
|
||||
UDPSourceSettings m_settings;
|
||||
|
||||
Real m_squelch;
|
||||
|
||||
@ -206,7 +206,7 @@ private:
|
||||
MovingAverage<double> m_movingAverage;
|
||||
MovingAverage<double> m_inMovingAverage;
|
||||
|
||||
UDPSinkUDPHandler m_udpHandler;
|
||||
UDPSourceUDPHandler m_udpHandler;
|
||||
Real m_actualInputSampleRate; //!< sample rate with UDP buffer skew compensation
|
||||
double m_sampleRateSum;
|
||||
int m_sampleRateAvgCounter;
|
||||
@ -232,12 +232,12 @@ private:
|
||||
static const int m_ssbFftLen = 1024;
|
||||
|
||||
void applyChannelSettings(int basebandSampleRate, int outputSampleRate, int inputFrequencyOffset, bool force = false);
|
||||
void applySettings(const UDPSinkSettings& settings, bool force = false);
|
||||
void applySettings(const UDPSourceSettings& settings, bool force = false);
|
||||
void modulateSample();
|
||||
void calculateLevel(Real sample);
|
||||
void calculateLevel(Complex sample);
|
||||
|
||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const UDPSinkSettings& settings);
|
||||
void webapiFormatChannelSettings(SWGSDRangel::SWGChannelSettings& response, const UDPSourceSettings& settings);
|
||||
void webapiFormatChannelReport(SWGSDRangel::SWGChannelReport& response);
|
||||
|
||||
inline void calculateSquelch(double value)
|
||||
@ -318,4 +318,4 @@ private:
|
||||
|
||||
|
||||
|
||||
#endif /* PLUGINS_CHANNELTX_UDPSINK_UDPSINK_H_ */
|
||||
#endif /* PLUGINS_CHANNELTX_UDPSINK_UDPSOURCE_H_ */
|
@ -14,6 +14,8 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "udpsourcegui.h"
|
||||
|
||||
#include "device/devicesinkapi.h"
|
||||
#include "device/deviceuiset.h"
|
||||
#include "dsp/spectrumvis.h"
|
||||
@ -24,53 +26,52 @@
|
||||
#include "plugin/pluginapi.h"
|
||||
#include "mainwindow.h"
|
||||
|
||||
#include "udpsinkgui.h"
|
||||
#include "ui_udpsinkgui.h"
|
||||
#include "ui_udpsourcegui.h"
|
||||
|
||||
UDPSinkGUI* UDPSinkGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSource *channelTx)
|
||||
UDPSourceGUI* UDPSourceGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSource *channelTx)
|
||||
{
|
||||
UDPSinkGUI* gui = new UDPSinkGUI(pluginAPI, deviceUISet, channelTx);
|
||||
UDPSourceGUI* gui = new UDPSourceGUI(pluginAPI, deviceUISet, channelTx);
|
||||
return gui;
|
||||
}
|
||||
|
||||
void UDPSinkGUI::destroy()
|
||||
void UDPSourceGUI::destroy()
|
||||
{
|
||||
delete this;
|
||||
}
|
||||
|
||||
void UDPSinkGUI::setName(const QString& name)
|
||||
void UDPSourceGUI::setName(const QString& name)
|
||||
{
|
||||
setObjectName(name);
|
||||
}
|
||||
|
||||
QString UDPSinkGUI::getName() const
|
||||
QString UDPSourceGUI::getName() const
|
||||
{
|
||||
return objectName();
|
||||
}
|
||||
|
||||
qint64 UDPSinkGUI::getCenterFrequency() const {
|
||||
qint64 UDPSourceGUI::getCenterFrequency() const {
|
||||
return m_channelMarker.getCenterFrequency();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::setCenterFrequency(qint64 centerFrequency)
|
||||
void UDPSourceGUI::setCenterFrequency(qint64 centerFrequency)
|
||||
{
|
||||
m_channelMarker.setCenterFrequency(centerFrequency);
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::resetToDefaults()
|
||||
void UDPSourceGUI::resetToDefaults()
|
||||
{
|
||||
m_settings.resetToDefaults();
|
||||
displaySettings();
|
||||
applySettings(true);
|
||||
}
|
||||
|
||||
QByteArray UDPSinkGUI::serialize() const
|
||||
QByteArray UDPSourceGUI::serialize() const
|
||||
{
|
||||
return m_settings.serialize();
|
||||
}
|
||||
|
||||
bool UDPSinkGUI::deserialize(const QByteArray& data)
|
||||
bool UDPSourceGUI::deserialize(const QByteArray& data)
|
||||
{
|
||||
if(m_settings.deserialize(data))
|
||||
{
|
||||
@ -83,11 +84,11 @@ bool UDPSinkGUI::deserialize(const QByteArray& data)
|
||||
}
|
||||
}
|
||||
|
||||
bool UDPSinkGUI::handleMessage(const Message& message)
|
||||
bool UDPSourceGUI::handleMessage(const Message& message)
|
||||
{
|
||||
if (UDPSink::MsgConfigureUDPSink::match(message))
|
||||
if (UDPSource::MsgConfigureUDPSink::match(message))
|
||||
{
|
||||
const UDPSink::MsgConfigureUDPSink& cfg = (UDPSink::MsgConfigureUDPSink&) message;
|
||||
const UDPSource::MsgConfigureUDPSink& cfg = (UDPSource::MsgConfigureUDPSink&) message;
|
||||
m_settings = cfg.getSettings();
|
||||
blockApplySettings(true);
|
||||
displaySettings();
|
||||
@ -100,7 +101,7 @@ bool UDPSinkGUI::handleMessage(const Message& message)
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkGUI::handleSourceMessages()
|
||||
void UDPSourceGUI::handleSourceMessages()
|
||||
{
|
||||
Message* message;
|
||||
|
||||
@ -113,9 +114,9 @@ void UDPSinkGUI::handleSourceMessages()
|
||||
}
|
||||
}
|
||||
|
||||
UDPSinkGUI::UDPSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSource *channelTx, QWidget* parent) :
|
||||
UDPSourceGUI::UDPSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSource *channelTx, QWidget* parent) :
|
||||
RollupWidget(parent),
|
||||
ui(new Ui::UDPSinkGUI),
|
||||
ui(new Ui::UDPSourceGUI),
|
||||
m_pluginAPI(pluginAPI),
|
||||
m_deviceUISet(deviceUISet),
|
||||
m_tickCount(0),
|
||||
@ -129,9 +130,9 @@ UDPSinkGUI::UDPSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS
|
||||
setAttribute(Qt::WA_DeleteOnClose, true);
|
||||
|
||||
m_spectrumVis = new SpectrumVis(SDR_TX_SCALEF, ui->glSpectrum);
|
||||
m_udpSink = (UDPSink*) channelTx; //new UDPSink(m_deviceUISet->m_deviceSinkAPI);
|
||||
m_udpSink->setSpectrumSink(m_spectrumVis);
|
||||
m_udpSink->setMessageQueueToGUI(getInputMessageQueue());
|
||||
m_udpSource = (UDPSource*) channelTx;
|
||||
m_udpSource->setSpectrumSink(m_spectrumVis);
|
||||
m_udpSource->setMessageQueueToGUI(getInputMessageQueue());
|
||||
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03)));
|
||||
@ -161,7 +162,7 @@ UDPSinkGUI::UDPSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS
|
||||
m_channelMarker.blockSignals(false);
|
||||
m_channelMarker.setVisible(true); // activate signal on the last setting only
|
||||
|
||||
m_deviceUISet->registerTxChannelInstance(UDPSink::m_channelIdURI, this);
|
||||
m_deviceUISet->registerTxChannelInstance(UDPSource::m_channelIdURI, this);
|
||||
m_deviceUISet->addChannelMarker(&m_channelMarker);
|
||||
m_deviceUISet->addRollupWidget(this);
|
||||
|
||||
@ -170,43 +171,43 @@ UDPSinkGUI::UDPSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandS
|
||||
ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
|
||||
|
||||
connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleSourceMessages()));
|
||||
connect(m_udpSink, SIGNAL(levelChanged(qreal, qreal, int)), ui->volumeMeter, SLOT(levelChanged(qreal, qreal, int)));
|
||||
connect(m_udpSource, SIGNAL(levelChanged(qreal, qreal, int)), ui->volumeMeter, SLOT(levelChanged(qreal, qreal, int)));
|
||||
|
||||
displaySettings();
|
||||
applySettings(true);
|
||||
}
|
||||
|
||||
UDPSinkGUI::~UDPSinkGUI()
|
||||
UDPSourceGUI::~UDPSourceGUI()
|
||||
{
|
||||
m_deviceUISet->removeTxChannelInstance(this);
|
||||
delete m_udpSink; // TODO: check this: when the GUI closes it has to delete the modulator
|
||||
delete m_udpSource; // TODO: check this: when the GUI closes it has to delete the modulator
|
||||
delete m_spectrumVis;
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void UDPSinkGUI::blockApplySettings(bool block)
|
||||
void UDPSourceGUI::blockApplySettings(bool block)
|
||||
{
|
||||
m_doApplySettings = !block;
|
||||
}
|
||||
|
||||
void UDPSinkGUI::applySettings(bool force)
|
||||
void UDPSourceGUI::applySettings(bool force)
|
||||
{
|
||||
if (m_doApplySettings)
|
||||
{
|
||||
UDPSink::MsgConfigureChannelizer *msgChan = UDPSink::MsgConfigureChannelizer::create(
|
||||
UDPSource::MsgConfigureChannelizer *msgChan = UDPSource::MsgConfigureChannelizer::create(
|
||||
m_settings.m_inputSampleRate,
|
||||
m_settings.m_inputFrequencyOffset);
|
||||
m_udpSink->getInputMessageQueue()->push(msgChan);
|
||||
m_udpSource->getInputMessageQueue()->push(msgChan);
|
||||
|
||||
UDPSink::MsgConfigureUDPSink* message = UDPSink::MsgConfigureUDPSink::create( m_settings, force);
|
||||
m_udpSink->getInputMessageQueue()->push(message);
|
||||
UDPSource::MsgConfigureUDPSink* message = UDPSource::MsgConfigureUDPSink::create( m_settings, force);
|
||||
m_udpSource->getInputMessageQueue()->push(message);
|
||||
|
||||
ui->applyBtn->setEnabled(false);
|
||||
ui->applyBtn->setStyleSheet("QPushButton { background:rgb(79,79,79); }");
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkGUI::displaySettings()
|
||||
void UDPSourceGUI::displaySettings()
|
||||
{
|
||||
m_channelMarker.blockSignals(true);
|
||||
m_channelMarker.setCenterFrequency(m_settings.m_inputFrequencyOffset);
|
||||
@ -258,29 +259,29 @@ void UDPSinkGUI::displaySettings()
|
||||
blockApplySettings(false);
|
||||
}
|
||||
|
||||
void UDPSinkGUI::channelMarkerChangedByCursor()
|
||||
void UDPSourceGUI::channelMarkerChangedByCursor()
|
||||
{
|
||||
ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency());
|
||||
m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency();
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_deltaFrequency_changed(qint64 value)
|
||||
void UDPSourceGUI::on_deltaFrequency_changed(qint64 value)
|
||||
{
|
||||
m_settings.m_inputFrequencyOffset = value;
|
||||
m_channelMarker.setCenterFrequency(value);
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_sampleFormat_currentIndexChanged(int index)
|
||||
void UDPSourceGUI::on_sampleFormat_currentIndexChanged(int index)
|
||||
{
|
||||
if (index == (int) UDPSinkSettings::FormatNFM) {
|
||||
if (index == (int) UDPSourceSettings::FormatNFM) {
|
||||
ui->fmDeviation->setEnabled(true);
|
||||
} else {
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
}
|
||||
|
||||
if (index == (int) UDPSinkSettings::FormatAM) {
|
||||
if (index == (int) UDPSourceSettings::FormatAM) {
|
||||
ui->amModPercent->setEnabled(true);
|
||||
} else {
|
||||
ui->amModPercent->setEnabled(false);
|
||||
@ -292,14 +293,14 @@ void UDPSinkGUI::on_sampleFormat_currentIndexChanged(int index)
|
||||
ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_localUDPAddress_editingFinished()
|
||||
void UDPSourceGUI::on_localUDPAddress_editingFinished()
|
||||
{
|
||||
m_settings.m_udpAddress = ui->localUDPAddress->text();
|
||||
ui->applyBtn->setEnabled(true);
|
||||
ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_localUDPPort_editingFinished()
|
||||
void UDPSourceGUI::on_localUDPPort_editingFinished()
|
||||
{
|
||||
bool ok;
|
||||
quint16 udpPort = ui->localUDPPort->text().toInt(&ok);
|
||||
@ -315,7 +316,7 @@ void UDPSinkGUI::on_localUDPPort_editingFinished()
|
||||
ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_sampleRate_textEdited(const QString& arg1 __attribute__((unused)))
|
||||
void UDPSourceGUI::on_sampleRate_textEdited(const QString& arg1 __attribute__((unused)))
|
||||
{
|
||||
bool ok;
|
||||
Real inputSampleRate = ui->sampleRate->text().toDouble(&ok);
|
||||
@ -331,7 +332,7 @@ void UDPSinkGUI::on_sampleRate_textEdited(const QString& arg1 __attribute__((unu
|
||||
ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_rfBandwidth_textEdited(const QString& arg1 __attribute__((unused)))
|
||||
void UDPSourceGUI::on_rfBandwidth_textEdited(const QString& arg1 __attribute__((unused)))
|
||||
{
|
||||
bool ok;
|
||||
Real rfBandwidth = ui->rfBandwidth->text().toDouble(&ok);
|
||||
@ -352,7 +353,7 @@ void UDPSinkGUI::on_rfBandwidth_textEdited(const QString& arg1 __attribute__((un
|
||||
ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_fmDeviation_textEdited(const QString& arg1 __attribute__((unused)))
|
||||
void UDPSourceGUI::on_fmDeviation_textEdited(const QString& arg1 __attribute__((unused)))
|
||||
{
|
||||
bool ok;
|
||||
int fmDeviation = ui->fmDeviation->text().toInt(&ok);
|
||||
@ -368,7 +369,7 @@ void UDPSinkGUI::on_fmDeviation_textEdited(const QString& arg1 __attribute__((un
|
||||
ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_amModPercent_textEdited(const QString& arg1 __attribute__((unused)))
|
||||
void UDPSourceGUI::on_amModPercent_textEdited(const QString& arg1 __attribute__((unused)))
|
||||
{
|
||||
bool ok;
|
||||
int amModPercent = ui->amModPercent->text().toInt(&ok);
|
||||
@ -385,21 +386,21 @@ void UDPSinkGUI::on_amModPercent_textEdited(const QString& arg1 __attribute__((u
|
||||
ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }");
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_gainIn_valueChanged(int value)
|
||||
void UDPSourceGUI::on_gainIn_valueChanged(int value)
|
||||
{
|
||||
m_settings.m_gainIn = value / 10.0;
|
||||
ui->gainInText->setText(tr("%1").arg(m_settings.m_gainIn, 0, 'f', 1));
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_gainOut_valueChanged(int value)
|
||||
void UDPSourceGUI::on_gainOut_valueChanged(int value)
|
||||
{
|
||||
m_settings.m_gainOut = value / 10.0;
|
||||
ui->gainOutText->setText(tr("%1").arg(m_settings.m_gainOut, 0, 'f', 1));
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_squelch_valueChanged(int value)
|
||||
void UDPSourceGUI::on_squelch_valueChanged(int value)
|
||||
{
|
||||
m_settings.m_squelchEnabled = (value != -100);
|
||||
m_settings.m_squelch = value * 1.0;
|
||||
@ -413,20 +414,20 @@ void UDPSinkGUI::on_squelch_valueChanged(int value)
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_squelchGate_valueChanged(int value)
|
||||
void UDPSourceGUI::on_squelchGate_valueChanged(int value)
|
||||
{
|
||||
m_settings.m_squelchGate = value / 100.0;
|
||||
ui->squelchGateText->setText(tr("%1").arg(roundf(value * 10.0), 0, 'f', 0));
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_channelMute_toggled(bool checked)
|
||||
void UDPSourceGUI::on_channelMute_toggled(bool checked)
|
||||
{
|
||||
m_settings.m_channelMute = checked;
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_applyBtn_clicked()
|
||||
void UDPSourceGUI::on_applyBtn_clicked()
|
||||
{
|
||||
if (m_rfBandwidthChanged)
|
||||
{
|
||||
@ -439,32 +440,32 @@ void UDPSinkGUI::on_applyBtn_clicked()
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_resetUDPReadIndex_clicked()
|
||||
void UDPSourceGUI::on_resetUDPReadIndex_clicked()
|
||||
{
|
||||
m_udpSink->resetReadIndex();
|
||||
m_udpSource->resetReadIndex();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_autoRWBalance_toggled(bool checked)
|
||||
void UDPSourceGUI::on_autoRWBalance_toggled(bool checked)
|
||||
{
|
||||
m_settings.m_autoRWBalance = checked;
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::on_stereoInput_toggled(bool checked)
|
||||
void UDPSourceGUI::on_stereoInput_toggled(bool checked)
|
||||
{
|
||||
m_settings.m_stereoInput = checked;
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::onWidgetRolled(QWidget* widget, bool rollDown)
|
||||
void UDPSourceGUI::onWidgetRolled(QWidget* widget, bool rollDown)
|
||||
{
|
||||
if ((widget == ui->spectrumBox) && (m_udpSink != 0))
|
||||
if ((widget == ui->spectrumBox) && (m_udpSource != 0))
|
||||
{
|
||||
m_udpSink->setSpectrum(rollDown);
|
||||
m_udpSource->setSpectrum(rollDown);
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkGUI::onMenuDialogCalled(const QPoint &p)
|
||||
void UDPSourceGUI::onMenuDialogCalled(const QPoint &p)
|
||||
{
|
||||
BasicChannelSettingsDialog dialog(&m_channelMarker, this);
|
||||
dialog.move(p);
|
||||
@ -479,20 +480,20 @@ void UDPSinkGUI::onMenuDialogCalled(const QPoint &p)
|
||||
applySettings();
|
||||
}
|
||||
|
||||
void UDPSinkGUI::leaveEvent(QEvent*)
|
||||
void UDPSourceGUI::leaveEvent(QEvent*)
|
||||
{
|
||||
m_channelMarker.setHighlighted(false);
|
||||
}
|
||||
|
||||
void UDPSinkGUI::enterEvent(QEvent*)
|
||||
void UDPSourceGUI::enterEvent(QEvent*)
|
||||
{
|
||||
m_channelMarker.setHighlighted(true);
|
||||
}
|
||||
|
||||
void UDPSinkGUI::tick()
|
||||
void UDPSourceGUI::tick()
|
||||
{
|
||||
m_channelPowerAvg(m_udpSink->getMagSq());
|
||||
m_inPowerAvg(m_udpSink->getInMagSq());
|
||||
m_channelPowerAvg(m_udpSource->getMagSq());
|
||||
m_inPowerAvg(m_udpSource->getInMagSq());
|
||||
|
||||
if (m_tickCount % 4 == 0)
|
||||
{
|
||||
@ -502,13 +503,13 @@ void UDPSinkGUI::tick()
|
||||
ui->inputPower->setText(tr("%1").arg(inPowDb, 0, 'f', 1));
|
||||
}
|
||||
|
||||
int32_t bufferGauge = m_udpSink->getBufferGauge();
|
||||
int32_t bufferGauge = m_udpSource->getBufferGauge();
|
||||
ui->bufferGaugeNegative->setValue((bufferGauge < 0 ? -bufferGauge : 0));
|
||||
ui->bufferGaugePositive->setValue((bufferGauge < 0 ? 0 : bufferGauge));
|
||||
QString s = QString::number(bufferGauge, 'f', 0);
|
||||
ui->bufferRWBalanceText->setText(tr("%1").arg(s));
|
||||
|
||||
if (m_udpSink->getSquelchOpen()) {
|
||||
if (m_udpSource->getSquelchOpen()) {
|
||||
ui->channelMute->setStyleSheet("QToolButton { background-color : green; }");
|
||||
} else {
|
||||
ui->channelMute->setStyleSheet("QToolButton { background:rgb(79,79,79); }");
|
||||
@ -517,32 +518,32 @@ void UDPSinkGUI::tick()
|
||||
m_tickCount++;
|
||||
}
|
||||
|
||||
void UDPSinkGUI::setSampleFormatIndex(const UDPSinkSettings::SampleFormat& sampleFormat)
|
||||
void UDPSourceGUI::setSampleFormatIndex(const UDPSourceSettings::SampleFormat& sampleFormat)
|
||||
{
|
||||
switch(sampleFormat)
|
||||
{
|
||||
case UDPSinkSettings::FormatSnLE:
|
||||
case UDPSourceSettings::FormatSnLE:
|
||||
ui->sampleFormat->setCurrentIndex(0);
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
ui->stereoInput->setChecked(true);
|
||||
ui->stereoInput->setEnabled(false);
|
||||
break;
|
||||
case UDPSinkSettings::FormatNFM:
|
||||
case UDPSourceSettings::FormatNFM:
|
||||
ui->sampleFormat->setCurrentIndex(1);
|
||||
ui->fmDeviation->setEnabled(true);
|
||||
ui->stereoInput->setEnabled(true);
|
||||
break;
|
||||
case UDPSinkSettings::FormatLSB:
|
||||
case UDPSourceSettings::FormatLSB:
|
||||
ui->sampleFormat->setCurrentIndex(2);
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
ui->stereoInput->setEnabled(true);
|
||||
break;
|
||||
case UDPSinkSettings::FormatUSB:
|
||||
case UDPSourceSettings::FormatUSB:
|
||||
ui->sampleFormat->setCurrentIndex(3);
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
ui->stereoInput->setEnabled(true);
|
||||
break;
|
||||
case UDPSinkSettings::FormatAM:
|
||||
case UDPSourceSettings::FormatAM:
|
||||
ui->sampleFormat->setCurrentIndex(4);
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
ui->stereoInput->setEnabled(true);
|
||||
@ -556,38 +557,38 @@ void UDPSinkGUI::setSampleFormatIndex(const UDPSinkSettings::SampleFormat& sampl
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkGUI::setSampleFormat(int index)
|
||||
void UDPSourceGUI::setSampleFormat(int index)
|
||||
{
|
||||
switch(index)
|
||||
{
|
||||
case 0:
|
||||
m_settings.m_sampleFormat = UDPSinkSettings::FormatSnLE;
|
||||
m_settings.m_sampleFormat = UDPSourceSettings::FormatSnLE;
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
ui->stereoInput->setChecked(true);
|
||||
ui->stereoInput->setEnabled(false);
|
||||
break;
|
||||
case 1:
|
||||
m_settings.m_sampleFormat = UDPSinkSettings::FormatNFM;
|
||||
m_settings.m_sampleFormat = UDPSourceSettings::FormatNFM;
|
||||
ui->fmDeviation->setEnabled(true);
|
||||
ui->stereoInput->setEnabled(true);
|
||||
break;
|
||||
case 2:
|
||||
m_settings.m_sampleFormat = UDPSinkSettings::FormatLSB;
|
||||
m_settings.m_sampleFormat = UDPSourceSettings::FormatLSB;
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
ui->stereoInput->setEnabled(true);
|
||||
break;
|
||||
case 3:
|
||||
m_settings.m_sampleFormat = UDPSinkSettings::FormatUSB;
|
||||
m_settings.m_sampleFormat = UDPSourceSettings::FormatUSB;
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
ui->stereoInput->setEnabled(true);
|
||||
break;
|
||||
case 4:
|
||||
m_settings.m_sampleFormat = UDPSinkSettings::FormatAM;
|
||||
m_settings.m_sampleFormat = UDPSourceSettings::FormatAM;
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
ui->stereoInput->setEnabled(true);
|
||||
break;
|
||||
default:
|
||||
m_settings.m_sampleFormat = UDPSinkSettings::FormatSnLE;
|
||||
m_settings.m_sampleFormat = UDPSourceSettings::FormatSnLE;
|
||||
ui->fmDeviation->setEnabled(false);
|
||||
ui->stereoInput->setChecked(true);
|
||||
ui->stereoInput->setEnabled(false);
|
@ -14,8 +14,8 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef PLUGINS_CHANNELTX_UDPSINK_UDPSINKGUI_H_
|
||||
#define PLUGINS_CHANNELTX_UDPSINK_UDPSINKGUI_H_
|
||||
#ifndef PLUGINS_CHANNELTX_UDPSINK_UDPSOURCEGUI_H_
|
||||
#define PLUGINS_CHANNELTX_UDPSINK_UDPSOURCEGUI_H_
|
||||
|
||||
#include <plugin/plugininstancegui.h>
|
||||
#include <QObject>
|
||||
@ -25,8 +25,8 @@
|
||||
#include "util/messagequeue.h"
|
||||
#include "util/movingaverage.h"
|
||||
|
||||
#include "udpsink.h"
|
||||
#include "udpsinksettings.h"
|
||||
#include "udpsource.h"
|
||||
#include "udpsourcesettings.h"
|
||||
|
||||
class PluginAPI;
|
||||
class DeviceUISet;
|
||||
@ -34,14 +34,14 @@ class BasebandSampleSource;
|
||||
class SpectrumVis;
|
||||
|
||||
namespace Ui {
|
||||
class UDPSinkGUI;
|
||||
class UDPSourceGUI;
|
||||
}
|
||||
|
||||
class UDPSinkGUI : public RollupWidget, public PluginInstanceGUI {
|
||||
class UDPSourceGUI : public RollupWidget, public PluginInstanceGUI {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
static UDPSinkGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSource *channelTx);
|
||||
static UDPSourceGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSource *channelTx);
|
||||
virtual void destroy();
|
||||
|
||||
void setName(const QString& name);
|
||||
@ -58,30 +58,30 @@ public slots:
|
||||
void channelMarkerChangedByCursor();
|
||||
|
||||
private:
|
||||
Ui::UDPSinkGUI* ui;
|
||||
Ui::UDPSourceGUI* ui;
|
||||
PluginAPI* m_pluginAPI;
|
||||
DeviceUISet* m_deviceUISet;
|
||||
SpectrumVis* m_spectrumVis;
|
||||
UDPSink* m_udpSink;
|
||||
UDPSource* m_udpSource;
|
||||
MovingAverageUtil<double, double, 4> m_channelPowerAvg;
|
||||
MovingAverageUtil<double, double, 4> m_inPowerAvg;
|
||||
uint32_t m_tickCount;
|
||||
ChannelMarker m_channelMarker;
|
||||
|
||||
// settings
|
||||
UDPSinkSettings m_settings;
|
||||
UDPSourceSettings m_settings;
|
||||
bool m_rfBandwidthChanged;
|
||||
bool m_doApplySettings;
|
||||
MessageQueue m_inputMessageQueue;
|
||||
|
||||
explicit UDPSinkGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSource *channelTx, QWidget* parent = NULL);
|
||||
virtual ~UDPSinkGUI();
|
||||
explicit UDPSourceGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSource *channelTx, QWidget* parent = NULL);
|
||||
virtual ~UDPSourceGUI();
|
||||
|
||||
void blockApplySettings(bool block);
|
||||
void applySettings(bool force = false);
|
||||
void displaySettings();
|
||||
void setSampleFormat(int index);
|
||||
void setSampleFormatIndex(const UDPSinkSettings::SampleFormat& sampleFormat);
|
||||
void setSampleFormatIndex(const UDPSourceSettings::SampleFormat& sampleFormat);
|
||||
|
||||
void leaveEvent(QEvent*);
|
||||
void enterEvent(QEvent*);
|
||||
@ -110,4 +110,4 @@ private slots:
|
||||
void tick();
|
||||
};
|
||||
|
||||
#endif /* PLUGINS_CHANNELTX_UDPSINK_UDPSINKGUI_H_ */
|
||||
#endif /* PLUGINS_CHANNELTX_UDPSINK_UDPSOURCEGUI_H_ */
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>UDPSinkGUI</class>
|
||||
<widget class="RollupWidget" name="UDPSinkGUI">
|
||||
<class>UDPSourceGUI</class>
|
||||
<widget class="RollupWidget" name="UDPSourceGUI">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
@ -29,13 +29,13 @@
|
||||
</font>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>UDP Sample Sink</string>
|
||||
<string>UDP Source Sink</string>
|
||||
</property>
|
||||
<property name="toolTipDuration">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
<property name="statusTip">
|
||||
<string>UDP Sample Sink</string>
|
||||
<string>UDP Source Sink</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<property name="geometry">
|
@ -14,7 +14,7 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "udpsinkmsg.h"
|
||||
#include "udpsourcemsg.h"
|
||||
|
||||
MESSAGE_CLASS_DEFINITION(UDPSinkMessages::MsgSampleRateCorrection, Message)
|
||||
MESSAGE_CLASS_DEFINITION(UDPSourceMessages::MsgSampleRateCorrection, Message)
|
||||
|
@ -14,15 +14,15 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef PLUGINS_CHANNELTX_UDPSINK_UDPSINKMSG_H_
|
||||
#define PLUGINS_CHANNELTX_UDPSINK_UDPSINKMSG_H_
|
||||
#ifndef PLUGINS_CHANNELTX_UDPSINK_UDPSOURCEMSG_H_
|
||||
#define PLUGINS_CHANNELTX_UDPSINK_UDPSOURCEMSG_H_
|
||||
|
||||
#include "util/message.h"
|
||||
|
||||
/**
|
||||
* Message(s) used to communicate back from UDPSinkUDPHandler to UDPSink
|
||||
* Message(s) used to communicate back from UDPSinkUDPHandler to UDPSource
|
||||
*/
|
||||
class UDPSinkMessages
|
||||
class UDPSourceMessages
|
||||
{
|
||||
public:
|
||||
class MsgSampleRateCorrection : public Message {
|
||||
@ -50,4 +50,4 @@ public:
|
||||
};
|
||||
|
||||
|
||||
#endif /* PLUGINS_CHANNELTX_UDPSINK_UDPSINKMSG_H_ */
|
||||
#endif /* PLUGINS_CHANNELTX_UDPSINK_UDPSOURCEMSG_H_ */
|
@ -15,66 +15,66 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "udpsinkplugin.h"
|
||||
#include "udpsourceplugin.h"
|
||||
|
||||
#include <QtPlugin>
|
||||
#include "plugin/pluginapi.h"
|
||||
|
||||
#ifndef SERVER_MODE
|
||||
#include "udpsinkgui.h"
|
||||
#include "udpsourcegui.h"
|
||||
#endif
|
||||
#include "udpsink.h"
|
||||
#include "udpsource.h"
|
||||
|
||||
const PluginDescriptor UDPSinkPlugin::m_pluginDescriptor = {
|
||||
QString("UDP Channel Sink"),
|
||||
QString("4.0.7"),
|
||||
const PluginDescriptor UDPSourcePlugin::m_pluginDescriptor = {
|
||||
QString("UDP Channel Source"),
|
||||
QString("4.1.0"),
|
||||
QString("(c) Edouard Griffiths, F4EXB"),
|
||||
QString("https://github.com/f4exb/sdrangel"),
|
||||
true,
|
||||
QString("https://github.com/f4exb/sdrangel")
|
||||
};
|
||||
|
||||
UDPSinkPlugin::UDPSinkPlugin(QObject* parent) :
|
||||
UDPSourcePlugin::UDPSourcePlugin(QObject* parent) :
|
||||
QObject(parent),
|
||||
m_pluginAPI(0)
|
||||
{
|
||||
}
|
||||
|
||||
const PluginDescriptor& UDPSinkPlugin::getPluginDescriptor() const
|
||||
const PluginDescriptor& UDPSourcePlugin::getPluginDescriptor() const
|
||||
{
|
||||
return m_pluginDescriptor;
|
||||
}
|
||||
|
||||
void UDPSinkPlugin::initPlugin(PluginAPI* pluginAPI)
|
||||
void UDPSourcePlugin::initPlugin(PluginAPI* pluginAPI)
|
||||
{
|
||||
m_pluginAPI = pluginAPI;
|
||||
|
||||
// register TCP Channel Source
|
||||
m_pluginAPI->registerTxChannel(UDPSink::m_channelIdURI, UDPSink::m_channelId, this);
|
||||
m_pluginAPI->registerTxChannel(UDPSource::m_channelIdURI, UDPSource::m_channelId, this);
|
||||
}
|
||||
|
||||
#ifdef SERVER_MODE
|
||||
PluginInstanceGUI* UDPSinkPlugin::createTxChannelGUI(
|
||||
PluginInstanceGUI* UDPSourcePlugin::createTxChannelGUI(
|
||||
DeviceUISet *deviceUISet __attribute__((unused)),
|
||||
BasebandSampleSource *txChannel __attribute__((unused)))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
PluginInstanceGUI* UDPSinkPlugin::createTxChannelGUI(DeviceUISet *deviceUISet, BasebandSampleSource *txChannel)
|
||||
PluginInstanceGUI* UDPSourcePlugin::createTxChannelGUI(DeviceUISet *deviceUISet, BasebandSampleSource *txChannel)
|
||||
{
|
||||
return UDPSinkGUI::create(m_pluginAPI, deviceUISet, txChannel);
|
||||
return UDPSourceGUI::create(m_pluginAPI, deviceUISet, txChannel);
|
||||
}
|
||||
#endif
|
||||
|
||||
BasebandSampleSource* UDPSinkPlugin::createTxChannelBS(DeviceSinkAPI *deviceAPI)
|
||||
BasebandSampleSource* UDPSourcePlugin::createTxChannelBS(DeviceSinkAPI *deviceAPI)
|
||||
{
|
||||
return new UDPSink(deviceAPI);
|
||||
return new UDPSource(deviceAPI);
|
||||
}
|
||||
|
||||
ChannelSourceAPI* UDPSinkPlugin::createTxChannelCS(DeviceSinkAPI *deviceAPI)
|
||||
ChannelSourceAPI* UDPSourcePlugin::createTxChannelCS(DeviceSinkAPI *deviceAPI)
|
||||
{
|
||||
return new UDPSink(deviceAPI);
|
||||
return new UDPSource(deviceAPI);
|
||||
}
|
||||
|
||||
|
@ -24,13 +24,13 @@
|
||||
class DeviceUISet;
|
||||
class BasebandSampleSource;
|
||||
|
||||
class UDPSinkPlugin : public QObject, PluginInterface {
|
||||
class UDPSourcePlugin : public QObject, PluginInterface {
|
||||
Q_OBJECT
|
||||
Q_INTERFACES(PluginInterface)
|
||||
Q_PLUGIN_METADATA(IID "sdrangel.channeltx.udpsink")
|
||||
|
||||
public:
|
||||
explicit UDPSinkPlugin(QObject* parent = 0);
|
||||
explicit UDPSourcePlugin(QObject* parent = 0);
|
||||
|
||||
const PluginDescriptor& getPluginDescriptor() const;
|
||||
void initPlugin(PluginAPI* pluginAPI);
|
@ -14,21 +14,22 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "udpsourcesettings.h"
|
||||
|
||||
#include <QColor>
|
||||
|
||||
#include "dsp/dspengine.h"
|
||||
#include "util/simpleserializer.h"
|
||||
#include "settings/serializable.h"
|
||||
#include "udpsinksettings.h"
|
||||
|
||||
UDPSinkSettings::UDPSinkSettings() :
|
||||
UDPSourceSettings::UDPSourceSettings() :
|
||||
m_channelMarker(0),
|
||||
m_spectrumGUI(0)
|
||||
{
|
||||
resetToDefaults();
|
||||
}
|
||||
|
||||
void UDPSinkSettings::resetToDefaults()
|
||||
void UDPSourceSettings::resetToDefaults()
|
||||
{
|
||||
m_sampleFormat = FormatSnLE;
|
||||
m_inputSampleRate = 48000;
|
||||
@ -51,7 +52,7 @@ void UDPSinkSettings::resetToDefaults()
|
||||
m_title = "UDP Sample Sink";
|
||||
}
|
||||
|
||||
QByteArray UDPSinkSettings::serialize() const
|
||||
QByteArray UDPSourceSettings::serialize() const
|
||||
{
|
||||
SimpleSerializer s(1);
|
||||
s.writeS32(2, m_inputFrequencyOffset);
|
||||
@ -82,7 +83,7 @@ QByteArray UDPSinkSettings::serialize() const
|
||||
return s.final();
|
||||
}
|
||||
|
||||
bool UDPSinkSettings::deserialize(const QByteArray& data)
|
||||
bool UDPSourceSettings::deserialize(const QByteArray& data)
|
||||
{
|
||||
SimpleDeserializer d(data);
|
||||
|
@ -14,16 +14,18 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef PLUGINS_CHANNELTX_UDPSINK_UDPSINKSETTINGS_H_
|
||||
#define PLUGINS_CHANNELTX_UDPSINK_UDPSINKSETTINGS_H_
|
||||
#ifndef PLUGINS_CHANNELTX_UDPSINK_UDPSOURCESETTINGS_H_
|
||||
#define PLUGINS_CHANNELTX_UDPSINK_UDPSOURCESETTINGS_H_
|
||||
|
||||
#include <QByteArray>
|
||||
#include <QString>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "dsp/dsptypes.h"
|
||||
|
||||
class Serializable;
|
||||
|
||||
struct UDPSinkSettings
|
||||
struct UDPSourceSettings
|
||||
{
|
||||
enum SampleFormat {
|
||||
FormatSnLE,
|
||||
@ -59,7 +61,7 @@ struct UDPSinkSettings
|
||||
Serializable *m_channelMarker;
|
||||
Serializable *m_spectrumGUI;
|
||||
|
||||
UDPSinkSettings();
|
||||
UDPSourceSettings();
|
||||
void resetToDefaults();
|
||||
void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; }
|
||||
void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; }
|
||||
@ -70,4 +72,4 @@ struct UDPSinkSettings
|
||||
|
||||
|
||||
|
||||
#endif /* PLUGINS_CHANNELTX_UDPSINK_UDPSINKSETTINGS_H_ */
|
||||
#endif /* PLUGINS_CHANNELTX_UDPSINK_UDPSOURCESETTINGS_H_ */
|
@ -14,16 +14,17 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "udpsourceudphandler.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <stdint.h>
|
||||
#include <algorithm>
|
||||
|
||||
#include "udpsinkmsg.h"
|
||||
#include "udpsinkudphandler.h"
|
||||
#include "udpsourcemsg.h"
|
||||
|
||||
MESSAGE_CLASS_DEFINITION(UDPSinkUDPHandler::MsgUDPAddressAndPort, Message)
|
||||
MESSAGE_CLASS_DEFINITION(UDPSourceUDPHandler::MsgUDPAddressAndPort, Message)
|
||||
|
||||
UDPSinkUDPHandler::UDPSinkUDPHandler() :
|
||||
UDPSourceUDPHandler::UDPSourceUDPHandler() :
|
||||
m_dataSocket(0),
|
||||
m_dataAddress(QHostAddress::LocalHost),
|
||||
m_remoteAddress(QHostAddress::LocalHost),
|
||||
@ -46,12 +47,12 @@ UDPSinkUDPHandler::UDPSinkUDPHandler() :
|
||||
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleMessages()));
|
||||
}
|
||||
|
||||
UDPSinkUDPHandler::~UDPSinkUDPHandler()
|
||||
UDPSourceUDPHandler::~UDPSourceUDPHandler()
|
||||
{
|
||||
delete[] m_udpBuf;
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::start()
|
||||
void UDPSourceUDPHandler::start()
|
||||
{
|
||||
qDebug("UDPSinkUDPHandler::start");
|
||||
|
||||
@ -77,7 +78,7 @@ void UDPSinkUDPHandler::start()
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::stop()
|
||||
void UDPSourceUDPHandler::stop()
|
||||
{
|
||||
qDebug("UDPSinkUDPHandler::stop");
|
||||
|
||||
@ -94,7 +95,7 @@ void UDPSinkUDPHandler::stop()
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::dataReadyRead()
|
||||
void UDPSourceUDPHandler::dataReadyRead()
|
||||
{
|
||||
while (m_dataSocket->hasPendingDatagrams() && m_dataConnected)
|
||||
{
|
||||
@ -127,7 +128,7 @@ void UDPSinkUDPHandler::dataReadyRead()
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::moveData(char *blk)
|
||||
void UDPSourceUDPHandler::moveData(char *blk)
|
||||
{
|
||||
memcpy(m_udpBuf[m_writeFrameIndex], blk, m_udpBlockSize);
|
||||
|
||||
@ -138,7 +139,7 @@ void UDPSinkUDPHandler::moveData(char *blk)
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::readSample(qint16 &t)
|
||||
void UDPSourceUDPHandler::readSample(qint16 &t)
|
||||
{
|
||||
if (m_readFrameIndex == m_writeFrameIndex) // block until more writes
|
||||
{
|
||||
@ -151,7 +152,7 @@ void UDPSinkUDPHandler::readSample(qint16 &t)
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::readSample(AudioSample &a)
|
||||
void UDPSourceUDPHandler::readSample(AudioSample &a)
|
||||
{
|
||||
if (m_readFrameIndex == m_writeFrameIndex) // block until more writes
|
||||
{
|
||||
@ -165,7 +166,7 @@ void UDPSinkUDPHandler::readSample(AudioSample &a)
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::readSample(Sample &s)
|
||||
void UDPSourceUDPHandler::readSample(Sample &s)
|
||||
{
|
||||
if (m_readFrameIndex == m_writeFrameIndex) // block until more writes
|
||||
{
|
||||
@ -179,7 +180,7 @@ void UDPSinkUDPHandler::readSample(Sample &s)
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::advanceReadPointer(int nbBytes)
|
||||
void UDPSourceUDPHandler::advanceReadPointer(int nbBytes)
|
||||
{
|
||||
if (m_readIndex < m_udpBlockSize - 2*nbBytes)
|
||||
{
|
||||
@ -209,7 +210,7 @@ void UDPSinkUDPHandler::advanceReadPointer(int nbBytes)
|
||||
float dd = d - m_d; // derivative
|
||||
float c = (d / 15.0) + (dd / 20.0); // damping and scaling
|
||||
c = c < -0.05 ? -0.05 : c > 0.05 ? 0.05 : c; // limit
|
||||
UDPSinkMessages::MsgSampleRateCorrection *msg = UDPSinkMessages::MsgSampleRateCorrection::create(c, d);
|
||||
UDPSourceMessages::MsgSampleRateCorrection *msg = UDPSourceMessages::MsgSampleRateCorrection::create(c, d);
|
||||
|
||||
if (m_autoRWBalance && m_feedbackMessageQueue) {
|
||||
m_feedbackMessageQueue->push(msg);
|
||||
@ -222,13 +223,13 @@ void UDPSinkUDPHandler::advanceReadPointer(int nbBytes)
|
||||
}
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::configureUDPLink(const QString& address, quint16 port)
|
||||
void UDPSourceUDPHandler::configureUDPLink(const QString& address, quint16 port)
|
||||
{
|
||||
Message* msg = MsgUDPAddressAndPort::create(address, port);
|
||||
m_inputMessageQueue.push(msg);
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::applyUDPLink(const QString& address, quint16 port)
|
||||
void UDPSourceUDPHandler::applyUDPLink(const QString& address, quint16 port)
|
||||
{
|
||||
qDebug("UDPSinkUDPHandler::configureUDPLink: %s:%d", address.toStdString().c_str(), port);
|
||||
bool addressOK = m_dataAddress.setAddress(address);
|
||||
@ -245,7 +246,7 @@ void UDPSinkUDPHandler::applyUDPLink(const QString& address, quint16 port)
|
||||
start();
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::resetReadIndex()
|
||||
void UDPSourceUDPHandler::resetReadIndex()
|
||||
{
|
||||
m_readFrameIndex = (m_writeFrameIndex + (m_nbUDPFrames/2)) % m_nbUDPFrames;
|
||||
m_rwDelta = m_nbUDPFrames/2;
|
||||
@ -253,7 +254,7 @@ void UDPSinkUDPHandler::resetReadIndex()
|
||||
m_d = 0.0f;
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::resizeBuffer(float sampleRate)
|
||||
void UDPSourceUDPHandler::resizeBuffer(float sampleRate)
|
||||
{
|
||||
int halfNbFrames = std::max((sampleRate / 375.0), (m_minNbUDPFrames / 2.0));
|
||||
qDebug("UDPSinkUDPHandler::resizeBuffer: nb_frames: %d", 2*halfNbFrames);
|
||||
@ -271,7 +272,7 @@ void UDPSinkUDPHandler::resizeBuffer(float sampleRate)
|
||||
resetReadIndex();
|
||||
}
|
||||
|
||||
void UDPSinkUDPHandler::handleMessages()
|
||||
void UDPSourceUDPHandler::handleMessages()
|
||||
{
|
||||
Message* message;
|
||||
|
||||
@ -284,11 +285,11 @@ void UDPSinkUDPHandler::handleMessages()
|
||||
}
|
||||
}
|
||||
|
||||
bool UDPSinkUDPHandler::handleMessage(const Message& cmd)
|
||||
bool UDPSourceUDPHandler::handleMessage(const Message& cmd)
|
||||
{
|
||||
if (UDPSinkUDPHandler::MsgUDPAddressAndPort::match(cmd))
|
||||
if (UDPSourceUDPHandler::MsgUDPAddressAndPort::match(cmd))
|
||||
{
|
||||
UDPSinkUDPHandler::MsgUDPAddressAndPort& notif = (UDPSinkUDPHandler::MsgUDPAddressAndPort&) cmd;
|
||||
UDPSourceUDPHandler::MsgUDPAddressAndPort& notif = (UDPSourceUDPHandler::MsgUDPAddressAndPort&) cmd;
|
||||
applyUDPLink(notif.getAddress(), notif.getPort());
|
||||
return true;
|
||||
}
|
@ -14,8 +14,8 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||||
///////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef PLUGINS_CHANNELTX_UDPSINK_UDPSINKUDPHANDLER_H_
|
||||
#define PLUGINS_CHANNELTX_UDPSINK_UDPSINKUDPHANDLER_H_
|
||||
#ifndef PLUGINS_CHANNELTX_UDPSINK_UDPSOURCEUDPHANDLER_H_
|
||||
#define PLUGINS_CHANNELTX_UDPSINK_UDPSOURCEUDPHANDLER_H_
|
||||
|
||||
#include <QObject>
|
||||
#include <QUdpSocket>
|
||||
@ -27,12 +27,12 @@
|
||||
#include "util/message.h"
|
||||
#include "util/messagequeue.h"
|
||||
|
||||
class UDPSinkUDPHandler : public QObject
|
||||
class UDPSourceUDPHandler : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
UDPSinkUDPHandler();
|
||||
virtual ~UDPSinkUDPHandler();
|
||||
UDPSourceUDPHandler();
|
||||
virtual ~UDPSourceUDPHandler();
|
||||
|
||||
void start();
|
||||
void stop();
|
||||
@ -120,4 +120,4 @@ private slots:
|
||||
|
||||
|
||||
|
||||
#endif /* PLUGINS_CHANNELTX_UDPSINK_UDPSINKUDPHANDLER_H_ */
|
||||
#endif /* PLUGINS_CHANNELTX_UDPSINK_UDPSOURCEUDPHANDLER_H_ */
|
@ -1,22 +1,22 @@
|
||||
project(udpsink)
|
||||
project(udpsource)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||
set(PLUGIN_PREFIX "../../../plugins/channeltx/udpsink")
|
||||
|
||||
set(udpsink_SOURCES
|
||||
${PLUGIN_PREFIX}/udpsink.cpp
|
||||
${PLUGIN_PREFIX}/udpsinkplugin.cpp
|
||||
${PLUGIN_PREFIX}/udpsinkudphandler.cpp
|
||||
${PLUGIN_PREFIX}/udpsinkmsg.cpp
|
||||
${PLUGIN_PREFIX}/udpsinksettings.cpp
|
||||
set(udpsource_SOURCES
|
||||
${PLUGIN_PREFIX}/udpsource.cpp
|
||||
${PLUGIN_PREFIX}/udpsourceplugin.cpp
|
||||
${PLUGIN_PREFIX}/udpsourceudphandler.cpp
|
||||
${PLUGIN_PREFIX}/udpsourcemsg.cpp
|
||||
${PLUGIN_PREFIX}/udpsourcesettings.cpp
|
||||
)
|
||||
|
||||
set(udpsink_HEADERS
|
||||
${PLUGIN_PREFIX}/udpsink.h
|
||||
${PLUGIN_PREFIX}/udpsinkplugin.h
|
||||
${PLUGIN_PREFIX}/udpsinkudphandler.h
|
||||
${PLUGIN_PREFIX}/udpsinkmsg.h
|
||||
${PLUGIN_PREFIX}/udpsinksettings.h
|
||||
set(udpsource_HEADERS
|
||||
${PLUGIN_PREFIX}/udpsource.h
|
||||
${PLUGIN_PREFIX}/udpsourceplugin.h
|
||||
${PLUGIN_PREFIX}/udpsourceudphandler.h
|
||||
${PLUGIN_PREFIX}/udpsourcemsg.h
|
||||
${PLUGIN_PREFIX}/udpsourcesettings.h
|
||||
)
|
||||
|
||||
include_directories(
|
||||
@ -29,17 +29,17 @@ add_definitions(${QT_DEFINITIONS})
|
||||
add_definitions(-DQT_PLUGIN)
|
||||
add_definitions(-DQT_SHARED)
|
||||
|
||||
add_library(modudpsinksrv SHARED
|
||||
${udpsink_SOURCES}
|
||||
${udpsink_HEADERS_MOC}
|
||||
add_library(udpsourcesrv SHARED
|
||||
${udpsource_SOURCES}
|
||||
${udpsource_HEADERS_MOC}
|
||||
)
|
||||
|
||||
target_link_libraries(modudpsinksrv
|
||||
target_link_libraries(udpsourcesrv
|
||||
${QT_LIBRARIES}
|
||||
sdrbase
|
||||
swagger
|
||||
)
|
||||
|
||||
target_link_libraries(modudpsinksrv Qt5::Core Qt5::Network)
|
||||
target_link_libraries(udpsourcesrv Qt5::Core Qt5::Network)
|
||||
|
||||
install(TARGETS modudpsinksrv DESTINATION lib/pluginssrv/channeltx)
|
||||
install(TARGETS udpsourcesrv DESTINATION lib/pluginssrv/channeltx)
|
||||
|
@ -2208,7 +2208,7 @@ bool WebAPIRequestMapper::validateChannelSettings(
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (*channelType == "UDPSink")
|
||||
else if (*channelType == "UDPSource")
|
||||
{
|
||||
if (channelSettings.getTx() != 0)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user