Browse Source

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

QGC4.4
lm 15 years ago
parent
commit
fb05e12568
  1. 48
      src/ui/uas/UASControlWidget.cc
  2. 7
      src/ui/uas/UASControlWidget.h

48
src/ui/uas/UASControlWidget.cc

@ -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
UASControlWidget::UASControlWidget(QWidget *parent) : QWidget(parent),
uas(NULL)
uas(NULL),
engineOn(false)
{
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());
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;
}
}
@ -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)
{
// Adapt context button mode
@ -151,34 +177,26 @@ void UASControlWidget::transmitMode() @@ -151,34 +177,26 @@ void UASControlWidget::transmitMode()
void UASControlWidget::cycleContextButton()
{
//switch(uas->getMode());
static int state = 0;
UAS* mav = dynamic_cast<UAS*>(this->uas);
if (mav)
{
switch (state)
if (engineOn)
{
case 0:
ui.controlButton->setText(tr("Stop Engine"));
mav->setMode(MAV_MODE_MANUAL);
mav->enable_motors();
ui.lastActionLabel->setText(QString("Enabled motors on %1").arg(uas->getUASName()));
state++;
break;
case 1:
}
else
{
ui.controlButton->setText(tr("Activate Engine"));
mav->setMode(MAV_MODE_LOCKED);
mav->disable_motors();
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"));
}
}

7
src/ui/uas/UASControlWidget.h

@ -53,12 +53,17 @@ public slots: @@ -53,12 +53,17 @@ public slots:
void cycleContextButton();
/** @brief Set the operation mode of the MAV */
void setMode(int mode);
/** @brief Transmit the operation mode **/
/** @brief Transmit the operation mode */
void transmitMode();
/** @brief Update the mode */
void updateMode(int uas,QString mode,QString description);
/** @brief Update state */
void updateState(int state);
protected:
UASInterface* uas;
unsigned int uasMode;
bool engineOn;
private:
Ui::uasControl ui;

Loading…
Cancel
Save