From 14efc602a7724bd767c68e5edbce8eeb1b19c47b Mon Sep 17 00:00:00 2001 From: tstellanova Date: Mon, 22 Jul 2013 15:44:32 -0700 Subject: [PATCH 1/5] show full flight mode status --- src/uas/UAS.cc | 60 +++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc index 3076f32..9b15564 100644 --- a/src/uas/UAS.cc +++ b/src/uas/UAS.cc @@ -3329,41 +3329,51 @@ QString UAS::getAudioModeTextFor(int id) * The mode returned can be auto, stabilized, test, manual, preflight or unknown. * @return the short text of the mode for the id given. */ +/** +* The mode returned can be auto, stabilized, test, manual, preflight or unknown. +* @return the short text of the mode for the id given. +*/ QString UAS::getShortModeTextFor(int id) { - QString mode; + QString mode = ""; uint8_t modeid = id; - qDebug() << "MODE:" << modeid; // BASE MODE DECODING - if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_AUTO) - { - mode += "|AUTO"; - } - else if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_GUIDED) - { - mode += "|VECTOR"; - } - if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_STABILIZE) - { - mode += "|STABILIZED"; - } - else if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_TEST) - { - mode += "|TEST"; - } - else if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_MANUAL) - { - mode += "|MANUAL"; - } - else if (modeid == 0) + + if (modeid == 0) { mode = "|PREFLIGHT"; } - else + else { + if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_AUTO){ + mode += "|AUTO"; + } + + if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_MANUAL){ + mode += "|MANUAL"; + } + + if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_GUIDED){ + mode += "|VECTOR"; + } + + if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_STABILIZE){ + mode += "|STABILIZED"; + } + + + if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_TEST){ + mode += "|TEST"; + } + + + } + + if (mode.length() == 0) { mode = "|UNKNOWN"; + qDebug() << __FILE__ << __LINE__ << " Unknown modeid: " << modeid; } // ARMED STATE DECODING @@ -3382,6 +3392,8 @@ QString UAS::getShortModeTextFor(int id) mode.prepend("HIL:"); } + qDebug() << "MODE: " << modeid << " " << mode; + return mode; } From 57fc4421e75603567d758c753fd230fab272a225 Mon Sep 17 00:00:00 2001 From: PDSantos Date: Tue, 23 Jul 2013 15:45:50 +0100 Subject: [PATCH 2/5] Fixed Compiler Error C2864 - only static const integral data members can be initialized within a class --- src/uas/UAS.cc | 5 +++++ src/uas/UAS.h | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc index 9b15564..65b8d9a 100644 --- a/src/uas/UAS.cc +++ b/src/uas/UAS.cc @@ -38,6 +38,11 @@ * as the previous one created unless one calls deleteSettings in the code after * creating the UAS. */ + +const float UAS::lipoFull = 4.2f; ///< 100% charged voltage +const float UAS::lipoEmpty = 3.5f; ///< Discharged voltage + + UAS::UAS(MAVLinkProtocol* protocol, int id) : UASInterface(), uasId(id), links(new QList()), diff --git a/src/uas/UAS.h b/src/uas/UAS.h index 74d15c0..0da722b 100644 --- a/src/uas/UAS.h +++ b/src/uas/UAS.h @@ -56,8 +56,8 @@ public: UAS(MAVLinkProtocol* protocol, int id = 0); ~UAS(); - static const float lipoFull = 4.2f; ///< 100% charged voltage - static const float lipoEmpty = 3.5f; ///< Discharged voltage + static const float lipoFull; ///< 100% charged voltage + static const float lipoEmpty; ///< Discharged voltage /* MANAGEMENT */ From 34da19cfc82fb3a75b973cb67bc51afb9682abba Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Tue, 23 Jul 2013 17:24:01 +0200 Subject: [PATCH 3/5] Made lipoFull and lipoEmpty potentially configurable --- src/uas/UAS.cc | 10 ++++------ src/uas/UAS.h | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc index 65b8d9a..0759a23 100644 --- a/src/uas/UAS.cc +++ b/src/uas/UAS.cc @@ -39,11 +39,9 @@ * creating the UAS. */ -const float UAS::lipoFull = 4.2f; ///< 100% charged voltage -const float UAS::lipoEmpty = 3.5f; ///< Discharged voltage - - UAS::UAS(MAVLinkProtocol* protocol, int id) : UASInterface(), + lipoFull(4.2f), + lipoEmpty(3.5f), uasId(id), links(new QList()), unknownPackets(), @@ -3462,8 +3460,8 @@ void UAS::setBattery(BatteryType type, int cells) case LIION: break; case LIPOLY: - fullVoltage = this->cells * UAS::lipoFull; - emptyVoltage = this->cells * UAS::lipoEmpty; + fullVoltage = this->cells * lipoFull; + emptyVoltage = this->cells * lipoEmpty; break; case LIFE: break; diff --git a/src/uas/UAS.h b/src/uas/UAS.h index 0da722b..b1c027b 100644 --- a/src/uas/UAS.h +++ b/src/uas/UAS.h @@ -56,8 +56,8 @@ public: UAS(MAVLinkProtocol* protocol, int id = 0); ~UAS(); - static const float lipoFull; ///< 100% charged voltage - static const float lipoEmpty; ///< Discharged voltage + float lipoFull; ///< 100% charged voltage + float lipoEmpty; ///< Discharged voltage /* MANAGEMENT */ From 04030e06b4b37dec10080b02e0c8fa777d042cf4 Mon Sep 17 00:00:00 2001 From: tstellanova Date: Tue, 23 Jul 2013 09:10:22 -0700 Subject: [PATCH 4/5] Fix parameter formatting on save to file Also fix a few compiler switch warnings --- src/ui/QGCParamWidget.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/ui/QGCParamWidget.cc b/src/ui/QGCParamWidget.cc index 4e9700a..7f02609 100644 --- a/src/ui/QGCParamWidget.cc +++ b/src/ui/QGCParamWidget.cc @@ -705,7 +705,7 @@ void QGCParamWidget::parameterItemChanged(QTreeWidgetItem* current, int column) current->setBackground(1, QBrush(QColor(QGC::colorOrange))); } - switch (parameters.value(key)->value(str).type()) + switch ((int)parameters.value(key)->value(str).type()) { case QVariant::Int: { @@ -766,7 +766,7 @@ void QGCParamWidget::saveParameters() { QString paramValue("%1"); QString paramType("%1"); - switch (j.value().type()) + switch ((int)j.value().type()) { case QVariant::Int: paramValue = paramValue.arg(j.value().toInt()); @@ -777,7 +777,9 @@ void QGCParamWidget::saveParameters() paramType = paramType.arg(MAV_PARAM_TYPE_UINT32); break; case QMetaType::Float: - paramValue = paramValue.arg(j.value().toDouble(), 25, 'g', 12); + // We store parameters as floats, with only 6 digits of precision guaranteed for decimal string conversion + // (see IEEE 754, 32 bit single-precision) + paramValue = paramValue.arg((double)j.value().toFloat(), 25, 'g', 6); paramType = paramType.arg(MAV_PARAM_TYPE_REAL32); break; default: @@ -955,7 +957,7 @@ void QGCParamWidget::retransmissionGuardTick() if (count < retransmissionBurstRequestSize) { // Re-request write operation QVariant value = missingParams->value(key); - switch (parameters.value(component)->value(key).type()) + switch ((int)parameters.value(component)->value(key).type()) { case QVariant::Int: { @@ -1020,7 +1022,7 @@ void QGCParamWidget::setParameter(int component, QString parameterName, QVariant return; } - switch (parameters.value(component)->value(parameterName).type()) + switch ((int)parameters.value(component)->value(parameterName).type()) { case QVariant::Char: { From 0506a3d1d841011c1e7b3374cec4b24f9bcbb1d7 Mon Sep 17 00:00:00 2001 From: Anton Babushkin Date: Fri, 26 Jul 2013 14:50:54 +0400 Subject: [PATCH 5/5] UASControlWidget: make modes list human-readable --- src/ui/uas/UASControlWidget.cc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/ui/uas/UASControlWidget.cc b/src/ui/uas/UASControlWidget.cc index 5c43edd..b7d8cf7 100644 --- a/src/ui/uas/UASControlWidget.cc +++ b/src/ui/uas/UASControlWidget.cc @@ -51,12 +51,17 @@ UASControlWidget::UASControlWidget(QWidget *parent) : QWidget(parent), connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(setUAS(UASInterface*))); ui.modeComboBox->clear(); - ui.modeComboBox->insertItem(0, UAS::getShortModeTextFor(MAV_MODE_PREFLIGHT).remove(0, 2), MAV_MODE_PREFLIGHT); - ui.modeComboBox->insertItem(1, UAS::getShortModeTextFor((MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED)).remove(0, 2), (MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED)); - ui.modeComboBox->insertItem(2, UAS::getShortModeTextFor(MAV_MODE_FLAG_MANUAL_INPUT_ENABLED).remove(0, 2), MAV_MODE_FLAG_MANUAL_INPUT_ENABLED); - ui.modeComboBox->insertItem(3, UAS::getShortModeTextFor((MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED)).remove(0, 2), (MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED)); - ui.modeComboBox->insertItem(4, UAS::getShortModeTextFor((MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED | MAV_MODE_FLAG_AUTO_ENABLED)).remove(0, 2), (MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED | MAV_MODE_FLAG_AUTO_ENABLED)); - ui.modeComboBox->insertItem(5, UAS::getShortModeTextFor((MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_TEST_ENABLED)).remove(0, 2), (MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_TEST_ENABLED)); + int modes[] = { + MAV_MODE_PREFLIGHT, + MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, + MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, + MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_AUTO_ENABLED, + MAV_MODE_FLAG_MANUAL_INPUT_ENABLED | MAV_MODE_FLAG_TEST_ENABLED, + }; + for (int i = 0; i < sizeof(modes) / sizeof(int); i++) { + int mode = modes[i]; + ui.modeComboBox->insertItem(i, UAS::getShortModeTextFor(mode).remove(0, 2), mode); + } connect(ui.modeComboBox, SIGNAL(activated(int)), this, SLOT(setMode(int))); connect(ui.setModeButton, SIGNAL(clicked()), this, SLOT(transmitMode()));