18#define DIGITAL_IN_DEFAULT_DEBOUNCE_MS 50
19#define MAX_NUM_BUTTONS 20
22#define BUTTON_MODE_STANDARD 0
23#define BUTTON_MODE_TOGGLE 1
24#define BUTTON_MODE_TOGGLE_THREE_STATE 2
25#define BUTTON_MODE_MULTIPRESS 3
27#define BUTTON_NON_INVERTED 0
28#define BUTTON_INVERTED 1
30#define BUTTON_STATE_RELEASED 0
31#define BUTTON_STATE_PRESSED 1
32#define BUTTON_CHANGED 1
37class ButtonKilohertzPlugin :
public Plugin{
39 ButtonKilohertzPlugin();
153 static Button* registered_buttons[MAX_NUM_BUTTONS];
154 static uint8_t num_registered_buttons;
155 static ButtonKilohertzPlugin kilohertz_plugin;
156 void begin(uint8_t pin, uint8_t mode);
158 void enroll(
RPC *rpc,
const String& instance_name);
163 uint8_t invert = BUTTON_NON_INVERTED;
164 uint16_t debounce_period_ms = DIGITAL_IN_DEFAULT_DEBOUNCE_MS;
165 uint16_t current_ms = 0;
166 uint8_t button_mode = BUTTON_MODE_STANDARD;
167 volatile uint16_t debounce_blackout_remaining_ms = 0;
168 volatile uint8_t button_state = 0;
169 volatile uint8_t change_flag = 0;
170 volatile uint8_t press_num = 0;
171 volatile uint8_t last_raw_pin_state = 0;
172 void (*callback_on_toggle)() =
nullptr;
173 void (*callback_on_press)() =
nullptr;
174 void (*callback_on_release)() =
nullptr;
175 void (*callback_on_first_press)() =
nullptr;
176 void (*callback_on_second_press)() =
nullptr;
177 void (*callback_on_third_press)() =
nullptr;
178 void (*callback_on_doublepress)() =
nullptr;
179 void (*callback_on_triplepress)() =
nullptr;
RPC class for handling remote procedure calls over serial streams.
Definition rpc.hpp:35