From 87bbb74dc4b56856c3b742e119cc4ed829375d75 Mon Sep 17 00:00:00 2001 From: Jacob Walser Date: Mon, 18 Sep 2017 14:31:47 -0400 Subject: [PATCH] Fix joystick tx mode initialization --- src/Joystick/Joystick.cc | 19 ++++++++++++++++--- src/Joystick/Joystick.h | 1 + 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Joystick/Joystick.cc b/src/Joystick/Joystick.cc index b2093d4f4..a7d4f734f 100644 --- a/src/Joystick/Joystick.cc +++ b/src/Joystick/Joystick.cc @@ -75,6 +75,8 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC _rgButtonValues[i] = false; } + _updateTXModeSettingsKey(_multiVehicleManager->activeVehicle()); + _loadSettings(); connect(_multiVehicleManager, &MultiVehicleManager::activeVehicleChanged, this, &Joystick::_activeVehicleChanged); @@ -119,7 +121,7 @@ void Joystick::_setDefaultCalibration(void) { _saveSettings(); } -void Joystick::_activeVehicleChanged(Vehicle *activeVehicle) +void Joystick::_updateTXModeSettingsKey(Vehicle* activeVehicle) { if(activeVehicle) { if(activeVehicle->fixedWing()) { @@ -137,7 +139,16 @@ void Joystick::_activeVehicleChanged(Vehicle *activeVehicle) qWarning() << "No valid joystick TXmode settings key for selected vehicle"; return; } + } else { + _txModeSettingsKey = NULL; + } +} +void Joystick::_activeVehicleChanged(Vehicle* activeVehicle) +{ + _updateTXModeSettingsKey(activeVehicle); + + if(activeVehicle) { QSettings settings; settings.beginGroup(_settingsGroup); int mode = settings.value(_txModeSettingsKey, activeVehicle->firmwarePlugin()->defaultJoystickTXMode()).toInt(); @@ -152,8 +163,10 @@ void Joystick::_loadSettings(void) settings.beginGroup(_settingsGroup); - if(_txModeSettingsKey) - _transmitterMode = settings.value(_txModeSettingsKey, 2).toInt(); + Vehicle* activeVehicle = _multiVehicleManager->activeVehicle(); + + if(_txModeSettingsKey && activeVehicle) + _transmitterMode = settings.value(_txModeSettingsKey, activeVehicle->firmwarePlugin()->defaultJoystickTXMode()).toInt(); settings.beginGroup(_name); diff --git a/src/Joystick/Joystick.h b/src/Joystick/Joystick.h index 89717f715..d6f15ed8b 100644 --- a/src/Joystick/Joystick.h +++ b/src/Joystick/Joystick.h @@ -181,6 +181,7 @@ private: virtual int _getAxis(int i) = 0; virtual uint8_t _getHat(int hat,int i) = 0; + void _updateTXModeSettingsKey(Vehicle* activeVehicle); int _mapFunctionMode(int mode, int function); void _remapAxes(int currentMode, int newMode, int (&newMapping)[maxFunction]); -- 2.22.0