Skip to content

Commit e22688e

Browse files
authored
Merge pull request #2186 from srcejon/freq_scanner
Frequency Scanner: Fix rounding error
2 parents 2baea03 + fd1d411 commit e22688e

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

plugins/channelrx/freqscanner/freqscanner.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,9 @@ void FreqScanner::stop()
198198
qDebug("FreqScanner::stop");
199199
m_running = false;
200200
m_thread->exit();
201+
#ifndef __EMSCRIPTEN__
201202
m_thread->wait();
203+
#endif
202204
}
203205

204206
bool FreqScanner::handleMessage(const Message& cmd)
@@ -343,9 +345,9 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList<
343345
int binsPerChannel;
344346
calcScannerSampleRate(m_settings.m_channelBandwidth, m_basebandSampleRate, m_scannerSampleRate, fftSize, binsPerChannel);
345347

346-
// Align first frequency so we cover as many channels as possible, while channel guard band
348+
// Align first frequency so we cover as many channels as possible, while skipping channel guard band (12.5% either end)
347349
// Can we adjust this to avoid DC bin?
348-
m_stepStartFrequency = frequencies.front() + m_scannerSampleRate / 2 - m_scannerSampleRate * 0.125f;
350+
m_stepStartFrequency = frequencies.front() + m_scannerSampleRate / 2 - (m_scannerSampleRate / 8);
349351
m_stepStopFrequency = frequencies.back();
350352

351353
// If all frequencies fit within usable bandwidth, we can have the first frequency more central
@@ -374,7 +376,7 @@ void FreqScanner::processScanResults(const QDateTime& fftStartTime, const QList<
374376
bool complete = false; // Have all frequencies been scanned?
375377
bool freqInRange = false;
376378
qint64 nextCenterFrequency = m_centerFrequency;
377-
float usableBW = m_scannerSampleRate * 0.75f;
379+
int usableBW = (m_scannerSampleRate * 3 / 4) & ~1;
378380
do
379381
{
380382
if (nextCenterFrequency + usableBW / 2 > m_stepStopFrequency)

plugins/channelrx/freqscanner/freqscannersink.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ void FreqScannerSink::processOneSample(Complex &ci)
117117
qint64 diff = frequency - startFrequency;
118118
float binBW = m_scannerSampleRate / (float)m_fftSize;
119119

120-
// Ignore results in uppper and lower 12.5%, as there may be aliasing here from half-band filters
121-
if ((diff < m_scannerSampleRate * 0.875f) && (diff >= m_scannerSampleRate * 0.125f))
120+
// Ignore results in upper and lower 12.5%, as there may be aliasing here from half-band filters
121+
if ((diff >= m_scannerSampleRate / 8) && (diff < m_scannerSampleRate * 7 / 8))
122122
{
123123
int bin = std::round(diff / binBW);
124124
int channelBins;

0 commit comments

Comments
 (0)