From 1ffc0e3d5606834cc005db14c2e15a90b19c31de Mon Sep 17 00:00:00 2001 From: zedamota Date: Tue, 31 May 2011 15:29:53 +0100 Subject: [PATCH 1/5] Ground/OP-512- Autoconnect option, configured trough the options menu. Default is ON. --- .../plugins/coreplugin/connectionmanager.cpp | 27 ++++++++++++++----- .../plugins/coreplugin/connectionmanager.h | 4 ++- .../plugins/coreplugin/generalsettings.cpp | 13 +++++++-- .../src/plugins/coreplugin/generalsettings.h | 2 ++ .../src/plugins/coreplugin/generalsettings.ui | 17 ++++++++++++ .../src/plugins/coreplugin/mainwindow.cpp | 5 ++++ .../src/plugins/coreplugin/mainwindow.h | 2 +- .../src/plugins/rawhid/usbmonitor_win.cpp | 14 ++++++---- .../src/plugins/uavobjects/uavobject.cpp | 3 ++- .../plugins/uploader/uploadergadgetwidget.cpp | 4 +-- 10 files changed, 72 insertions(+), 19 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp b/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp index 2fb7778e7..e2113273a 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp @@ -36,15 +36,13 @@ #include "fancytabwidget.h" #include "fancyactionbar.h" -#include "mainwindow.h" #include "qextserialport/src/qextserialenumerator.h" #include "qextserialport/src/qextserialport.h" - #include #include #include #include - +#include namespace Core { @@ -52,9 +50,9 @@ ConnectionManager::ConnectionManager(Internal::MainWindow *mainWindow, Internal: QWidget(mainWindow), // Pip m_availableDevList(0), m_connectBtn(0), - m_ioDev(NULL) + m_ioDev(NULL),m_mainWindow(mainWindow) { - Q_UNUSED(mainWindow); + // Q_UNUSED(mainWindow); QVBoxLayout *top = new QVBoxLayout; top->setSpacing(0); @@ -344,7 +342,7 @@ void ConnectionManager::devChanged(IConnection *connection) //and add them back in the list QList availableDev = connection->availableDevices(); - foreach (IConnection::device dev, availableDev) + foreach (IConnection::device dev, availableDev) { QString cbName = connection->shortName() + ": " + dev.name; QString disp = connection->shortName() + " : " + dev.displayName; @@ -352,11 +350,26 @@ void ConnectionManager::devChanged(IConnection *connection) } //add all the list again to the combobox - foreach (devListItem d, m_devList) + foreach (devListItem d, m_devList) { m_availableDevList->addItem(d.displayName); m_availableDevList->setItemData(m_availableDevList->count()-1,(const QString)d.devName,Qt::ToolTipRole); + if(!m_ioDev && m_mainWindow->generalSettings()->autoConnect() && d.displayName.startsWith("USB")) + { + qDebug()<<"INSERTION"<setCurrentIndex(m_availableDevList->count()-1); + connectDevice(); + } } + if(m_ioDev)//if a device is connected make it the one selected on the dropbox + { + for(int x=0;xcount();++x) + { + if(m_connectionDevice.devName==m_availableDevList->itemData(x,Qt::ToolTipRole).toString()) + m_availableDevList->setCurrentIndex(x); + } + } + //disable connection button if the liNameif (m_availableDevList->count() > 0) if (m_availableDevList->count() > 0) diff --git a/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.h b/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.h index 20da52ed4..085111700 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.h +++ b/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.h @@ -30,7 +30,8 @@ #define CONNECTIONMANAGER_H #include - +#include "mainwindow.h" +#include "generalsettings.h" #include #include #include @@ -108,6 +109,7 @@ protected: private: bool connectDevice(); + Internal::MainWindow *m_mainWindow; }; diff --git a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp index d1f047c15..be645e709 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp @@ -45,7 +45,8 @@ using namespace Core::Internal; GeneralSettings::GeneralSettings(): m_dialog(0), - m_saveSettingsOnExit(true) + m_saveSettingsOnExit(true), + m_autoConnect(true) { } @@ -114,7 +115,7 @@ QWidget *GeneralSettings::createPage(QWidget *parent) fillLanguageBox(); m_page->checkBoxSaveOnExit->setChecked(m_saveSettingsOnExit); - + m_page->checkAutoConnect->setChecked(m_autoConnect); m_page->colorButton->setColor(StyleHelper::baseColor()); #ifdef Q_OS_UNIX m_page->terminalEdit->setText(ConsoleProcess::terminalEmulator(Core::ICore::instance()->settings())); @@ -146,6 +147,7 @@ void GeneralSettings::apply() StyleHelper::setBaseColor(m_page->colorButton->color()); m_saveSettingsOnExit = m_page->checkBoxSaveOnExit->isChecked(); + m_autoConnect = m_page->checkAutoConnect->isChecked(); #ifdef Q_OS_UNIX ConsoleProcess::setTerminalEmulator(Core::ICore::instance()->settings(), m_page->terminalEdit->text()); @@ -163,6 +165,7 @@ void GeneralSettings::readSettings(QSettings* qs) qs->beginGroup(QLatin1String("General")); m_language = qs->value(QLatin1String("OverrideLanguage"),QLocale::system().name()).toString(); m_saveSettingsOnExit = qs->value(QLatin1String("SaveSettingsOnExit"),m_saveSettingsOnExit).toBool(); + m_autoConnect = qs->value(QLatin1String("AutoConnect"),m_autoConnect).toBool(); qs->endGroup(); } @@ -177,6 +180,7 @@ void GeneralSettings::saveSettings(QSettings* qs) qs->setValue(QLatin1String("OverrideLanguage"), m_language); qs->setValue(QLatin1String("SaveSettingsOnExit"), m_saveSettingsOnExit); + qs->setValue(QLatin1String("AutoConnect"), m_autoConnect); qs->endGroup(); } @@ -241,3 +245,8 @@ bool GeneralSettings::saveSettingsOnExit() const { return m_saveSettingsOnExit; } + +bool GeneralSettings::autoConnect() const +{ + return m_autoConnect; +} diff --git a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h index 816deb8db..8c5cb1152 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h +++ b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h @@ -56,6 +56,7 @@ public: void apply(); void finish(); bool saveSettingsOnExit() const; + bool autoConnect() const; void readSettings(QSettings* qs); void saveSettings(QSettings* qs); @@ -75,6 +76,7 @@ private: Ui::GeneralSettings *m_page; QString m_language; bool m_saveSettingsOnExit; + bool m_autoConnect; QPointer m_dialog; QList m_codecs; diff --git a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.ui b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.ui index 3f009f4aa..b582fa94f 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.ui +++ b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.ui @@ -241,6 +241,23 @@ + + + + AutoConnect + + + + + + + + + + true + + + diff --git a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp index 3a1fc324e..b18938f71 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp @@ -873,6 +873,11 @@ MimeDatabase *MainWindow::mimeDatabase() const return m_mimeDatabase; } +GeneralSettings * MainWindow::generalSettings() const +{ + return m_generalSettings; +} + IContext *MainWindow::contextObject(QWidget *widget) { return m_contextWidgets.value(widget); diff --git a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.h b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.h index a7ce53419..585d4604a 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.h +++ b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.h @@ -111,7 +111,7 @@ public: Core::ThreadManager *threadManager() const; Core::ModeManager *modeManager() const; Core::MimeDatabase *mimeDatabase() const; - + Internal::GeneralSettings *generalSettings() const; QSettings *settings(QSettings::Scope scope) const; inline SettingsDatabase *settingsDatabase() const { return m_settingsDatabase; } IContext * currentContextObject() const; diff --git a/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp b/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp index 6681b8363..0868318f2 100644 --- a/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp +++ b/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp @@ -177,6 +177,7 @@ bool USBMonitor::matchAndDispatchChangedDevice(const QString & deviceID, const G info.devicePath=deviceID; if( wParam == DBT_DEVICEARRIVAL ) { + qDebug()<<"INSERTION"; if(infoFromHandle(guid,info,devInfo,i)==0) break; knowndevices.append(info); @@ -186,18 +187,21 @@ bool USBMonitor::matchAndDispatchChangedDevice(const QString & deviceID, const G } else if( wParam == DBT_DEVICEREMOVECOMPLETE ) { + bool found=false; for(int x=0;x +#include /** * Constructor @@ -224,7 +225,7 @@ UAVObjectField* UAVObject::getField(const QString& name) } } // If this point is reached then the field was not found - Q_ASSERT_X(0,"UAVObject::getField",QString("Non existant field " + name + " requested. This indicates a bug. Make sure you also have null checking for non-debug code.").toAscii()); + qWarning()<<"UAVObject::getField Non existant field "<deleteLater();; if (t) - delete t; + t->deleteLater();; } From fc7e7df863cb7c434803cf0b715c3151bfc525bc Mon Sep 17 00:00:00 2001 From: zedamota Date: Tue, 31 May 2011 15:41:05 +0100 Subject: [PATCH 2/5] OP-512 Remove some qDebug's --- ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp b/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp index 0868318f2..4eded8e7c 100644 --- a/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp +++ b/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp @@ -195,14 +195,11 @@ bool USBMonitor::matchAndDispatchChangedDevice(const QString & deviceID, const G USBPortInfo temp=knowndevices.at(x); emit deviceRemoved(temp); found=true; - qDebug()<<"REMOVED"< Date: Wed, 1 Jun 2011 00:31:27 +0300 Subject: [PATCH 3/5] OP-509: fix for ld symbol reference (also fixes build with 4.5.2 gcc) --- flight/PiOS/STM32F10x/pios_sys.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flight/PiOS/STM32F10x/pios_sys.c b/flight/PiOS/STM32F10x/pios_sys.c index 26e748171..cc35194e7 100644 --- a/flight/PiOS/STM32F10x/pios_sys.c +++ b/flight/PiOS/STM32F10x/pios_sys.c @@ -186,7 +186,7 @@ int32_t PIOS_SYS_SerialNumberGet(char *str) void NVIC_Configuration(void) { /* Set the Vector Table base address as specified in .ld file */ - extern void pios_isr_vector_table_base; + extern void *pios_isr_vector_table_base; NVIC_SetVectorTable((uint32_t)&pios_isr_vector_table_base, 0x0); /* 4 bits for Interrupt priorities so no sub priorities */ From fce8038cf4c84f3fa3b90f3bf8dc2fa404b885b5 Mon Sep 17 00:00:00 2001 From: zedamota Date: Wed, 1 Jun 2011 16:08:14 +0100 Subject: [PATCH 4/5] Create new setting "autoselect" --- .../plugins/coreplugin/generalsettings.cpp | 20 ++++++++++++- .../src/plugins/coreplugin/generalsettings.h | 3 ++ .../src/plugins/coreplugin/generalsettings.ui | 28 ++++++++++++++++++- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp index be645e709..6a5e123f9 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp @@ -46,8 +46,9 @@ using namespace Core::Internal; GeneralSettings::GeneralSettings(): m_dialog(0), m_saveSettingsOnExit(true), - m_autoConnect(true) + m_autoConnect(true),m_autoSelect(true) { + connect(m_page->checkAutoConnect,SIGNAL(stateChanged(int)),this,SLOT(slotAutoConnect(int))); } QString GeneralSettings::id() const @@ -116,6 +117,7 @@ QWidget *GeneralSettings::createPage(QWidget *parent) fillLanguageBox(); m_page->checkBoxSaveOnExit->setChecked(m_saveSettingsOnExit); m_page->checkAutoConnect->setChecked(m_autoConnect); + m_page->checkAutoSelect->setChecked(m_autoSelect); m_page->colorButton->setColor(StyleHelper::baseColor()); #ifdef Q_OS_UNIX m_page->terminalEdit->setText(ConsoleProcess::terminalEmulator(Core::ICore::instance()->settings())); @@ -148,6 +150,7 @@ void GeneralSettings::apply() m_saveSettingsOnExit = m_page->checkBoxSaveOnExit->isChecked(); m_autoConnect = m_page->checkAutoConnect->isChecked(); + m_autoSelect = m_page->checkAutoSelect->isChecked(); #ifdef Q_OS_UNIX ConsoleProcess::setTerminalEmulator(Core::ICore::instance()->settings(), m_page->terminalEdit->text()); @@ -166,6 +169,7 @@ void GeneralSettings::readSettings(QSettings* qs) m_language = qs->value(QLatin1String("OverrideLanguage"),QLocale::system().name()).toString(); m_saveSettingsOnExit = qs->value(QLatin1String("SaveSettingsOnExit"),m_saveSettingsOnExit).toBool(); m_autoConnect = qs->value(QLatin1String("AutoConnect"),m_autoConnect).toBool(); + m_autoSelect = qs->value(QLatin1String("AutoSelect"),m_autoSelect).toBool(); qs->endGroup(); } @@ -181,6 +185,7 @@ void GeneralSettings::saveSettings(QSettings* qs) qs->setValue(QLatin1String("SaveSettingsOnExit"), m_saveSettingsOnExit); qs->setValue(QLatin1String("AutoConnect"), m_autoConnect); + qs->setValue(QLatin1String("AutoSelect"), m_autoSelect); qs->endGroup(); } @@ -250,3 +255,16 @@ bool GeneralSettings::autoConnect() const { return m_autoConnect; } + +bool GeneralSettings::autoSelect() const +{ + return m_autoSelect; +} + +void GeneralSettings::slotAutoConnect(int value) +{ + if (value==Qt::Checked) + m_page->checkAutoSelect->setEnabled(false); + else + m_page->checkAutoSelect->setEnabled(true); +} diff --git a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h index 8c5cb1152..e515a09c8 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h +++ b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h @@ -57,6 +57,7 @@ public: void finish(); bool saveSettingsOnExit() const; bool autoConnect() const; + bool autoSelect() const; void readSettings(QSettings* qs); void saveSettings(QSettings* qs); @@ -65,6 +66,7 @@ private slots: void resetLanguage(); void resetExternalEditor(); void showHelpForExternalEditor(); + void slotAutoConnect(); #ifdef Q_OS_UNIX void resetTerminal(); #endif @@ -77,6 +79,7 @@ private: QString m_language; bool m_saveSettingsOnExit; bool m_autoConnect; + bool m_autoSelect; QPointer m_dialog; QList m_codecs; diff --git a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.ui b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.ui index b582fa94f..752ba2bfb 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.ui +++ b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.ui @@ -244,7 +244,10 @@ - AutoConnect + Automatically connect an OpenPilot USB device + + + true @@ -258,6 +261,29 @@ + + + + Automatically select an OpenPilot USB device + + + true + + + + + + + false + + + + + + true + + + From ad65dee64373a8054b22e4d4aa95fa8f5eb03503 Mon Sep 17 00:00:00 2001 From: zedamota Date: Wed, 1 Jun 2011 18:40:04 +0100 Subject: [PATCH 5/5] Added auto select --- .../src/plugins/coreplugin/connectionmanager.cpp | 9 +++++---- .../src/plugins/coreplugin/generalsettings.cpp | 2 +- .../src/plugins/coreplugin/generalsettings.h | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp b/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp index e2113273a..07f0ef0c9 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp @@ -354,11 +354,12 @@ void ConnectionManager::devChanged(IConnection *connection) { m_availableDevList->addItem(d.displayName); m_availableDevList->setItemData(m_availableDevList->count()-1,(const QString)d.devName,Qt::ToolTipRole); - if(!m_ioDev && m_mainWindow->generalSettings()->autoConnect() && d.displayName.startsWith("USB")) + if(!m_ioDev && d.displayName.startsWith("USB")) { - qDebug()<<"INSERTION"<setCurrentIndex(m_availableDevList->count()-1); - connectDevice(); + if(m_mainWindow->generalSettings()->autoConnect() || m_mainWindow->generalSettings()->autoSelect()) + m_availableDevList->setCurrentIndex(m_availableDevList->count()-1); + if(m_mainWindow->generalSettings()->autoConnect()) + connectDevice(); } } if(m_ioDev)//if a device is connected make it the one selected on the dropbox diff --git a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp index 6a5e123f9..e3e2602e8 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.cpp @@ -48,7 +48,6 @@ GeneralSettings::GeneralSettings(): m_saveSettingsOnExit(true), m_autoConnect(true),m_autoSelect(true) { - connect(m_page->checkAutoConnect,SIGNAL(stateChanged(int)),this,SLOT(slotAutoConnect(int))); } QString GeneralSettings::id() const @@ -115,6 +114,7 @@ QWidget *GeneralSettings::createPage(QWidget *parent) m_page->setupUi(w); fillLanguageBox(); + connect(m_page->checkAutoConnect,SIGNAL(stateChanged(int)),this,SLOT(slotAutoConnect(int))); m_page->checkBoxSaveOnExit->setChecked(m_saveSettingsOnExit); m_page->checkAutoConnect->setChecked(m_autoConnect); m_page->checkAutoSelect->setChecked(m_autoSelect); diff --git a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h index e515a09c8..ad4790578 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h +++ b/ground/openpilotgcs/src/plugins/coreplugin/generalsettings.h @@ -66,7 +66,7 @@ private slots: void resetLanguage(); void resetExternalEditor(); void showHelpForExternalEditor(); - void slotAutoConnect(); + void slotAutoConnect(int); #ifdef Q_OS_UNIX void resetTerminal(); #endif