@ -25,6 +25,7 @@ const char* Joystick::_throttleModeSettingsKey = "ThrottleMode";
@@ -25,6 +25,7 @@ const char* Joystick::_throttleModeSettingsKey = "ThrottleMode";
const char * Joystick : : _exponentialSettingsKey = " Exponential " ;
const char * Joystick : : _accumulatorSettingsKey = " Accumulator " ;
const char * Joystick : : _deadbandSettingsKey = " Deadband " ;
const char * Joystick : : _circleCorrectionSettingsKey = " Circle_Correction " ;
const char * Joystick : : _txModeSettingsKey = NULL ;
const char * Joystick : : _fixedWingTXModeSettingsKey = " TXMode_FixedWing " ;
const char * Joystick : : _multiRotorTXModeSettingsKey = " TXMode_MultiRotor " ;
@ -59,6 +60,7 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC
@@ -59,6 +60,7 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC
, _exponential ( 0 )
, _accumulator ( false )
, _deadband ( false )
, _circleCorrection ( false )
, _activeVehicle ( NULL )
, _pollingStartedForCalibration ( false )
, _multiVehicleManager ( multiVehicleManager )
@ -115,6 +117,7 @@ void Joystick::_setDefaultCalibration(void) {
@@ -115,6 +117,7 @@ void Joystick::_setDefaultCalibration(void) {
_exponential = 0 ;
_accumulator = false ;
_deadband = false ;
_circleCorrection = false ;
_throttleMode = ThrottleModeCenterZero ;
_calibrated = true ;
@ -179,6 +182,7 @@ void Joystick::_loadSettings(void)
@@ -179,6 +182,7 @@ void Joystick::_loadSettings(void)
_exponential = settings . value ( _exponentialSettingsKey , 0 ) . toFloat ( ) ;
_accumulator = settings . value ( _accumulatorSettingsKey , false ) . toBool ( ) ;
_deadband = settings . value ( _deadbandSettingsKey , false ) . toBool ( ) ;
_circleCorrection = settings . value ( _circleCorrectionSettingsKey , false ) . toBool ( ) ;
_throttleMode = ( ThrottleMode_t ) settings . value ( _throttleModeSettingsKey , ThrottleModeCenterZero ) . toInt ( & convertOk ) ;
badSettings | = ! convertOk ;
@ -255,9 +259,10 @@ void Joystick::_saveSettings(void)
@@ -255,9 +259,10 @@ void Joystick::_saveSettings(void)
settings . setValue ( _exponentialSettingsKey , _exponential ) ;
settings . setValue ( _accumulatorSettingsKey , _accumulator ) ;
settings . setValue ( _deadbandSettingsKey , _deadband ) ;
settings . setValue ( _circleCorrectionSettingsKey , _circleCorrection ) ;
settings . setValue ( _throttleModeSettingsKey , _throttleMode ) ;
qCDebug ( JoystickLog ) < < " _saveSettings calibrated:throttlemode:deadband:txmode " < < _calibrated < < _throttleMode < < _deadband < < _transmitterMode ;
qCDebug ( JoystickLog ) < < " _saveSettings calibrated:throttlemode:deadband:txmode " < < _calibrated < < _throttleMode < < _deadband < < _circleCorrection < < _ transmitterMode ;
QString minTpl ( " Axis%1Min " ) ;
QString maxTpl ( " Axis%1Max " ) ;
@ -453,6 +458,7 @@ void Joystick::run(void)
@@ -453,6 +458,7 @@ void Joystick::run(void)
throttle = throttle_accu ;
}
if ( _circleCorrection ) {
float roll_limited = std : : max ( static_cast < float > ( - M_PI_4 ) , std : : min ( roll , static_cast < float > ( M_PI_4 ) ) ) ;
float pitch_limited = std : : max ( static_cast < float > ( - M_PI_4 ) , std : : min ( pitch , static_cast < float > ( M_PI_4 ) ) ) ;
float yaw_limited = std : : max ( static_cast < float > ( - M_PI_4 ) , std : : min ( yaw , static_cast < float > ( M_PI_4 ) ) ) ;
@ -463,6 +469,7 @@ void Joystick::run(void)
@@ -463,6 +469,7 @@ void Joystick::run(void)
pitch = std : : max ( - 1.0f , std : : min ( tanf ( asinf ( pitch_limited ) ) , 1.0f ) ) ;
yaw = std : : max ( - 1.0f , std : : min ( tanf ( asinf ( yaw_limited ) ) , 1.0f ) ) ;
throttle = std : : max ( - 1.0f , std : : min ( tanf ( asinf ( throttle_limited ) ) , 1.0f ) ) ;
}
if ( _exponential ! = 0 ) {
// Exponential (0% to -50% range like most RC radios)
@ -757,6 +764,19 @@ void Joystick::setDeadband(bool deadband)
@@ -757,6 +764,19 @@ void Joystick::setDeadband(bool deadband)
_saveSettings ( ) ;
}
bool Joystick : : circleCorrection ( void )
{
return _circleCorrection ;
}
void Joystick : : setCircleCorrection ( bool circleCorrection )
{
_circleCorrection = circleCorrection ;
_saveSettings ( ) ;
emit circleCorrectionChanged ( _circleCorrection ) ;
}
void Joystick : : setCalibrationMode ( bool calibrating )
{
_calibrationMode = calibrating ;