mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-12-22 09:31:10 -05:00
Deep redesign: Init sequence review phase #1: Fixing channel GUI init
This commit is contained in:
parent
2db6c3a4c7
commit
30957e3002
@ -44,11 +44,15 @@ qint64 NFMDemodGUI::getCenterFrequency() const
|
||||
|
||||
void NFMDemodGUI::resetToDefaults()
|
||||
{
|
||||
blockGUISignals(true);
|
||||
|
||||
ui->rfBW->setValue(4);
|
||||
ui->afBW->setValue(3);
|
||||
ui->volume->setValue(20);
|
||||
ui->squelch->setValue(-40);
|
||||
ui->deltaFrequency->setValue(0);
|
||||
|
||||
blockGUISignals(false);
|
||||
applySettings();
|
||||
}
|
||||
|
||||
@ -81,6 +85,9 @@ bool NFMDemodGUI::deserialize(const QByteArray& data)
|
||||
QByteArray bytetmp;
|
||||
quint32 u32tmp;
|
||||
qint32 tmp;
|
||||
|
||||
blockGUISignals(true);
|
||||
|
||||
d.readS32(1, &tmp, 0);
|
||||
m_channelMarker->setCenterFrequency(tmp);
|
||||
d.readS32(2, &tmp, 4);
|
||||
@ -97,6 +104,9 @@ bool NFMDemodGUI::deserialize(const QByteArray& data)
|
||||
m_channelMarker->setColor(u32tmp);
|
||||
d.readS32(8, &tmp, 0);
|
||||
ui->ctcss->setCurrentIndex(tmp);
|
||||
|
||||
blockGUISignals(false);
|
||||
|
||||
applySettings();
|
||||
return true;
|
||||
}
|
||||
@ -287,3 +297,14 @@ void NFMDemodGUI::setCtcssFreq(Real ctcssFreq)
|
||||
}
|
||||
}
|
||||
|
||||
void NFMDemodGUI::blockGUISignals(bool block)
|
||||
{
|
||||
m_channelMarker->blockSignals(block);
|
||||
ui->deltaFrequency->blockSignals(block);
|
||||
ui->deltaMinus->blockSignals(block);
|
||||
ui->rfBW->blockSignals(block);
|
||||
ui->afBW->blockSignals(block);
|
||||
ui->volume->blockSignals(block);
|
||||
ui->squelch->blockSignals(block);
|
||||
}
|
||||
|
||||
|
@ -59,8 +59,9 @@ private:
|
||||
static const int m_rfBW[];
|
||||
|
||||
explicit NFMDemodGUI(PluginAPI* pluginAPI, QWidget* parent = NULL);
|
||||
~NFMDemodGUI();
|
||||
virtual ~NFMDemodGUI();
|
||||
|
||||
void blockGUISignals(bool block);
|
||||
void applySettings();
|
||||
|
||||
void leaveEvent(QEvent*);
|
||||
|
@ -61,17 +61,17 @@ void BladerfInput::Settings::resetToDefaults()
|
||||
QByteArray BladerfInput::Settings::serialize() const
|
||||
{
|
||||
SimpleSerializer s(1);
|
||||
s.writeU64(1, m_centerFrequency);
|
||||
s.writeS32(2, m_devSampleRate);
|
||||
s.writeS32(3, m_lnaGain);
|
||||
s.writeS32(4, m_vga1);
|
||||
s.writeS32(5, m_vga2);
|
||||
s.writeU32(6, m_log2Decim);
|
||||
s.writeBool(7, m_xb200);
|
||||
s.writeS32(8, (int) m_xb200Path);
|
||||
s.writeS32(9, (int) m_xb200Filter);
|
||||
s.writeS32(10, m_bandwidth);
|
||||
s.writeS32(11, (int) m_fcPos);
|
||||
s.writeS32(1, m_lnaGain);
|
||||
s.writeS32(2, m_vga1);
|
||||
s.writeS32(3, m_vga2);
|
||||
s.writeU32(4, m_log2Decim);
|
||||
s.writeBool(5, m_xb200);
|
||||
s.writeS32(6, (int) m_xb200Path);
|
||||
s.writeS32(7, (int) m_xb200Filter);
|
||||
s.writeS32(8, m_bandwidth);
|
||||
s.writeS32(9, (int) m_fcPos);
|
||||
s.writeU64(10, m_centerFrequency);
|
||||
s.writeS32(11, m_devSampleRate);
|
||||
return s.final();
|
||||
}
|
||||
|
||||
@ -88,20 +88,20 @@ bool BladerfInput::Settings::deserialize(const QByteArray& data)
|
||||
if (d.getVersion() == 1)
|
||||
{
|
||||
int intval;
|
||||
d.readU64(1, &m_centerFrequency, 435000*1000);
|
||||
d.readS32(2, &m_devSampleRate, 3072000);
|
||||
d.readS32(3, &m_lnaGain, 0);
|
||||
d.readS32(4, &m_vga1, 20);
|
||||
d.readS32(5, &m_vga2, 9);
|
||||
d.readU32(6, &m_log2Decim, 0);
|
||||
d.readBool(7, &m_xb200);
|
||||
d.readS32(8, &intval);
|
||||
d.readS32(1, &m_lnaGain, 0);
|
||||
d.readS32(2, &m_vga1, 20);
|
||||
d.readS32(3, &m_vga2, 9);
|
||||
d.readU32(4, &m_log2Decim, 0);
|
||||
d.readBool(5, &m_xb200);
|
||||
d.readS32(6, &intval);
|
||||
m_xb200Path = (bladerf_xb200_path) intval;
|
||||
d.readS32(9, &intval);
|
||||
d.readS32(7, &intval);
|
||||
m_xb200Filter = (bladerf_xb200_filter) intval;
|
||||
d.readS32(10, &m_bandwidth, 0);
|
||||
d.readS32(11, &intval, 0);
|
||||
d.readS32(8, &m_bandwidth, 0);
|
||||
d.readS32(9, &intval, 0);
|
||||
m_fcPos = (fcPos_t) intval;
|
||||
d.readU64(10, &m_centerFrequency, 435000*1000);
|
||||
d.readS32(11, &m_devSampleRate, 3072000);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
@ -80,7 +80,7 @@
|
||||
<property name="text">
|
||||
<string><p>Copyright (C) 2013 maintech GmbH, Otto-Hahn-Str. 15, 97204 Höchberg, Germany<br>
|
||||
Written by Christian Daniel.</p>
|
||||
<p>Copyright (C) 2015 Edouard Griffiths, F4EXB. Code branch at: <a href="https://github.com/f4exb/rtl-sdrangelove/tree/f4exb">https://github.com/f4exb/rtl-sdrangelove/tree/f4exb</a>.</p>
|
||||
<p>Version 2 Copyright (C) 2015 Edouard Griffiths, F4EXB. Code branch at: <a href="https://github.com/f4exb/rtl-sdrangelove/tree/f4exb">https://github.com/f4exb/rtl-sdrangelove/tree/f4exb</a>. Complete redesign.</p>
|
||||
<p>Many thanks to the osmocom developer team - especially horizon, Hoernchen &amp; tnt.</p>
|
||||
<p>SDRangelove itself is licensed as "GPL2+" with the added exception, that plugins using only header files from the "include"-subdirectory and not from the "include-gpl"-subdirectory do not count as derived works.</p>
|
||||
<p>The following rules apply to the SDRangelove main application and libsdrbase:<br>
|
||||
|
@ -53,6 +53,7 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||
m_sampleFileName(std::string("./test.sdriq")),
|
||||
m_pluginManager(new PluginManager(this, m_dspEngine))
|
||||
{
|
||||
qDebug() << "MainWindow::MainWindow: start";
|
||||
connect(m_dspEngine->getOutputMessageQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
|
||||
m_dspEngine->start();
|
||||
|
||||
@ -60,11 +61,15 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||
delete ui->mainToolBar;
|
||||
createStatusBar();
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #1";
|
||||
|
||||
setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea);
|
||||
setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
|
||||
setCorner(Qt::TopRightCorner, Qt::RightDockWidgetArea);
|
||||
setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #2";
|
||||
|
||||
// work around broken Qt dock widget ordering
|
||||
removeDockWidget(ui->inputDock);
|
||||
removeDockWidget(ui->processingDock);
|
||||
@ -74,18 +79,26 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||
addDockWidget(Qt::LeftDockWidgetArea, ui->processingDock);
|
||||
addDockWidget(Qt::LeftDockWidgetArea, ui->presetDock);
|
||||
addDockWidget(Qt::RightDockWidgetArea, ui->channelDock);
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #3";
|
||||
|
||||
ui->inputDock->show();
|
||||
ui->processingDock->show();
|
||||
ui->presetDock->show();
|
||||
ui->channelDock->show();
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #4";
|
||||
|
||||
ui->menu_Window->addAction(ui->inputDock->toggleViewAction());
|
||||
ui->menu_Window->addAction(ui->processingDock->toggleViewAction());
|
||||
ui->menu_Window->addAction(ui->presetDock->toggleViewAction());
|
||||
ui->menu_Window->addAction(ui->channelDock->toggleViewAction());
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #5";
|
||||
|
||||
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleMessages()), Qt::QueuedConnection);
|
||||
//connect(m_dspEngine->getReportQueue(), SIGNAL(messageEnqueued()), this, SLOT(handleDSPMessages()), Qt::QueuedConnection);
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #6";
|
||||
|
||||
connect(&m_statusTimer, SIGNAL(timeout()), this, SLOT(updateStatus()));
|
||||
m_statusTimer.start(500);
|
||||
@ -94,11 +107,13 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||
|
||||
m_pluginManager->loadPlugins();
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #7";
|
||||
|
||||
bool sampleSourceSignalsBlocked = ui->sampleSource->blockSignals(true);
|
||||
m_pluginManager->fillSampleSourceSelector(ui->sampleSource);
|
||||
ui->sampleSource->blockSignals(sampleSourceSignalsBlocked);
|
||||
|
||||
//m_dspEngine->start();
|
||||
qDebug() << "MainWindow::MainWindow: step #8 (was DSP engine start)";
|
||||
|
||||
m_spectrumVis = new SpectrumVis(ui->glSpectrum);
|
||||
m_dspEngine->addSink(m_spectrumVis);
|
||||
@ -109,19 +124,36 @@ MainWindow::MainWindow(QWidget* parent) :
|
||||
ui->glSpectrum->connectTimer(m_masterTimer);
|
||||
ui->glSpectrumGUI->setBuddies(m_spectrumVis->getInputMessageQueue(), m_spectrumVis, ui->glSpectrum);
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #9";
|
||||
|
||||
loadSettings();
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #10";
|
||||
|
||||
int sampleSourceIndex = m_pluginManager->selectSampleSource(m_settings.getCurrent()->getSource()); // select SampleSource from settings
|
||||
if(sampleSourceIndex >= 0) {
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #11";
|
||||
|
||||
if(sampleSourceIndex >= 0)
|
||||
{
|
||||
bool sampleSourceSignalsBlocked = ui->sampleSource->blockSignals(true);
|
||||
ui->sampleSource->setCurrentIndex(sampleSourceIndex);
|
||||
ui->sampleSource->blockSignals(sampleSourceSignalsBlocked);
|
||||
}
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #12";
|
||||
|
||||
loadSettings(m_settings.getCurrent());
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #13";
|
||||
|
||||
applySettings();
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: step #14";
|
||||
|
||||
updatePresets();
|
||||
|
||||
qDebug() << "MainWindow::MainWindow: end";
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
@ -182,6 +214,7 @@ void MainWindow::setInputGUI(QWidget* gui)
|
||||
void MainWindow::loadSettings()
|
||||
{
|
||||
qDebug() << "MainWindow::loadSettings";
|
||||
|
||||
m_settings.load();
|
||||
|
||||
for(int i = 0; i < m_settings.getPresetCount(); ++i)
|
||||
@ -191,7 +224,7 @@ void MainWindow::loadSettings()
|
||||
|
||||
Preset* current = m_settings.getCurrent();
|
||||
|
||||
loadSettings(current);
|
||||
//loadSettings(current);
|
||||
}
|
||||
|
||||
void MainWindow::loadSettings(const Preset* preset)
|
||||
|
@ -11,7 +11,7 @@
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>SDRangelove</string>
|
||||
<string>SDRangelove V2</string>
|
||||
</property>
|
||||
<property name="windowIcon">
|
||||
<iconset resource="resources/res.qrc">
|
||||
|
@ -82,41 +82,57 @@ void PluginManager::loadSettings(const Preset* preset)
|
||||
{
|
||||
qDebug() << "PluginManager::loadSettings";
|
||||
|
||||
fprintf(stderr, "-------- [%s | %s] --------\n", qPrintable(preset->getGroup()), qPrintable(preset->getDescription()));
|
||||
fprintf(stderr, "Loading preset [%s | %s]\n", qPrintable(preset->getGroup()), qPrintable(preset->getDescription()));
|
||||
|
||||
// copy currently open channels and clear list
|
||||
ChannelInstanceRegistrations openChannels = m_channelInstanceRegistrations;
|
||||
m_channelInstanceRegistrations.clear();
|
||||
|
||||
for(int i = 0; i < preset->getChannelCount(); i++) {
|
||||
for(int i = 0; i < preset->getChannelCount(); i++)
|
||||
{
|
||||
const Preset::ChannelConfig& channelConfig = preset->getChannelConfig(i);
|
||||
ChannelInstanceRegistration reg;
|
||||
|
||||
// if we have one instance available already, use it
|
||||
for(int i = 0; i < openChannels.count(); i++) {
|
||||
qDebug("compare [%s] vs [%s]", qPrintable(openChannels[i].m_channelName), qPrintable(channelConfig.m_channel));
|
||||
if(openChannels[i].m_channelName == channelConfig.m_channel) {
|
||||
|
||||
for(int i = 0; i < openChannels.count(); i++)
|
||||
{
|
||||
qDebug(" - compare [%s] vs [%s]", qPrintable(openChannels[i].m_channelName), qPrintable(channelConfig.m_channel));
|
||||
|
||||
if(openChannels[i].m_channelName == channelConfig.m_channel)
|
||||
{
|
||||
qDebug("channel [%s] found", qPrintable(openChannels[i].m_channelName));
|
||||
reg = openChannels.takeAt(i);
|
||||
m_channelInstanceRegistrations.append(reg);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// if we haven't one already, create one
|
||||
if(reg.m_gui == NULL) {
|
||||
for(int i = 0; i < m_channelRegistrations.count(); i++) {
|
||||
if(m_channelRegistrations[i].m_channelName == channelConfig.m_channel) {
|
||||
qDebug("creating new channel [%s]", qPrintable(channelConfig.m_channel));
|
||||
|
||||
if(reg.m_gui == NULL)
|
||||
{
|
||||
for(int i = 0; i < m_channelRegistrations.count(); i++)
|
||||
{
|
||||
if(m_channelRegistrations[i].m_channelName == channelConfig.m_channel)
|
||||
{
|
||||
qDebug(" - creating new channel [%s]", qPrintable(channelConfig.m_channel));
|
||||
reg = ChannelInstanceRegistration(channelConfig.m_channel, m_channelRegistrations[i].m_plugin->createChannel(channelConfig.m_channel));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(reg.m_gui != NULL)
|
||||
{
|
||||
qDebug(" - deserializing channel [%s]", qPrintable(channelConfig.m_channel));
|
||||
reg.m_gui->deserialize(channelConfig.m_config);
|
||||
}
|
||||
}
|
||||
|
||||
// everything, that is still "available" is not needed anymore
|
||||
for(int i = 0; i < openChannels.count(); i++) {
|
||||
for(int i = 0; i < openChannels.count(); i++)
|
||||
{
|
||||
qDebug("destroying spare channel [%s]", qPrintable(openChannels[i].m_channelName));
|
||||
openChannels[i].m_gui->destroy();
|
||||
}
|
||||
@ -131,7 +147,7 @@ void PluginManager::loadSettings(const Preset* preset)
|
||||
*/
|
||||
if(m_sampleSourceName == preset->getSource())
|
||||
{
|
||||
qDebug() << "m_sampleSourcePluginGUI->deserialize (" << m_sampleSourceName .toStdString().c_str() << ")";
|
||||
qDebug() << " - deserializing source " << qPrintable(m_sampleSourceName);
|
||||
m_sampleSourcePluginGUI->deserialize(preset->getSourceConfig());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user