25 #ifndef ACE_BUTTON_ACE_BUTTON_H
26 #define ACE_BUTTON_ACE_BUTTON_H
29 #include "ButtonConfig.h"
31 namespace ace_button {
140 uint8_t defaultReleasedState = HIGH,
144 init(pin, defaultReleasedState,
id);
173 uint8_t defaultReleasedState = HIGH,
175 init(buttonConfig, pin, defaultReleasedState,
id);
185 uint8_t defaultReleasedState = HIGH,
197 uint8_t defaultReleasedState = HIGH,
202 return mButtonConfig;
211 mButtonConfig = buttonConfig;
252 uint8_t
getId()
const {
return mId; }
271 return mLastButtonState;
331 void setPin(uint8_t pin) { mPin = pin; }
340 void setDefaultReleasedState(uint8_t state);
343 void setId(uint8_t
id) { mId = id; }
348 static const uint8_t kFlagDefaultReleasedState = 0x01;
349 static const uint8_t kFlagDebouncing = 0x02;
350 static const uint8_t kFlagPressed = 0x04;
351 static const uint8_t kFlagClicked = 0x08;
352 static const uint8_t kFlagDoubleClicked = 0x10;
353 static const uint8_t kFlagLongPressed = 0x20;
354 static const uint8_t kFlagRepeatPressed = 0x40;
355 static const uint8_t kFlagClickPostponed = 0x80;
361 bool isDebouncing()
const {
362 return mFlags & kFlagDebouncing;
365 void setDebouncing() {
366 mFlags |= kFlagDebouncing;
369 void clearDebouncing() {
370 mFlags &= ~kFlagDebouncing;
374 bool isPressed()
const {
375 return mFlags & kFlagPressed;
379 mFlags |= kFlagPressed;
382 void clearPressed() {
383 mFlags &= ~kFlagPressed;
387 bool isClicked()
const {
388 return mFlags & kFlagClicked;
392 mFlags |= kFlagClicked;
395 void clearClicked() {
396 mFlags &= ~kFlagClicked;
401 bool isDoubleClicked()
const {
402 return mFlags & kFlagDoubleClicked;
405 void setDoubleClicked() {
406 mFlags |= kFlagDoubleClicked;
409 void clearDoubleClicked() {
410 mFlags &= ~kFlagDoubleClicked;
415 bool isLongPressed()
const {
416 return mFlags & kFlagLongPressed;
419 void setLongPressed() {
420 mFlags |= kFlagLongPressed;
423 void clearLongPressed() {
424 mFlags &= ~kFlagLongPressed;
428 bool isRepeatPressed()
const {
429 return mFlags & kFlagRepeatPressed;
432 void setRepeatPressed() {
433 mFlags |= kFlagRepeatPressed;
436 void clearRepeatPressed() {
437 mFlags &= ~kFlagRepeatPressed;
440 bool isClickPostponed()
const {
441 return mFlags & kFlagClickPostponed;
444 void setClickPostponed() {
445 mFlags |= kFlagClickPostponed;
448 void clearClickPostponed() {
449 mFlags &= ~kFlagClickPostponed;
457 bool checkDebounced(uint16_t now, uint8_t buttonState);
465 bool checkInitialized(uint16_t buttonState);
468 void checkEvent(uint16_t now, uint8_t buttonState);
471 void checkLongPress(uint16_t now, uint8_t buttonState);
474 void checkRepeatPress(uint16_t now, uint8_t buttonState);
477 void checkChanged(uint16_t now, uint8_t buttonState);
483 void checkReleased(uint16_t now, uint8_t buttonState);
486 void checkPressed(uint16_t now, uint8_t buttonState);
489 void checkClicked(uint16_t now);
495 void checkDoubleClicked(uint16_t now);
505 void checkOrphanedClick(uint16_t now);
511 void checkPostponedClick(uint16_t now);
565 void handleEvent(uint8_t eventType);
568 ButtonConfig* mButtonConfig;
583 uint8_t mLastButtonState;
588 uint16_t mLastDebounceTime;
589 uint16_t mLastClickTime;
590 uint16_t mLastPressTime;
591 uint16_t mLastRepeatPressTime;