Browse Source

Revert "Support custom builds with joysticks which are buttons only"

This reverts commit 48d1441493.
QGC4.4
Don Gagne 2 years ago
parent
commit
0a357eb900
  1. 14
      src/Joystick/Joystick.cc
  2. 5
      src/Joystick/Joystick.h
  3. 12
      src/VehicleSetup/JoystickConfig.qml
  4. 2
      src/VehicleSetup/SetupView.qml
  5. 4
      src/api/QGCOptions.h

14
src/Joystick/Joystick.cc

@ -16,8 +16,6 @@
#include "VideoManager.h" #include "VideoManager.h"
#include "QGCCameraManager.h" #include "QGCCameraManager.h"
#include "QGCCameraControl.h" #include "QGCCameraControl.h"
#include "QGCCorePlugin.h"
#include "QGCOptions.h"
#include <QSettings> #include <QSettings>
@ -110,8 +108,6 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC
, _totalButtonCount(_buttonCount+_hatButtonCount) , _totalButtonCount(_buttonCount+_hatButtonCount)
, _multiVehicleManager(multiVehicleManager) , _multiVehicleManager(multiVehicleManager)
{ {
_useButtonsOnly = qgcApp()->toolbox()->corePlugin()->options()->joystickUseButtonsOnly();
qRegisterMetaType<GRIPPER_ACTIONS>(); qRegisterMetaType<GRIPPER_ACTIONS>();
_rgAxisValues = new int[static_cast<size_t>(_axisCount)]; _rgAxisValues = new int[static_cast<size_t>(_axisCount)];
@ -728,9 +724,10 @@ void Joystick::startPolling(Vehicle* vehicle)
} }
// Update qml in case of joystick transition // Update qml in case of joystick transition
emit calibratedChanged(_calibrated); emit calibratedChanged(_calibrated);
// Build action list
_buildActionList(vehicle); _buildActionList(vehicle);
// Only connect the new vehicle if it wants joystick data
if (vehicle->joystickEnabled() || _useButtonsOnly) { if (vehicle->joystickEnabled()) {
_pollingStartedForCalibration = false; _pollingStartedForCalibration = false;
connect(this, &Joystick::setArmed, _activeVehicle, &Vehicle::setArmedShowError); connect(this, &Joystick::setArmed, _activeVehicle, &Vehicle::setArmedShowError);
connect(this, &Joystick::setVtolInFwdFlight, _activeVehicle, &Vehicle::setVtolInFwdFlight); connect(this, &Joystick::setVtolInFwdFlight, _activeVehicle, &Vehicle::setVtolInFwdFlight);
@ -752,7 +749,7 @@ void Joystick::startPolling(Vehicle* vehicle)
void Joystick::stopPolling(void) void Joystick::stopPolling(void)
{ {
if (isRunning()) { if (isRunning()) {
if (_activeVehicle && (_activeVehicle->joystickEnabled() || _useButtonsOnly)) { if (_activeVehicle && _activeVehicle->joystickEnabled()) {
disconnect(this, &Joystick::setArmed, _activeVehicle, &Vehicle::setArmedShowError); disconnect(this, &Joystick::setArmed, _activeVehicle, &Vehicle::setArmedShowError);
disconnect(this, &Joystick::setVtolInFwdFlight, _activeVehicle, &Vehicle::setVtolInFwdFlight); disconnect(this, &Joystick::setVtolInFwdFlight, _activeVehicle, &Vehicle::setVtolInFwdFlight);
disconnect(this, &Joystick::setFlightMode, _activeVehicle, &Vehicle::setFlightMode); disconnect(this, &Joystick::setFlightMode, _activeVehicle, &Vehicle::setFlightMode);
@ -999,10 +996,9 @@ void Joystick::setCalibrationMode(bool calibrating)
void Joystick::_executeButtonAction(const QString& action, bool buttonDown) void Joystick::_executeButtonAction(const QString& action, bool buttonDown)
{ {
if (!_activeVehicle || (!_activeVehicle->joystickEnabled() && !_useButtonsOnly) || action == _buttonActionNone) { if (!_activeVehicle || !_activeVehicle->joystickEnabled() || action == _buttonActionNone) {
return; return;
} }
if (action == _buttonActionArm) { if (action == _buttonActionArm) {
if (buttonDown) emit setArmed(true); if (buttonDown) emit setArmed(true);
} else if (action == _buttonActionDisarm) { } else if (action == _buttonActionDisarm) {

5
src/Joystick/Joystick.h

@ -94,10 +94,6 @@ public:
Q_PROPERTY(int axisCount READ axisCount CONSTANT) Q_PROPERTY(int axisCount READ axisCount CONSTANT)
Q_PROPERTY(bool requiresCalibration READ requiresCalibration CONSTANT) Q_PROPERTY(bool requiresCalibration READ requiresCalibration CONSTANT)
// This property is used to indicate a joystick setup where the stick axes are ignored and only the
// buttons are supported. This type of setup is used by a Herelink controller for example.
Q_PROPERTY(bool useButtonsOnly MEMBER _useButtonsOnly CONSTANT)
//-- Actions assigned to buttons //-- Actions assigned to buttons
Q_PROPERTY(QStringList buttonActions READ buttonActions NOTIFY buttonActionsChanged) Q_PROPERTY(QStringList buttonActions READ buttonActions NOTIFY buttonActionsChanged)
@ -279,7 +275,6 @@ protected:
std::atomic<bool> _exitThread{false}; ///< true: signal thread to exit std::atomic<bool> _exitThread{false}; ///< true: signal thread to exit
bool _calibrationMode = false; bool _calibrationMode = false;
bool _useButtonsOnly = false;
int* _rgAxisValues = nullptr; int* _rgAxisValues = nullptr;
Calibration_t* _rgCalibration = nullptr; Calibration_t* _rgCalibration = nullptr;
ThrottleMode_t _throttleMode = ThrottleModeDownZero; ThrottleMode_t _throttleMode = ThrottleModeDownZero;

12
src/VehicleSetup/JoystickConfig.qml

@ -62,30 +62,20 @@ SetupPage {
id: bar id: bar
width: parent.width width: parent.width
Component.onCompleted: { Component.onCompleted: {
currentIndex = 0 currentIndex = _activeJoystick && _activeJoystick.calibrated ? 0 : 2
if (_activeJoystick) {
if (_activeJoystick.useButtonsOnly) {
currentIndex = 1
} else if (_activeJoystick.calibrated) {
currentIndex = 2
}
}
} }
anchors.top: parent.top anchors.top: parent.top
QGCTabButton { QGCTabButton {
text: qsTr("General") text: qsTr("General")
visible: !_activeJoystick.useButtonsOnly
} }
QGCTabButton { QGCTabButton {
text: qsTr("Button Assigment") text: qsTr("Button Assigment")
} }
QGCTabButton { QGCTabButton {
text: qsTr("Calibration") text: qsTr("Calibration")
visible: !_activeJoystick.useButtonsOnly
} }
QGCTabButton { QGCTabButton {
text: qsTr("Advanced") text: qsTr("Advanced")
visible: !_activeJoystick.useButtonsOnly
} }
} }

2
src/VehicleSetup/SetupView.qml

@ -260,7 +260,7 @@ Rectangle {
id: joystickButton id: joystickButton
imageResource: "/qmlimages/Joystick.png" imageResource: "/qmlimages/Joystick.png"
setupIndicator: true setupIndicator: true
setupComplete: joystickManager.activeJoystick ? (joystickManager.activeJoystick.calibrated || joystickManager.activeJoystick.useButtonsOnly) : false setupComplete: joystickManager.activeJoystick ? joystickManager.activeJoystick.calibrated : false
exclusiveGroup: setupButtonGroup exclusiveGroup: setupButtonGroup
visible: _fullParameterVehicleAvailable && joystickManager.joysticks.length !== 0 visible: _fullParameterVehicleAvailable && joystickManager.joysticks.length !== 0
text: qsTr("Joystick") text: qsTr("Joystick")

4
src/api/QGCOptions.h

@ -146,10 +146,6 @@ public:
virtual QGCFlyViewOptions* flyViewOptions (); virtual QGCFlyViewOptions* flyViewOptions ();
// This is used to indicate a joystick setup where the stick axes are ignored and only the
// buttons are supported. This type of setup is used by a Herelink controller for example.
virtual bool joystickUseButtonsOnly() const { return false; }
signals: signals:
void showSensorCalibrationCompassChanged (bool show); void showSensorCalibrationCompassChanged (bool show);
void showSensorCalibrationGyroChanged (bool show); void showSensorCalibrationGyroChanged (bool show);

Loading…
Cancel
Save