Merge pull request #60 from bobbycar-graz/dpad-debounce-fix

Made debounce respect the configured setting
This commit is contained in:
2020-06-07 00:14:34 +02:00
committed by GitHub
2 changed files with 9 additions and 12 deletions

View File

@@ -63,29 +63,27 @@ void update()
ButtonBack = 3 ButtonBack = 3
}; };
constexpr auto debounceTime = 25; if (std::get<ButtonUp>(lastState) != std::get<ButtonUp>(state) && now-debounceUp > settings.boardcomputerHardware.dpadDebounce)
if (std::get<ButtonUp>(lastState) != std::get<ButtonUp>(state) && now-debounceUp > debounceTime)
{ {
if (std::get<ButtonUp>(state)) if (std::get<ButtonUp>(state))
InputDispatcher::rotate(-1); InputDispatcher::rotate(-1);
std::get<ButtonUp>(lastState) = std::get<ButtonUp>(state); std::get<ButtonUp>(lastState) = std::get<ButtonUp>(state);
debounceUp = now; debounceUp = now;
} }
if (std::get<ButtonDown>(lastState) != std::get<ButtonDown>(state) && now-debounceDown > debounceTime) if (std::get<ButtonDown>(lastState) != std::get<ButtonDown>(state) && now-debounceDown > settings.boardcomputerHardware.dpadDebounce)
{ {
if (std::get<ButtonDown>(state)) if (std::get<ButtonDown>(state))
InputDispatcher::rotate(1); InputDispatcher::rotate(1);
std::get<ButtonDown>(lastState) = std::get<ButtonDown>(state); std::get<ButtonDown>(lastState) = std::get<ButtonDown>(state);
debounceDown = now; debounceDown = now;
} }
if (std::get<ButtonConfirm>(lastState) != std::get<ButtonConfirm>(state) && now-debounceConfirm > debounceTime) if (std::get<ButtonConfirm>(lastState) != std::get<ButtonConfirm>(state) && now-debounceConfirm > settings.boardcomputerHardware.dpadDebounce)
{ {
InputDispatcher::confirmButton(std::get<ButtonConfirm>(state)); InputDispatcher::confirmButton(std::get<ButtonConfirm>(state));
std::get<ButtonConfirm>(lastState) = std::get<ButtonConfirm>(state); std::get<ButtonConfirm>(lastState) = std::get<ButtonConfirm>(state);
debounceConfirm = now; debounceConfirm = now;
} }
if (std::get<ButtonBack>(lastState) != std::get<ButtonBack>(state) && now-debounceBack > debounceTime) if (std::get<ButtonBack>(lastState) != std::get<ButtonBack>(state) && now-debounceBack > settings.boardcomputerHardware.dpadDebounce)
{ {
InputDispatcher::backButton(std::get<ButtonBack>(state)); InputDispatcher::backButton(std::get<ButtonBack>(state));
std::get<ButtonBack>(lastState) = std::get<ButtonBack>(state); std::get<ButtonBack>(lastState) = std::get<ButtonBack>(state);

View File

@@ -5,6 +5,7 @@
#include "globals.h" #include "globals.h"
#include "dpad.h" #include "dpad.h"
#include "globals.h"
#include "types.h" #include "types.h"
namespace { namespace {
@@ -78,29 +79,27 @@ void update()
ButtonBack = 2 ButtonBack = 2
}; };
constexpr auto debounceTime = 25; if (std::get<ButtonUp>(lastState) != std::get<ButtonUp>(state) && now-debounceUp > settings.boardcomputerHardware.dpadDebounce)
if (std::get<ButtonUp>(lastState) != std::get<ButtonUp>(state) && now-debounceUp > debounceTime)
{ {
if (std::get<ButtonUp>(state)) if (std::get<ButtonUp>(state))
InputDispatcher::rotate(-1); InputDispatcher::rotate(-1);
std::get<ButtonUp>(lastState) = std::get<ButtonUp>(state); std::get<ButtonUp>(lastState) = std::get<ButtonUp>(state);
debounceUp = now; debounceUp = now;
} }
if (std::get<ButtonDown>(lastState) != std::get<ButtonDown>(state) && now-debounceDown > debounceTime) if (std::get<ButtonDown>(lastState) != std::get<ButtonDown>(state) && now-debounceDown > settings.boardcomputerHardware.dpadDebounce)
{ {
if (std::get<ButtonDown>(state)) if (std::get<ButtonDown>(state))
InputDispatcher::rotate(1); InputDispatcher::rotate(1);
std::get<ButtonDown>(lastState) = std::get<ButtonDown>(state); std::get<ButtonDown>(lastState) = std::get<ButtonDown>(state);
debounceDown = now; debounceDown = now;
} }
if (std::get<ButtonConfirm>(lastState) != std::get<ButtonConfirm>(state) && now-debounceConfirm > debounceTime) if (std::get<ButtonConfirm>(lastState) != std::get<ButtonConfirm>(state) && now-debounceConfirm > settings.boardcomputerHardware.dpadDebounce)
{ {
InputDispatcher::confirmButton(std::get<ButtonConfirm>(state)); InputDispatcher::confirmButton(std::get<ButtonConfirm>(state));
std::get<ButtonConfirm>(lastState) = std::get<ButtonConfirm>(state); std::get<ButtonConfirm>(lastState) = std::get<ButtonConfirm>(state);
debounceConfirm = now; debounceConfirm = now;
} }
if (std::get<ButtonBack>(lastState) != std::get<ButtonBack>(state) && now-debounceBack > debounceTime) if (std::get<ButtonBack>(lastState) != std::get<ButtonBack>(state) && now-debounceBack > settings.boardcomputerHardware.dpadDebounce)
{ {
InputDispatcher::backButton(std::get<ButtonBack>(state)); InputDispatcher::backButton(std::get<ButtonBack>(state));
std::get<ButtonBack>(lastState) = std::get<ButtonBack>(state); std::get<ButtonBack>(lastState) = std::get<ButtonBack>(state);