diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index 90849bcc245c29556a74f769fcaf93e03fa8d487..b6820994850aa418ad969d6a342d9b7e0bbf677e 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -813,16 +813,25 @@ bool Vehicle::joystickEnabled(void) void Vehicle::setJoystickEnabled(bool enabled) { + // The magic parameter will go away, + // until then don't mess with the logic here! Fact* fact = _autopilotPlugin->getParameterFact(FactSystem::defaultComponentId, "COM_RC_IN_MODE"); if (!fact) { qCWarning(JoystickLog) << "Missing COM_RC_IN_MODE parameter"; } - if (fact->value().toInt() != 2) { + // Any value greater than one + // indicates special handling on + // the autopilot side. Force the + // joystick to on. + if (fact->value().toInt() > 1) { + // Mandatory in this setting + _joystickEnabled = true; + } else { fact->setValue(enabled ? 1 : 0); + _joystickEnabled = enabled; } - _joystickEnabled = enabled; _startJoystick(_joystickEnabled); _saveSettings(); } @@ -1032,6 +1041,10 @@ void Vehicle::_parametersReady(bool parametersReady) _missionManagerInitialRequestComplete = true; _missionManager->requestMissionItems(); } + + if (parametersReady) { + setJoystickEnabled(_joystickEnabled); + } } void Vehicle::_communicationInactivityTimedOut(void)