diff --git a/src/Joystick/Joystick.cc b/src/Joystick/Joystick.cc index 04d51ccf348baad2f900c5659e8f3e72abbe1df7..3f0ba6aeb22ea2bead37025410237e5f6b698a4f 100644 --- a/src/Joystick/Joystick.cc +++ b/src/Joystick/Joystick.cc @@ -32,6 +32,11 @@ const char* Joystick::_roverTXModeSettingsKey = "TXMode_Rover"; const char* Joystick::_vtolTXModeSettingsKey = "TXMode_VTOL"; const char* Joystick::_submarineTXModeSettingsKey = "TXMode_Submarine"; +const char* Joystick::_buttonActionArm = QT_TR_NOOP("Arm"); +const char* Joystick::_buttonActionDisarm = QT_TR_NOOP("Disarm"); +const char* Joystick::_buttonActionVTOLFixedWing = QT_TR_NOOP("VTOL: Fixed Wing"); +const char* Joystick::_buttonActionVTOLMultiRotor = QT_TR_NOOP("VTOL: Multi-Rotor"); + const char* Joystick::_rgFunctionSettingsKey[Joystick::maxFunction] = { "RollAxis", "PitchAxis", @@ -84,6 +89,10 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC Joystick::~Joystick() { + // Crash out of the thread if it is still running + terminate(); + wait(); + delete[] _rgAxisValues; delete[] _rgCalibration; delete[] _rgButtonValues; @@ -638,11 +647,12 @@ QStringList Joystick::actions(void) { QStringList list; - list << "Arm" << "Disarm"; + list << _buttonActionArm << _buttonActionDisarm; if (_activeVehicle) { list << _activeVehicle->flightModes(); } + list << _buttonActionVTOLFixedWing << _buttonActionVTOLMultiRotor; return list; } @@ -787,10 +797,14 @@ void Joystick::_buttonAction(const QString& action) return; } - if (action == "Arm") { + if (action == _buttonActionArm) { _activeVehicle->setArmed(true); - } else if (action == "Disarm") { + } else if (action == _buttonActionDisarm) { _activeVehicle->setArmed(false); + } else if (action == _buttonActionVTOLFixedWing) { + _activeVehicle->setVtolInFwdFlight(true); + } else if (action == _buttonActionVTOLMultiRotor) { + _activeVehicle->setVtolInFwdFlight(false); } else if (_activeVehicle->flightModes().contains(action)) { _activeVehicle->setFlightMode(action); } else { diff --git a/src/Joystick/Joystick.h b/src/Joystick/Joystick.h index f90b8169b84440479e866a11ee7de3cf96f8ccf8..8cd6accf66306b3b2e89ec6d0512bdc06f3e6234 100644 --- a/src/Joystick/Joystick.h +++ b/src/Joystick/Joystick.h @@ -236,6 +236,11 @@ private: static const char* _vtolTXModeSettingsKey; static const char* _submarineTXModeSettingsKey; + static const char* _buttonActionArm; + static const char* _buttonActionDisarm; + static const char* _buttonActionVTOLFixedWing; + static const char* _buttonActionVTOLMultiRotor; + private slots: void _activeVehicleChanged(Vehicle* activeVehicle); };