diff --git a/plugins/samplesink/sdrdaemonsink/CMakeLists.txt b/plugins/samplesink/sdrdaemonsink/CMakeLists.txt index ac4ebc713..2a92c867d 100644 --- a/plugins/samplesink/sdrdaemonsink/CMakeLists.txt +++ b/plugins/samplesink/sdrdaemonsink/CMakeLists.txt @@ -1,8 +1,8 @@ project(sdrdaemonsink) set(sdrdaemonsink_SOURCES -# sdrdaemonsinkgui.cpp -# sdrdaemonsinkoutput.cpp + sdrdaemonsinkgui.cpp + sdrdaemonsinkoutput.cpp # sdrdaemonsinkplugin.cpp sdrdaemonsinksettings.cpp sdrdaemonsinkthread.cpp @@ -10,8 +10,8 @@ set(sdrdaemonsink_SOURCES ) set(sdrdaemonsink_HEADERS -# sdrdaemonsinkgui.h -# sdrdaemonsinkoutput.h + sdrdaemonsinkgui.h + sdrdaemonsinkoutput.h # sdrdaemonsinkplugin.h sdrdaemonsinksettings.h sdrdaemonsinkthread.h diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp index 8fc81904f..d215a1957 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.cpp @@ -22,7 +22,7 @@ #include #include -#include "ui_filesinkgui.h" +#include "ui_sdrdaemonsinkgui.h" #include "plugin/pluginapi.h" #include "gui/colormapper.h" #include "gui/glspectrum.h" @@ -34,16 +34,13 @@ #include "device/devicesinkapi.h" #include "sdrdaemonsinkgui.h" -FileSinkGui::FileSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent) : +SDRdaemonSinkGui::SDRdaemonSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent) : QWidget(parent), - ui(new Ui::FileSinkGui), + ui(new Ui::SDRdaemonSinkGui), m_deviceAPI(deviceAPI), m_settings(), m_deviceSampleSink(0), m_sampleRate(0), - m_generation(false), - m_fileName("./test.sdriq"), - m_startingTimeStamp(0), m_samplesCount(0), m_tickCount(0), m_lastEngineState((DSPDeviceSinkEngine::State)-1) @@ -56,8 +53,6 @@ FileSinkGui::FileSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent) : ui->sampleRate->setColorMapper(ColorMapper(ColorMapper::GrayGreenYellow)); ui->sampleRate->setValueRange(7, 32000U, 9000000U); - ui->fileNameText->setText(m_fileName); - connect(&(m_deviceAPI->getMainWindow()->getMasterTimer()), SIGNAL(timeout()), this, SLOT(tick())); connect(&m_updateTimer, SIGNAL(timeout()), this, SLOT(updateHardware())); connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus())); @@ -72,51 +67,51 @@ FileSinkGui::FileSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent) : connect(m_deviceAPI->getDeviceOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection); } -FileSinkGui::~FileSinkGui() +SDRdaemonSinkGui::~SDRdaemonSinkGui() { delete ui; } -void FileSinkGui::destroy() +void SDRdaemonSinkGui::destroy() { delete this; } -void FileSinkGui::setName(const QString& name) +void SDRdaemonSinkGui::setName(const QString& name) { setObjectName(name); } -QString FileSinkGui::getName() const +QString SDRdaemonSinkGui::getName() const { return objectName(); } -void FileSinkGui::resetToDefaults() +void SDRdaemonSinkGui::resetToDefaults() { m_settings.resetToDefaults(); displaySettings(); sendSettings(); } -qint64 FileSinkGui::getCenterFrequency() const +qint64 SDRdaemonSinkGui::getCenterFrequency() const { return m_settings.m_centerFrequency; } -void FileSinkGui::setCenterFrequency(qint64 centerFrequency) +void SDRdaemonSinkGui::setCenterFrequency(qint64 centerFrequency) { m_settings.m_centerFrequency = centerFrequency; displaySettings(); sendSettings(); } -QByteArray FileSinkGui::serialize() const +QByteArray SDRdaemonSinkGui::serialize() const { return m_settings.serialize(); } -bool FileSinkGui::deserialize(const QByteArray& data) +bool SDRdaemonSinkGui::deserialize(const QByteArray& data) { if(m_settings.deserialize(data)) { displaySettings(); @@ -128,15 +123,9 @@ bool FileSinkGui::deserialize(const QByteArray& data) } } -bool FileSinkGui::handleMessage(const Message& message) +bool SDRdaemonSinkGui::handleMessage(const Message& message) { - if (SDRdaemonSinkOutput::MsgReportSDRdaemonSinkGeneration::match(message)) - { - m_generation = ((SDRdaemonSinkOutput::MsgReportSDRdaemonSinkGeneration&)message).getAcquisition(); - updateWithGeneration(); - return true; - } - else if (SDRdaemonSinkOutput::MsgReportSDRdaemonSinkStreamTiming::match(message)) + if (SDRdaemonSinkOutput::MsgReportSDRdaemonSinkStreamTiming::match(message)) { m_samplesCount = ((SDRdaemonSinkOutput::MsgReportSDRdaemonSinkStreamTiming&)message).getSamplesCount(); updateWithStreamTime(); @@ -148,7 +137,7 @@ bool FileSinkGui::handleMessage(const Message& message) } } -void FileSinkGui::handleDSPMessages() +void SDRdaemonSinkGui::handleDSPMessages() { Message* message; @@ -169,7 +158,7 @@ void FileSinkGui::handleDSPMessages() } } -void FileSinkGui::handleSinkMessages() +void SDRdaemonSinkGui::handleSinkMessages() { Message* message; @@ -184,27 +173,27 @@ void FileSinkGui::handleSinkMessages() } } -void FileSinkGui::updateSampleRateAndFrequency() +void SDRdaemonSinkGui::updateSampleRateAndFrequency() { m_deviceAPI->getSpectrum()->setSampleRate(m_sampleRate); m_deviceAPI->getSpectrum()->setCenterFrequency(m_deviceCenterFrequency); ui->deviceRateText->setText(tr("%1k").arg((float)(m_sampleRate*(1<centerFrequency->setValue(m_settings.m_centerFrequency / 1000); ui->sampleRate->setValue(m_settings.m_sampleRate); } -void FileSinkGui::sendSettings() +void SDRdaemonSinkGui::sendSettings() { if(!m_updateTimer.isActive()) m_updateTimer.start(100); } -void FileSinkGui::updateHardware() +void SDRdaemonSinkGui::updateHardware() { qDebug() << "FileSinkGui::updateHardware"; SDRdaemonSinkOutput::MsgConfigureSDRdaemonSink* message = SDRdaemonSinkOutput::MsgConfigureSDRdaemonSink::create(m_settings); @@ -212,7 +201,7 @@ void FileSinkGui::updateHardware() m_updateTimer.stop(); } -void FileSinkGui::updateStatus() +void SDRdaemonSinkGui::updateStatus() { int state = m_deviceAPI->state(); @@ -241,19 +230,19 @@ void FileSinkGui::updateStatus() } } -void FileSinkGui::on_centerFrequency_changed(quint64 value) +void SDRdaemonSinkGui::on_centerFrequency_changed(quint64 value) { m_settings.m_centerFrequency = value * 1000; sendSettings(); } -void FileSinkGui::on_sampleRate_changed(quint64 value) +void SDRdaemonSinkGui::on_sampleRate_changed(quint64 value) { m_settings.m_sampleRate = value; sendSettings(); } -void FileSinkGui::on_interp_currentIndexChanged(int index) +void SDRdaemonSinkGui::on_interp_currentIndexChanged(int index) { if (index < 0) { return; @@ -264,7 +253,7 @@ void FileSinkGui::on_interp_currentIndexChanged(int index) sendSettings(); } -void FileSinkGui::on_startStop_toggled(bool checked) +void SDRdaemonSinkGui::on_startStop_toggled(bool checked) { if (checked) { @@ -285,32 +274,7 @@ void FileSinkGui::on_startStop_toggled(bool checked) } } -void FileSinkGui::on_showFileDialog_clicked(bool checked) -{ - QString fileName = QFileDialog::getSaveFileName(this, - tr("Save I/Q record file"), ".", tr("SDR I/Q Files (*.sdriq)")); - - if (fileName != "") - { - m_fileName = fileName; - ui->fileNameText->setText(m_fileName); - configureFileName(); - } -} - -void FileSinkGui::configureFileName() -{ - qDebug() << "FileSinkGui::configureFileName: " << m_fileName.toStdString().c_str(); - SDRdaemonSinkOutput::MsgConfigureSDRdaemonSinkName* message = SDRdaemonSinkOutput::MsgConfigureSDRdaemonSinkName::create(m_fileName); - m_deviceSampleSink->getInputMessageQueue()->push(message); -} - -void FileSinkGui::updateWithGeneration() -{ - ui->showFileDialog->setEnabled(!m_generation); -} - -void FileSinkGui::updateWithStreamTime() +void SDRdaemonSinkGui::updateWithStreamTime() { int t_sec = 0; int t_msec = 0; @@ -324,10 +288,10 @@ void FileSinkGui::updateWithStreamTime() t = t.addSecs(t_sec); t = t.addMSecs(t_msec); QString s_timems = t.toString("hh:mm:ss.zzz"); - ui->relTimeText->setText(s_timems); + //ui->relTimeText->setText(s_timems); TODO with absolute time } -void FileSinkGui::tick() +void SDRdaemonSinkGui::tick() { if ((++m_tickCount & 0xf) == 0) { diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h index 24c93d282..5a6e6b2b2 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.h @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////// -// Copyright (C) 2016 Edouard Griffiths, F4EXB // +// 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 // @@ -14,13 +14,13 @@ // along with this program. If not, see . // /////////////////////////////////////////////////////////////////////////////////// -#ifndef INCLUDE_FILESINKGUI_H -#define INCLUDE_FILESINKGUI_H +#ifndef INCLUDE_SDRDAEMONSINKGUI_H +#define INCLUDE_SDRDAEMONSINKGUI_H #include #include "plugin/plugingui.h" -#include "../sdrdaemonoutput/filesinksettings.h" +#include "sdrdaemonsinksettings.h" #include "sdrdaemonsinkoutput.h" @@ -28,15 +28,15 @@ class DeviceSinkAPI; class DeviceSampleSink; namespace Ui { - class FileSinkGui; + class SDRdaemonSinkGui; } -class FileSinkGui : public QWidget, public PluginGUI { +class SDRdaemonSinkGui : public QWidget, public PluginGUI { Q_OBJECT public: - explicit FileSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent = NULL); - virtual ~FileSinkGui(); + explicit SDRdaemonSinkGui(DeviceSinkAPI *deviceAPI, QWidget* parent = NULL); + virtual ~SDRdaemonSinkGui(); void destroy(); void setName(const QString& name); @@ -50,18 +50,15 @@ public: virtual bool handleMessage(const Message& message); private: - Ui::FileSinkGui* ui; + Ui::SDRdaemonSinkGui* ui; DeviceSinkAPI* m_deviceAPI; - FileSinkSettings m_settings; - QString m_fileName; + SDRdaemonSinkSettings m_settings; QTimer m_updateTimer; QTimer m_statusTimer; DeviceSampleSink* m_deviceSampleSink; int m_sampleRate; quint64 m_deviceCenterFrequency; //!< Center frequency in device - bool m_generation; - std::time_t m_startingTimeStamp; int m_samplesCount; std::size_t m_tickCount; int m_lastEngineState; @@ -69,8 +66,6 @@ private: void displaySettings(); void displayTime(); void sendSettings(); - void configureFileName(); - void updateWithGeneration(); void updateWithStreamTime(); void updateSampleRateAndFrequency(); @@ -80,8 +75,9 @@ private slots: void on_centerFrequency_changed(quint64 value); void on_sampleRate_changed(quint64 value); void on_startStop_toggled(bool checked); - void on_showFileDialog_clicked(bool checked); void on_interp_currentIndexChanged(int index); + void on_txDelay_valueChanged(int value); + void on_nbFECBlocks_valueChanged(int value); void updateHardware(); void updateStatus(); void tick(); diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui index d6835c5d5..d656823ad 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkgui.ui @@ -270,6 +270,49 @@ + + + + Qt::Vertical + + + + + + + Dt + + + + + + + + 24 + 24 + + + + Delay in microseconds between consecutive UDP packets + + + 1 + + + 200 + + + 1 + + + + + + + 0000 + + + diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp index 696951f1e..1bf672b29 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.cpp @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////// -// Copyright (C) 2016 Edouard Griffiths, F4EXB // +// 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 // @@ -32,7 +32,6 @@ MESSAGE_CLASS_DEFINITION(SDRdaemonSinkOutput::MsgConfigureSDRdaemonSink, Message) MESSAGE_CLASS_DEFINITION(SDRdaemonSinkOutput::MsgConfigureSDRdaemonSinkWork, Message) MESSAGE_CLASS_DEFINITION(SDRdaemonSinkOutput::MsgConfigureSDRdaemonSinkStreamTiming, Message) -MESSAGE_CLASS_DEFINITION(SDRdaemonSinkOutput::MsgReportSDRdaemonSinkGeneration, Message) MESSAGE_CLASS_DEFINITION(SDRdaemonSinkOutput::MsgReportSDRdaemonSinkStreamTiming, Message) SDRdaemonSinkOutput::SDRdaemonSinkOutput(DeviceSinkAPI *deviceAPI, const QTimer& masterTimer) : @@ -70,9 +69,6 @@ bool SDRdaemonSinkOutput::start() //applySettings(m_generalSettings, m_settings, true); qDebug("SDRdaemonSinkOutput::start: started"); - MsgReportSDRdaemonSinkGeneration *report = MsgReportSDRdaemonSinkGeneration::create(true); // generation on - getOutputMessageQueueToGUI()->push(report); - return true; } @@ -87,9 +83,6 @@ void SDRdaemonSinkOutput::stop() delete m_sdrDaemonSinkThread; m_sdrDaemonSinkThread = 0; } - - MsgReportSDRdaemonSinkGeneration *report = MsgReportSDRdaemonSinkGeneration::create(false); // generation off - getOutputMessageQueueToGUI()->push(report); } const QString& SDRdaemonSinkOutput::getDeviceDescription() const diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h index b92bf204c..548c2a6ad 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkoutput.h @@ -89,26 +89,6 @@ public: { } }; - class MsgReportSDRdaemonSinkGeneration : public Message { - MESSAGE_CLASS_DECLARATION - - public: - bool getAcquisition() const { return m_acquisition; } - - static MsgReportSDRdaemonSinkGeneration* create(bool acquisition) - { - return new MsgReportSDRdaemonSinkGeneration(acquisition); - } - - protected: - bool m_acquisition; - - MsgReportSDRdaemonSinkGeneration(bool acquisition) : - Message(), - m_acquisition(acquisition) - { } - }; - class MsgReportSDRdaemonSinkStreamTiming : public Message { MESSAGE_CLASS_DECLARATION diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.cpp b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.cpp index 65e46ade3..5b5a4f8dd 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.cpp +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.cpp @@ -23,7 +23,7 @@ #include "dsp/samplesourcefifo.h" #include "sdrdaemonsinkthread.h" -SDRdaemonSinkThread::SDRdaemonSinkThread(std::ofstream *samplesStream, SampleSourceFifo* sampleFifo, QObject* parent) : +SDRdaemonSinkThread::SDRdaemonSinkThread(SampleSourceFifo* sampleFifo, QObject* parent) : QThread(parent), m_running(false), m_samplesChunkSize(0), diff --git a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.h b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.h index 128ddfb21..f17dbb19e 100644 --- a/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.h +++ b/plugins/samplesink/sdrdaemonsink/sdrdaemonsinkthread.h @@ -40,7 +40,7 @@ class SDRdaemonSinkThread : public QThread { Q_OBJECT public: - SDRdaemonSinkThread(std::ofstream *samplesStream, SampleSourceFifo* sampleFifo, QObject* parent = 0); + SDRdaemonSinkThread(SampleSourceFifo* sampleFifo, QObject* parent = 0); ~SDRdaemonSinkThread(); void startWork();