From a447193bd76f2154f04840d67d78812896e3116b Mon Sep 17 00:00:00 2001 From: f4exb Date: Sun, 1 Apr 2018 09:33:08 +0200 Subject: [PATCH] DSD demod: make FM deviation independent of RF bandwidth. Bumped version to 3.14.1 --- app/main.cpp | 2 +- appsrv/main.cpp | 2 +- debian/changelog | 8 ++++++ plugins/channelrx/demoddsd/dsddemod.cpp | 4 +-- plugins/channelrx/demoddsd/dsddemodgui.cpp | 4 +-- plugins/channelrx/demoddsd/dsddemodgui.ui | 27 ++++++++++--------- plugins/channelrx/demoddsd/dsddemodplugin.cpp | 2 +- .../channelrx/demoddsd/dsddemodsettings.cpp | 4 +-- plugins/channelrx/demoddsd/readme.md | 13 ++++++--- plugins/channelrx/demodnfm/nfmplugin.cpp | 2 +- plugins/channeltx/modnfm/nfmmodplugin.cpp | 2 +- 11 files changed, 44 insertions(+), 26 deletions(-) diff --git a/app/main.cpp b/app/main.cpp index dcea8759c..13f5a1121 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -35,7 +35,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo */ QCoreApplication::setOrganizationName("f4exb"); QCoreApplication::setApplicationName("SDRangel"); - QCoreApplication::setApplicationVersion("3.14.0"); + QCoreApplication::setApplicationVersion("3.14.1"); #if 1 qApp->setStyle(QStyleFactory::create("fusion")); diff --git a/appsrv/main.cpp b/appsrv/main.cpp index 235a11ff1..5b06ce273 100644 --- a/appsrv/main.cpp +++ b/appsrv/main.cpp @@ -56,7 +56,7 @@ static int runQtApplication(int argc, char* argv[], qtwebapp::LoggerWithFile *lo QCoreApplication::setOrganizationName("f4exb"); QCoreApplication::setApplicationName("SDRangelSrv"); - QCoreApplication::setApplicationVersion("3.14.0"); + QCoreApplication::setApplicationVersion("3.14.1"); int catchSignals[] = {SIGQUIT, SIGINT, SIGTERM, SIGHUP}; std::vector vsig(catchSignals, catchSignals + sizeof(catchSignals) / sizeof(int)); diff --git a/debian/changelog b/debian/changelog index 3bcfee61b..ef97c66af 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +sdrangel (3.14.1-1) unstable; urgency=medium + + * NFM: fixed lowpass filter initialization (CTCSS) + * DSD demod: set FM deviation independent from RF bandwidth + * DSD demod: implemented DMR negative with DSDcc v1.7.5 + + -- Edouard Griffiths, F4EXB Sun, 01 Apr 2018 12:14:18 +0200 + sdrangel (3.14.0-1) unstable; urgency=medium * New audio devices management diff --git a/plugins/channelrx/demoddsd/dsddemod.cpp b/plugins/channelrx/demoddsd/dsddemod.cpp index e9c2108db..518cc4767 100644 --- a/plugins/channelrx/demoddsd/dsddemod.cpp +++ b/plugins/channelrx/demoddsd/dsddemod.cpp @@ -456,13 +456,13 @@ void DSDDemod::applySettings(const DSDDemodSettings& settings, bool force) m_interpolator.create(16, m_inputSampleRate, (settings.m_rfBandwidth) / 2.2); m_interpolatorDistanceRemain = 0; m_interpolatorDistance = (Real) m_inputSampleRate / (Real) 48000; - m_phaseDiscri.setFMScaling((float) settings.m_rfBandwidth / (float) settings.m_fmDeviation); + //m_phaseDiscri.setFMScaling((float) settings.m_rfBandwidth / (float) settings.m_fmDeviation); m_settingsMutex.unlock(); } if ((settings.m_fmDeviation != m_settings.m_fmDeviation) || force) { - m_phaseDiscri.setFMScaling((float) settings.m_rfBandwidth / (float) settings.m_fmDeviation); + m_phaseDiscri.setFMScaling(48000.0f / (2.0f*settings.m_fmDeviation)); } if ((settings.m_squelchGate != m_settings.m_squelchGate) || force) diff --git a/plugins/channelrx/demoddsd/dsddemodgui.cpp b/plugins/channelrx/demoddsd/dsddemodgui.cpp index b8c5e43ae..d8e8e8edf 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.cpp +++ b/plugins/channelrx/demoddsd/dsddemodgui.cpp @@ -135,7 +135,7 @@ void DSDDemodGUI::on_demodGain_valueChanged(int value) void DSDDemodGUI::on_fmDeviation_valueChanged(int value) { m_settings.m_fmDeviation = value * 100.0; - ui->fmDeviationText->setText(QString("%1k").arg(value / 10.0, 0, 'f', 1)); + ui->fmDeviationText->setText(QString("%1%2k").arg(QChar(0xB1, 0x00)).arg(value / 10.0, 0, 'f', 1)); applySettings(); } @@ -384,7 +384,7 @@ void DSDDemodGUI::displaySettings() ui->rfBWText->setText(QString("%1k").arg(ui->rfBW->value() / 10.0, 0, 'f', 1)); ui->fmDeviation->setValue(m_settings.m_fmDeviation / 100.0); - ui->fmDeviationText->setText(QString("%1k").arg(ui->fmDeviation->value() / 10.0, 0, 'f', 1)); + ui->fmDeviationText->setText(QString("%1%2k").arg(QChar(0xB1, 0x00)).arg(ui->fmDeviation->value() / 10.0, 0, 'f', 1)); ui->squelch->setValue(m_settings.m_squelch * 10.0); ui->squelchText->setText(QString("%1").arg(ui->squelch->value() / 10.0, 0, 'f', 1)); diff --git a/plugins/channelrx/demoddsd/dsddemodgui.ui b/plugins/channelrx/demoddsd/dsddemodgui.ui index 2efd83113..8d1ed6a0c 100644 --- a/plugins/channelrx/demoddsd/dsddemodgui.ui +++ b/plugins/channelrx/demoddsd/dsddemodgui.ui @@ -827,7 +827,7 @@ 50 107 - 151 + 141 16 @@ -835,13 +835,16 @@ Maximum frequency deviation (kHz) - 500 + 100 1 + + 35 + - 50 + 35 Qt::Horizontal @@ -863,20 +866,20 @@ - 210 + 200 100 - 40 + 50 29 - 40 + 50 0 - 00.0k + +00.0k Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -900,7 +903,7 @@ 50 137 - 151 + 141 16 @@ -917,7 +920,7 @@ 50 - 400 + 200 1 @@ -1054,15 +1057,15 @@ - 210 + 200 130 - 40 + 50 29 - 35 + 50 0 diff --git a/plugins/channelrx/demoddsd/dsddemodplugin.cpp b/plugins/channelrx/demoddsd/dsddemodplugin.cpp index c3c5a6644..beff73f71 100644 --- a/plugins/channelrx/demoddsd/dsddemodplugin.cpp +++ b/plugins/channelrx/demoddsd/dsddemodplugin.cpp @@ -25,7 +25,7 @@ const PluginDescriptor DSDDemodPlugin::m_pluginDescriptor = { QString("DSD Demodulator"), - QString("3.14.0"), + QString("3.14.1"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channelrx/demoddsd/dsddemodsettings.cpp b/plugins/channelrx/demoddsd/dsddemodsettings.cpp index cba976937..de7c76c80 100644 --- a/plugins/channelrx/demoddsd/dsddemodsettings.cpp +++ b/plugins/channelrx/demoddsd/dsddemodsettings.cpp @@ -32,8 +32,8 @@ void DSDDemodSettings::resetToDefaults() { m_inputFrequencyOffset = 0; m_rfBandwidth = 12500.0; - m_fmDeviation = 5000.0; - m_demodGain = 1.25; + m_fmDeviation = 3500.0; + m_demodGain = 1.0; m_volume = 2.0; m_baudRate = 4800; m_squelchGate = 5; // 10s of ms at 48000 Hz sample rate. Corresponds to 2400 for AGC attack diff --git a/plugins/channelrx/demoddsd/readme.md b/plugins/channelrx/demoddsd/readme.md index da4830eff..9eb14f29d 100644 --- a/plugins/channelrx/demoddsd/readme.md +++ b/plugins/channelrx/demoddsd/readme.md @@ -273,7 +273,7 @@ This display shows the sampled points of the demodulated FM signal in a XY plane - X as the signal at time t and Y the signal at time t minus symbol time if "transitions constellation" is selected by button (B.13) - X as the signal and Y as the synchronization signal if "symbol synchronization" is selected by button (B.13) -The display shows 16 points as yellow crosses that can be used to tune the center frequency and FM deviation and gain so that symbol recovery can be done with the best conditions. In the rest of the documentation they will be referenced with numbers fron 0 to 15 starting at the top left corner and going from left to right and top to bottom. +The display shows 16 points as yellow crosses that can be used to tune the center frequency (A.1) and FM deviation (B.17) so that symbol recovery can be done with the best conditions. In the rest of the documentation they will be referenced with numbers fron 0 to 15 starting at the top left corner and going from left to right and top to bottom.
Transition constellation display
@@ -351,6 +351,8 @@ This can be one of the following: - `+DMRd`: non-inverted DMR data frame - `+DMRv`: non-inverted DMR voice frame + - `-DMRd`: inverted DMR data frame + - `-DMRv`: inverted DMR voice frame - `+D-STAR`: non-inverted D-Star frame - `-D-STAR`: inverted D-Star frame - `+D-STAR_HD`: non-inverted D-Star header frame encountered @@ -445,8 +447,13 @@ This button tunes the persistence decay of the points displayer on B.1. The trac

B.17: Maximum expected FM deviation

-This is the deviation in kHz leading to maximum (100%) deviation. You should aim for 30 to 50% (+/-300 to +/-500m) deviation on the scope display. +This is the one side deviation in kHz (±) leading to maximum (100%) deviation. You should adjust this value to make the figure on the signal scope fill the entire screen as shown in the screenshots above. The typical deviations by mode for a unit gain (1.0 at B.18) are: + + - DMR: ±5.4k + - dPMR: ±2.7k + - D-Star: ±3.5k + - YSF: ±7.0k

B.18: Gain after discriminator

-This is the gain applied to the output of the discriminator before the decoder +This is the gain applied to the output of the discriminator before the decoder. Normally this would be set at unit gain 1.0 while the FM deviation is adjusted. However this can be used to extend the range of FM adjustment. diff --git a/plugins/channelrx/demodnfm/nfmplugin.cpp b/plugins/channelrx/demodnfm/nfmplugin.cpp index f474d5bbe..684f3835b 100644 --- a/plugins/channelrx/demodnfm/nfmplugin.cpp +++ b/plugins/channelrx/demodnfm/nfmplugin.cpp @@ -7,7 +7,7 @@ const PluginDescriptor NFMPlugin::m_pluginDescriptor = { QString("NFM Demodulator"), - QString("3.14.0"), + QString("3.14.1"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/channeltx/modnfm/nfmmodplugin.cpp b/plugins/channeltx/modnfm/nfmmodplugin.cpp index d020c3594..8447328d6 100644 --- a/plugins/channeltx/modnfm/nfmmodplugin.cpp +++ b/plugins/channeltx/modnfm/nfmmodplugin.cpp @@ -23,7 +23,7 @@ const PluginDescriptor NFMModPlugin::m_pluginDescriptor = { QString("NFM Modulator"), - QString("3.12.0"), + QString("3.14.1"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true,