diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp index 4eca15bf9..d40db122f 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp @@ -134,6 +134,7 @@ void ConfigGadgetWidget::onAutopilotDisconnect() { void ConfigGadgetWidget::onAutopilotConnect() { + qDebug()<<"ConfigGadgetWidget onAutopilotConnect"; // First of all, check what Board type we are talking to, and // if necessary, remove/add tabs in the config gadget: ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); diff --git a/ground/openpilotgcs/src/plugins/config/configoutputwidget.cpp b/ground/openpilotgcs/src/plugins/config/configoutputwidget.cpp index 18040a967..53553ac2e 100644 --- a/ground/openpilotgcs/src/plugins/config/configoutputwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configoutputwidget.cpp @@ -93,6 +93,13 @@ ConfigOutputWidget::ConfigOutputWidget(QWidget *parent) : ConfigTaskWidget(paren this->setEnabled(false); connect(obj,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(disableIfNotMe(UAVObject*))); } +void ConfigOutputWidget::enableControls(bool enable) +{ + ConfigTaskWidget::enableControls(enable); + if(!enable) + m_config->channelOutTest->setChecked(false); + m_config->channelOutTest->setEnabled(enable); +} ConfigOutputWidget::~ConfigOutputWidget() { @@ -108,6 +115,7 @@ ConfigOutputWidget::~ConfigOutputWidget() */ void ConfigOutputWidget::runChannelTests(bool state) { + qDebug()<<"configoutputwidget runChannelTests"<getData(); diff --git a/ground/openpilotgcs/src/plugins/config/configoutputwidget.h b/ground/openpilotgcs/src/plugins/config/configoutputwidget.h index 0140c9bf4..76dc51658 100644 --- a/ground/openpilotgcs/src/plugins/config/configoutputwidget.h +++ b/ground/openpilotgcs/src/plugins/config/configoutputwidget.h @@ -47,6 +47,7 @@ public: ConfigOutputWidget(QWidget *parent = 0); ~ConfigOutputWidget(); + private: Ui_OutputWidget *m_config; @@ -74,6 +75,8 @@ private slots: void sendChannelTest(int index, int value); void setSpinningArmed(bool val); void openHelp(); +protected: + void enableControls(bool enable); }; #endif diff --git a/ground/openpilotgcs/src/plugins/config/inputchannelform.ui b/ground/openpilotgcs/src/plugins/config/inputchannelform.ui index b1b69c052..044e2437f 100644 --- a/ground/openpilotgcs/src/plugins/config/inputchannelform.ui +++ b/ground/openpilotgcs/src/plugins/config/inputchannelform.ui @@ -142,6 +142,12 @@ true + + + 0 + 0 + + Neutral @@ -149,6 +155,12 @@ + + + 0 + 0 + + Qt::Horizontal diff --git a/ground/openpilotgcs/src/plugins/config/outputchannelform.ui b/ground/openpilotgcs/src/plugins/config/outputchannelform.ui index 5c7dbd79a..49924e06e 100644 --- a/ground/openpilotgcs/src/plugins/config/outputchannelform.ui +++ b/ground/openpilotgcs/src/plugins/config/outputchannelform.ui @@ -99,7 +99,7 @@ - + 0 0 @@ -187,7 +187,7 @@ - + 0 0 diff --git a/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp b/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp index f63c6e7da..9dfa46518 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp +++ b/ground/openpilotgcs/src/plugins/coreplugin/connectionmanager.cpp @@ -358,7 +358,10 @@ void ConnectionManager::devChanged(IConnection *connection) if(m_mainWindow->generalSettings()->autoConnect() || m_mainWindow->generalSettings()->autoSelect()) m_availableDevList->setCurrentIndex(m_availableDevList->count()-1); if(m_mainWindow->generalSettings()->autoConnect()) + { connectDevice(); + qDebug()<<"ConnectionManager::devChanged autoconnected USB device"; + } } } if(m_ioDev)//if a device is connected make it the one selected on the dropbox diff --git a/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp b/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp index 4eded8e7c..c2ab1fa9c 100644 --- a/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp +++ b/ground/openpilotgcs/src/plugins/rawhid/usbmonitor_win.cpp @@ -28,7 +28,8 @@ #include #include #include - +#include +#include #include "usbmonitor.h" #include #define printf qDebug @@ -78,9 +79,9 @@ QList USBMonitor::availableDevices(int vid, int pid, int bcdDeviceM { QList allPorts = availableDevices(); QList thePortsWeWant; - + qDebug()<<"USBMonitor::availableDevices bcdLSB="< devices; devices = USBMonitor::instance()->availableDevices(0x20a0,-1,-1,USBMonitor::Bootloader); if (devices.length()==1) { hidHandle.open(1,devices.first().vendorID,devices.first().productID,0,0); + qDebug()<<"OP_DFU detected first time"; } else { // Wait for the board to appear on the USB bus: - QEventLoop m_eventloop; connect(USBMonitor::instance(), SIGNAL(deviceDiscovered(USBPortInfo)),&m_eventloop, SLOT(quit())); - QTimer::singleShot(5000,&m_eventloop, SLOT(quit())); + QTimer::singleShot(15000,&m_eventloop, SLOT(quit())); m_eventloop.exec(); + disconnect(USBMonitor::instance(), SIGNAL(deviceDiscovered(USBPortInfo)),&m_eventloop, SLOT(quit())); devices = USBMonitor::instance()->availableDevices(0x20a0,-1,-1,USBMonitor::Bootloader); if (devices.length()==1) { - delay::msleep(2000); // Let the USB Subsystem settle (especially important on Mac!) + QTimer::singleShot(1000,&m_eventloop, SLOT(quit())); + m_eventloop.exec(); hidHandle.open(1,devices.first().vendorID,devices.first().productID,0,0); + qDebug()<<"OP_DFU detected after delay"; } else { qDebug() << devices.length() << " device(s) detected, don't know what to do!"; diff --git a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp index fce448451..c0a1aea90 100755 --- a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.cpp @@ -125,6 +125,11 @@ void UploaderGadgetWidget::onPhisicalHWConnect() Enables widget buttons if autopilot connected */ void UploaderGadgetWidget::onAutopilotConnect(){ + QTimer::singleShot(1000,this,SLOT(populate())); +} + +void UploaderGadgetWidget::populate() +{ m_config->haltButton->setEnabled(true); m_config->resetButton->setEnabled(true); m_config->bootButton->setEnabled(false); @@ -141,7 +146,6 @@ void UploaderGadgetWidget::onAutopilotConnect(){ runningDeviceWidget* dw = new runningDeviceWidget(this); dw->populate(); m_config->systemElements->addTab(dw, QString("Connected Device")); - } /** diff --git a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h index 93ea6e14d..9b1fa1433 100755 --- a/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/uploader/uploadergadgetwidget.h @@ -73,7 +73,7 @@ public: public slots: void onAutopilotConnect(); void onAutopilotDisconnect(); - + void populate(); private: Ui_UploaderWidget *m_config; DFUObject *dfu;