From 56f7a0340e74c1dc3d95fdc2b1ef5a887104347c Mon Sep 17 00:00:00 2001 From: Nate Weibley Date: Wed, 2 Dec 2015 15:37:14 -0500 Subject: [PATCH] Enable binding mode commands to joystick buttons --- src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc | 2 +- src/Joystick/Joystick.cc | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc b/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc index 014ffb204..116a875c3 100644 --- a/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc +++ b/src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc @@ -174,7 +174,7 @@ bool PX4FirmwarePlugin::setFlightMode(const QString& flightMode, uint8_t* base_m int PX4FirmwarePlugin::manualControlReservedButtonCount(void) { - return 8; // 8 buttons reserved for rc switch simulation + return 0; // 0 buttons reserved for rc switch simulation } void PX4FirmwarePlugin::adjustMavlinkMessage(mavlink_message_t* message) diff --git a/src/Joystick/Joystick.cc b/src/Joystick/Joystick.cc index 7c417a996..280b23fac 100644 --- a/src/Joystick/Joystick.cc +++ b/src/Joystick/Joystick.cc @@ -347,7 +347,9 @@ void Joystick::run(void) } // Mark the button as pressed as long as its pressed - buttonPressedBits |= buttonBit; + if (buttonIndex < reservedButtonCount) { + buttonPressedBits |= buttonBit; + } } } @@ -461,6 +463,10 @@ QStringList Joystick::actions(void) QStringList list; list << "Arm" << "Disarm"; + + if (_activeVehicle) { + list << _activeVehicle->flightModes(); + } return list; } @@ -558,6 +564,8 @@ void Joystick::_buttonAction(const QString& action) _activeVehicle->setArmed(true); } else if (action == "Disarm") { _activeVehicle->setArmed(false); + } else if (_activeVehicle->flightModes().contains(action)) { + _activeVehicle->setFlightMode(action); } else { qCDebug(JoystickLog) << "_buttonAction unknown action:" << action; } -- 2.22.0