diff --git a/ground/openpilotgcs/src/plugins/config/config.pro b/ground/openpilotgcs/src/plugins/config/config.pro
index 30199471c..082c89cd5 100644
--- a/ground/openpilotgcs/src/plugins/config/config.pro
+++ b/ground/openpilotgcs/src/plugins/config/config.pro
@@ -55,7 +55,8 @@ HEADERS += \
calibration/levelcalibrationmodel.h \
calibration/gyrobiascalibrationmodel.h \
calibration/calibrationuiutils.h \
- configoplinkwidget.h
+ configoplinkwidget.h \
+ configrevonanohwwidget.h
SOURCES += \
configplugin.cpp \
@@ -93,7 +94,8 @@ SOURCES += \
calibration/sixpointcalibrationmodel.cpp \
calibration/levelcalibrationmodel.cpp \
calibration/gyrobiascalibrationmodel.cpp \
- configoplinkwidget.cpp
+ configoplinkwidget.cpp \
+ configrevonanohwwidget.cpp
FORMS += \
airframe.ui \
@@ -115,6 +117,7 @@ FORMS += \
txpid.ui \
mixercurve.ui \
configrevohwwidget.ui \
- oplink.ui
+ oplink.ui \
+ configrevonanohwwidget.ui
RESOURCES += configgadget.qrc
diff --git a/ground/openpilotgcs/src/plugins/config/configgadget.qrc b/ground/openpilotgcs/src/plugins/config/configgadget.qrc
index 856c5edd4..6e96f1872 100644
--- a/ground/openpilotgcs/src/plugins/config/configgadget.qrc
+++ b/ground/openpilotgcs/src/plugins/config/configgadget.qrc
@@ -53,5 +53,6 @@
images/calibration/board-swd.png
images/gear.png
images/error.svg
+ images/nano_top.png
diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp
index 51e69d562..7e288e7c9 100644
--- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp
+++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp
@@ -187,6 +187,8 @@ void ConfigGadgetWidget::onAutopilotConnect()
stackWidget->replaceTab(ConfigGadgetWidget::sensors, qwd);
if (board == 0x0903) {
qwd = new ConfigRevoHWWidget(this);
+ } else if (board == 0x0905) {
+ qwd = new ConfigRevoNanoHWWidget(this);
}
stackWidget->replaceTab(ConfigGadgetWidget::hardware, qwd);
} else {
diff --git a/ground/openpilotgcs/src/plugins/config/configrevonanohwwidget.cpp b/ground/openpilotgcs/src/plugins/config/configrevonanohwwidget.cpp
new file mode 100644
index 000000000..f8f91e2fd
--- /dev/null
+++ b/ground/openpilotgcs/src/plugins/config/configrevonanohwwidget.cpp
@@ -0,0 +1,317 @@
+/**
+ ******************************************************************************
+ *
+ * @file configrevohwwidget.cpp
+ * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
+ * @addtogroup GCSPlugins GCS Plugins
+ * @{
+ * @addtogroup ConfigPlugin Config Plugin
+ * @{
+ * @brief Revolution hardware configuration panel
+ *****************************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+#include "configrevonanohwwidget.h"
+
+#include
+#include
+#include
+#include "hwsettings.h"
+#include
+#include
+#include
+
+
+ConfigRevoNanoHWWidget::ConfigRevoNanoHWWidget(QWidget *parent) : ConfigTaskWidget(parent), m_refreshing(true)
+{
+ m_ui = new Ui_RevoNanoHWWidget();
+ m_ui->setupUi(this);
+
+ ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance();
+ Core::Internal::GeneralSettings *settings = pm->getObject();
+ if (!settings->useExpertMode()) {
+ m_ui->saveTelemetryToRAM->setEnabled(false);
+ m_ui->saveTelemetryToRAM->setVisible(false);
+ }
+
+ addApplySaveButtons(m_ui->saveTelemetryToRAM, m_ui->saveTelemetryToSD);
+
+ addWidgetBinding("HwSettings", "RM_FlexiPort", m_ui->cbFlexi);
+ addWidgetBinding("HwSettings", "RM_MainPort", m_ui->cbMain);
+ addWidgetBinding("HwSettings", "RM_RcvrPort", m_ui->cbRcvr);
+
+ addWidgetBinding("HwSettings", "USB_HIDPort", m_ui->cbUSBHIDFunction);
+ addWidgetBinding("HwSettings", "USB_VCPPort", m_ui->cbUSBVCPFunction);
+ addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbUSBVCPSpeed);
+
+ addWidgetBinding("HwSettings", "TelemetrySpeed", m_ui->cbFlexiTelemSpeed);
+ addWidgetBinding("HwSettings", "GPSSpeed", m_ui->cbFlexiGPSSpeed);
+ addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbFlexiComSpeed);
+
+ addWidgetBinding("HwSettings", "TelemetrySpeed", m_ui->cbMainTelemSpeed);
+ addWidgetBinding("HwSettings", "GPSSpeed", m_ui->cbMainGPSSpeed);
+ addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbMainComSpeed);
+
+ addWidgetBinding("HwSettings", "TelemetrySpeed", m_ui->cbRcvrTelemSpeed);
+
+ // Add Gps protocol configuration
+ addWidgetBinding("GPSSettings", "DataProtocol", m_ui->cbMainGPSProtocol);
+ addWidgetBinding("GPSSettings", "DataProtocol", m_ui->cbFlexiGPSProtocol);
+
+ connect(m_ui->cchwHelp, SIGNAL(clicked()), this, SLOT(openHelp()));
+
+ setupCustomCombos();
+ enableControls(true);
+ populateWidgets();
+ refreshWidgetsValues();
+ forceConnectedState();
+ m_refreshing = false;
+}
+
+ConfigRevoNanoHWWidget::~ConfigRevoNanoHWWidget()
+{
+ // Do nothing
+}
+
+void ConfigRevoNanoHWWidget::setupCustomCombos()
+{
+ connect(m_ui->cbUSBHIDFunction, SIGNAL(currentIndexChanged(int)), this, SLOT(usbHIDPortChanged(int)));
+ connect(m_ui->cbUSBVCPFunction, SIGNAL(currentIndexChanged(int)), this, SLOT(usbVCPPortChanged(int)));
+
+ connect(m_ui->cbFlexi, SIGNAL(currentIndexChanged(int)), this, SLOT(flexiPortChanged(int)));
+ connect(m_ui->cbMain, SIGNAL(currentIndexChanged(int)), this, SLOT(mainPortChanged(int)));
+ connect(m_ui->cbRcvr, SIGNAL(currentIndexChanged(int)), this, SLOT(rcvrPortChanged(int)));
+}
+
+void ConfigRevoNanoHWWidget::refreshWidgetsValues(UAVObject *obj)
+{
+ m_refreshing = true;
+ ConfigTaskWidget::refreshWidgetsValues(obj);
+
+ usbVCPPortChanged(0);
+ mainPortChanged(0);
+ flexiPortChanged(0);
+ rcvrPortChanged(0);
+ m_refreshing = false;
+}
+
+void ConfigRevoNanoHWWidget::updateObjectsFromWidgets()
+{
+ ConfigTaskWidget::updateObjectsFromWidgets();
+
+ HwSettings *hwSettings = HwSettings::GetInstance(getObjectManager());
+ HwSettings::DataFields data = hwSettings->getData();
+
+ // If any port is configured to be GPS port, enable GPS module if it is not enabled.
+ // Otherwise disable GPS module.
+ if (m_ui->cbFlexi->currentIndex() == HwSettings::RM_FLEXIPORT_GPS || m_ui->cbMain->currentIndex() == HwSettings::RM_MAINPORT_GPS) {
+ data.OptionalModules[HwSettings::OPTIONALMODULES_GPS] = HwSettings::OPTIONALMODULES_ENABLED;
+ } else {
+ data.OptionalModules[HwSettings::OPTIONALMODULES_GPS] = HwSettings::OPTIONALMODULES_DISABLED;
+ }
+
+ hwSettings->setData(data);
+}
+
+void ConfigRevoNanoHWWidget::usbVCPPortChanged(int index)
+{
+ Q_UNUSED(index);
+
+ bool vcpComBridgeEnabled = m_ui->cbUSBVCPFunction->currentIndex() == HwSettings::USB_VCPPORT_COMBRIDGE;
+
+ m_ui->lblUSBVCPSpeed->setVisible(vcpComBridgeEnabled);
+ m_ui->cbUSBVCPSpeed->setVisible(vcpComBridgeEnabled);
+
+ if (!vcpComBridgeEnabled && m_ui->cbFlexi->currentIndex() == HwSettings::RM_FLEXIPORT_COMBRIDGE) {
+ m_ui->cbFlexi->setCurrentIndex(HwSettings::RM_FLEXIPORT_DISABLED);
+ }
+ m_ui->cbFlexi->model()->setData(m_ui->cbFlexi->model()->index(HwSettings::RM_FLEXIPORT_COMBRIDGE, 0),
+ !vcpComBridgeEnabled ? QVariant(0) : QVariant(1 | 32), Qt::UserRole - 1);
+
+ if (!vcpComBridgeEnabled && m_ui->cbMain->currentIndex() == HwSettings::RM_MAINPORT_COMBRIDGE) {
+ m_ui->cbMain->setCurrentIndex(HwSettings::RM_MAINPORT_DISABLED);
+ }
+ m_ui->cbMain->model()->setData(m_ui->cbMain->model()->index(HwSettings::RM_MAINPORT_COMBRIDGE, 0),
+ !vcpComBridgeEnabled ? QVariant(0) : QVariant(1 | 32), Qt::UserRole - 1);
+
+ // _DEBUGCONSOLE modes are mutual exclusive
+ if (m_ui->cbUSBVCPFunction->currentIndex() == HwSettings::USB_VCPPORT_DEBUGCONSOLE) {
+ if (m_ui->cbMain->currentIndex() == HwSettings::RM_MAINPORT_DEBUGCONSOLE) {
+ m_ui->cbMain->setCurrentIndex(HwSettings::RM_MAINPORT_DISABLED);
+ }
+ if (m_ui->cbFlexi->currentIndex() == HwSettings::RM_FLEXIPORT_DEBUGCONSOLE) {
+ m_ui->cbFlexi->setCurrentIndex(HwSettings::RM_FLEXIPORT_DISABLED);
+ }
+ }
+
+ // _USBTELEMETRY modes are mutual exclusive
+ if (m_ui->cbUSBVCPFunction->currentIndex() == HwSettings::USB_VCPPORT_USBTELEMETRY) {
+ if (m_ui->cbUSBHIDFunction->currentIndex() == HwSettings::USB_HIDPORT_USBTELEMETRY) {
+ m_ui->cbUSBHIDFunction->setCurrentIndex(HwSettings::USB_HIDPORT_DISABLED);
+ }
+ }
+}
+
+void ConfigRevoNanoHWWidget::usbHIDPortChanged(int index)
+{
+ Q_UNUSED(index);
+
+ // _USBTELEMETRY modes are mutual exclusive
+ if (m_ui->cbUSBHIDFunction->currentIndex() == HwSettings::USB_HIDPORT_USBTELEMETRY) {
+ if (m_ui->cbUSBVCPFunction->currentIndex() == HwSettings::USB_VCPPORT_USBTELEMETRY) {
+ m_ui->cbUSBVCPFunction->setCurrentIndex(HwSettings::USB_VCPPORT_DISABLED);
+ }
+ }
+}
+
+void ConfigRevoNanoHWWidget::flexiPortChanged(int index)
+{
+ Q_UNUSED(index);
+
+ m_ui->cbFlexiTelemSpeed->setVisible(false);
+ m_ui->cbFlexiGPSSpeed->setVisible(false);
+ m_ui->cbFlexiComSpeed->setVisible(false);
+ m_ui->lblFlexiSpeed->setVisible(true);
+
+ // Add Gps protocol configuration
+ m_ui->cbFlexiGPSProtocol->setVisible(false);
+ m_ui->lbFlexiGPSProtocol->setVisible(false);
+
+ switch (m_ui->cbFlexi->currentIndex()) {
+ case HwSettings::RM_FLEXIPORT_TELEMETRY:
+ m_ui->cbFlexiTelemSpeed->setVisible(true);
+ if (m_ui->cbMain->currentIndex() == HwSettings::RM_MAINPORT_TELEMETRY) {
+ m_ui->cbMain->setCurrentIndex(HwSettings::RM_MAINPORT_DISABLED);
+ }
+ if (m_ui->cbRcvr->currentIndex() == HwSettings::RM_RCVRPORT_PPMTELEMETRY
+ || m_ui->cbRcvr->currentIndex() == HwSettings::RM_RCVRPORT_TELEMETRY) {
+ m_ui->cbRcvr->setCurrentIndex(HwSettings::RM_RCVRPORT_DISABLED);
+ }
+ break;
+ case HwSettings::RM_FLEXIPORT_GPS:
+ // Add Gps protocol configuration
+ m_ui->cbFlexiGPSProtocol->setVisible(true);
+ m_ui->lbFlexiGPSProtocol->setVisible(true);
+
+ m_ui->cbFlexiGPSSpeed->setVisible(true);
+ if (m_ui->cbMain->currentIndex() == HwSettings::RM_MAINPORT_GPS) {
+ m_ui->cbMain->setCurrentIndex(HwSettings::RM_MAINPORT_DISABLED);
+ }
+ break;
+ case HwSettings::RM_FLEXIPORT_COMBRIDGE:
+ m_ui->cbFlexiComSpeed->setVisible(true);
+ if (m_ui->cbMain->currentIndex() == HwSettings::RM_MAINPORT_COMBRIDGE) {
+ m_ui->cbMain->setCurrentIndex(HwSettings::RM_MAINPORT_DISABLED);
+ }
+ break;
+ case HwSettings::RM_FLEXIPORT_DEBUGCONSOLE:
+ m_ui->cbFlexiComSpeed->setVisible(true);
+ if (m_ui->cbMain->currentIndex() == HwSettings::RM_MAINPORT_DEBUGCONSOLE) {
+ m_ui->cbMain->setCurrentIndex(HwSettings::RM_MAINPORT_DISABLED);
+ }
+ if (m_ui->cbUSBVCPFunction->currentIndex() == HwSettings::USB_VCPPORT_DEBUGCONSOLE) {
+ m_ui->cbUSBVCPFunction->setCurrentIndex(HwSettings::USB_VCPPORT_DISABLED);
+ }
+ break;
+ default:
+ m_ui->lblFlexiSpeed->setVisible(false);
+ break;
+ }
+}
+
+void ConfigRevoNanoHWWidget::mainPortChanged(int index)
+{
+ Q_UNUSED(index);
+
+ m_ui->cbMainTelemSpeed->setVisible(false);
+ m_ui->cbMainGPSSpeed->setVisible(false);
+ m_ui->cbMainComSpeed->setVisible(false);
+ m_ui->lblMainSpeed->setVisible(true);
+
+ // Add Gps protocol configuration
+ m_ui->cbMainGPSProtocol->setVisible(false);
+ m_ui->lbMainGPSProtocol->setVisible(false);
+
+ switch (m_ui->cbMain->currentIndex()) {
+ case HwSettings::RM_MAINPORT_TELEMETRY:
+ m_ui->cbMainTelemSpeed->setVisible(true);
+ if (m_ui->cbFlexi->currentIndex() == HwSettings::RM_FLEXIPORT_TELEMETRY) {
+ m_ui->cbFlexi->setCurrentIndex(HwSettings::RM_FLEXIPORT_DISABLED);
+ }
+ if (m_ui->cbRcvr->currentIndex() == HwSettings::RM_RCVRPORT_PPMTELEMETRY
+ || m_ui->cbRcvr->currentIndex() == HwSettings::RM_RCVRPORT_TELEMETRY) {
+ m_ui->cbRcvr->setCurrentIndex(HwSettings::RM_RCVRPORT_DISABLED);
+ }
+ break;
+ case HwSettings::RM_MAINPORT_GPS:
+ // Add Gps protocol configuration
+ m_ui->cbMainGPSProtocol->setVisible(true);
+ m_ui->lbMainGPSProtocol->setVisible(true);
+
+ m_ui->cbMainGPSSpeed->setVisible(true);
+ if (m_ui->cbFlexi->currentIndex() == HwSettings::RM_FLEXIPORT_GPS) {
+ m_ui->cbFlexi->setCurrentIndex(HwSettings::RM_FLEXIPORT_DISABLED);
+ }
+ break;
+ case HwSettings::RM_MAINPORT_COMBRIDGE:
+ m_ui->cbMainComSpeed->setVisible(true);
+ if (m_ui->cbFlexi->currentIndex() == HwSettings::RM_FLEXIPORT_COMBRIDGE) {
+ m_ui->cbFlexi->setCurrentIndex(HwSettings::RM_FLEXIPORT_DISABLED);
+ }
+ break;
+ case HwSettings::RM_MAINPORT_DEBUGCONSOLE:
+ m_ui->cbMainComSpeed->setVisible(true);
+ if (m_ui->cbFlexi->currentIndex() == HwSettings::RM_FLEXIPORT_DEBUGCONSOLE) {
+ m_ui->cbFlexi->setCurrentIndex(HwSettings::RM_FLEXIPORT_DISABLED);
+ }
+ if (m_ui->cbUSBVCPFunction->currentIndex() == HwSettings::USB_VCPPORT_DEBUGCONSOLE) {
+ m_ui->cbUSBVCPFunction->setCurrentIndex(HwSettings::USB_VCPPORT_DISABLED);
+ }
+ break;
+ default:
+ m_ui->lblMainSpeed->setVisible(false);
+ break;
+ }
+}
+
+void ConfigRevoNanoHWWidget::rcvrPortChanged(int index)
+{
+ Q_UNUSED(index);
+
+ switch (m_ui->cbRcvr->currentIndex()) {
+ case HwSettings::RM_RCVRPORT_TELEMETRY:
+ case HwSettings::RM_RCVRPORT_PPMTELEMETRY:
+ m_ui->lblRcvrSpeed->setVisible(true);
+ m_ui->cbRcvrTelemSpeed->setVisible(true);
+
+ if (m_ui->cbFlexi->currentIndex() == HwSettings::RM_FLEXIPORT_TELEMETRY) {
+ m_ui->cbFlexi->setCurrentIndex(HwSettings::RM_FLEXIPORT_DISABLED);
+ }
+ if (m_ui->cbMain->currentIndex() == HwSettings::RM_FLEXIPORT_TELEMETRY) {
+ m_ui->cbMain->setCurrentIndex(HwSettings::RM_FLEXIPORT_DISABLED);
+ }
+ break;
+ default:
+ m_ui->lblRcvrSpeed->setVisible(false);
+ m_ui->cbRcvrTelemSpeed->setVisible(false);
+ break;
+ }
+}
+
+void ConfigRevoNanoHWWidget::openHelp()
+{
+ QDesktopServices::openUrl(QUrl(tr("http://wiki.openpilot.org/x/GgDBAQ"), QUrl::StrictMode));
+}
diff --git a/ground/openpilotgcs/src/plugins/config/configrevonanohwwidget.h b/ground/openpilotgcs/src/plugins/config/configrevonanohwwidget.h
new file mode 100644
index 000000000..7efebd326
--- /dev/null
+++ b/ground/openpilotgcs/src/plugins/config/configrevonanohwwidget.h
@@ -0,0 +1,64 @@
+/**
+ ******************************************************************************
+ *
+ * @file configrevohwwidget.h
+ * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
+ * @addtogroup GCSPlugins GCS Plugins
+ * @{
+ * @addtogroup ConfigPlugin Config Plugin
+ * @{
+ * @brief Revolution hardware configuration panel
+ *****************************************************************************/
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+#ifndef CONFIGREVONANOHWWIDGET_H
+#define CONFIGREVONANOHWWIDGET_H
+
+#include "ui_configrevonanohwwidget.h"
+#include "../uavobjectwidgetutils/configtaskwidget.h"
+#include "extensionsystem/pluginmanager.h"
+#include "uavobjectmanager.h"
+#include "uavobject.h"
+#include
+#include
+
+
+class ConfigRevoNanoHWWidget : public ConfigTaskWidget {
+ Q_OBJECT
+
+public:
+ ConfigRevoNanoHWWidget(QWidget *parent = 0);
+ ~ConfigRevoNanoHWWidget();
+
+private:
+ bool m_refreshing;
+ Ui_RevoNanoHWWidget *m_ui;
+ void setupCustomCombos();
+
+protected slots:
+ void refreshWidgetsValues(UAVObject *obj = NULL);
+ void updateObjectsFromWidgets();
+
+private slots:
+ void usbVCPPortChanged(int index);
+ void usbHIDPortChanged(int index);
+ void flexiPortChanged(int index);
+ void mainPortChanged(int index);
+ void rcvrPortChanged(int index);
+ void openHelp();
+};
+
+#endif // CONFIGREVONANOHWWIDGET_H
diff --git a/ground/openpilotgcs/src/plugins/config/configrevonanohwwidget.ui b/ground/openpilotgcs/src/plugins/config/configrevonanohwwidget.ui
new file mode 100644
index 000000000..c0862ed64
--- /dev/null
+++ b/ground/openpilotgcs/src/plugins/config/configrevonanohwwidget.ui
@@ -0,0 +1,690 @@
+
+
+ RevoNanoHWWidget
+
+
+
+ 0
+ 0
+ 834
+ 914
+
+
+
+ Form
+
+
+ -
+
+
+ 0
+
+
+
+ true
+
+
+ HW settings
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 232
+ 232
+ 232
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 232
+ 232
+ 232
+
+
+
+
+
+
+
+
+ 232
+ 232
+ 232
+
+
+
+
+
+
+ 232
+ 232
+ 232
+
+
+
+
+
+
+
+ border-color: rgb(255, 0, 0);
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Plain
+
+
+ true
+
+
+
+
+ 0
+ 0
+ 812
+ 828
+
+
+
+
+ 12
+
+
+ 12
+
+
+ 12
+
+
+ 12
+
+
-
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+
+ 75
+ true
+
+
+
+ Changes on this page only take effect after board reset or power cycle
+
+
+ Qt::AlignCenter
+
+
+ true
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 10
+
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Speed
+
+
+ Qt::AlignBottom|Qt::AlignHCenter
+
+
+
+ -
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 500
+ 350
+
+
+
+
+
+
+ :/configgadget/images/nano_top.png
+
+
+ false
+
+
+ Qt::AlignCenter
+
+
+ Qt::NoTextInteraction
+
+
+
+ -
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Receiver Port
+
+
+ Qt::AlignBottom|Qt::AlignHCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ USB HID Function
+
+
+ Qt::AlignBottom|Qt::AlignHCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Speed
+
+
+ Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft
+
+
+
+ -
+
+
+ true
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ USB VCP Function
+
+
+ Qt::AlignBottom|Qt::AlignHCenter
+
+
+
+ -
+
+
+ Main Port
+
+
+ Qt::AlignBottom|Qt::AlignHCenter
+
+
+
+ -
+
+
+ -
+
+
+ Speed
+
+
+ Qt::AlignBottom|Qt::AlignHCenter
+
+
+
+ -
+
+
+ 0
+
+
-
+
+
+ true
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ Protocol
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ Protocol
+
+
+ Qt::PlainText
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ 0
+
+
-
+
+
+ true
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ Speed
+
+
+ Qt::AlignBottom|Qt::AlignHCenter
+
+
+
+ -
+
+
+ -
+
+
+ Flexi Port
+
+
+ Qt::AlignBottom|Qt::AlignHCenter
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ 4
+
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 369
+ 20
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 25
+ 25
+
+
+
+
+ 25
+ 25
+
+
+
+ Takes you to the wiki page
+
+
+
+
+
+
+ :/core/images/helpicon.svg:/core/images/helpicon.svg
+
+
+
+ 25
+ 25
+
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 232
+ 232
+ 232
+
+
+
+
+
+
+
+
+ 255
+ 255
+ 255
+
+
+
+
+
+
+ 232
+ 232
+ 232
+
+
+
+
+
+
+
+
+ 232
+ 232
+ 232
+
+
+
+
+
+
+ 232
+ 232
+ 232
+
+
+
+
+
+
+
+ Send to OpenPilot but don't write in SD.
+Beware of not locking yourself out!
+
+
+ false
+
+
+
+
+
+ Apply
+
+
+
+ 16
+ 16
+
+
+
+ false
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Applies and Saves all settings to SD.
+Beware of not locking yourself out!
+
+
+ false
+
+
+
+
+
+ Save
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ground/openpilotgcs/src/plugins/config/images/nano_top.png b/ground/openpilotgcs/src/plugins/config/images/nano_top.png
new file mode 100644
index 000000000..4138c6696
Binary files /dev/null and b/ground/openpilotgcs/src/plugins/config/images/nano_top.png differ