From 111b3da5ce496933e8db36e030bb7eadb27d675c Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 25 May 2018 09:27:02 +0200 Subject: [PATCH] Removal of ChannelAnalyzer and TCPSrc plugins --- plugins/channelrx/CMakeLists.txt | 2 - plugins/channelrx/chanalyzer/CMakeLists.txt | 46 -- plugins/channelrx/chanalyzer/chanalyzer.cpp | 242 -------- plugins/channelrx/chanalyzer/chanalyzer.h | 167 ------ plugins/channelrx/chanalyzer/chanalyzer.pro | 46 -- .../channelrx/chanalyzer/chanalyzergui.cpp | 487 ---------------- plugins/channelrx/chanalyzer/chanalyzergui.h | 101 ---- plugins/channelrx/chanalyzer/chanalyzergui.ui | 540 ------------------ .../channelrx/chanalyzer/chanalyzerplugin.cpp | 50 -- .../channelrx/chanalyzer/chanalyzerplugin.h | 32 -- plugins/channelrx/tcpsrc/CMakeLists.txt | 48 -- plugins/channelrx/tcpsrc/tcpsrc.cpp | 487 ---------------- plugins/channelrx/tcpsrc/tcpsrc.h | 224 -------- plugins/channelrx/tcpsrc/tcpsrc.pro | 43 -- plugins/channelrx/tcpsrc/tcpsrcgui.cpp | 397 ------------- plugins/channelrx/tcpsrc/tcpsrcgui.h | 92 --- plugins/channelrx/tcpsrc/tcpsrcgui.ui | 480 ---------------- plugins/channelrx/tcpsrc/tcpsrcplugin.cpp | 51 -- plugins/channelrx/tcpsrc/tcpsrcplugin.h | 31 - plugins/channelrx/tcpsrc/tcpsrcsettings.cpp | 150 ----- plugins/channelrx/tcpsrc/tcpsrcsettings.h | 72 --- 21 files changed, 3788 deletions(-) delete mode 100644 plugins/channelrx/chanalyzer/CMakeLists.txt delete mode 100644 plugins/channelrx/chanalyzer/chanalyzer.cpp delete mode 100644 plugins/channelrx/chanalyzer/chanalyzer.h delete mode 100644 plugins/channelrx/chanalyzer/chanalyzer.pro delete mode 100644 plugins/channelrx/chanalyzer/chanalyzergui.cpp delete mode 100644 plugins/channelrx/chanalyzer/chanalyzergui.h delete mode 100644 plugins/channelrx/chanalyzer/chanalyzergui.ui delete mode 100644 plugins/channelrx/chanalyzer/chanalyzerplugin.cpp delete mode 100644 plugins/channelrx/chanalyzer/chanalyzerplugin.h delete mode 100644 plugins/channelrx/tcpsrc/CMakeLists.txt delete mode 100644 plugins/channelrx/tcpsrc/tcpsrc.cpp delete mode 100644 plugins/channelrx/tcpsrc/tcpsrc.h delete mode 100644 plugins/channelrx/tcpsrc/tcpsrc.pro delete mode 100644 plugins/channelrx/tcpsrc/tcpsrcgui.cpp delete mode 100644 plugins/channelrx/tcpsrc/tcpsrcgui.h delete mode 100644 plugins/channelrx/tcpsrc/tcpsrcgui.ui delete mode 100644 plugins/channelrx/tcpsrc/tcpsrcplugin.cpp delete mode 100644 plugins/channelrx/tcpsrc/tcpsrcplugin.h delete mode 100644 plugins/channelrx/tcpsrc/tcpsrcsettings.cpp delete mode 100644 plugins/channelrx/tcpsrc/tcpsrcsettings.h diff --git a/plugins/channelrx/CMakeLists.txt b/plugins/channelrx/CMakeLists.txt index 110fb1dd3..099c9afd3 100644 --- a/plugins/channelrx/CMakeLists.txt +++ b/plugins/channelrx/CMakeLists.txt @@ -5,10 +5,8 @@ add_subdirectory(demodam) add_subdirectory(demodbfm) add_subdirectory(demodnfm) add_subdirectory(demodssb) -add_subdirectory(tcpsrc) add_subdirectory(udpsrc) add_subdirectory(demodwfm) -add_subdirectory(chanalyzer) add_subdirectory(chanalyzerng) add_subdirectory(demodatv) diff --git a/plugins/channelrx/chanalyzer/CMakeLists.txt b/plugins/channelrx/chanalyzer/CMakeLists.txt deleted file mode 100644 index 1d099f8fe..000000000 --- a/plugins/channelrx/chanalyzer/CMakeLists.txt +++ /dev/null @@ -1,46 +0,0 @@ -project(chanalyzer) - -set(chanalyzer_SOURCES - chanalyzer.cpp - chanalyzergui.cpp - chanalyzerplugin.cpp -) - -set(chanalyzer_HEADERS - chanalyzer.h - chanalyzergui.h - chanalyzerplugin.h -) - -set(chanalyzer_FORMS - chanalyzergui.ui -) - -include_directories( - . - ${CMAKE_CURRENT_BINARY_DIR} -) - -#include(${QT_USE_FILE}) -add_definitions(${QT_DEFINITIONS}) -add_definitions(-DQT_PLUGIN) -add_definitions(-DQT_SHARED) - -#qt5_wrap_cpp(chanalyzer_HEADERS_MOC ${chanalyzer_HEADERS}) -qt5_wrap_ui(chanalyzer_FORMS_HEADERS ${chanalyzer_FORMS}) - -add_library(chanalyzer SHARED - ${chanalyzer_SOURCES} - ${chanalyzer_HEADERS_MOC} - ${chanalyzer_FORMS_HEADERS} -) - -target_link_libraries(chanalyzer - ${QT_LIBRARIES} - sdrbase - sdrgui -) - -qt5_use_modules(chanalyzer Core Widgets ) - -install(TARGETS chanalyzer DESTINATION lib/plugins/channelrx) diff --git a/plugins/channelrx/chanalyzer/chanalyzer.cpp b/plugins/channelrx/chanalyzer/chanalyzer.cpp deleted file mode 100644 index 8af199fb5..000000000 --- a/plugins/channelrx/chanalyzer/chanalyzer.cpp +++ /dev/null @@ -1,242 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////// -// Copyright (C) 2015 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 . // -/////////////////////////////////////////////////////////////////////////////////// - -#include "chanalyzer.h" - -#include -#include -#include - -#include -#include "dsp/threadedbasebandsamplesink.h" -#include "device/devicesourceapi.h" -#include "audio/audiooutput.h" - -MESSAGE_CLASS_DEFINITION(ChannelAnalyzer::MsgConfigureChannelAnalyzer, Message) -MESSAGE_CLASS_DEFINITION(ChannelAnalyzer::MsgConfigureChannelizer, Message) -MESSAGE_CLASS_DEFINITION(ChannelAnalyzer::MsgReportChannelSampleRateChanged, Message) - -const QString ChannelAnalyzer::m_channelIdURI = "org.f4exb.sdrangelove.channel.chanalyzer"; -const QString ChannelAnalyzer::m_channelId = "ChannelAnalyzer"; - -ChannelAnalyzer::ChannelAnalyzer(DeviceSourceAPI *deviceAPI) : - ChannelSinkAPI(m_channelIdURI), - m_deviceAPI(deviceAPI), - m_sampleSink(0), - m_settingsMutex(QMutex::Recursive) -{ - setObjectName(m_channelId); - - m_Bandwidth = 5000; - m_LowCutoff = 300; - m_spanLog2 = 3; - m_sampleRate = 96000; - m_frequency = 0; - m_nco.setFreq(m_frequency, m_sampleRate); - m_undersampleCount = 0; - m_sum = 0; - m_usb = true; - m_ssb = true; - m_magsq = 0; - SSBFilter = new fftfilt(m_LowCutoff / m_sampleRate, m_Bandwidth / m_sampleRate, ssbFftLen); - DSBFilter = new fftfilt(m_Bandwidth / m_sampleRate, 2*ssbFftLen); - - m_channelizer = new DownChannelizer(this); - m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); - connect(m_channelizer, SIGNAL(inputSampleRateChanged()), this, SLOT(channelSampleRateChanged())); - m_deviceAPI->addThreadedSink(m_threadedChannelizer); - m_deviceAPI->addChannelAPI(this); -} - -ChannelAnalyzer::~ChannelAnalyzer() -{ - m_deviceAPI->removeChannelAPI(this); - m_deviceAPI->removeThreadedSink(m_threadedChannelizer); - delete m_threadedChannelizer; - delete m_channelizer; - if (SSBFilter) delete SSBFilter; - if (DSBFilter) delete DSBFilter; -} - -void ChannelAnalyzer::configure(MessageQueue* messageQueue, - Real Bandwidth, - Real LowCutoff, - int spanLog2, - bool ssb) -{ - Message* cmd = MsgConfigureChannelAnalyzer::create(Bandwidth, LowCutoff, spanLog2, ssb); - messageQueue->push(cmd); -} - -void ChannelAnalyzer::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly __attribute__((unused))) -{ - fftfilt::cmplx *sideband; - int n_out; - int decim = 1<real(), it->imag()); - c *= m_nco.nextIQ(); - - if (m_ssb) - { - n_out = SSBFilter->runSSB(c, &sideband, m_usb); - } - else - { - n_out = DSBFilter->runDSB(c, &sideband); - } - - for (int i = 0; i < n_out; i++) - { - // Downsample by 2^(m_scaleLog2 - 1) for SSB band spectrum display - // smart decimation with bit gain using float arithmetic (23 bits significand) - - m_sum += sideband[i]; - - if (!(m_undersampleCount++ & decim_mask)) - { - m_sum /= decim; - Real re = m_sum.real() / SDR_RX_SCALED; - Real im = m_sum.imag() / SDR_RX_SCALED; - m_magsq = re*re + im*im; - - if (m_ssb & !m_usb) - { // invert spectrum for LSB - m_sampleBuffer.push_back(Sample(m_sum.imag(), m_sum.real())); - } - else - { - m_sampleBuffer.push_back(Sample(m_sum.real(), m_sum.imag())); - } - - m_sum = 0; - } - } - } - - if(m_sampleSink != NULL) - { - m_sampleSink->feed(m_sampleBuffer.begin(), m_sampleBuffer.end(), m_ssb); // m_ssb = positive only - } - - m_sampleBuffer.clear(); - - m_settingsMutex.unlock(); -} - -void ChannelAnalyzer::start() -{ -} - -void ChannelAnalyzer::stop() -{ -} - -void ChannelAnalyzer::channelSampleRateChanged() -{ - MsgReportChannelSampleRateChanged *msg = MsgReportChannelSampleRateChanged::create(); - getMessageQueueToGUI()->push(msg); -} - -bool ChannelAnalyzer::handleMessage(const Message& cmd) -{ - float band, lowCutoff; - - qDebug() << "ChannelAnalyzer::handleMessage"; - - if (DownChannelizer::MsgChannelizerNotification::match(cmd)) - { - DownChannelizer::MsgChannelizerNotification& notif = (DownChannelizer::MsgChannelizerNotification&) cmd; - - m_sampleRate = notif.getSampleRate(); - m_nco.setFreq(-notif.getFrequencyOffset(), m_sampleRate); - - qDebug() << "ChannelAnalyzer::handleMessage: MsgChannelizerNotification: m_sampleRate: " << m_sampleRate - << " frequencyOffset: " << notif.getFrequencyOffset(); - - return true; - } - else if (MsgConfigureChannelizer::match(cmd)) - { - MsgConfigureChannelizer& cfg = (MsgConfigureChannelizer&) cmd; - - m_channelizer->configure(m_channelizer->getInputMessageQueue(), - m_channelizer->getInputSampleRate(), - cfg.getCenterFrequency()); - - return true; - } - else if (MsgConfigureChannelAnalyzer::match(cmd)) - { - MsgConfigureChannelAnalyzer& cfg = (MsgConfigureChannelAnalyzer&) cmd; - - band = cfg.getBandwidth(); - lowCutoff = cfg.getLoCutoff(); - - if (band < 0) - { - band = -band; - lowCutoff = -lowCutoff; - m_usb = false; - } - else - { - m_usb = true; - } - - if (band < 100.0f) - { - band = 100.0f; - lowCutoff = 0; - } - - m_settingsMutex.lock(); - - m_Bandwidth = band; - m_LowCutoff = lowCutoff; - - SSBFilter->create_filter(m_LowCutoff / m_sampleRate, m_Bandwidth / m_sampleRate); - DSBFilter->create_dsb_filter(m_Bandwidth / m_sampleRate); - - m_spanLog2 = cfg.getSpanLog2(); - m_ssb = cfg.getSSB(); - - m_settingsMutex.unlock(); - - qDebug() << "ChannelAnalyzer::handleMessage: MsgConfigureChannelAnalyzer: m_Bandwidth: " << m_Bandwidth - << " m_LowCutoff: " << m_LowCutoff - << " m_spanLog2: " << m_spanLog2 - << " m_ssb: " << m_ssb; - - return true; - } - else - { - if (m_sampleSink != 0) - { - return m_sampleSink->handleMessage(cmd); - } - else - { - return false; - } - } -} diff --git a/plugins/channelrx/chanalyzer/chanalyzer.h b/plugins/channelrx/chanalyzer/chanalyzer.h deleted file mode 100644 index a45a1d1e2..000000000 --- a/plugins/channelrx/chanalyzer/chanalyzer.h +++ /dev/null @@ -1,167 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////// -// Copyright (C) 2015 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 . // -/////////////////////////////////////////////////////////////////////////////////// - -#ifndef INCLUDE_CHANALYZER_H -#define INCLUDE_CHANALYZER_H - -#include -#include - -#include "dsp/basebandsamplesink.h" -#include "channel/channelsinkapi.h" -#include "dsp/ncof.h" -#include "dsp/fftfilt.h" -#include "audio/audiofifo.h" -#include "util/message.h" - -#define ssbFftLen 1024 - -class DeviceSourceAPI; -class ThreadedBasebandSampleSink; -class DownChannelizer; - -class ChannelAnalyzer : public BasebandSampleSink, public ChannelSinkAPI { -public: - class MsgConfigureChannelAnalyzer : public Message { - MESSAGE_CLASS_DECLARATION - - public: - Real getBandwidth() const { return m_Bandwidth; } - Real getLoCutoff() const { return m_LowCutoff; } - int getSpanLog2() const { return m_spanLog2; } - bool getSSB() const { return m_ssb; } - - static MsgConfigureChannelAnalyzer* create(Real Bandwidth, - Real LowCutoff, - int spanLog2, - bool ssb) - { - return new MsgConfigureChannelAnalyzer(Bandwidth, LowCutoff, spanLog2, ssb); - } - - private: - Real m_Bandwidth; - Real m_LowCutoff; - int m_spanLog2; - bool m_ssb; - - MsgConfigureChannelAnalyzer(Real Bandwidth, - Real LowCutoff, - int spanLog2, - bool ssb) : - Message(), - m_Bandwidth(Bandwidth), - m_LowCutoff(LowCutoff), - m_spanLog2(spanLog2), - m_ssb(ssb) - { } - }; - - class MsgConfigureChannelizer : public Message { - MESSAGE_CLASS_DECLARATION - - public: - int getCenterFrequency() const { return m_centerFrequency; } - - static MsgConfigureChannelizer* create(int centerFrequency) - { - return new MsgConfigureChannelizer(centerFrequency); - } - - private: - int m_centerFrequency; - - MsgConfigureChannelizer(int centerFrequency) : - Message(), - m_centerFrequency(centerFrequency) - { } - }; - - class MsgReportChannelSampleRateChanged : public Message { - MESSAGE_CLASS_DECLARATION - - public: - - static MsgReportChannelSampleRateChanged* create() - { - return new MsgReportChannelSampleRateChanged(); - } - - private: - - MsgReportChannelSampleRateChanged() : - Message() - { } - }; - - ChannelAnalyzer(DeviceSourceAPI *deviceAPI); - virtual ~ChannelAnalyzer(); - virtual void destroy() { delete this; } - void setSampleSink(BasebandSampleSink* sampleSink) { m_sampleSink = sampleSink; } - - void configure(MessageQueue* messageQueue, - Real Bandwidth, - Real LowCutoff, - int spanLog2, - bool ssb); - - int getSampleRate() const { return m_sampleRate; } - Real getMagSq() const { return m_magsq; } - - virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly); - virtual void start(); - virtual void stop(); - virtual bool handleMessage(const Message& cmd); - - virtual void getIdentifier(QString& id) { id = objectName(); } - virtual void getTitle(QString& title) { title = objectName(); } - virtual qint64 getCenterFrequency() const { return m_frequency; } - - virtual QByteArray serialize() const { return QByteArray(); } - virtual bool deserialize(const QByteArray& data __attribute__((unused))) { return false; } - - static const QString m_channelIdURI; - static const QString m_channelId; - -private slots: - void channelSampleRateChanged(); - -private: - DeviceSourceAPI *m_deviceAPI; - ThreadedBasebandSampleSink* m_threadedChannelizer; - DownChannelizer* m_channelizer; - - Real m_Bandwidth; - Real m_LowCutoff; - int m_spanLog2; - int m_undersampleCount; - fftfilt::cmplx m_sum; - int m_sampleRate; - int m_frequency; - bool m_usb; - bool m_ssb; - Real m_magsq; - - NCOF m_nco; - fftfilt* SSBFilter; - fftfilt* DSBFilter; - - BasebandSampleSink* m_sampleSink; - SampleVector m_sampleBuffer; - QMutex m_settingsMutex; -}; - -#endif // INCLUDE_CHANALYZER_H diff --git a/plugins/channelrx/chanalyzer/chanalyzer.pro b/plugins/channelrx/chanalyzer/chanalyzer.pro deleted file mode 100644 index e46850563..000000000 --- a/plugins/channelrx/chanalyzer/chanalyzer.pro +++ /dev/null @@ -1,46 +0,0 @@ -#-------------------------------------------------------- -# -# Pro file for Android and Windows builds with Qt Creator -# -#-------------------------------------------------------- - -TEMPLATE = lib -CONFIG += plugin - -QT += core gui widgets multimedia opengl - -TARGET = chanalyzer - -DEFINES += USE_SSE2=1 -QMAKE_CXXFLAGS += -msse2 -DEFINES += USE_SSE4_1=1 -QMAKE_CXXFLAGS += -msse4.1 -QMAKE_CXXFLAGS += -std=c++11 - -INCLUDEPATH += $$PWD -INCLUDEPATH += ../../../exports -INCLUDEPATH += ../../../sdrbase -INCLUDEPATH += ../../../sdrgui - -CONFIG(ANDROID):INCLUDEPATH += /opt/softs/boost_1_60_0 -CONFIG(MINGW32):INCLUDEPATH += "D:\boost_1_58_0" -CONFIG(MINGW64):INCLUDEPATH += "D:\boost_1_58_0" -CONFIG(macx):INCLUDEPATH += "../../../../../boost_1_64_0" - -CONFIG(Release):build_subdir = release -CONFIG(Debug):build_subdir = debug - -SOURCES += chanalyzer.cpp\ - chanalyzergui.cpp\ - chanalyzerplugin.cpp - -HEADERS += chanalyzer.h\ -chanalyzergui.h\ -chanalyzerplugin.h - -FORMS += chanalyzergui.ui - -LIBS += -L../../../sdrbase/$${build_subdir} -lsdrbase -LIBS += -L../../../sdrgui/$${build_subdir} -lsdrgui - -RESOURCES = ../../../sdrgui/resources/res.qrc diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.cpp b/plugins/channelrx/chanalyzer/chanalyzergui.cpp deleted file mode 100644 index 8a966b09c..000000000 --- a/plugins/channelrx/chanalyzer/chanalyzergui.cpp +++ /dev/null @@ -1,487 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////// -// Copyright (C) 2015 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 . // -/////////////////////////////////////////////////////////////////////////////////// - -#include "chanalyzergui.h" - -#include -#include "device/deviceuiset.h" -#include -#include -#include - -#include "dsp/threadedbasebandsamplesink.h" -#include "ui_chanalyzergui.h" -#include "dsp/spectrumscopecombovis.h" -#include "dsp/spectrumvis.h" -#include "dsp/scopevis.h" -#include "gui/glspectrum.h" -#include "gui/glscope.h" -#include "plugin/pluginapi.h" -#include "util/simpleserializer.h" -#include "util/db.h" -#include "dsp/dspengine.h" -#include "mainwindow.h" - -#include "chanalyzer.h" - -ChannelAnalyzerGUI* ChannelAnalyzerGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) -{ - ChannelAnalyzerGUI* gui = new ChannelAnalyzerGUI(pluginAPI, deviceUISet, rxChannel); - return gui; -} - -void ChannelAnalyzerGUI::destroy() -{ - delete this; -} - -void ChannelAnalyzerGUI::setName(const QString& name) -{ - setObjectName(name); -} - -QString ChannelAnalyzerGUI::getName() const -{ - return objectName(); -} - -qint64 ChannelAnalyzerGUI::getCenterFrequency() const -{ - return m_channelMarker.getCenterFrequency(); -} - -void ChannelAnalyzerGUI::setCenterFrequency(qint64 centerFrequency) -{ - m_channelMarker.setCenterFrequency(centerFrequency); - applySettings(); -} - -void ChannelAnalyzerGUI::resetToDefaults() -{ - blockApplySettings(true); - - ui->BW->setValue(30); - ui->deltaFrequency->setValue(0); - ui->spanLog2->setValue(3); - - blockApplySettings(false); - applySettings(); -} - -QByteArray ChannelAnalyzerGUI::serialize() const -{ - SimpleSerializer s(1); - s.writeS32(1, m_channelMarker.getCenterFrequency()); - s.writeS32(2, ui->BW->value()); - s.writeBlob(3, ui->spectrumGUI->serialize()); - s.writeU32(4, m_channelMarker.getColor().rgb()); - s.writeS32(5, ui->lowCut->value()); - s.writeS32(6, ui->spanLog2->value()); - s.writeBool(7, ui->ssb->isChecked()); - s.writeBlob(8, ui->scopeGUI->serialize()); - - return s.final(); -} - -bool ChannelAnalyzerGUI::deserialize(const QByteArray& data) -{ - SimpleDeserializer d(data); - - if(!d.isValid()) - { - resetToDefaults(); - return false; - } - - if(d.getVersion() == 1) - { - QByteArray bytetmp; - quint32 u32tmp; - qint32 tmp, bw, lowCut; - bool tmpBool; - - blockApplySettings(true); - m_channelMarker.blockSignals(true); - - d.readS32(1, &tmp, 0); - m_channelMarker.setCenterFrequency(tmp); - d.readS32(2, &bw, 30); - ui->BW->setValue(bw); - d.readBlob(3, &bytetmp); - ui->spectrumGUI->deserialize(bytetmp); - - if(d.readU32(4, &u32tmp)) - { - m_channelMarker.setColor(u32tmp); - } - - d.readS32(5, &lowCut, 3); - ui->lowCut->setValue(lowCut); - d.readS32(6, &tmp, 20); - ui->spanLog2->setValue(tmp); - setNewRate(tmp); - d.readBool(7, &tmpBool, false); - ui->ssb->setChecked(tmpBool); - d.readBlob(8, &bytetmp); - ui->scopeGUI->deserialize(bytetmp); - - blockApplySettings(false); - m_channelMarker.blockSignals(false); - m_channelMarker.emitChangedByAPI(); - - ui->BW->setValue(bw); - ui->lowCut->setValue(lowCut); // does applySettings(); - - return true; - } - else - { - resetToDefaults(); - return false; - } -} - -bool ChannelAnalyzerGUI::handleMessage(const Message& message) -{ - if (ChannelAnalyzer::MsgReportChannelSampleRateChanged::match(message)) - { - setNewRate(m_spanLog2); - return true; - } - - return false; -} - -void ChannelAnalyzerGUI::handleInputMessages() -{ - Message* message; - - while ((message = getInputMessageQueue()->pop()) != 0) - { - qDebug("ChannelAnalyzerGUI::handleInputMessages: message: %s", message->getIdentifier()); - - if (handleMessage(*message)) - { - delete message; - } - } -} - -void ChannelAnalyzerGUI::channelMarkerChangedByCursor() -{ - ui->deltaFrequency->setValue(abs(m_channelMarker.getCenterFrequency())); - ui->deltaMinus->setChecked(m_channelMarker.getCenterFrequency() < 0); - - applySettings(); -} - -void ChannelAnalyzerGUI::channelMarkerHighlightedByCursor() -{ - setHighlighted(m_channelMarker.getHighlighted()); -} - -void ChannelAnalyzerGUI::tick() -{ - Real powDb = CalcDb::dbPower(m_channelAnalyzer->getMagSq()); - m_channelPowerDbAvg(powDb); - ui->channelPower->setText(QString::number((Real) m_channelPowerDbAvg, 'f', 1)); -} - -void ChannelAnalyzerGUI::on_deltaMinus_toggled(bool minus) -{ - int deltaFrequency = m_channelMarker.getCenterFrequency(); - bool minusDelta = (deltaFrequency < 0); - - if (minus ^ minusDelta) // sign change - { - m_channelMarker.setCenterFrequency(-deltaFrequency); - } -} - -void ChannelAnalyzerGUI::on_deltaFrequency_changed(quint64 value) -{ - if (ui->deltaMinus->isChecked()) { - m_channelMarker.setCenterFrequency(-value); - } else { - m_channelMarker.setCenterFrequency(value); - } - - applySettings(); -} - -void ChannelAnalyzerGUI::on_BW_valueChanged(int value) -{ - QString s = QString::number(value/10.0, 'f', 1); - ui->BWText->setText(tr("%1k").arg(s)); - m_channelMarker.setBandwidth(value * 100 * 2); - - if (ui->ssb->isChecked()) - { - if (value < 0) { - m_channelMarker.setSidebands(ChannelMarker::lsb); - } else { - m_channelMarker.setSidebands(ChannelMarker::usb); - } - } - else - { - m_channelMarker.setSidebands(ChannelMarker::dsb); - } - - on_lowCut_valueChanged(m_channelMarker.getLowCutoff()/100); -} - -int ChannelAnalyzerGUI::getEffectiveLowCutoff(int lowCutoff) -{ - int ssbBW = m_channelMarker.getBandwidth() / 2; - int effectiveLowCutoff = lowCutoff; - const int guard = 100; - - if (ssbBW < 0) { - if (effectiveLowCutoff < ssbBW + guard) { - effectiveLowCutoff = ssbBW + guard; - } - if (effectiveLowCutoff > 0) { - effectiveLowCutoff = 0; - } - } else { - if (effectiveLowCutoff > ssbBW - guard) { - effectiveLowCutoff = ssbBW - guard; - } - if (effectiveLowCutoff < 0) { - effectiveLowCutoff = 0; - } - } - - return effectiveLowCutoff; -} - -void ChannelAnalyzerGUI::on_lowCut_valueChanged(int value) -{ - int lowCutoff = getEffectiveLowCutoff(value * 100); - m_channelMarker.setLowCutoff(lowCutoff); - QString s = QString::number(lowCutoff/1000.0, 'f', 1); - ui->lowCutText->setText(tr("%1k").arg(s)); - ui->lowCut->setValue(lowCutoff/100); - applySettings(); -} - -void ChannelAnalyzerGUI::on_spanLog2_valueChanged(int value) -{ - if (setNewRate(value)) { - applySettings(); - } - -} - -void ChannelAnalyzerGUI::on_ssb_toggled(bool checked) -{ - if (checked) - { - if (ui->BW->value() < 0) { - m_channelMarker.setSidebands(ChannelMarker::lsb); - } else { - m_channelMarker.setSidebands(ChannelMarker::usb); - } - - ui->glSpectrum->setCenterFrequency(m_rate/4); - ui->glSpectrum->setSampleRate(m_rate/2); - ui->glSpectrum->setSsbSpectrum(true); - - on_lowCut_valueChanged(m_channelMarker.getLowCutoff()/100); - } - else - { - m_channelMarker.setSidebands(ChannelMarker::dsb); - - ui->glSpectrum->setCenterFrequency(0); - ui->glSpectrum->setSampleRate(m_rate); - ui->glSpectrum->setSsbSpectrum(false); - - applySettings(); - } -} - -void ChannelAnalyzerGUI::onWidgetRolled(QWidget* widget __attribute__((unused)), bool rollDown __attribute__((unused))) -{ - /* - if((widget == ui->spectrumContainer) && (m_ssbDemod != NULL)) - m_ssbDemod->setSpectrum(m_threadedSampleSink->getMessageQueue(), rollDown); - */ -} - -ChannelAnalyzerGUI::ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : - RollupWidget(parent), - ui(new Ui::ChannelAnalyzerGUI), - m_pluginAPI(pluginAPI), - m_deviceUISet(deviceUISet), - m_channelMarker(this), - m_doApplySettings(true), - m_rate(6000), - m_spanLog2(3) -{ - ui->setupUi(this); - setAttribute(Qt::WA_DeleteOnClose, true); - connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); - - m_spectrumVis = new SpectrumVis(SDR_RX_SCALEF, ui->glSpectrum); - m_scopeVis = new ScopeVis(SDR_RX_SCALEF, ui->glScope); - m_spectrumScopeComboVis = new SpectrumScopeComboVis(m_spectrumVis, m_scopeVis); - m_channelAnalyzer = (ChannelAnalyzer*) rxChannel; //new ChannelAnalyzer(m_deviceUISet->m_deviceSourceAPI); - m_channelAnalyzer->setSampleSink(m_spectrumScopeComboVis); - m_channelAnalyzer->setMessageQueueToGUI(getInputMessageQueue()); - - ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::ReverseGold)); - ui->deltaFrequency->setValueRange(7, 0U, 9999999U); - - ui->glSpectrum->setCenterFrequency(m_rate/2); - ui->glSpectrum->setSampleRate(m_rate); - ui->glSpectrum->setDisplayWaterfall(true); - ui->glSpectrum->setDisplayMaxHold(true); - ui->glSpectrum->setSsbSpectrum(true); - - ui->glSpectrum->connectTimer(MainWindow::getInstance()->getMasterTimer()); - ui->glScope->connectTimer(MainWindow::getInstance()->getMasterTimer()); - connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); - - m_channelMarker.blockSignals(true); - m_channelMarker.setColor(Qt::gray); - m_channelMarker.setBandwidth(m_rate); - m_channelMarker.setSidebands(ChannelMarker::usb); - m_channelMarker.setCenterFrequency(0); - m_channelMarker.blockSignals(false); - m_channelMarker.setVisible(true); // activate signal on the last setting only - setTitleColor(m_channelMarker.getColor()); - - m_deviceUISet->registerRxChannelInstance(ChannelAnalyzer::m_channelIdURI, this); - m_deviceUISet->addChannelMarker(&m_channelMarker); - m_deviceUISet->addRollupWidget(this); - - ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum); - ui->scopeGUI->setBuddies(m_scopeVis->getInputMessageQueue(), m_scopeVis, ui->glScope); - - connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor())); - connect(&m_channelMarker, SIGNAL(highlightedByCursor()), this, SLOT(channelMarkerHighlightedByCursor())); - connect(getInputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleInputMessages())); - - applySettings(); - setNewRate(m_spanLog2); -} - -ChannelAnalyzerGUI::~ChannelAnalyzerGUI() -{ - m_deviceUISet->removeRxChannelInstance(this); - delete m_channelAnalyzer; // TODO: check this: when the GUI closes it has to delete the demodulator - delete m_spectrumVis; - delete m_scopeVis; - delete m_spectrumScopeComboVis; - delete ui; -} - -bool ChannelAnalyzerGUI::setNewRate(int spanLog2) -{ - qDebug("ChannelAnalyzerGUI::setNewRate"); - - if ((spanLog2 < 0) || (spanLog2 > 6)) { - return false; - } - - m_spanLog2 = spanLog2; - m_rate = m_channelAnalyzer->getSampleRate() / (1<BW->value() < -m_rate/200) { - ui->BW->setValue(-m_rate/200); - m_channelMarker.setBandwidth(-m_rate*2); - } else if (ui->BW->value() > m_rate/200) { - ui->BW->setValue(m_rate/200); - m_channelMarker.setBandwidth(m_rate*2); - } - - if (ui->lowCut->value() < -m_rate/200) { - ui->lowCut->setValue(-m_rate/200); - m_channelMarker.setLowCutoff(-m_rate); - } else if (ui->lowCut->value() > m_rate/200) { - ui->lowCut->setValue(m_rate/200); - m_channelMarker.setLowCutoff(m_rate); - } - - ui->BW->setMinimum(-m_rate/200); - ui->lowCut->setMinimum(-m_rate/200); - ui->BW->setMaximum(m_rate/200); - ui->lowCut->setMaximum(m_rate/200); - - QString s = QString::number(m_rate/1000.0, 'f', 1); - ui->spanText->setText(tr("%1k").arg(s)); - - if (ui->ssb->isChecked()) - { - if (ui->BW->value() < 0) { - m_channelMarker.setSidebands(ChannelMarker::lsb); - } else { - m_channelMarker.setSidebands(ChannelMarker::usb); - } - - ui->glSpectrum->setCenterFrequency(m_rate/4); - ui->glSpectrum->setSampleRate(m_rate/2); - ui->glSpectrum->setSsbSpectrum(true); - } - else - { - m_channelMarker.setSidebands(ChannelMarker::dsb); - - ui->glSpectrum->setCenterFrequency(0); - ui->glSpectrum->setSampleRate(m_rate); - ui->glSpectrum->setSsbSpectrum(false); - } - - ui->glScope->setSampleRate(m_rate); - m_scopeVis->setSampleRate(m_rate); - - return true; -} - -void ChannelAnalyzerGUI::blockApplySettings(bool block) -{ - ui->glScope->blockSignals(block); - ui->glSpectrum->blockSignals(block); - m_doApplySettings = !block; -} - -void ChannelAnalyzerGUI::applySettings() -{ - if (m_doApplySettings) - { - ChannelAnalyzer::MsgConfigureChannelizer *msg = ChannelAnalyzer::MsgConfigureChannelizer::create(m_channelMarker.getCenterFrequency()); - m_channelAnalyzer->getInputMessageQueue()->push(msg); - - m_channelAnalyzer->configure(m_channelAnalyzer->getInputMessageQueue(), - ui->BW->value() * 100.0, - ui->lowCut->value() * 100.0, - m_spanLog2, - ui->ssb->isChecked()); - } -} - -void ChannelAnalyzerGUI::leaveEvent(QEvent*) -{ - m_channelMarker.setHighlighted(false); -} - -void ChannelAnalyzerGUI::enterEvent(QEvent*) -{ - m_channelMarker.setHighlighted(true); -} - diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.h b/plugins/channelrx/chanalyzer/chanalyzergui.h deleted file mode 100644 index d81a8dc9c..000000000 --- a/plugins/channelrx/chanalyzer/chanalyzergui.h +++ /dev/null @@ -1,101 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////// -// Copyright (C) 2015 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 . // -/////////////////////////////////////////////////////////////////////////////////// - -#ifndef INCLUDE_CHANNELANALYZERGUI_H -#define INCLUDE_CHANNELANALYZERGUI_H - -#include -#include "gui/rollupwidget.h" -#include "dsp/channelmarker.h" -#include "dsp/dsptypes.h" -#include "util/movingaverage.h" -#include "util/messagequeue.h" - -class PluginAPI; -class DeviceUISet; -class BasebandSampleSink; -class ChannelAnalyzer; -class SpectrumScopeComboVis; -class SpectrumVis; -class ScopeVis; - -namespace Ui { - class ChannelAnalyzerGUI; -} - -class ChannelAnalyzerGUI : public RollupWidget, public PluginInstanceGUI { - Q_OBJECT - -public: - static ChannelAnalyzerGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUIset, BasebandSampleSink *rxChannel); - virtual void destroy(); - - void setName(const QString& name); - QString getName() const; - virtual qint64 getCenterFrequency() const; - virtual void setCenterFrequency(qint64 centerFrequency); - - void resetToDefaults(); - QByteArray serialize() const; - bool deserialize(const QByteArray& data); - virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } - virtual bool handleMessage(const Message& message); - -public slots: - void channelMarkerChangedByCursor(); - void channelMarkerHighlightedByCursor(); - -private: - Ui::ChannelAnalyzerGUI* ui; - PluginAPI* m_pluginAPI; - DeviceUISet* m_deviceUISet; - ChannelMarker m_channelMarker; - bool m_doApplySettings; - int m_rate; - int m_spanLog2; - MovingAverageUtil m_channelPowerDbAvg; - - ChannelAnalyzer* m_channelAnalyzer; - SpectrumScopeComboVis* m_spectrumScopeComboVis; - SpectrumVis* m_spectrumVis; - ScopeVis* m_scopeVis; - MessageQueue m_inputMessageQueue; - - explicit ChannelAnalyzerGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); - virtual ~ChannelAnalyzerGUI(); - - int getEffectiveLowCutoff(int lowCutoff); - bool setNewRate(int spanLog2); - - void blockApplySettings(bool block); - void applySettings(); - - void leaveEvent(QEvent*); - void enterEvent(QEvent*); - -private slots: - void on_deltaFrequency_changed(quint64 value); - void on_deltaMinus_toggled(bool minus); - void on_BW_valueChanged(int value); - void on_lowCut_valueChanged(int value); - void on_spanLog2_valueChanged(int value); - void on_ssb_toggled(bool checked); - void onWidgetRolled(QWidget* widget, bool rollDown); - void handleInputMessages(); - void tick(); -}; - -#endif // INCLUDE_CHANNELANALYZERGUI_H diff --git a/plugins/channelrx/chanalyzer/chanalyzergui.ui b/plugins/channelrx/chanalyzer/chanalyzergui.ui deleted file mode 100644 index 2ea84a2bb..000000000 --- a/plugins/channelrx/chanalyzer/chanalyzergui.ui +++ /dev/null @@ -1,540 +0,0 @@ - - - ChannelAnalyzerGUI - - - - 0 - 0 - 640 - 814 - - - - - 640 - 0 - - - - - Liberation Sans - 9 - - - - Channel Analyzer - - - - - 0 - 10 - 301 - 131 - - - - Settings - - - - 3 - - - 2 - - - 2 - - - 2 - - - 2 - - - - - - - - - Frequency shift direction - - - ... - - - - :/plus.png - :/minus.png - - - - true - - - false - - - - - - - - 0 - 0 - - - - - 32 - 16 - - - - - Monospace - 12 - - - - SizeVerCursor - - - Qt::StrongFocus - - - Demod shift frequency from center in Hz - - - - - - - - - - - - 26 - 26 - 26 - - - - - - - 255 - 255 - 255 - - - - - - - - - 26 - 26 - 26 - - - - - - - 255 - 255 - 255 - - - - - - - - - 118 - 118 - 117 - - - - - - - 255 - 255 - 255 - - - - - - - - Hz - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Channel power - - - Qt::LeftToRight - - - 0.0 - - - - - - - dB - - - - - - - - - - - - - Rate - - - - - - - Channel sample rate - - - 0 - - - 6 - - - 1 - - - 3 - - - 3 - - - Qt::Horizontal - - - true - - - true - - - - - - - 6.0k - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - SSB/DSB toggle - - - SSB - - - - - - - - - - - BW - - - - - - - Lowpass filter cutoff frequency - - - -60 - - - 60 - - - 1 - - - 30 - - - Qt::Horizontal - - - - - - - - 50 - 0 - - - - 3.0k - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - Low cut. - - - - - - - Highpass filter cutoff frequency (SSB) - - - -60 - - - 60 - - - 1 - - - 3 - - - Qt::Horizontal - - - - - - - - 50 - 0 - - - - 0.3k - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - 10 - 180 - 636 - 284 - - - - - 636 - 0 - - - - Channel Spectrum - - - - 2 - - - 2 - - - 2 - - - 2 - - - 2 - - - - - - 200 - 250 - - - - - Monospace - 8 - - - - - - - - - - - - - 0 - 470 - 636 - 284 - - - - - 636 - 0 - - - - Channel Scope - - - - 2 - - - 3 - - - 3 - - - 3 - - - 3 - - - - - - 200 - 250 - - - - - Monospace - 8 - - - - - - - - - - - - - RollupWidget - QWidget -
gui/rollupwidget.h
- 1 -
- - ValueDial - QWidget -
gui/valuedial.h
- 1 -
- - GLSpectrum - QWidget -
gui/glspectrum.h
- 1 -
- - GLSpectrumGUI - QWidget -
gui/glspectrumgui.h
- 1 -
- - GLScope - QWidget -
gui/glscope.h
- 1 -
- - GLScopeGUI - QWidget -
gui/glscopegui.h
- 1 -
-
- - - - -
diff --git a/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp b/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp deleted file mode 100644 index 32f33cc41..000000000 --- a/plugins/channelrx/chanalyzer/chanalyzerplugin.cpp +++ /dev/null @@ -1,50 +0,0 @@ -#include "chanalyzerplugin.h" - -#include -#include "plugin/pluginapi.h" - -#include "chanalyzergui.h" -#include "chanalyzer.h" - -const PluginDescriptor ChannelAnalyzerPlugin::m_pluginDescriptor = { - QString("Channel Analyzer"), - QString("3.14.5"), - QString("(c) Edouard Griffiths, F4EXB"), - QString("https://github.com/f4exb/sdrangel"), - true, - QString("https://github.com/f4exb/sdrangel") -}; - -ChannelAnalyzerPlugin::ChannelAnalyzerPlugin(QObject* parent) : - QObject(parent), - m_pluginAPI(0) -{ -} - -const PluginDescriptor& ChannelAnalyzerPlugin::getPluginDescriptor() const -{ - return m_pluginDescriptor; -} - -void ChannelAnalyzerPlugin::initPlugin(PluginAPI* pluginAPI) -{ - m_pluginAPI = pluginAPI; - - // register demodulator - m_pluginAPI->registerRxChannel(ChannelAnalyzer::m_channelIdURI, ChannelAnalyzer::m_channelId, this); -} - -PluginInstanceGUI* ChannelAnalyzerPlugin::createRxChannelGUI(DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) -{ - return ChannelAnalyzerGUI::create(m_pluginAPI, deviceUISet, rxChannel); -} - -BasebandSampleSink* ChannelAnalyzerPlugin::createRxChannelBS(DeviceSourceAPI *deviceAPI) -{ - return new ChannelAnalyzer(deviceAPI); -} - -ChannelSinkAPI* ChannelAnalyzerPlugin::createRxChannelCS(DeviceSourceAPI *deviceAPI) -{ - return new ChannelAnalyzer(deviceAPI); -} diff --git a/plugins/channelrx/chanalyzer/chanalyzerplugin.h b/plugins/channelrx/chanalyzer/chanalyzerplugin.h deleted file mode 100644 index e8a48d3b6..000000000 --- a/plugins/channelrx/chanalyzer/chanalyzerplugin.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef INCLUDE_CHANALYZERPLUGIN_H -#define INCLUDE_CHANALYZERPLUGIN_H - -#include -#include "plugin/plugininterface.h" - -class DeviceUISet; -class BasebandSampleSink; -class ChannelSinkAPI; - -class ChannelAnalyzerPlugin : public QObject, PluginInterface { - Q_OBJECT - Q_INTERFACES(PluginInterface) - Q_PLUGIN_METADATA(IID "org.f4exb.sdrangelove.channel.chanalyzer") - -public: - explicit ChannelAnalyzerPlugin(QObject* parent = NULL); - - const PluginDescriptor& getPluginDescriptor() const; - void initPlugin(PluginAPI* pluginAPI); - - virtual PluginInstanceGUI* createRxChannelGUI(DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); - virtual BasebandSampleSink* createRxChannelBS(DeviceSourceAPI *deviceAPI); - virtual ChannelSinkAPI* createRxChannelCS(DeviceSourceAPI *deviceAPI); - -private: - static const PluginDescriptor m_pluginDescriptor; - - PluginAPI* m_pluginAPI; -}; - -#endif // INCLUDE_CHANALYZERPLUGIN_H diff --git a/plugins/channelrx/tcpsrc/CMakeLists.txt b/plugins/channelrx/tcpsrc/CMakeLists.txt deleted file mode 100644 index 6986907b6..000000000 --- a/plugins/channelrx/tcpsrc/CMakeLists.txt +++ /dev/null @@ -1,48 +0,0 @@ -project(tcpsrc) - -set(tcpsrc_SOURCES - tcpsrc.cpp - tcpsrcgui.cpp - tcpsrcplugin.cpp - tcpsrcsettings.cpp -) - -set(tcpsrc_HEADERS - tcpsrc.h - tcpsrcgui.h - tcpsrcplugin.h - tcpsrcsettings.h -) - -set(tcpsrc_FORMS - tcpsrcgui.ui -) - -include_directories( - . - ${CMAKE_CURRENT_BINARY_DIR} -) - -#include(${QT_USE_FILE}) -add_definitions(${QT_DEFINITIONS}) -add_definitions(-DQT_PLUGIN) -add_definitions(-DQT_SHARED) - -#qt5_wrap_cpp(tcpsrc_HEADERS_MOC ${tcpsrc_HEADERS}) -qt5_wrap_ui(tcpsrc_FORMS_HEADERS ${tcpsrc_FORMS}) - -add_library(demodtcpsrc SHARED - ${tcpsrc_SOURCES} - ${tcpsrc_HEADERS_MOC} - ${tcpsrc_FORMS_HEADERS} -) - -target_link_libraries(demodtcpsrc - ${QT_LIBRARIES} - sdrbase - sdrgui -) - -qt5_use_modules(demodtcpsrc Core Widgets Network) - -install(TARGETS demodtcpsrc DESTINATION lib/plugins/channelrx) diff --git a/plugins/channelrx/tcpsrc/tcpsrc.cpp b/plugins/channelrx/tcpsrc/tcpsrc.cpp deleted file mode 100644 index 5e19f537f..000000000 --- a/plugins/channelrx/tcpsrc/tcpsrc.cpp +++ /dev/null @@ -1,487 +0,0 @@ -// Copyright (C) 2012 maintech GmbH, Otto-Hahn-Str. 15, 97204 Hoechberg, Germany // -// (C) 2015 John Greb // -// // -// 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 . // -/////////////////////////////////////////////////////////////////////////////////// - -#include "tcpsrc.h" - -#include -#include - -#include "dsp/downchannelizer.h" -#include "dsp/threadedbasebandsamplesink.h" -#include "dsp/dspcommands.h" -#include "device/devicesourceapi.h" - -#include "tcpsrcgui.h" - -MESSAGE_CLASS_DEFINITION(TCPSrc::MsgConfigureTCPSrc, Message) -MESSAGE_CLASS_DEFINITION(TCPSrc::MsgConfigureChannelizer, Message) -MESSAGE_CLASS_DEFINITION(TCPSrc::MsgTCPSrcConnection, Message) -MESSAGE_CLASS_DEFINITION(TCPSrc::MsgTCPSrcSpectrum, Message) - -const QString TCPSrc::m_channelIdURI = "sdrangel.channel.tcpsrc"; -const QString TCPSrc::m_channelId = "TCPSrc"; - -TCPSrc::TCPSrc(DeviceSourceAPI* deviceAPI) : - ChannelSinkAPI(m_channelIdURI), - m_deviceAPI(deviceAPI), - m_absoluteFrequencyOffset(0), - m_settingsMutex(QMutex::Recursive) -{ - setObjectName(m_channelId); - - m_inputSampleRate = 96000; - m_sampleFormat = TCPSrcSettings::FormatSSB; - m_outputSampleRate = 48000; - m_rfBandwidth = 32000; - m_tcpServer = 0; - m_tcpPort = 9999; - m_nco.setFreq(0, m_inputSampleRate); - m_interpolator.create(16, m_inputSampleRate, m_rfBandwidth / 2.0); - m_sampleDistanceRemain = m_inputSampleRate / m_outputSampleRate; - m_spectrum = 0; - m_spectrumEnabled = false; - m_nextSSBId = 0; - m_nextS16leId = 0; - - m_last = 0; - m_this = 0; - m_scale = 0; - m_volume = 0; - m_magsq = 0; - - m_sampleBufferSSB.resize(tcpFftLen); - TCPFilter = new fftfilt(0.3 / 48.0, 16.0 / 48.0, tcpFftLen); - - m_channelizer = new DownChannelizer(this); - m_threadedChannelizer = new ThreadedBasebandSampleSink(m_channelizer, this); - m_deviceAPI->addThreadedSink(m_threadedChannelizer); - m_deviceAPI->addChannelAPI(this); -} - -TCPSrc::~TCPSrc() -{ - m_deviceAPI->removeChannelAPI(this); - m_deviceAPI->removeThreadedSink(m_threadedChannelizer); - delete m_threadedChannelizer; - delete m_channelizer; - delete TCPFilter; -} - -void TCPSrc::setSpectrum(MessageQueue* messageQueue, bool enabled) -{ - Message* cmd = MsgTCPSrcSpectrum::create(enabled); - messageQueue->push(cmd); -} - -void TCPSrc::feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly) -{ - Complex ci; - fftfilt::cmplx* sideband; - Real l, r; - - m_sampleBuffer.clear(); - - m_settingsMutex.lock(); - - // Rtl-Sdr uses full 16-bit scale; FCDPP does not - int rescale = (1 << m_volume); - - for(SampleVector::const_iterator it = begin; it < end; ++it) { - Complex c(it->real(), it->imag()); - c *= m_nco.nextIQ(); - - if(m_interpolator.decimate(&m_sampleDistanceRemain, c, &ci)) - { - m_magsq = ((ci.real()*ci.real() + ci.imag()*ci.imag())*rescale*rescale) / (SDR_RX_SCALED*SDR_RX_SCALED); - m_sampleBuffer.push_back(Sample(ci.real() * rescale, ci.imag() * rescale)); - m_sampleDistanceRemain += m_inputSampleRate / m_outputSampleRate; - } - } - - if((m_spectrum != 0) && (m_spectrumEnabled)) - { - m_spectrum->feed(m_sampleBuffer.begin(), m_sampleBuffer.end(), positiveOnly); - } - - for(int i = 0; i < m_s16leSockets.count(); i++) - { - m_s16leSockets[i].socket->write((const char*)&m_sampleBuffer[0], m_sampleBuffer.size() * 4); - } - - if((m_sampleFormat == TCPSrcSettings::FormatSSB) && (m_ssbSockets.count() > 0)) { - for(SampleVector::const_iterator it = m_sampleBuffer.begin(); it != m_sampleBuffer.end(); ++it) { - //Complex cj(it->real() / 30000.0, it->imag() / 30000.0); - Complex cj(it->real(), it->imag()); - int n_out = TCPFilter->runSSB(cj, &sideband, true); - if (n_out) { - for (int i = 0; i < n_out; i+=2) { - //l = (sideband[i].real() + sideband[i].imag()) * 0.7 * 32000.0; - //r = (sideband[i+1].real() + sideband[i+1].imag()) * 0.7 * 32000.0; - l = (sideband[i].real() + sideband[i].imag()) * 0.7; - r = (sideband[i+1].real() + sideband[i+1].imag()) * 0.7; - m_sampleBufferSSB.push_back(Sample(l, r)); - } - for(int i = 0; i < m_ssbSockets.count(); i++) - m_ssbSockets[i].socket->write((const char*)&m_sampleBufferSSB[0], n_out * 2); - m_sampleBufferSSB.clear(); - } - } - } - - if((m_sampleFormat == TCPSrcSettings::FormatNFM) && (m_ssbSockets.count() > 0)) { - for(SampleVector::const_iterator it = m_sampleBuffer.begin(); it != m_sampleBuffer.end(); ++it) { - Complex cj(it->real() / SDR_RX_SCALEF, it->imag() / SDR_RX_SCALEF); - // An FFT filter here is overkill, but was already set up for SSB - int n_out = TCPFilter->runFilt(cj, &sideband); - if (n_out) { - Real sum = 1.0; - for (int i = 0; i < n_out; i+=2) { - l = m_this.real() * (m_last.imag() - sideband[i].imag()) - - m_this.imag() * (m_last.real() - sideband[i].real()); - m_last = sideband[i]; - r = m_last.real() * (m_this.imag() - sideband[i+1].imag()) - - m_last.imag() * (m_this.real() - sideband[i+1].real()); - m_this = sideband[i+1]; - m_sampleBufferSSB.push_back(Sample(l * m_scale, r * m_scale)); - sum += m_this.real() * m_this.real() + m_this.imag() * m_this.imag(); - } - // TODO: correct levels - m_scale = 24000 * tcpFftLen / sum; - for(int i = 0; i < m_ssbSockets.count(); i++) - m_ssbSockets[i].socket->write((const char*)&m_sampleBufferSSB[0], n_out * 2); - m_sampleBufferSSB.clear(); - } - } - } - - m_settingsMutex.unlock(); -} - -void TCPSrc::start() -{ - m_tcpServer = new QTcpServer(); - connect(m_tcpServer, SIGNAL(newConnection()), this, SLOT(onNewConnection())); - connect(m_tcpServer, SIGNAL(acceptError(QAbstractSocket::SocketError)), this, SLOT(onTcpServerError(QAbstractSocket::SocketError))); - m_tcpServer->listen(QHostAddress::Any, m_tcpPort); -} - -void TCPSrc::stop() -{ - closeAllSockets(&m_ssbSockets); - closeAllSockets(&m_s16leSockets); - - if(m_tcpServer->isListening()) - m_tcpServer->close(); - delete m_tcpServer; -} - -bool TCPSrc::handleMessage(const Message& cmd) -{ - if (DownChannelizer::MsgChannelizerNotification::match(cmd)) - { - DownChannelizer::MsgChannelizerNotification& notif = (DownChannelizer::MsgChannelizerNotification&) cmd; - - m_settingsMutex.lock(); - - m_inputSampleRate = notif.getSampleRate(); - m_nco.setFreq(-notif.getFrequencyOffset(), m_inputSampleRate); - m_interpolator.create(16, m_inputSampleRate, m_rfBandwidth / 2.0); - m_sampleDistanceRemain = m_inputSampleRate / m_outputSampleRate; - - m_settingsMutex.unlock(); - - qDebug() << "TCPSrc::handleMessage: MsgChannelizerNotification: m_inputSampleRate: " << m_inputSampleRate - << " frequencyOffset: " << notif.getFrequencyOffset(); - - return true; - } - else if (MsgConfigureChannelizer::match(cmd)) - { - MsgConfigureChannelizer& cfg = (MsgConfigureChannelizer&) cmd; - - m_channelizer->configure(m_channelizer->getInputMessageQueue(), - cfg.getSampleRate(), - cfg.getCenterFrequency()); - - qDebug() << "TCPSrc::handleMessage: MsgConfigureChannelizer:" - << " sampleRate: " << cfg.getSampleRate() - << " centerFrequency: " << cfg.getCenterFrequency(); - - return true; - } - else if (MsgConfigureTCPSrc::match(cmd)) - { - MsgConfigureTCPSrc& cfg = (MsgConfigureTCPSrc&) cmd; - - TCPSrcSettings settings = cfg.getSettings(); - - // These settings are set with DownChannelizer::MsgChannelizerNotification - m_absoluteFrequencyOffset = settings.m_inputFrequencyOffset; - settings.m_inputSampleRate = m_settings.m_inputSampleRate; - settings.m_inputFrequencyOffset = m_settings.m_inputFrequencyOffset; - - m_settingsMutex.lock(); - - m_sampleFormat = settings.m_sampleFormat; - m_outputSampleRate = settings.m_outputSampleRate; - m_rfBandwidth = settings.m_rfBandwidth; - - if (settings.m_tcpPort != m_tcpPort) - { - m_tcpPort = settings.m_tcpPort; - - if(m_tcpServer->isListening()) - { - m_tcpServer->close(); - } - - m_tcpServer->listen(QHostAddress::Any, m_tcpPort); - } - - m_volume = settings.m_volume; - m_interpolator.create(16, m_inputSampleRate, m_rfBandwidth / 2.0); - m_sampleDistanceRemain = m_inputSampleRate / m_outputSampleRate; - - if (m_sampleFormat == TCPSrcSettings::FormatSSB) - { - TCPFilter->create_filter(0.3 / 48.0, m_rfBandwidth / 2.0 / m_outputSampleRate); - } - else - { - TCPFilter->create_filter(0.0, m_rfBandwidth / 2.0 / m_outputSampleRate); - } - - m_settingsMutex.unlock(); - - qDebug() << "TCPSrc::handleMessage: MsgConfigureTCPSrc:" - << " m_sampleFormat: " << m_sampleFormat - << " m_outputSampleRate: " << m_outputSampleRate - << " m_rfBandwidth: " << m_rfBandwidth - << " m_volume: " << m_volume; - - m_settings = settings; - - return true; - } - else if (MsgTCPSrcSpectrum::match(cmd)) - { - MsgTCPSrcSpectrum& spc = (MsgTCPSrcSpectrum&) cmd; - - m_spectrumEnabled = spc.getEnabled(); - - qDebug() << "TCPSrc::handleMessage: MsgTCPSrcSpectrum: m_spectrumEnabled: " << m_spectrumEnabled; - - return true; - } - else if (MsgTCPSrcConnection::match(cmd)) - { - MsgTCPSrcConnection& con = (MsgTCPSrcConnection&) cmd; - - qDebug() << "TCPSrc::handleMessage: MsgTCPSrcConnection" - << " connect: " << con.getConnect() - << " id: " << con.getID() - << " peer address: " << con.getPeerAddress() - << " peer port: " << con.getPeerPort(); - - if (con.getConnect()) - { - processNewConnection(); - } - else - { - processDeconnection(); - } - } - else if (DSPSignalNotification::match(cmd)) - { - return true; - } - else - { - if(m_spectrum != 0) - { - return m_spectrum->handleMessage(cmd); - } - else - { - return false; - } - } - - return false; -} - -void TCPSrc::closeAllSockets(Sockets* sockets) -{ - for(int i = 0; i < sockets->count(); ++i) - { - MsgTCPSrcConnection* msg = MsgTCPSrcConnection::create(false, sockets->at(i).id, QHostAddress(), 0); - getInputMessageQueue()->push(msg); - - if (getMessageQueueToGUI()) { // Propagate to GUI - getMessageQueueToGUI()->push(msg); - } - - sockets->at(i).socket->close(); - } -} - -void TCPSrc::onNewConnection() -{ - qDebug("TCPSrc::onNewConnection"); - processNewConnection(); -} - -void TCPSrc::processNewConnection() -{ - qDebug("TCPSrc::processNewConnection"); - - while(m_tcpServer->hasPendingConnections()) - { - qDebug("TCPSrc::processNewConnection: has a pending connection"); - QTcpSocket* connection = m_tcpServer->nextPendingConnection(); - connection->setSocketOption(QAbstractSocket:: KeepAliveOption, 1); - connect(connection, SIGNAL(disconnected()), this, SLOT(onDisconnected())); - - switch(m_sampleFormat) { - - case TCPSrcSettings::FormatNFM: - case TCPSrcSettings::FormatSSB: - { - quint32 id = (TCPSrcSettings::FormatSSB << 24) | m_nextSSBId; - m_nextSSBId = (m_nextSSBId + 1) & 0xffffff; - m_ssbSockets.push_back(Socket(id, connection)); - - if (getMessageQueueToGUI()) // Notify GUI of peer details - { - MsgTCPSrcConnection* msg = MsgTCPSrcConnection::create(true, id, connection->peerAddress(), connection->peerPort()); - getMessageQueueToGUI()->push(msg); - } - - break; - } - - case TCPSrcSettings::FormatS16LE: - { - qDebug("TCPSrc::processNewConnection: establish new S16LE connection"); - quint32 id = (TCPSrcSettings::FormatS16LE << 24) | m_nextS16leId; - m_nextS16leId = (m_nextS16leId + 1) & 0xffffff; - m_s16leSockets.push_back(Socket(id, connection)); - - if (getMessageQueueToGUI()) // Notify GUI of peer details - { - MsgTCPSrcConnection* msg = MsgTCPSrcConnection::create(true, id, connection->peerAddress(), connection->peerPort()); - getMessageQueueToGUI()->push(msg); - } - - break; - } - - default: - delete connection; - break; - } - } -} - -void TCPSrc::onDisconnected() -{ - qDebug("TCPSrc::onDisconnected"); - MsgTCPSrcConnection *cmd = MsgTCPSrcConnection::create(false, 0, QHostAddress::Any, 0); - getInputMessageQueue()->push(cmd); - - if (getMessageQueueToGUI()) { // Propagate to GUI - getMessageQueueToGUI()->push(cmd); - } - -} - -void TCPSrc::processDeconnection() -{ - quint32 id; - QTcpSocket* socket = 0; - - qDebug("TCPSrc::processDeconnection"); - - for(int i = 0; i < m_ssbSockets.count(); i++) - { - if(m_ssbSockets[i].socket == sender()) - { - id = m_ssbSockets[i].id; - socket = m_ssbSockets[i].socket; - socket->close(); - m_ssbSockets.removeAt(i); - break; - } - } - - if(socket == 0) - { - for(int i = 0; i < m_s16leSockets.count(); i++) - { - if(m_s16leSockets[i].socket == sender()) - { - qDebug("TCPSrc::processDeconnection: remove S16LE socket #%d", i); - - id = m_s16leSockets[i].id; - socket = m_s16leSockets[i].socket; - socket->close(); - m_s16leSockets.removeAt(i); - break; - } - } - } - - if(socket != 0) - { - MsgTCPSrcConnection* msg = MsgTCPSrcConnection::create(false, id, QHostAddress(), 0); - getInputMessageQueue()->push(msg); - - if (getMessageQueueToGUI()) { // Propagate to GUI - getMessageQueueToGUI()->push(msg); - } - - socket->deleteLater(); - } -} - -void TCPSrc::onTcpServerError(QAbstractSocket::SocketError socketError __attribute__((unused))) -{ - qDebug("TCPSrc::onTcpServerError: %s", qPrintable(m_tcpServer->errorString())); -} - -QByteArray TCPSrc::serialize() const -{ - return m_settings.serialize(); -} - -bool TCPSrc::deserialize(const QByteArray& data) -{ - if (m_settings.deserialize(data)) - { - MsgConfigureTCPSrc *msg = MsgConfigureTCPSrc::create(m_settings, true); - m_inputMessageQueue.push(msg); - return true; - } - else - { - m_settings.resetToDefaults(); - MsgConfigureTCPSrc *msg = MsgConfigureTCPSrc::create(m_settings, true); - m_inputMessageQueue.push(msg); - return false; - } -} - diff --git a/plugins/channelrx/tcpsrc/tcpsrc.h b/plugins/channelrx/tcpsrc/tcpsrc.h deleted file mode 100644 index 471a8c3e7..000000000 --- a/plugins/channelrx/tcpsrc/tcpsrc.h +++ /dev/null @@ -1,224 +0,0 @@ -#ifndef INCLUDE_TCPSRC_H -#define INCLUDE_TCPSRC_H - -#include -#include - -#include "dsp/basebandsamplesink.h" -#include "channel/channelsinkapi.h" -#include "dsp/nco.h" -#include "dsp/fftfilt.h" -#include "dsp/interpolator.h" -#include "util/message.h" - -#include "tcpsrcsettings.h" - -#define tcpFftLen 2048 - -class QTcpServer; -class QTcpSocket; -class TCPSrcGUI; -class DeviceSourceAPI; -class ThreadedBasebandSampleSink; -class DownChannelizer; - -class TCPSrc : public BasebandSampleSink, public ChannelSinkAPI { - Q_OBJECT - -public: - class MsgConfigureTCPSrc : public Message { - MESSAGE_CLASS_DECLARATION - - public: - const TCPSrcSettings& getSettings() const { return m_settings; } - bool getForce() const { return m_force; } - - static MsgConfigureTCPSrc* create(const TCPSrcSettings& settings, bool force) - { - return new MsgConfigureTCPSrc(settings, force); - } - - private: - TCPSrcSettings m_settings; - bool m_force; - - MsgConfigureTCPSrc(const TCPSrcSettings& settings, bool force) : - Message(), - m_settings(settings), - m_force(force) - { - } - }; - - class MsgConfigureChannelizer : public Message { - MESSAGE_CLASS_DECLARATION - - public: - int getSampleRate() const { return m_sampleRate; } - int getCenterFrequency() const { return m_centerFrequency; } - - static MsgConfigureChannelizer* create(int sampleRate, int centerFrequency) - { - return new MsgConfigureChannelizer(sampleRate, centerFrequency); - } - - private: - int m_sampleRate; - int m_centerFrequency; - - MsgConfigureChannelizer(int sampleRate, int centerFrequency) : - Message(), - m_sampleRate(sampleRate), - m_centerFrequency(centerFrequency) - { } - }; - - class MsgTCPSrcConnection : public Message { - MESSAGE_CLASS_DECLARATION - - public: - bool getConnect() const { return m_connect; } - quint32 getID() const { return m_id; } - const QHostAddress& getPeerAddress() const { return m_peerAddress; } - int getPeerPort() const { return m_peerPort; } - - static MsgTCPSrcConnection* create(bool connect, quint32 id, const QHostAddress& peerAddress, int peerPort) - { - return new MsgTCPSrcConnection(connect, id, peerAddress, peerPort); - } - - private: - bool m_connect; - quint32 m_id; - QHostAddress m_peerAddress; - int m_peerPort; - - MsgTCPSrcConnection(bool connect, quint32 id, const QHostAddress& peerAddress, int peerPort) : - Message(), - m_connect(connect), - m_id(id), - m_peerAddress(peerAddress), - m_peerPort(peerPort) - { } - }; - - TCPSrc(DeviceSourceAPI* m_deviceAPI); - virtual ~TCPSrc(); - virtual void destroy() { delete this; } - void setSpectrum(BasebandSampleSink* spectrum) { m_spectrum = spectrum; } - - void setSpectrum(MessageQueue* messageQueue, bool enabled); - double getMagSq() const { return m_magsq; } - - virtual void feed(const SampleVector::const_iterator& begin, const SampleVector::const_iterator& end, bool positiveOnly); - virtual void start(); - virtual void stop(); - virtual bool handleMessage(const Message& cmd); - - virtual void getIdentifier(QString& id) { id = objectName(); } - virtual void getTitle(QString& title) { title = m_settings.m_title; } - virtual qint64 getCenterFrequency() const { return m_settings.m_inputFrequencyOffset; } - - virtual QByteArray serialize() const; - virtual bool deserialize(const QByteArray& data); - - static const QString m_channelIdURI; - static const QString m_channelId; - -protected: - class MsgTCPSrcSpectrum : public Message { - MESSAGE_CLASS_DECLARATION - - public: - bool getEnabled() const { return m_enabled; } - - static MsgTCPSrcSpectrum* create(bool enabled) - { - return new MsgTCPSrcSpectrum(enabled); - } - - private: - bool m_enabled; - - MsgTCPSrcSpectrum(bool enabled) : - Message(), - m_enabled(enabled) - { } - }; - class MsgTCPConnection : public Message { - MESSAGE_CLASS_DECLARATION - - public: - bool getConnect() const { return m_connect; } - - static MsgTCPConnection* create(bool connect) - { - return new MsgTCPConnection(connect); - } - - private: - bool m_connect; - - MsgTCPConnection(bool connect) : - Message(), - m_connect(connect) - { } - }; - - DeviceSourceAPI* m_deviceAPI; - ThreadedBasebandSampleSink* m_threadedChannelizer; - DownChannelizer* m_channelizer; - - TCPSrcSettings m_settings; - int m_absoluteFrequencyOffset; - - int m_inputSampleRate; - - int m_sampleFormat; - Real m_outputSampleRate; - Real m_rfBandwidth; - int m_tcpPort; - int m_volume; - double m_magsq; - - Real m_scale; - Complex m_last, m_this; - - NCO m_nco; - Interpolator m_interpolator; - Real m_sampleDistanceRemain; - fftfilt* TCPFilter; - - SampleVector m_sampleBuffer; - SampleVector m_sampleBufferSSB; - BasebandSampleSink* m_spectrum; - bool m_spectrumEnabled; - - QTcpServer* m_tcpServer; - struct Socket { - quint32 id; - QTcpSocket* socket; - Socket(quint32 _id, QTcpSocket* _socket) : - id(_id), - socket(_socket) - { } - }; - typedef QList Sockets; - Sockets m_ssbSockets; - Sockets m_s16leSockets; - quint32 m_nextSSBId; - quint32 m_nextS16leId; - - QMutex m_settingsMutex; - - void closeAllSockets(Sockets* sockets); - void processNewConnection(); - void processDeconnection(); - -protected slots: - void onNewConnection(); - void onDisconnected(); - void onTcpServerError(QAbstractSocket::SocketError socketError); -}; - -#endif // INCLUDE_TCPSRC_H diff --git a/plugins/channelrx/tcpsrc/tcpsrc.pro b/plugins/channelrx/tcpsrc/tcpsrc.pro deleted file mode 100644 index dd4e04b60..000000000 --- a/plugins/channelrx/tcpsrc/tcpsrc.pro +++ /dev/null @@ -1,43 +0,0 @@ -#-------------------------------------------------------- -# -# Pro file for Android and Windows builds with Qt Creator -# -#-------------------------------------------------------- - -TEMPLATE = lib -CONFIG += plugin - -QT += core gui widgets multimedia network opengl - -TARGET = tcpsrc - -DEFINES += USE_SSE2=1 -QMAKE_CXXFLAGS += -msse2 -DEFINES += USE_SSE4_1=1 -QMAKE_CXXFLAGS += -msse4.1 -QMAKE_CXXFLAGS += -std=c++11 - -INCLUDEPATH += $$PWD -INCLUDEPATH += ../../../exports -INCLUDEPATH += ../../../sdrbase -INCLUDEPATH += ../../../sdrgui - -CONFIG(Release):build_subdir = release -CONFIG(Debug):build_subdir = debug - -SOURCES += tcpsrc.cpp\ - tcpsrcgui.cpp\ - tcpsrcplugin.cpp\ - tcpsrcsettings.cpp - -HEADERS += tcpsrc.h\ - tcpsrcgui.h\ - tcpsrcplugin.h\ - tcpsrcsettings.h - -FORMS += tcpsrcgui.ui - -LIBS += -L../../../sdrbase/$${build_subdir} -lsdrbase -LIBS += -L../../../sdrgui/$${build_subdir} -lsdrgui - -RESOURCES = ../../../sdrgui/resources/res.qrc diff --git a/plugins/channelrx/tcpsrc/tcpsrcgui.cpp b/plugins/channelrx/tcpsrc/tcpsrcgui.cpp deleted file mode 100644 index 804b92a33..000000000 --- a/plugins/channelrx/tcpsrc/tcpsrcgui.cpp +++ /dev/null @@ -1,397 +0,0 @@ -#include "tcpsrcgui.h" - -#include -#include "device/deviceuiset.h" -#include "plugin/pluginapi.h" -#include "dsp/spectrumvis.h" -#include "dsp/dspengine.h" -#include "util/simpleserializer.h" -#include "util/db.h" -#include "ui_tcpsrcgui.h" -#include "mainwindow.h" -#include "tcpsrc.h" - -TCPSrcGUI* TCPSrcGUI::create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) -{ - TCPSrcGUI* gui = new TCPSrcGUI(pluginAPI, deviceUISet, rxChannel); - return gui; -} - -void TCPSrcGUI::destroy() -{ - delete this; -} - -void TCPSrcGUI::setName(const QString& name) -{ - setObjectName(name); -} - -qint64 TCPSrcGUI::getCenterFrequency() const -{ - return m_channelMarker.getCenterFrequency(); -} - -void TCPSrcGUI::setCenterFrequency(qint64 centerFrequency) -{ - m_channelMarker.setCenterFrequency(centerFrequency); - applySettings(); -} - -QString TCPSrcGUI::getName() const -{ - return objectName(); -} - -void TCPSrcGUI::resetToDefaults() -{ - m_settings.resetToDefaults(); - displaySettings(); - applySettings(); -} - -QByteArray TCPSrcGUI::serialize() const -{ - return m_settings.serialize(); -} - -bool TCPSrcGUI::deserialize(const QByteArray& data) -{ - if(m_settings.deserialize(data)) - { - qDebug("TCPSrcGUI::deserialize: m_squelchGate: %d", m_settings.m_squelchGate); - displaySettings(); - applySettings(); - return true; - } else { - resetToDefaults(); - return false; - } -} - -bool TCPSrcGUI::handleMessage(const Message& message) -{ - if (TCPSrc::MsgTCPSrcConnection::match(message)) - { - TCPSrc::MsgTCPSrcConnection& con = (TCPSrc::MsgTCPSrcConnection&) message; - - if(con.getConnect()) - { - addConnection(con.getID(), con.getPeerAddress(), con.getPeerPort()); - } - else - { - delConnection(con.getID()); - } - - qDebug() << "TCPSrcGUI::handleMessage: TCPSrc::MsgTCPSrcConnection: " << con.getConnect() - << " ID: " << con.getID() - << " peerAddress: " << con.getPeerAddress() - << " peerPort: " << con.getPeerPort(); - - return true; - } - else - { - return false; - } -} - -void TCPSrcGUI::channelMarkerChangedByCursor() -{ - ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); - m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency(); - applySettings(); -} - -void TCPSrcGUI::channelMarkerHighlightedByCursor() -{ - setHighlighted(m_channelMarker.getHighlighted()); -} - -void TCPSrcGUI::tick() -{ - double powDb = CalcDb::dbPower(m_tcpSrc->getMagSq()); - m_channelPowerDbAvg(powDb); - ui->channelPower->setText(QString::number(m_channelPowerDbAvg.asDouble(), 'f', 1)); -} - -TCPSrcGUI::TCPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent) : - RollupWidget(parent), - ui(new Ui::TCPSrcGUI), - m_pluginAPI(pluginAPI), - m_deviceUISet(deviceUISet), - m_tcpSrc(0), - m_channelMarker(this), - m_rfBandwidthChanged(false), - m_doApplySettings(true) -{ - ui->setupUi(this); - ui->connectedClientsBox->hide(); - connect(this, SIGNAL(widgetRolled(QWidget*,bool)), this, SLOT(onWidgetRolled(QWidget*,bool))); - setAttribute(Qt::WA_DeleteOnClose, true); - - m_spectrumVis = new SpectrumVis(SDR_RX_SCALEF, ui->glSpectrum); - m_tcpSrc = (TCPSrc*) rxChannel; //new TCPSrc(m_deviceUISet->m_deviceSourceAPI); - m_tcpSrc->setSpectrum(m_spectrumVis); - - ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03))); - ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold)); - ui->deltaFrequency->setValueRange(false, 7, -9999999, 9999999); - - ui->glSpectrum->setCenterFrequency(0); - ui->glSpectrum->setSampleRate(ui->sampleRate->text().toInt()); - ui->glSpectrum->setDisplayWaterfall(true); - ui->glSpectrum->setDisplayMaxHold(true); - m_spectrumVis->configure(m_spectrumVis->getInputMessageQueue(), 64, 10, FFTWindow::BlackmanHarris); - - ui->glSpectrum->connectTimer(MainWindow::getInstance()->getMasterTimer()); - connect(&MainWindow::getInstance()->getMasterTimer(), SIGNAL(timeout()), this, SLOT(tick())); - - m_channelMarker.blockSignals(true); - m_channelMarker.setBandwidth(16000); - m_channelMarker.setCenterFrequency(0); - m_channelMarker.setColor(m_settings.m_rgbColor); - m_channelMarker.blockSignals(false); - m_channelMarker.setVisible(true); // activate signal on the last setting only - - setTitleColor(m_channelMarker.getColor()); - - m_deviceUISet->registerRxChannelInstance(TCPSrc::m_channelIdURI, this); - m_deviceUISet->addChannelMarker(&m_channelMarker); - m_deviceUISet->addRollupWidget(this); - - connect(&m_channelMarker, SIGNAL(changedByCursor()), this, SLOT(channelMarkerChangedByCursor())); - connect(&m_channelMarker, SIGNAL(highlightedByCursor()), this, SLOT(channelMarkerHighlightedByCursor())); - - ui->spectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum); - - m_settings.setSpectrumGUI(ui->spectrumGUI); - m_settings.setChannelMarker(&m_channelMarker); - - displaySettings(); - applySettings(); -} - -TCPSrcGUI::~TCPSrcGUI() -{ - m_deviceUISet->removeRxChannelInstance(this); - delete m_tcpSrc; // TODO: check this: when the GUI closes it has to delete the demodulator - delete m_spectrumVis; - delete ui; -} - -void TCPSrcGUI::blockApplySettings(bool block) -{ - m_doApplySettings = !block; -} - -void TCPSrcGUI::applySettings() -{ - if (m_doApplySettings) - { - ui->glSpectrum->setSampleRate(m_settings.m_outputSampleRate); - - TCPSrc::MsgConfigureChannelizer* channelConfigMsg = TCPSrc::MsgConfigureChannelizer::create( - m_settings.m_outputSampleRate, m_channelMarker.getCenterFrequency()); - m_tcpSrc->getInputMessageQueue()->push(channelConfigMsg); - - TCPSrc::MsgConfigureTCPSrc* message = TCPSrc::MsgConfigureTCPSrc::create( m_settings, false); - m_tcpSrc->getInputMessageQueue()->push(message); - } -} - -void TCPSrcGUI::on_deltaFrequency_changed(qint64 value) -{ - m_channelMarker.setCenterFrequency(value); - m_settings.m_inputFrequencyOffset = m_channelMarker.getCenterFrequency(); - applySettings(); -} - -void TCPSrcGUI::on_sampleFormat_currentIndexChanged(int index) -{ - setSampleFormat(index); - - ui->applyBtn->setEnabled(true); - ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }"); -} - -void TCPSrcGUI::on_sampleRate_textEdited(const QString& arg1 __attribute__((unused))) -{ - bool ok; - Real outputSampleRate = ui->sampleRate->text().toDouble(&ok); - - if((!ok) || (outputSampleRate < 1000)) - { - m_settings.m_outputSampleRate = 48000; - ui->sampleRate->setText(QString("%1").arg(outputSampleRate, 0)); - } - else - { - m_settings.m_outputSampleRate = outputSampleRate; - } - - ui->applyBtn->setEnabled(true); - ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }"); -} - -void TCPSrcGUI::on_rfBandwidth_textEdited(const QString& arg1 __attribute__((unused))) -{ - bool ok; - Real rfBandwidth = ui->rfBandwidth->text().toDouble(&ok); - - if((!ok) || (rfBandwidth > m_settings.m_outputSampleRate)) - { - m_settings.m_rfBandwidth = m_settings.m_outputSampleRate; - ui->rfBandwidth->setText(QString("%1").arg(m_settings.m_rfBandwidth, 0)); - } - else - { - m_settings.m_rfBandwidth = rfBandwidth; - } - - m_rfBandwidthChanged = true; - - ui->applyBtn->setEnabled(true); - ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }"); -} - -void TCPSrcGUI::on_tcpPort_textEdited(const QString& arg1 __attribute__((unused))) -{ - bool ok; - int tcpPort = ui->tcpPort->text().toInt(&ok); - - if((!ok) || (tcpPort < 1) || (tcpPort > 65535)) - { - m_settings.m_tcpPort = 9999; - ui->tcpPort->setText(QString("%1").arg(m_settings.m_tcpPort, 0)); - } - else - { - m_settings.m_tcpPort = tcpPort; - } - - ui->applyBtn->setEnabled(true); - ui->applyBtn->setStyleSheet("QPushButton { background-color : green; }"); -} - -void TCPSrcGUI::on_applyBtn_clicked() -{ - if (m_rfBandwidthChanged) - { - blockApplySettings(true); - m_channelMarker.setBandwidth((int) m_settings.m_rfBandwidth); - m_rfBandwidthChanged = false; - blockApplySettings(false); - } - - ui->glSpectrum->setSampleRate(m_settings.m_outputSampleRate); - - ui->applyBtn->setEnabled(false); - ui->applyBtn->setStyleSheet("QPushButton { background:rgb(79,79,79); }"); - - applySettings(); -} - -void TCPSrcGUI::displaySettings() -{ - m_channelMarker.blockSignals(true); - m_channelMarker.setCenterFrequency(m_settings.m_inputFrequencyOffset); - m_channelMarker.setBandwidth(m_settings.m_rfBandwidth); - m_channelMarker.setTitle(m_settings.m_title); - m_channelMarker.blockSignals(false); - m_channelMarker.setColor(m_settings.m_rgbColor); // activate signal on the last setting only - - setTitleColor(m_settings.m_rgbColor); - setWindowTitle(m_channelMarker.getTitle()); - - blockApplySettings(true); - - ui->deltaFrequency->setValue(m_channelMarker.getCenterFrequency()); - - ui->sampleRate->setText(QString("%1").arg(m_settings.m_outputSampleRate, 0)); - setSampleFormatIndex(m_settings.m_sampleFormat); - - ui->rfBandwidth->setText(QString("%1").arg(m_settings.m_rfBandwidth, 0)); - - ui->volume->setValue(m_settings.m_volume); - ui->volumeText->setText(QString("%1").arg(ui->volume->value())); - - ui->glSpectrum->setSampleRate(m_settings.m_outputSampleRate); - - blockApplySettings(false); -} - -void TCPSrcGUI::setSampleFormatIndex(const TCPSrcSettings::SampleFormat& sampleFormat) -{ - switch(sampleFormat) - { - case TCPSrcSettings::FormatS16LE: - ui->sampleFormat->setCurrentIndex(0); - break; - case TCPSrcSettings::FormatNFM: - ui->sampleFormat->setCurrentIndex(1); - break; - case TCPSrcSettings::FormatSSB: - ui->sampleFormat->setCurrentIndex(2); - break; - default: - ui->sampleFormat->setCurrentIndex(0); - break; - } -} - -void TCPSrcGUI::setSampleFormat(int index) -{ - switch(index) - { - case 0: - m_settings.m_sampleFormat = TCPSrcSettings::FormatS16LE; - break; - case 1: - m_settings.m_sampleFormat = TCPSrcSettings::FormatNFM; - break; - case 2: - m_settings.m_sampleFormat = TCPSrcSettings::FormatSSB; - break; - default: - m_settings.m_sampleFormat = TCPSrcSettings::FormatS16LE; - break; - } -} - -void TCPSrcGUI::on_volume_valueChanged(int value) -{ - ui->volume->setValue(value); - ui->volumeText->setText(QString("%1").arg(value)); - ui->applyBtn->setEnabled(true); -} - -void TCPSrcGUI::onWidgetRolled(QWidget* widget, bool rollDown) -{ - if ((widget == ui->spectrumBox) && (m_tcpSrc != 0)) - { - m_tcpSrc->setSpectrum(m_tcpSrc->getInputMessageQueue(), rollDown); - } -} - -void TCPSrcGUI::addConnection(quint32 id, const QHostAddress& peerAddress, int peerPort) -{ - QStringList l; - l.append(QString("%1:%2").arg(peerAddress.toString()).arg(peerPort)); - new QTreeWidgetItem(ui->connections, l, id); - ui->connectedClientsBox->setWindowTitle(tr("Connected Clients (%1)").arg(ui->connections->topLevelItemCount())); -} - -void TCPSrcGUI::delConnection(quint32 id) -{ - for(int i = 0; i < ui->connections->topLevelItemCount(); i++) - { - if(ui->connections->topLevelItem(i)->type() == (int)id) - { - delete ui->connections->topLevelItem(i); - ui->connectedClientsBox->setWindowTitle(tr("Connected Clients (%1)").arg(ui->connections->topLevelItemCount())); - return; - } - } -} diff --git a/plugins/channelrx/tcpsrc/tcpsrcgui.h b/plugins/channelrx/tcpsrc/tcpsrcgui.h deleted file mode 100644 index c671a7d80..000000000 --- a/plugins/channelrx/tcpsrc/tcpsrcgui.h +++ /dev/null @@ -1,92 +0,0 @@ -#ifndef INCLUDE_TCPSRCGUI_H -#define INCLUDE_TCPSRCGUI_H - -#include -#include - -#include "gui/rollupwidget.h" -#include "dsp/channelmarker.h" -#include "util/movingaverage.h" -#include "util/messagequeue.h" - -#include "tcpsrc.h" -#include "tcpsrcsettings.h" - -class PluginAPI; -class DeviceUISet; -class TCPSrc; -class SpectrumVis; - -namespace Ui { - class TCPSrcGUI; -} - -class TCPSrcGUI : public RollupWidget, public PluginInstanceGUI { - Q_OBJECT - -public: - static TCPSrcGUI* create(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); - virtual void destroy(); - - void setName(const QString& name); - QString getName() const; - virtual qint64 getCenterFrequency() const; - virtual void setCenterFrequency(qint64 centerFrequency); - - void resetToDefaults(); - QByteArray serialize() const; - bool deserialize(const QByteArray& data); - virtual MessageQueue *getInputMessageQueue() { return &m_inputMessageQueue; } - virtual bool handleMessage(const Message& message); - -public slots: - void channelMarkerChangedByCursor(); - void channelMarkerHighlightedByCursor(); - -private: - Ui::TCPSrcGUI* ui; - PluginAPI* m_pluginAPI; - DeviceUISet* m_deviceUISet; - TCPSrc* m_tcpSrc; - ChannelMarker m_channelMarker; - MovingAverageUtil m_channelPowerDbAvg; - - // settings - TCPSrcSettings m_settings; - TCPSrcSettings::SampleFormat m_sampleFormat; - Real m_outputSampleRate; - Real m_rfBandwidth; - int m_boost; - int m_tcpPort; - bool m_rfBandwidthChanged; - bool m_doApplySettings; - - // RF path - SpectrumVis* m_spectrumVis; - MessageQueue m_inputMessageQueue; - - explicit TCPSrcGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* parent = 0); - virtual ~TCPSrcGUI(); - - void blockApplySettings(bool block); - void applySettings(); - void displaySettings(); - void setSampleFormat(int index); - void setSampleFormatIndex(const TCPSrcSettings::SampleFormat& sampleFormat); - - void addConnection(quint32 id, const QHostAddress& peerAddress, int peerPort); - void delConnection(quint32 id); - -private slots: - void on_deltaFrequency_changed(qint64 value); - void on_sampleFormat_currentIndexChanged(int index); - void on_sampleRate_textEdited(const QString& arg1); - void on_rfBandwidth_textEdited(const QString& arg1); - void on_tcpPort_textEdited(const QString& arg1); - void on_applyBtn_clicked(); - void onWidgetRolled(QWidget* widget, bool rollDown); - void on_volume_valueChanged(int value); - void tick(); -}; - -#endif // INCLUDE_TCPSRCGUI_H diff --git a/plugins/channelrx/tcpsrc/tcpsrcgui.ui b/plugins/channelrx/tcpsrc/tcpsrcgui.ui deleted file mode 100644 index bb9965fa7..000000000 --- a/plugins/channelrx/tcpsrc/tcpsrcgui.ui +++ /dev/null @@ -1,480 +0,0 @@ - - - TCPSrcGUI - - - - 0 - 0 - 400 - 443 - - - - - Liberation Sans - 9 - - - - TCP Sample Source - - - - - 10 - 5 - 201 - 142 - - - - Settings - - - - 2 - - - 2 - - - 2 - - - 2 - - - 3 - - - - - Sample Format - - - - - - - Sample format - - - 0 - - - - S16LE I/Q - - - - - S16LE NFM - - - - - S16LE SSB - - - - - - - - Channel bandwidth - - - 32000 - - - - - - - RF Bandwidth (Hz) - - - - - - - Samplerate (Hz) - - - - - - - TCP Port - - - - - - - Data stream sample rate - - - 48000 - - - - - - - TCP port number - - - 9999 - - - - - - - false - - - Apply changes - - - Apply - - - - - - - 2 - - - - - - 16 - 16777215 - - - - Df - - - - - - - - 0 - 0 - - - - - 32 - 16 - - - - - Liberation Mono - 12 - - - - PointingHandCursor - - - Qt::StrongFocus - - - Demod shift frequency from center in Hz - - - - - - - - - - - - 26 - 26 - 26 - - - - - - - 255 - 255 - 255 - - - - - - - - - 26 - 26 - 26 - - - - - - - 255 - 255 - 255 - - - - - - - - - 118 - 118 - 117 - - - - - - - 255 - 255 - 255 - - - - - - - - - 8 - - - - Hz - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Channel power - - - Qt::LeftToRight - - - 0.0 - - - - - - - dB - - - - - - - - - - - Vol - - - - - - - Amplitude boost - - - 3 - - - 1 - - - Qt::Horizontal - - - - - - - 0 - - - - - - - - - - - 15 - 160 - 231 - 156 - - - - Channel Spectrum - - - - 3 - - - 2 - - - 2 - - - 2 - - - 2 - - - - - - Liberation Mono - 9 - - - - - - - - - - - - - 15 - 330 - 274 - 101 - - - - Connected Clients (0) - - - - 3 - - - 2 - - - 2 - - - 2 - - - 2 - - - - - - 400 - 100 - - - - false - - - false - - - false - - - - IP:Port - - - - - - - - - - RollupWidget - QWidget -
gui/rollupwidget.h
- 1 -
- - GLSpectrum - QWidget -
gui/glspectrum.h
- 1 -
- - GLSpectrumGUI - QWidget -
gui/glspectrumgui.h
- 1 -
- - ValueDialZ - QWidget -
gui/valuedialz.h
- 1 -
-
- - sampleFormat - tcpPort - sampleRate - rfBandwidth - applyBtn - connections - - - -
diff --git a/plugins/channelrx/tcpsrc/tcpsrcplugin.cpp b/plugins/channelrx/tcpsrc/tcpsrcplugin.cpp deleted file mode 100644 index e3925ed20..000000000 --- a/plugins/channelrx/tcpsrc/tcpsrcplugin.cpp +++ /dev/null @@ -1,51 +0,0 @@ -#include "tcpsrcplugin.h" - -#include -#include "plugin/pluginapi.h" - -#include "tcpsrcgui.h" -#include "tcpsrc.h" - -const PluginDescriptor TCPSrcPlugin::m_pluginDescriptor = { - QString("TCP Channel Source"), - QString("3.14.5"), - QString("(c) Edouard Griffiths, F4EXB"), - QString("https://github.com/f4exb/sdrangel"), - true, - QString("https://github.com/f4exb/sdrangel") -}; - -TCPSrcPlugin::TCPSrcPlugin(QObject* parent) : - QObject(parent), - m_pluginAPI(0) -{ -} - -const PluginDescriptor& TCPSrcPlugin::getPluginDescriptor() const -{ - return m_pluginDescriptor; -} - -void TCPSrcPlugin::initPlugin(PluginAPI* pluginAPI) -{ - m_pluginAPI = pluginAPI; - - // register TCP Channel Source - m_pluginAPI->registerRxChannel(TCPSrc::m_channelIdURI, TCPSrc::m_channelId, this); -} - -PluginInstanceGUI* TCPSrcPlugin::createRxChannelGUI(DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel) -{ - return TCPSrcGUI::create(m_pluginAPI, deviceUISet, rxChannel); -} - -BasebandSampleSink* TCPSrcPlugin::createRxChannelBS(DeviceSourceAPI *deviceAPI) -{ - return new TCPSrc(deviceAPI); -} - -ChannelSinkAPI* TCPSrcPlugin::createRxChannelCS(DeviceSourceAPI *deviceAPI) -{ - return new TCPSrc(deviceAPI); -} - diff --git a/plugins/channelrx/tcpsrc/tcpsrcplugin.h b/plugins/channelrx/tcpsrc/tcpsrcplugin.h deleted file mode 100644 index 74d3d5996..000000000 --- a/plugins/channelrx/tcpsrc/tcpsrcplugin.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef INCLUDE_TCPSRCPLUGIN_H -#define INCLUDE_TCPSRCPLUGIN_H - -#include -#include "plugin/plugininterface.h" - -class DeviceUISet; -class BasebandSampleSink; - -class TCPSrcPlugin : public QObject, PluginInterface { - Q_OBJECT - Q_INTERFACES(PluginInterface) - Q_PLUGIN_METADATA(IID "sdrangel.demod.tcpsrc") - -public: - explicit TCPSrcPlugin(QObject* parent = NULL); - - const PluginDescriptor& getPluginDescriptor() const; - void initPlugin(PluginAPI* pluginAPI); - - virtual PluginInstanceGUI* createRxChannelGUI(DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel); - virtual BasebandSampleSink* createRxChannelBS(DeviceSourceAPI *deviceAPI); - virtual ChannelSinkAPI* createRxChannelCS(DeviceSourceAPI *deviceAPI); - -private: - static const PluginDescriptor m_pluginDescriptor; - - PluginAPI* m_pluginAPI; -}; - -#endif // INCLUDE_TCPSRCPLUGIN_H diff --git a/plugins/channelrx/tcpsrc/tcpsrcsettings.cpp b/plugins/channelrx/tcpsrc/tcpsrcsettings.cpp deleted file mode 100644 index 711454926..000000000 --- a/plugins/channelrx/tcpsrc/tcpsrcsettings.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////// -// 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 . // -/////////////////////////////////////////////////////////////////////////////////// - -#include - -#include "dsp/dspengine.h" -#include "util/simpleserializer.h" -#include "settings/serializable.h" -#include "tcpsrcsettings.h" - -TCPSrcSettings::TCPSrcSettings() : - m_channelMarker(0), - m_spectrumGUI(0) -{ - resetToDefaults(); -} - -void TCPSrcSettings::resetToDefaults() -{ - m_outputSampleRate = 48000; - m_sampleFormat = FormatS16LE; - m_inputSampleRate = 48000; - m_inputFrequencyOffset = 0; - m_rfBandwidth = 12500; - m_tcpPort = 9999; - m_fmDeviation = 2500; - m_channelMute = false; - m_gain = 1.0; - m_squelchdB = -60; - m_squelchGate = 0.0; - m_squelchEnabled = true; - m_agc = false; - m_audioActive = false; - m_audioStereo = false; - m_volume = 20; - m_udpAddress = "127.0.0.1"; - m_udpPort = 9999; - m_audioPort = 9998; - m_rgbColor = QColor(225, 25, 99).rgb(); - m_title = "TCP Source"; -} - -QByteArray TCPSrcSettings::serialize() const -{ - SimpleSerializer s(1); - s.writeS32(2, m_inputFrequencyOffset); - s.writeS32(3, (int) m_sampleFormat); - s.writeReal(4, m_outputSampleRate); - s.writeReal(5, m_rfBandwidth); - s.writeS32(6, m_tcpPort); - - if (m_channelMarker) { - s.writeBlob(10, m_channelMarker->serialize()); - } - - if (m_spectrumGUI) { - s.writeBlob(7, m_spectrumGUI->serialize()); - } - - s.writeS32(8, m_gain*10.0); - s.writeU32(9, m_rgbColor); - s.writeBool(11, m_audioActive); - s.writeS32(12, m_volume); - s.writeBool(14, m_audioStereo); - s.writeS32(15, m_fmDeviation); - s.writeS32(16, m_squelchdB); - s.writeS32(17, m_squelchGate); - s.writeBool(18, m_agc); - s.writeString(19, m_title); - - return s.final(); - -} - -bool TCPSrcSettings::deserialize(const QByteArray& data) -{ - SimpleDeserializer d(data); - - if (!d.isValid()) - { - resetToDefaults(); - return false; - } - - if (d.getVersion() == 1) - { - QByteArray bytetmp; - QString strtmp; - int32_t s32tmp; - - if (m_channelMarker) { - d.readBlob(10, &bytetmp); - m_channelMarker->deserialize(bytetmp); - } - - d.readS32(2, &s32tmp, 0); - m_inputFrequencyOffset = s32tmp; - - d.readS32(3, &s32tmp, FormatS16LE); - - if ((s32tmp >= 0) && (s32tmp < (int) FormatNone)) { - m_sampleFormat = (SampleFormat) s32tmp; - } else { - m_sampleFormat = FormatS16LE; - } - - d.readReal(4, &m_outputSampleRate, 48000.0); - d.readReal(5, &m_rfBandwidth, 32000.0); - d.readS32(6, &s32tmp, 10); - m_tcpPort = s32tmp < 1024 ? 9999 : s32tmp % (1<<16); - - if (m_spectrumGUI) { - d.readBlob(7, &bytetmp); - m_spectrumGUI->deserialize(bytetmp); - } - - d.readS32(8, &s32tmp, 10); - m_gain = s32tmp / 10.0; - d.readU32(9, &m_rgbColor); - d.readBool(11, &m_audioActive, false); - d.readS32(12, &m_volume, 0); - d.readBool(14, &m_audioStereo, false); - d.readS32(15, &m_fmDeviation, 2500); - d.readS32(16, &m_squelchdB, -60); - d.readS32(17, &m_squelchGate, 5); - d.readBool(18, &m_agc, false); - d.readString(19, &m_title, "TCP Source"); - - return true; - } - else - { - resetToDefaults(); - return false; - } -} - diff --git a/plugins/channelrx/tcpsrc/tcpsrcsettings.h b/plugins/channelrx/tcpsrc/tcpsrcsettings.h deleted file mode 100644 index 9c1aee574..000000000 --- a/plugins/channelrx/tcpsrc/tcpsrcsettings.h +++ /dev/null @@ -1,72 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////// -// 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 . // -/////////////////////////////////////////////////////////////////////////////////// - -#ifndef PLUGINS_CHANNELRX_TCPSRC_TCPSRCSETTINGS_H_ -#define PLUGINS_CHANNELRX_TCPSRC_TCPSRCSETTINGS_H_ - -#include -#include -#include - -class Serializable; - -struct TCPSrcSettings -{ - enum SampleFormat { - FormatS16LE, - FormatNFM, - FormatSSB, - FormatNone - }; - - float m_outputSampleRate; - SampleFormat m_sampleFormat; - float m_inputSampleRate; - int64_t m_inputFrequencyOffset; - float m_rfBandwidth; - uint16_t m_tcpPort; - int m_fmDeviation; - bool m_channelMute; - float m_gain; - int m_squelchdB; //!< power dB - int m_squelchGate; //!< 100ths seconds - bool m_squelchEnabled; - bool m_agc; - bool m_audioActive; - bool m_audioStereo; - int m_volume; - quint32 m_rgbColor; - - QString m_udpAddress; - uint16_t m_udpPort; - uint16_t m_audioPort; - - QString m_title; - - Serializable *m_channelMarker; - Serializable *m_spectrumGUI; - - TCPSrcSettings(); - void resetToDefaults(); - void setChannelMarker(Serializable *channelMarker) { m_channelMarker = channelMarker; } - void setSpectrumGUI(Serializable *spectrumGUI) { m_spectrumGUI = spectrumGUI; } - QByteArray serialize() const; - bool deserialize(const QByteArray& data); -}; - - - -#endif /* PLUGINS_CHANNELRX_TCPSRC_TCPSRCSETTINGS_H_ */