Commit fb05e125 authored by lm's avatar lm

Update UI control elements from vehicle, allows multi-operator mode

parent f2c53477
...@@ -55,7 +55,8 @@ This file is part of the PIXHAWK project ...@@ -55,7 +55,8 @@ This file is part of the PIXHAWK project
#define CONTROL_MODE_TEST1_INDEX 6 #define CONTROL_MODE_TEST1_INDEX 6
UASControlWidget::UASControlWidget(QWidget *parent) : QWidget(parent), UASControlWidget::UASControlWidget(QWidget *parent) : QWidget(parent),
uas(NULL) uas(NULL),
engineOn(false)
{ {
ui.setupUi(this); ui.setupUi(this);
...@@ -94,6 +95,9 @@ void UASControlWidget::setUAS(UASInterface* uas) ...@@ -94,6 +95,9 @@ void UASControlWidget::setUAS(UASInterface* uas)
ui.controlStatusLabel->setText(tr("Connected to ") + uas->getUASName()); ui.controlStatusLabel->setText(tr("Connected to ") + uas->getUASName());
connect(uas, SIGNAL(modeChanged(int,QString,QString)), this, SLOT(updateMode(int,QString,QString)));
connect(uas, SIGNAL(statusChanged(int)), this, SLOT(updateState(int)));
this->uas = uas; this->uas = uas;
} }
} }
...@@ -102,6 +106,28 @@ UASControlWidget::~UASControlWidget() { ...@@ -102,6 +106,28 @@ UASControlWidget::~UASControlWidget() {
} }
void UASControlWidget::updateMode(int uas,QString mode,QString description)
{
Q_UNUSED(uas);
Q_UNUSED(mode);
Q_UNUSED(description);
}
void UASControlWidget::updateState(int state)
{
switch (state)
{
case (int)MAV_STATE_ACTIVE:
engineOn = true;
ui.controlButton->setText(tr("Stop Engine"));
break;
case (int)MAV_STATE_STANDBY:
engineOn = false;
ui.controlButton->setText(tr("Activate Engine"));
break;
}
}
void UASControlWidget::setMode(int mode) void UASControlWidget::setMode(int mode)
{ {
// Adapt context button mode // Adapt context button mode
...@@ -151,34 +177,26 @@ void UASControlWidget::transmitMode() ...@@ -151,34 +177,26 @@ void UASControlWidget::transmitMode()
void UASControlWidget::cycleContextButton() void UASControlWidget::cycleContextButton()
{ {
//switch(uas->getMode());
static int state = 0;
UAS* mav = dynamic_cast<UAS*>(this->uas); UAS* mav = dynamic_cast<UAS*>(this->uas);
if (mav) if (mav)
{ {
switch (state) if (engineOn)
{ {
case 0:
ui.controlButton->setText(tr("Stop Engine")); ui.controlButton->setText(tr("Stop Engine"));
mav->setMode(MAV_MODE_MANUAL); mav->setMode(MAV_MODE_MANUAL);
mav->enable_motors(); mav->enable_motors();
ui.lastActionLabel->setText(QString("Enabled motors on %1").arg(uas->getUASName())); ui.lastActionLabel->setText(QString("Enabled motors on %1").arg(uas->getUASName()));
state++; }
break; else
case 1: {
ui.controlButton->setText(tr("Activate Engine")); ui.controlButton->setText(tr("Activate Engine"));
mav->setMode(MAV_MODE_LOCKED); mav->setMode(MAV_MODE_LOCKED);
mav->disable_motors(); mav->disable_motors();
ui.lastActionLabel->setText(QString("Disabled motors on %1").arg(uas->getUASName())); ui.lastActionLabel->setText(QString("Disabled motors on %1").arg(uas->getUASName()));
state = 0;
break;
case 2:
//ui.controlButton->setText(tr("Force Landing"));
ui.controlButton->setText(tr("KILL VEHICLE"));
break;
} }
//ui.controlButton->setText(tr("Force Landing"));
//ui.controlButton->setText(tr("KILL VEHICLE"));
} }
} }
......
...@@ -53,12 +53,17 @@ public slots: ...@@ -53,12 +53,17 @@ public slots:
void cycleContextButton(); void cycleContextButton();
/** @brief Set the operation mode of the MAV */ /** @brief Set the operation mode of the MAV */
void setMode(int mode); void setMode(int mode);
/** @brief Transmit the operation mode **/ /** @brief Transmit the operation mode */
void transmitMode(); void transmitMode();
/** @brief Update the mode */
void updateMode(int uas,QString mode,QString description);
/** @brief Update state */
void updateState(int state);
protected: protected:
UASInterface* uas; UASInterface* uas;
unsigned int uasMode; unsigned int uasMode;
bool engineOn;
private: private:
Ui::uasControl ui; Ui::uasControl ui;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment