mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-10-01 17:26:40 -04:00
151 lines
4.7 KiB
C
151 lines
4.7 KiB
C
|
///////////////////////////////////////////////////////////////////////////////////
|
||
|
// Copyright (C) 2017 Edouard Griffiths, F4EXB //
|
||
|
// //
|
||
|
// This program is free software; you can redistribute it and/or modify //
|
||
|
// it under the terms of the GNU General Public License as published by //
|
||
|
// the Free Software Foundation as version 3 of the License, or //
|
||
|
// //
|
||
|
// This program is distributed in the hope that it will be useful, //
|
||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
|
||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
|
||
|
// GNU General Public License V3 for more details. //
|
||
|
// //
|
||
|
// You should have received a copy of the GNU General Public License //
|
||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>. //
|
||
|
///////////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
#ifndef PLUGINS_CHANNELTX_UDPSINK_UDPSINK_H_
|
||
|
#define PLUGINS_CHANNELTX_UDPSINK_UDPSINK_H_
|
||
|
|
||
|
#include <QObject>
|
||
|
|
||
|
#include "dsp/basebandsamplesource.h"
|
||
|
#include "dsp/basebandsamplesink.h"
|
||
|
#include "util/message.h"
|
||
|
|
||
|
class UDPSinkGUI;
|
||
|
|
||
|
class UDPSink : public BasebandSampleSource {
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
enum SampleFormat {
|
||
|
FormatS16LE,
|
||
|
FormatNFM,
|
||
|
FormatNFMMono,
|
||
|
FormatLSB,
|
||
|
FormatUSB,
|
||
|
FormatLSBMono,
|
||
|
FormatUSBMono,
|
||
|
FormatAMMono,
|
||
|
FormatNone
|
||
|
};
|
||
|
|
||
|
UDPSink(MessageQueue* uiMessageQueue, UDPSinkGUI* udpSinkGUI, BasebandSampleSink* spectrum);
|
||
|
virtual ~UDPSink();
|
||
|
|
||
|
virtual void start();
|
||
|
virtual void stop();
|
||
|
virtual void pull(Sample& sample);
|
||
|
virtual bool handleMessage(const Message& cmd);
|
||
|
|
||
|
void configure(MessageQueue* messageQueue,
|
||
|
SampleFormat sampleFormat,
|
||
|
Real inputSampleRate,
|
||
|
Real rfBandwidth,
|
||
|
int fmDeviation,
|
||
|
QString& udpAddress,
|
||
|
int udpPort);
|
||
|
|
||
|
private:
|
||
|
class MsgUDPSinkConfigure : public Message {
|
||
|
MESSAGE_CLASS_DECLARATION
|
||
|
|
||
|
public:
|
||
|
SampleFormat getSampleFormat() const { return m_sampleFormat; }
|
||
|
Real getInputSampleRate() const { return m_inputSampleRate; }
|
||
|
Real getRFBandwidth() const { return m_rfBandwidth; }
|
||
|
int getFMDeviation() const { return m_fmDeviation; }
|
||
|
const QString& getUDPAddress() const { return m_udpAddress; }
|
||
|
int getUDPPort() const { return m_udpPort; }
|
||
|
|
||
|
static MsgUDPSinkConfigure* create(SampleFormat
|
||
|
sampleFormat,
|
||
|
Real inputSampleRate,
|
||
|
Real rfBandwidth,
|
||
|
int fmDeviation,
|
||
|
QString& udpAddress,
|
||
|
int udpPort)
|
||
|
{
|
||
|
return new MsgUDPSinkConfigure(sampleFormat,
|
||
|
inputSampleRate,
|
||
|
rfBandwidth,
|
||
|
fmDeviation,
|
||
|
udpAddress,
|
||
|
udpPort);
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
SampleFormat m_sampleFormat;
|
||
|
Real m_inputSampleRate;
|
||
|
Real m_rfBandwidth;
|
||
|
int m_fmDeviation;
|
||
|
QString m_udpAddress;
|
||
|
int m_udpPort;
|
||
|
|
||
|
MsgUDPSinkConfigure(SampleFormat sampleFormat,
|
||
|
Real inputSampleRate,
|
||
|
Real rfBandwidth,
|
||
|
int fmDeviation,
|
||
|
QString& udpAddress,
|
||
|
int udpPort) :
|
||
|
Message(),
|
||
|
m_sampleFormat(sampleFormat),
|
||
|
m_inputSampleRate(inputSampleRate),
|
||
|
m_rfBandwidth(rfBandwidth),
|
||
|
m_fmDeviation(fmDeviation),
|
||
|
m_udpAddress(udpAddress),
|
||
|
m_udpPort(udpPort)
|
||
|
{ }
|
||
|
};
|
||
|
|
||
|
struct Config {
|
||
|
int m_basebandSampleRate;
|
||
|
Real m_outputSampleRate;
|
||
|
int m_sampleFormat;
|
||
|
Real m_inputSampleRate;
|
||
|
qint64 m_inputFrequencyOffset;
|
||
|
Real m_rfBandwidth;
|
||
|
int m_fmDeviation;
|
||
|
|
||
|
QString m_udpAddressStr;
|
||
|
quint16 m_udpPort;
|
||
|
|
||
|
Config() :
|
||
|
m_basebandSampleRate(0),
|
||
|
m_outputSampleRate(0),
|
||
|
m_sampleFormat(0),
|
||
|
m_inputSampleRate(0),
|
||
|
m_inputFrequencyOffset(0),
|
||
|
m_rfBandwidth(0),
|
||
|
m_fmDeviation(0),
|
||
|
m_udpAddressStr("127.0.0.1"),
|
||
|
m_udpPort(9999)
|
||
|
{}
|
||
|
};
|
||
|
|
||
|
Config m_config;
|
||
|
Config m_running;
|
||
|
|
||
|
MessageQueue* m_uiMessageQueue;
|
||
|
UDPSinkGUI* m_udpSinkGUI;
|
||
|
BasebandSampleSink* m_spectrum;
|
||
|
|
||
|
QMutex m_settingsMutex;
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
#endif /* PLUGINS_CHANNELTX_UDPSINK_UDPSINK_H_ */
|