Control Surface  1.2.0
MIDI Control Surface library for Arduino
IncrementButton.hpp
Go to the documentation of this file.
1 /* ✔ */
2 
3 #pragma once
4 
6 AH_DIAGNOSTIC_WERROR() // Enable errors on warnings
7 
8 #include "Button.hpp"
9 
11 
23  public:
31  IncrementButton(const Button &button) : button(button) {}
32 
34  void begin() { button.begin(); }
35 
41  enum State {
42  Nothing = 0,
48  };
49 
53  State update() { return state = updateImplementation(); }
54 
60  State getState() const { return state; }
61 
62 #ifdef AH_INDIVIDUAL_BUTTON_INVERT
63  void invert() { button.invert(); }
65 #endif
66 
67  protected:
68  State updateImplementation();
69 
70  private:
72 
73  enum {
76  } longPressState = Initial;
77  unsigned long longPressRepeat;
78 
79  State state = Nothing;
80 };
81 
83 
AH::IncrementButton::ReleasedShort
@ ReleasedShort
The button was released after a short press.
Definition: IncrementButton.hpp:46
Warnings.hpp
AH::IncrementButton::IncrementButton
IncrementButton(const Button &button)
Create a IncrementButton.
Definition: IncrementButton.hpp:31
AH::IncrementButton::begin
void begin()
Definition: IncrementButton.hpp:34
AH::Button
A class for reading and debouncing buttons and switches.
Definition: Button.hpp:18
AH::IncrementButton::State
State
An enumeration of the different actions to be performed by the counter.
Definition: IncrementButton.hpp:41
AH::IncrementButton::Initial
@ Initial
Definition: IncrementButton.hpp:74
AH_DIAGNOSTIC_POP
#define AH_DIAGNOSTIC_POP()
Definition: Warnings.hpp:36
AH::IncrementButton::getState
State getState() const
Return the state of the increment button without updating it.
Definition: IncrementButton.hpp:60
AH::IncrementButton::update
State update()
Update and return the state of the increment button.
Definition: IncrementButton.hpp:53
AH::IncrementButton::longPressRepeat
unsigned long longPressRepeat
Definition: IncrementButton.hpp:77
AH_DIAGNOSTIC_WERROR
#define AH_DIAGNOSTIC_WERROR()
Definition: Warnings.hpp:35
AH::IncrementButton::IncrementHold
@ IncrementHold
The counter must be incremented (still pressed).
Definition: IncrementButton.hpp:45
AH::IncrementButton
A class for buttons that increment some counter or setting.
Definition: IncrementButton.hpp:22
BEGIN_AH_NAMESPACE
#define BEGIN_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:9
END_AH_NAMESPACE
#define END_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:10
AH::IncrementButton::ReleasedLong
@ ReleasedLong
The button was released after a long press.
Definition: IncrementButton.hpp:47
AH::IncrementButton::LongPress
@ LongPress
Definition: IncrementButton.hpp:75
AH::IncrementButton::IncrementLong
@ IncrementLong
The counter must be incremented (after long press).
Definition: IncrementButton.hpp:44
AH::IncrementButton::IncrementShort
@ IncrementShort
The counter must be incremented (after short press).
Definition: IncrementButton.hpp:43
AH::IncrementButton::button
Button button
Definition: IncrementButton.hpp:71