From 9b62308e6e54a9074a2693cbf309d851e1fcc93b Mon Sep 17 00:00:00 2001 From: Michael Carpenter Date: Tue, 25 Jun 2013 11:41:06 -0400 Subject: [PATCH] Initial implementation of Flight Mode Config screen --- src/ui/configuration/FlightModeConfig.cc | 230 +++++++++++++++++++++++ src/ui/configuration/FlightModeConfig.h | 11 +- src/ui/configuration/FlightModeConfig.ui | 210 ++++++++++++++++++++- 3 files changed, 448 insertions(+), 3 deletions(-) diff --git a/src/ui/configuration/FlightModeConfig.cc b/src/ui/configuration/FlightModeConfig.cc index 07a1ed394..cff7772da 100644 --- a/src/ui/configuration/FlightModeConfig.cc +++ b/src/ui/configuration/FlightModeConfig.cc @@ -4,8 +4,238 @@ FlightModeConfig::FlightModeConfig(QWidget *parent) : QWidget(parent) { ui.setupUi(this); + connect(UASManager::instance(),SIGNAL(activeUASSet(UASInterface*)),this,SLOT(setActiveUAS(UASInterface*))); + + } FlightModeConfig::~FlightModeConfig() { } +void FlightModeConfig::setActiveUAS(UASInterface *uas) +{ + if (!uas) return; + if (m_uas) + { + } + m_uas = uas; + connect(m_uas,SIGNAL(modeChanged(int,QString,QString)),this,SLOT(modeChanged(int,QString,QString))); + connect(m_uas,SIGNAL(parameterChanged(int,int,QString,QVariant)),this,SLOT(parameterChanged(int,int,QString,QVariant))); + connect(m_uas,SIGNAL(remoteControlChannelRawChanged(int,float)),this,SLOT(remoteControlChannelRawChanged(int,float))); + QStringList itemlist; + if (m_uas->getSystemType() == MAV_TYPE_FIXED_WING) + { + itemlist << "Manual"; + itemlist << "Circle"; + itemlist << "Stabilize"; + itemlist << "Training"; + itemlist << "FBW A"; + itemlist << "FBW B"; + itemlist << "Auto"; + itemlist << "RTL"; + itemlist << "Loiter"; + itemlist << "Guided"; + + planeModeIndexToUiIndex[0] = 0; + planeModeIndexToUiIndex[1] = 1; + planeModeIndexToUiIndex[2] = 2; + planeModeIndexToUiIndex[3] = 3; + planeModeIndexToUiIndex[5] = 4; + planeModeIndexToUiIndex[6] = 5; + planeModeIndexToUiIndex[10] = 6; + planeModeIndexToUiIndex[11] = 7; + planeModeIndexToUiIndex[12] = 8; + planeModeIndexToUiIndex[15] = 9; + ui.mode6ComboBox->setEnabled(true); + } + else if (m_uas->getSystemType() == MAV_TYPE_GROUND_ROVER) + { + itemlist << "Manual"; + itemlist << "Learning"; + itemlist << "Steering"; + itemlist << "Hold"; + itemlist << "Auto"; + itemlist << "RTL"; + itemlist << "Guided"; + itemlist << "Initialising"; + ui.mode6ComboBox->setEnabled(false); + roverModeIndexToUiIndex[0] = 0; + roverModeIndexToUiIndex[2] = 1; + roverModeIndexToUiIndex[3] = 2; + roverModeIndexToUiIndex[4] = 3; + roverModeIndexToUiIndex[10] = 5; + roverModeIndexToUiIndex[11] = 6; + roverModeIndexToUiIndex[15] = 7; + roverModeIndexToUiIndex[16] = 8; + + } + else if (m_uas->getSystemType() == MAV_TYPE_QUADROTOR) + { + itemlist << "Stabilize"; + itemlist << "Acro"; + itemlist << "Alt Hold"; + itemlist << "Auto"; + itemlist << "Guided"; + itemlist << "Loiter"; + itemlist << "RTL"; + itemlist << "Circle"; + itemlist << "Pos Hold"; + itemlist << "Land"; + itemlist << "OF_LOITER"; + itemlist << "Toy"; + ui.mode6ComboBox->setEnabled(true); + } + ui.mode1ComboBox->addItems(itemlist); + ui.mode2ComboBox->addItems(itemlist); + ui.mode3ComboBox->addItems(itemlist); + ui.mode4ComboBox->addItems(itemlist); + ui.mode5ComboBox->addItems(itemlist); + ui.mode6ComboBox->addItems(itemlist); +} +void FlightModeConfig::modeChanged(int sysId, QString status, QString description) +{ + //Unused? +} +void FlightModeConfig::remoteControlChannelRawChanged(int chan,float val) +{ + if (chan == 5) + { + //Channel 5 is the mode switch. + ///TODO: Make this configurable + if (val <= 1230) + { + ui.mode1ComboBox->setBackgroundRole(QPalette::Highlight); + ui.mode2ComboBox->setBackgroundRole(QPalette::Background); + ui.mode3ComboBox->setBackgroundRole(QPalette::Background); + ui.mode4ComboBox->setBackgroundRole(QPalette::Background); + ui.mode5ComboBox->setBackgroundRole(QPalette::Background); + ui.mode6ComboBox->setBackgroundRole(QPalette::Background); + } + else if (val <= 1360) + { + ui.mode1ComboBox->setBackgroundRole(QPalette::Background); + ui.mode2ComboBox->setBackgroundRole(QPalette::Highlight); + ui.mode3ComboBox->setBackgroundRole(QPalette::Background); + ui.mode4ComboBox->setBackgroundRole(QPalette::Background); + ui.mode5ComboBox->setBackgroundRole(QPalette::Background); + ui.mode6ComboBox->setBackgroundRole(QPalette::Background); + } + else if (val <= 1490) + { + ui.mode1ComboBox->setBackgroundRole(QPalette::Background); + ui.mode2ComboBox->setBackgroundRole(QPalette::Background); + ui.mode3ComboBox->setBackgroundRole(QPalette::Highlight); + ui.mode4ComboBox->setBackgroundRole(QPalette::Background); + ui.mode5ComboBox->setBackgroundRole(QPalette::Background); + ui.mode6ComboBox->setBackgroundRole(QPalette::Background); + } + else if (val <=1620) + { + ui.mode1ComboBox->setBackgroundRole(QPalette::Background); + ui.mode2ComboBox->setBackgroundRole(QPalette::Background); + ui.mode3ComboBox->setBackgroundRole(QPalette::Background); + ui.mode4ComboBox->setBackgroundRole(QPalette::Highlight); + ui.mode5ComboBox->setBackgroundRole(QPalette::Background); + ui.mode6ComboBox->setBackgroundRole(QPalette::Background); + } + else if (val <=1749) + { + ui.mode1ComboBox->setBackgroundRole(QPalette::Background); + ui.mode2ComboBox->setBackgroundRole(QPalette::Background); + ui.mode3ComboBox->setBackgroundRole(QPalette::Background); + ui.mode4ComboBox->setBackgroundRole(QPalette::Background); + ui.mode5ComboBox->setBackgroundRole(QPalette::Highlight); + ui.mode6ComboBox->setBackgroundRole(QPalette::Background); + } + else + { + ui.mode1ComboBox->setBackgroundRole(QPalette::Background); + ui.mode2ComboBox->setBackgroundRole(QPalette::Background); + ui.mode3ComboBox->setBackgroundRole(QPalette::Background); + ui.mode4ComboBox->setBackgroundRole(QPalette::Background); + ui.mode5ComboBox->setBackgroundRole(QPalette::Background); + ui.mode6ComboBox->setBackgroundRole(QPalette::Highlight); + } + } +} + +void FlightModeConfig::parameterChanged(int uas, int component, QString parameterName, QVariant value) +{ + if (m_uas->getSystemType() == MAV_TYPE_FIXED_WING) + { + if (parameterName == "FLTMODE1") + { + ui.mode1ComboBox->setCurrentIndex(planeModeIndexToUiIndex[value.toInt()]); + } + else if (parameterName == "FLTMODE2") + { + ui.mode2ComboBox->setCurrentIndex(planeModeIndexToUiIndex[value.toInt()]); + } + else if (parameterName == "FLTMODE3") + { + ui.mode3ComboBox->setCurrentIndex(planeModeIndexToUiIndex[value.toInt()]); + } + else if (parameterName == "FLTMODE4") + { + ui.mode4ComboBox->setCurrentIndex(planeModeIndexToUiIndex[value.toInt()]); + } + else if (parameterName == "FLTMODE5") + { + ui.mode5ComboBox->setCurrentIndex(planeModeIndexToUiIndex[value.toInt()]); + } + else if (parameterName == "FLTMODE6") + { + ui.mode6ComboBox->setCurrentIndex(planeModeIndexToUiIndex[value.toInt()]); + } + } + else if (m_uas->getSystemType() == MAV_TYPE_GROUND_ROVER) + { + if (parameterName == "MODE1") + { + ui.mode1ComboBox->setCurrentIndex(roverModeIndexToUiIndex[value.toInt()]); + } + else if (parameterName == "MODE2") + { + ui.mode2ComboBox->setCurrentIndex(roverModeIndexToUiIndex[value.toInt()]); + } + else if (parameterName == "MODE3") + { + ui.mode3ComboBox->setCurrentIndex(roverModeIndexToUiIndex[value.toInt()]); + } + else if (parameterName == "MODE4") + { + ui.mode4ComboBox->setCurrentIndex(roverModeIndexToUiIndex[value.toInt()]); + } + else if (parameterName == "MODE5") + { + ui.mode5ComboBox->setCurrentIndex(roverModeIndexToUiIndex[value.toInt()]); + } + } + else if (m_uas->getSystemType() == MAV_TYPE_QUADROTOR) + { + if (parameterName == "FLTMODE1") + { + ui.mode1ComboBox->setCurrentIndex(value.toInt()-1); + } + else if (parameterName == "FLTMODE2") + { + ui.mode2ComboBox->setCurrentIndex(value.toInt()-1); + } + else if (parameterName == "FLTMODE3") + { + ui.mode3ComboBox->setCurrentIndex(value.toInt()-1); + } + else if (parameterName == "FLTMODE4") + { + ui.mode4ComboBox->setCurrentIndex(value.toInt()-1); + } + else if (parameterName == "FLTMODE5") + { + ui.mode5ComboBox->setCurrentIndex(value.toInt()-1); + } + else if (parameterName == "FLTMODE6") + { + ui.mode6ComboBox->setCurrentIndex(value.toInt()-1); + } + } +} diff --git a/src/ui/configuration/FlightModeConfig.h b/src/ui/configuration/FlightModeConfig.h index fdf1129bb..b9130bdcb 100644 --- a/src/ui/configuration/FlightModeConfig.h +++ b/src/ui/configuration/FlightModeConfig.h @@ -3,6 +3,8 @@ #include #include "ui_FlightModeConfig.h" +#include "UASInterface.h" +#include "UASManager.h" class FlightModeConfig : public QWidget { @@ -11,9 +13,16 @@ class FlightModeConfig : public QWidget public: explicit FlightModeConfig(QWidget *parent = 0); ~FlightModeConfig(); - +private slots: + void setActiveUAS(UASInterface *uas); + void modeChanged(int sysId, QString status, QString description); + void remoteControlChannelRawChanged(int chan,float val); + void parameterChanged(int uas, int component, QString parameterName, QVariant value); private: + QMap roverModeIndexToUiIndex; + QMap planeModeIndexToUiIndex; Ui::FlightModeConfig ui; + UASInterface *m_uas; }; #endif // FLIGHTMODECONFIG_H diff --git a/src/ui/configuration/FlightModeConfig.ui b/src/ui/configuration/FlightModeConfig.ui index 737d40523..bf5c1b777 100644 --- a/src/ui/configuration/FlightModeConfig.ui +++ b/src/ui/configuration/FlightModeConfig.ui @@ -6,8 +6,8 @@ 0 0 - 400 - 300 + 608 + 359 @@ -29,6 +29,212 @@ false + + + + 20 + 70 + 481 + 191 + + + + + + + 8 + + + 0 + + + + + Flight Mode 1 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Flight Mode 2 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Flight Mode 3 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Flight Mode 4 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Flight Mode 5 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Flight Mode 6 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + 8 + + + 0 + + + + + Simple Mode + + + + + + + Simple Mode + + + + + + + Simple Mode + + + + + + + Simple Mode + + + + + + + Simple Mode + + + + + + + Simple Mode + + + + + + + + + + + PWM 0 - 1230 + + + + + + + PWM 1231 - 1360 + + + + + + + PWM 1361 - 1490 + + + + + + + PWM 1491 - 1620 + + + + + + + PWM 1621 - 1749 + + + + + + + PWM 1750 + + + + + + + + -- 2.22.0