From 30e36157a8d8eb179b625fa20f2973199952f041 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 23 Oct 2018 14:34:56 +0200 Subject: [PATCH] Test source: basic pulse test pattern --- .../samplesource/testsource/testsourcegui.ui | 5 ++ .../testsource/testsourceplugin.cpp | 2 +- .../testsource/testsourcesettings.h | 1 + .../testsource/testsourcethread.cpp | 47 +++++++++++++++++++ .../testsource/testsourcethread.h | 5 ++ 5 files changed, 59 insertions(+), 1 deletion(-) diff --git a/plugins/samplesource/testsource/testsourcegui.ui b/plugins/samplesource/testsource/testsourcegui.ui index 31f2bbd58..90fb1f795 100644 --- a/plugins/samplesource/testsource/testsourcegui.ui +++ b/plugins/samplesource/testsource/testsourcegui.ui @@ -480,6 +480,11 @@ FM + + + Pul + + diff --git a/plugins/samplesource/testsource/testsourceplugin.cpp b/plugins/samplesource/testsource/testsourceplugin.cpp index ac8dc459d..ad19169ad 100644 --- a/plugins/samplesource/testsource/testsourceplugin.cpp +++ b/plugins/samplesource/testsource/testsourceplugin.cpp @@ -29,7 +29,7 @@ const PluginDescriptor TestSourcePlugin::m_pluginDescriptor = { QString("Test Source input"), - QString("4.1.0"), + QString("4.2.4"), QString("(c) Edouard Griffiths, F4EXB"), QString("https://github.com/f4exb/sdrangel"), true, diff --git a/plugins/samplesource/testsource/testsourcesettings.h b/plugins/samplesource/testsource/testsourcesettings.h index 6d39c22cf..37dd52797 100644 --- a/plugins/samplesource/testsource/testsourcesettings.h +++ b/plugins/samplesource/testsource/testsourcesettings.h @@ -37,6 +37,7 @@ struct TestSourceSettings { ModulationNone, ModulationAM, ModulationFM, + ModulationPulse, ModulationLast } Modulation; diff --git a/plugins/samplesource/testsource/testsourcethread.cpp b/plugins/samplesource/testsource/testsourcethread.cpp index 361a9a04c..432a5aa12 100644 --- a/plugins/samplesource/testsource/testsourcethread.cpp +++ b/plugins/samplesource/testsource/testsourcethread.cpp @@ -38,6 +38,11 @@ TestSourceThread::TestSourceThread(SampleSinkFifo* sampleFifo, QObject* parent) m_amModulation(0.5f), m_fmDeviationUnit(0.0f), m_fmPhasor(0.0f), + m_pulseWidth(150), + m_pulseSampleCount(0), + m_pulsePatternCount(0), + m_pulsePatternCycle(8), + m_pulsePatternPlaces(3), m_samplerate(48000), m_log2Decim(4), m_fcPos(0), @@ -262,6 +267,48 @@ void TestSourceThread::generate(quint32 chunksize) m_buf[i++] = (int16_t) (im * (float) m_amplitudeBitsQ); } break; + case TestSourceSettings::ModulationPulse: + { + if (m_pulseSampleCount < m_pulseWidth) // sync pattern: 0 + { + m_buf[i++] = m_amplitudeBitsDC; + m_buf[i++] = 0; + } + else if (m_pulseSampleCount < 2*m_pulseWidth) // sync pattern: 1 + { + m_buf[i++] = (int16_t) (m_amplitudeBitsI + m_amplitudeBitsDC); + m_buf[i++] = (int16_t) (m_phaseImbalance * (float) m_amplitudeBitsQ); + } + else if (m_pulseSampleCount < 3*m_pulseWidth) // sync pattern: 0 + { + m_buf[i++] = m_amplitudeBitsDC; + m_buf[i++] = 0; + } + else if (m_pulseSampleCount < (3+m_pulsePatternPlaces)*m_pulseWidth) // binary pattern + { + uint32_t patPulseSampleCount = m_pulseSampleCount - 3*m_pulseWidth; + uint32_t patPulseIndex = patPulseSampleCount / m_pulseWidth; + float patFigure = (m_pulsePatternCount & (1<