diff --git a/src/Joystick/Joystick.cc b/src/Joystick/Joystick.cc index 7363ceb3abb7..0380c21d3127 100644 --- a/src/Joystick/Joystick.cc +++ b/src/Joystick/Joystick.cc @@ -935,7 +935,7 @@ uint16_t Joystick::_adjustRangeToRcOverridePwm(int value, const AxisCalibration_ void Joystick::_handleAxis() { const int axisDelay = static_cast(1000.0 / _joystickSettings.axisFrequencyHz()->rawValue().toDouble()); - if (_axisElapsedTimer.elapsed() <= axisDelay) { + if (!_axisUpdateDue(_axisElapsedTimer.elapsed(), axisDelay)) { return; } diff --git a/src/Joystick/Joystick.h b/src/Joystick/Joystick.h index 6a31aa4c5881..eb1bb3c34180 100644 --- a/src/Joystick/Joystick.h +++ b/src/Joystick/Joystick.h @@ -448,6 +448,8 @@ private slots: void _addAvailableButtonActionIfMissing(const QString &action); bool _validAxis(int axis) const; bool _validButton(int button) const; + + static constexpr bool _axisUpdateDue(qint64 elapsed, int delay) { return elapsed >= delay; } void _handleAxis(); void _handleButtons(); void _buildAvailableButtonsActionList(Vehicle *vehicle); diff --git a/test/Joystick/JoystickTest.cc b/test/Joystick/JoystickTest.cc index 4f54d3d6de01..04a0c35c9b0d 100644 --- a/test/Joystick/JoystickTest.cc +++ b/test/Joystick/JoystickTest.cc @@ -186,6 +186,13 @@ void JoystickTest::_axisRangeTest() QVERIFY(js != nullptr); } +void JoystickTest::_axisUpdateDueTest() +{ + QVERIFY(!Joystick::_axisUpdateDue(39, 40)); + QVERIFY(Joystick::_axisUpdateDue(40, 40)); + QVERIFY(Joystick::_axisUpdateDue(41, 40)); +} + //----------------------------------------------------------------------------- // Button Tests //----------------------------------------------------------------------------- diff --git a/test/Joystick/JoystickTest.h b/test/Joystick/JoystickTest.h index f907dd84d8d8..3a02a98e8ff8 100644 --- a/test/Joystick/JoystickTest.h +++ b/test/Joystick/JoystickTest.h @@ -34,6 +34,7 @@ private slots: // Axis reading tests void _readAxisValuesTest(); void _axisRangeTest(); + void _axisUpdateDueTest(); // Button reading tests void _readButtonStatesTest();