diff --git a/doc/img/DATVDemod_plugin.png b/doc/img/DATVDemod_plugin.png index 2d55a97fa..6b34bb15a 100644 Binary files a/doc/img/DATVDemod_plugin.png and b/doc/img/DATVDemod_plugin.png differ diff --git a/doc/img/DATVDemod_plugin.xcf b/doc/img/DATVDemod_plugin.xcf index 9acec9ee4..ad2c4cce7 100644 Binary files a/doc/img/DATVDemod_plugin.xcf and b/doc/img/DATVDemod_plugin.xcf differ diff --git a/doc/img/DATVDemod_pluginDATV.png b/doc/img/DATVDemod_pluginDATV.png index 5628b8fc2..d2a07a43a 100644 Binary files a/doc/img/DATVDemod_pluginDATV.png and b/doc/img/DATVDemod_pluginDATV.png differ diff --git a/doc/img/DATVDemod_pluginDATV.xcf b/doc/img/DATVDemod_pluginDATV.xcf index 1fb6070c5..b64e3eccc 100644 Binary files a/doc/img/DATVDemod_pluginDATV.xcf and b/doc/img/DATVDemod_pluginDATV.xcf differ diff --git a/doc/img/DATVDemod_pluginDATV2.png b/doc/img/DATVDemod_pluginDATV2.png index b8998b11a..95aa2102d 100644 Binary files a/doc/img/DATVDemod_pluginDATV2.png and b/doc/img/DATVDemod_pluginDATV2.png differ diff --git a/doc/img/DATVDemod_pluginDATV2.xcf b/doc/img/DATVDemod_pluginDATV2.xcf index b0c7b0c29..85a0dc3c6 100644 Binary files a/doc/img/DATVDemod_pluginDATV2.xcf and b/doc/img/DATVDemod_pluginDATV2.xcf differ diff --git a/doc/img/DATVDemod_pluginDATV3.png b/doc/img/DATVDemod_pluginDATV3.png index ce4ef8389..4b6799a94 100644 Binary files a/doc/img/DATVDemod_pluginDATV3.png and b/doc/img/DATVDemod_pluginDATV3.png differ diff --git a/doc/img/DATVDemod_pluginDATV3.xcf b/doc/img/DATVDemod_pluginDATV3.xcf index e60403488..b1b44e4ab 100644 Binary files a/doc/img/DATVDemod_pluginDATV3.xcf and b/doc/img/DATVDemod_pluginDATV3.xcf differ diff --git a/plugins/channelrx/demoddatv/datvdemodgui.cpp b/plugins/channelrx/demoddatv/datvdemodgui.cpp index db5584b9a..63a759eae 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.cpp +++ b/plugins/channelrx/demoddatv/datvdemodgui.cpp @@ -40,6 +40,18 @@ #include "datvdemodgui.h" const char* const DATVDemodGUI::m_strChannelID = "sdrangel.channel.demoddatv"; +const QList DATVDemodGUI::m_symbolRates = { + 25000, + 33000, + 66000, + 125000, + 250000, + 333000, + 500000, + 1000000, + 1500000, + 2000000 +}; DATVDemodGUI* DATVDemodGUI::create(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, @@ -343,6 +355,7 @@ void DATVDemodGUI::displaySettings() ui->chkViterbi->setChecked(m_settings.m_viterbi); ui->softLDPC->setChecked(m_settings.m_softLDPC); ui->maxBitflips->setValue(m_settings.m_maxBitflips); + ui->datvStdSR->setValue(indexFromSymbolRate(m_settings.m_symbolRate)); if (m_settings.m_standard == DATVDemodSettings::dvb_version::DVB_S) { @@ -732,6 +745,18 @@ void DATVDemodGUI::on_resetDefaults_clicked() void DATVDemodGUI::on_spiSymbolRate_valueChanged(int value) { m_settings.m_symbolRate = value; + ui->datvStdSR->blockSignals(true); + ui->datvStdSR->setValue(indexFromSymbolRate(value)); + ui->datvStdSR->blockSignals(false); + applySettings(); +} + +void DATVDemodGUI::on_datvStdSR_valueChanged(int value) +{ + m_settings.m_symbolRate = symbolRateFromIndex(value); + ui->spiSymbolRate->blockSignals(true); + ui->spiSymbolRate->setValue(m_settings.m_symbolRate); + ui->spiSymbolRate->blockSignals(false); applySettings(); } @@ -946,6 +971,7 @@ void DATVDemodGUI::makeUIConnections() QObject::connect(ui->chkHardMetric, &QCheckBox::clicked, this, &DATVDemodGUI::on_chkHardMetric_clicked); QObject::connect(ui->resetDefaults, &QPushButton::clicked, this, &DATVDemodGUI::on_resetDefaults_clicked); QObject::connect(ui->spiSymbolRate, QOverload::of(&QSpinBox::valueChanged), this, &DATVDemodGUI::on_spiSymbolRate_valueChanged); + QObject::connect(ui->datvStdSR, &QDial::valueChanged, this, &DATVDemodGUI::on_datvStdSR_valueChanged); QObject::connect(ui->spiNotchFilters, QOverload::of(&QSpinBox::valueChanged), this, &DATVDemodGUI::on_spiNotchFilters_valueChanged); QObject::connect(ui->chkAllowDrift, &QCheckBox::clicked, this, &DATVDemodGUI::on_chkAllowDrift_clicked); QObject::connect(ui->fullScreen, &QPushButton::clicked, this, &DATVDemodGUI::on_fullScreen_clicked); @@ -968,3 +994,28 @@ void DATVDemodGUI::updateAbsoluteCenterFrequency() { setStatusFrequency(m_deviceCenterFrequency + m_settings.m_centerFrequency); } + +int DATVDemodGUI::indexFromSymbolRate(int sampleRate) +{ + int index = 0; + + if (sampleRate < m_symbolRates[1]) { + return index; + } + + for (auto definedRate : m_symbolRates) + { + if (sampleRate <= definedRate) { + return index; + } + + index++; + } + + return index; +} + +int DATVDemodGUI::symbolRateFromIndex(int index) +{ + return m_symbolRates.at(index); +} diff --git a/plugins/channelrx/demoddatv/datvdemodgui.h b/plugins/channelrx/demoddatv/datvdemodgui.h index c39c5a143..062405859 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.h +++ b/plugins/channelrx/demoddatv/datvdemodgui.h @@ -89,6 +89,7 @@ private slots: void on_chkHardMetric_clicked(); void on_resetDefaults_clicked(); void on_spiSymbolRate_valueChanged(int arg1); + void on_datvStdSR_valueChanged(int value); void on_spiNotchFilters_valueChanged(int arg1); void on_chkAllowDrift_clicked(); void on_fullScreen_clicked(); @@ -136,6 +137,7 @@ private: bool m_cstlnSetByModcod; MovingAverageUtil m_objMagSqAverage; + static const QList m_symbolRates; explicit DATVDemodGUI(PluginAPI* objPluginAPI, DeviceUISet *deviceUISet, BasebandSampleSink *rxChannel, QWidget* objParent = 0); virtual ~DATVDemodGUI(); @@ -153,6 +155,8 @@ private: bool handleMessage(const Message& objMessage); void makeUIConnections(); void updateAbsoluteCenterFrequency(); + int indexFromSymbolRate(int sampleRate); + int symbolRateFromIndex(int index); }; #endif // INCLUDE_DATVDEMODGUI_H diff --git a/plugins/channelrx/demoddatv/datvdemodgui.ui b/plugins/channelrx/demoddatv/datvdemodgui.ui index 1e573ecf1..b2eb41238 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.ui +++ b/plugins/channelrx/demoddatv/datvdemodgui.ui @@ -485,12 +485,12 @@ 100 40 - 61 + 41 21 - Symbols/s + Sym/s @@ -589,7 +589,7 @@ - 170 + 140 40 81 23 @@ -805,6 +805,37 @@ 0 + + + + 230 + 40 + 24 + 20 + + + + + 24 + 24 + + + + Select a DATV standard sample rate + + + 10 + + + 1 + + + 1 + + + 5 + + diff --git a/plugins/channelrx/demoddatv/readme.md b/plugins/channelrx/demoddatv/readme.md index e616a1706..34ad561f9 100644 --- a/plugins/channelrx/demoddatv/readme.md +++ b/plugins/channelrx/demoddatv/readme.md @@ -108,6 +108,10 @@ The constellations are as follows: This controls the expected symbol rate in symbols per second +
B.2a.3a: Set standard DATV symbol rate
+ +Use this dial to flip through standard DATV symbol rates: 25, 33, 66, 125, 250, 333, 500, 1000, 1500, 2000 kSym/S +
B.2a.4: FEC rate
Dpends on the standard and modulation