diff --git a/plugins/samplesource/fcd/fcdinput.cpp b/plugins/samplesource/fcd/fcdinput.cpp index 0c896187b..6d0fc1545 100644 --- a/plugins/samplesource/fcd/fcdinput.cpp +++ b/plugins/samplesource/fcd/fcdinput.cpp @@ -93,6 +93,9 @@ bool FCDInput::startInput(int device) m_deviceDescription = QString("Funcube Dongle"); + if (!applySettings(m_generalSettings, m_settings, true)) + qCritical("FCD: Unable to set config at start"); + qDebug("FCDInput: start"); return true; } @@ -141,17 +144,24 @@ bool FCDInput::handleMessage(Message* message) bool FCDInput::applySettings(const GeneralSettings& generalSettings, const Settings& settings, bool force) { QMutexLocker mutexLocker(&m_mutex); + bool freqChange; if(!m_FCDThread) return false; - // TODO: Only call when changed - m_FCDThread->set_lna_gain(settings.gain); - m_FCDThread->set_bias_t(settings.bias); + if((m_generalSettings.m_centerFrequency != generalSettings.m_centerFrequency)) + freqChange = true; + else + freqChange = false; - if((m_generalSettings.m_centerFrequency != generalSettings.m_centerFrequency) || force) { + if(freqChange || force) { m_generalSettings.m_centerFrequency = generalSettings.m_centerFrequency; m_FCDThread->set_center_freq( (double)(generalSettings.m_centerFrequency) ); + } + + if(!freqChange || force) { + m_FCDThread->set_lna_gain(settings.gain); + m_FCDThread->set_bias_t(settings.bias); } return true; } diff --git a/plugins/samplesource/fcd/fcdthread.cpp b/plugins/samplesource/fcd/fcdthread.cpp index beacfe2cb..289b0e575 100644 --- a/plugins/samplesource/fcd/fcdthread.cpp +++ b/plugins/samplesource/fcd/fcdthread.cpp @@ -41,11 +41,11 @@ void FCDThread::stopWork() void FCDThread::run() { - m_running = true; if ( !OpenSource("hw:CARD=V20") ) return; // TODO: fallback to original fcd + m_running = true; while(m_running) { if ( work(BLOCKSIZE) < 0) break; diff --git a/plugins/samplesource/v4l/v4linput.cpp b/plugins/samplesource/v4l/v4linput.cpp index c9e83f217..0741eca5a 100644 --- a/plugins/samplesource/v4l/v4linput.cpp +++ b/plugins/samplesource/v4l/v4linput.cpp @@ -96,6 +96,7 @@ bool V4LInput::startInput(int device) qDebug("V4LInput: start"); MsgReportV4L::create(m_gains)->submit(m_guiMessageQueue); + applySettings(m_generalSettings, m_settings, true); return true; }