Commit 02a8b5b1 authored by nanthony21's avatar nanthony21 Committed by Nick Anthony

Replaced tristate calibration mode with two boolean values.

Joystick axes and buttons can now be monitored even when the
joystick input is disabled.
parent 0619847e
...@@ -49,7 +49,7 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC ...@@ -49,7 +49,7 @@ Joystick::Joystick(const QString& name, int axisCount, int buttonCount, int hatC
, _hatCount(hatCount) , _hatCount(hatCount)
, _hatButtonCount(4*hatCount) , _hatButtonCount(4*hatCount)
, _totalButtonCount(_buttonCount+_hatButtonCount) , _totalButtonCount(_buttonCount+_hatButtonCount)
, _calibrationMode(CalibrationModeOff) , _calibrationMode(false)
, _rgAxisValues(NULL) , _rgAxisValues(NULL)
, _rgCalibration(NULL) , _rgCalibration(NULL)
, _rgButtonValues(NULL) , _rgButtonValues(NULL)
...@@ -431,7 +431,7 @@ void Joystick::run(void) ...@@ -431,7 +431,7 @@ void Joystick::run(void)
} }
} }
if (_calibrationMode != CalibrationModeCalibrating && _calibrated) { if (_outputEnabled && _calibrated) {
int axis = _rgFunctionAxis[rollFunction]; int axis = _rgFunctionAxis[rollFunction];
float roll = _adjustRange(_rgAxisValues[axis], _rgCalibration[axis], _deadband); float roll = _adjustRange(_rgAxisValues[axis], _rgCalibration[axis], _deadband);
...@@ -757,36 +757,28 @@ void Joystick::setDeadband(bool deadband) ...@@ -757,36 +757,28 @@ void Joystick::setDeadband(bool deadband)
_saveSettings(); _saveSettings();
} }
void Joystick::startCalibrationMode(CalibrationMode_t mode) void Joystick::setCalibrationMode(bool calibrating)
{ {
if (mode == CalibrationModeOff) { _calibrationMode = calibrating;
qWarning() << "Incorrect mode CalibrationModeOff";
return;
}
_calibrationMode = mode; if (calibrating && !isRunning()) {
if (!isRunning()) {
_pollingStartedForCalibration = true; _pollingStartedForCalibration = true;
startPolling(_multiVehicleManager->activeVehicle()); startPolling(_multiVehicleManager->activeVehicle());
} }
} else if (_pollingStartedForCalibration) {
stopPolling();
void Joystick::stopCalibrationMode(CalibrationMode_t mode)
{
if (mode == CalibrationModeOff) {
qWarning() << "Incorrect mode: CalibrationModeOff";
return;
} }
if (calibrating){
if (mode == CalibrationModeCalibrating) { setOutputEnabled(false); //Disable the joystick output before calibrating
_calibrationMode = CalibrationModeMonitor;
} else {
_calibrationMode = CalibrationModeOff;
if (_pollingStartedForCalibration) {
stopPolling();
}
} }
else if (!calibrating && _calibrated){
setOutputEnabled(true); //Enable joystick output after calibration
}
}
void Joystick::setOutputEnabled(bool enabled){
_outputEnabled = enabled;
emit outputEnabledChanged(_outputEnabled);
} }
void Joystick::_buttonAction(const QString& action) void Joystick::_buttonAction(const QString& action)
......
...@@ -61,6 +61,7 @@ public: ...@@ -61,6 +61,7 @@ public:
Q_PROPERTY(QString name READ name CONSTANT) Q_PROPERTY(QString name READ name CONSTANT)
Q_PROPERTY(bool calibrated MEMBER _calibrated NOTIFY calibratedChanged) Q_PROPERTY(bool calibrated MEMBER _calibrated NOTIFY calibratedChanged)
Q_PROPERTY(bool outputEnabled MEMBER _outputEnabled WRITE setOutputEnabled NOTIFY outputEnabledChanged)
Q_PROPERTY(int totalButtonCount READ totalButtonCount CONSTANT) Q_PROPERTY(int totalButtonCount READ totalButtonCount CONSTANT)
Q_PROPERTY(int axisCount READ axisCount CONSTANT) Q_PROPERTY(int axisCount READ axisCount CONSTANT)
...@@ -122,20 +123,13 @@ public: ...@@ -122,20 +123,13 @@ public:
void setTXMode(int mode); void setTXMode(int mode);
int getTXMode(void) { return _transmitterMode; } int getTXMode(void) { return _transmitterMode; }
typedef enum {
CalibrationModeOff, // Not calibrating
CalibrationModeMonitor, // Monitors are active, continue to send to vehicle if already polling
CalibrationModeCalibrating, // Calibrating, stop sending joystick to vehicle
} CalibrationMode_t;
/// Set the current calibration mode /// Set the current calibration mode
void startCalibrationMode(CalibrationMode_t mode); void setCalibrationMode(bool calibrating);
void setOutputEnabled(bool enabled);
/// Clear the current calibration mode
void stopCalibrationMode(CalibrationMode_t mode);
signals: signals:
void calibratedChanged(bool calibrated); void calibratedChanged(bool calibrated);
void outputEnabledChanged(bool enabled);
// The raw signals are only meant for use by calibration // The raw signals are only meant for use by calibration
void rawAxisValueChanged(int index, int value); void rawAxisValueChanged(int index, int value);
...@@ -201,7 +195,8 @@ protected: ...@@ -201,7 +195,8 @@ protected:
int _totalButtonCount; int _totalButtonCount;
static int _transmitterMode; static int _transmitterMode;
CalibrationMode_t _calibrationMode; bool _calibrationMode;
bool _outputEnabled;
int* _rgAxisValues; int* _rgAxisValues;
Calibration_t* _rgCalibration; Calibration_t* _rgCalibration;
......
...@@ -366,9 +366,9 @@ SetupPage { ...@@ -366,9 +366,9 @@ SetupPage {
id: enabledCheckBox id: enabledCheckBox
enabled: _activeJoystick ? _activeJoystick.calibrated : false enabled: _activeJoystick ? _activeJoystick.calibrated : false
text: _activeJoystick ? _activeJoystick.calibrated ? qsTr("Enable joystick input") : qsTr("Enable not allowed (Calibrate First)") : "" text: _activeJoystick ? _activeJoystick.calibrated ? qsTr("Enable joystick input") : qsTr("Enable not allowed (Calibrate First)") : ""
checked: _activeVehicle.joystickEnabled checked: _activeJoystick.outputEnabled
onClicked: _activeVehicle.joystickEnabled = checked onClicked: _activeJoystick.outputEnabled = checked
Connections { Connections {
target: joystickManager target: joystickManager
......
...@@ -82,7 +82,7 @@ void JoystickConfigController::setDeadbandValue(int axis, int value) ...@@ -82,7 +82,7 @@ void JoystickConfigController::setDeadbandValue(int axis, int value)
JoystickConfigController::~JoystickConfigController() JoystickConfigController::~JoystickConfigController()
{ {
if(_activeJoystick) { if(_activeJoystick) {
_activeJoystick->stopCalibrationMode(Joystick::CalibrationModeMonitor); _activeJoystick->setCalibrationMode(false);
} }
} }
...@@ -582,7 +582,7 @@ void JoystickConfigController::_writeCalibration(void) ...@@ -582,7 +582,7 @@ void JoystickConfigController::_writeCalibration(void)
/// @brief Starts the calibration process /// @brief Starts the calibration process
void JoystickConfigController::_startCalibration(void) void JoystickConfigController::_startCalibration(void)
{ {
_activeJoystick->startCalibrationMode(Joystick::CalibrationModeCalibrating); _activeJoystick->setCalibrationMode(true);
_resetInternalCalibrationValues(); _resetInternalCalibrationValues();
_nextButton->setProperty("text", "Next"); _nextButton->setProperty("text", "Next");
...@@ -598,7 +598,7 @@ void JoystickConfigController::_stopCalibration(void) ...@@ -598,7 +598,7 @@ void JoystickConfigController::_stopCalibration(void)
{ {
_currentStep = -1; _currentStep = -1;
_activeJoystick->stopCalibrationMode(Joystick::CalibrationModeCalibrating); _activeJoystick->setCalibrationMode(false);
_setInternalCalibrationValuesFromSettings(); _setInternalCalibrationValuesFromSettings();
_statusText->setProperty("text", ""); _statusText->setProperty("text", "");
...@@ -763,7 +763,6 @@ void JoystickConfigController::_signalAllAttitudeValueChanges(void) ...@@ -763,7 +763,6 @@ void JoystickConfigController::_signalAllAttitudeValueChanges(void)
void JoystickConfigController::_activeJoystickChanged(Joystick* joystick) void JoystickConfigController::_activeJoystickChanged(Joystick* joystick)
{ {
bool joystickTransition = false; bool joystickTransition = false;
if (_activeJoystick) { if (_activeJoystick) {
joystickTransition = true; joystickTransition = true;
disconnect(_activeJoystick, &Joystick::rawAxisValueChanged, this, &JoystickConfigController::_axisValueChanged); disconnect(_activeJoystick, &Joystick::rawAxisValueChanged, this, &JoystickConfigController::_axisValueChanged);
...@@ -781,7 +780,7 @@ void JoystickConfigController::_activeJoystickChanged(Joystick* joystick) ...@@ -781,7 +780,7 @@ void JoystickConfigController::_activeJoystickChanged(Joystick* joystick)
if (joystickTransition) { if (joystickTransition) {
_stopCalibration(); _stopCalibration();
} }
_activeJoystick->startCalibrationMode(Joystick::CalibrationModeMonitor); _activeJoystick->setCalibrationMode(false);
_axisCount = _activeJoystick->axisCount(); _axisCount = _activeJoystick->axisCount();
_rgAxisInfo = new struct AxisInfo[_axisCount]; _rgAxisInfo = new struct AxisInfo[_axisCount];
_axisValueSave = new int[_axisCount]; _axisValueSave = new int[_axisCount];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment