25 #ifndef ACE_BUTTON_ACE_BUTTON_H 26 #define ACE_BUTTON_ACE_BUTTON_H 29 #include "ButtonConfig.h" 126 explicit AceButton(uint8_t pin = 0, uint8_t defaultReleasedState = HIGH,
139 uint8_t defaultReleasedState = HIGH, uint8_t
id = 0);
146 void init(uint8_t pin = 0, uint8_t defaultReleasedState = HIGH,
156 uint8_t defaultReleasedState = HIGH, uint8_t
id = 0);
160 return mButtonConfig;
169 mButtonConfig = buttonConfig;
208 return mLastButtonState;
268 void setPin(uint8_t pin) { mPin = pin; }
277 void setDefaultReleasedState(uint8_t state);
280 void setId(uint8_t
id) { mId = id; }
285 static const uint8_t kFlagDefaultReleasedState = 0x01;
286 static const uint8_t kFlagDebouncing = 0x02;
287 static const uint8_t kFlagPressed = 0x04;
288 static const uint8_t kFlagClicked = 0x08;
289 static const uint8_t kFlagDoubleClicked = 0x10;
290 static const uint8_t kFlagLongPressed = 0x20;
291 static const uint8_t kFlagRepeatPressed = 0x40;
292 static const uint8_t kFlagClickPostponed = 0x80;
298 bool isDebouncing() {
299 return mFlags & kFlagDebouncing;
302 void setDebouncing() {
303 mFlags |= kFlagDebouncing;
306 void clearDebouncing() {
307 mFlags &= ~kFlagDebouncing;
312 return mFlags & kFlagPressed;
316 mFlags |= kFlagPressed;
319 void clearPressed() {
320 mFlags &= ~kFlagPressed;
325 return mFlags & kFlagClicked;
329 mFlags |= kFlagClicked;
332 void clearClicked() {
333 mFlags &= ~kFlagClicked;
338 bool isDoubleClicked() {
339 return mFlags & kFlagDoubleClicked;
342 void setDoubleClicked() {
343 mFlags |= kFlagDoubleClicked;
346 void clearDoubleClicked() {
347 mFlags &= ~kFlagDoubleClicked;
352 bool isLongPressed() {
353 return mFlags & kFlagLongPressed;
356 void setLongPressed() {
357 mFlags |= kFlagLongPressed;
360 void clearLongPressed() {
361 mFlags &= ~kFlagLongPressed;
365 bool isRepeatPressed() {
366 return mFlags & kFlagRepeatPressed;
369 void setRepeatPressed() {
370 mFlags |= kFlagRepeatPressed;
373 void clearRepeatPressed() {
374 mFlags &= ~kFlagRepeatPressed;
377 bool isClickPostponed() {
378 return mFlags & kFlagClickPostponed;
381 void setClickPostponed() {
382 mFlags |= kFlagClickPostponed;
385 void clearClickPostponed() {
386 mFlags &= ~kFlagClickPostponed;
394 bool checkDebounced(uint16_t now, uint8_t buttonState);
402 bool checkInitialized(uint16_t buttonState);
405 void checkEvent(uint16_t now, uint8_t buttonState);
408 void checkLongPress(uint16_t now, uint8_t buttonState);
411 void checkRepeatPress(uint16_t now, uint8_t buttonState);
414 void checkChanged(uint16_t now, uint8_t buttonState);
420 void checkReleased(uint16_t now, uint8_t buttonState);
423 void checkPressed(uint16_t now, uint8_t buttonState);
426 void checkClicked(uint16_t now);
432 void checkDoubleClicked(uint16_t now);
442 void checkOrphanedClick(uint16_t now);
448 void checkPostponedClick(uint16_t now);
496 void handleEvent(uint8_t eventType);
514 uint8_t mLastButtonState;
519 uint16_t mLastDebounceTime;
520 uint16_t mLastClickTime;
521 uint16_t mLastPressTime;
522 uint16_t mLastRepeatPressTime;