From 427a5c43fc8cc42e80e2b81d3a7ee424d32d6806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Fri, 28 Jul 2023 07:31:32 +0200 Subject: [PATCH] joystick: handle dynamic flight mode updates --- src/Joystick/Joystick.cc | 7 +++++++ src/Joystick/Joystick.h | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Joystick/Joystick.cc b/src/Joystick/Joystick.cc index e138739..b9835c4 100644 --- a/src/Joystick/Joystick.cc +++ b/src/Joystick/Joystick.cc @@ -222,6 +222,10 @@ void Joystick::_activeVehicleChanged(Vehicle* activeVehicle) setTXMode(mode); } } +void Joystick::_flightModesChanged() +{ + _buildActionList(_activeVehicle); +} void Joystick::_vehicleCountChanged(int count) { @@ -717,6 +721,7 @@ void Joystick::startPolling(Vehicle* vehicle) disconnect(this, &Joystick::gimbalControlValue, _activeVehicle, &Vehicle::gimbalControlValue); disconnect(this, &Joystick::emergencyStop, _activeVehicle, &Vehicle::emergencyStop); disconnect(this, &Joystick::gripperAction, _activeVehicle, &Vehicle::setGripperAction); + disconnect(_activeVehicle, &Vehicle::flightModesChanged, this, &Joystick::_flightModesChanged); } // Always set up the new vehicle _activeVehicle = vehicle; @@ -740,6 +745,7 @@ void Joystick::startPolling(Vehicle* vehicle) connect(this, &Joystick::gimbalControlValue, _activeVehicle, &Vehicle::gimbalControlValue); connect(this, &Joystick::emergencyStop, _activeVehicle, &Vehicle::emergencyStop); connect(this, &Joystick::gripperAction, _activeVehicle, &Vehicle::setGripperAction); + connect(_activeVehicle, &Vehicle::flightModesChanged, this, &Joystick::_flightModesChanged); } } if (!isRunning()) { @@ -760,6 +766,7 @@ void Joystick::stopPolling(void) disconnect(this, &Joystick::centerGimbal, _activeVehicle, &Vehicle::centerGimbal); disconnect(this, &Joystick::gimbalControlValue, _activeVehicle, &Vehicle::gimbalControlValue); disconnect(this, &Joystick::gripperAction, _activeVehicle, &Vehicle::setGripperAction); + disconnect(_activeVehicle, &Vehicle::flightModesChanged, this, &Joystick::_flightModesChanged); } _exitThread = true; } diff --git a/src/Joystick/Joystick.h b/src/Joystick/Joystick.h index 2c6f289..7405630 100644 --- a/src/Joystick/Joystick.h +++ b/src/Joystick/Joystick.h @@ -366,5 +366,5 @@ private: private slots: void _activeVehicleChanged(Vehicle* activeVehicle); void _vehicleCountChanged(int count); - + void _flightModesChanged(); };