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;
262 void setPin(uint8_t pin) { mPin = pin; }
271 void setDefaultReleasedState(uint8_t state);
274 void setId(uint8_t
id) { mId = id; }
279 static const uint8_t kFlagDefaultReleasedState = 0x01;
280 static const uint8_t kFlagDebouncing = 0x02;
281 static const uint8_t kFlagPressed = 0x04;
282 static const uint8_t kFlagClicked = 0x08;
283 static const uint8_t kFlagDoubleClicked = 0x10;
284 static const uint8_t kFlagLongPressed = 0x20;
285 static const uint8_t kFlagRepeatPressed = 0x40;
286 static const uint8_t kFlagClickPostponed = 0x80;
292 bool isDebouncing() {
293 return mFlags & kFlagDebouncing;
296 void setDebouncing() {
297 mFlags |= kFlagDebouncing;
300 void clearDebouncing() {
301 mFlags &= ~kFlagDebouncing;
306 return mFlags & kFlagPressed;
310 mFlags |= kFlagPressed;
313 void clearPressed() {
314 mFlags &= ~kFlagPressed;
319 return mFlags & kFlagClicked;
323 mFlags |= kFlagClicked;
326 void clearClicked() {
327 mFlags &= ~kFlagClicked;
332 bool isDoubleClicked() {
333 return mFlags & kFlagDoubleClicked;
336 void setDoubleClicked() {
337 mFlags |= kFlagDoubleClicked;
340 void clearDoubleClicked() {
341 mFlags &= ~kFlagDoubleClicked;
346 bool isLongPressed() {
347 return mFlags & kFlagLongPressed;
350 void setLongPressed() {
351 mFlags |= kFlagLongPressed;
354 void clearLongPressed() {
355 mFlags &= ~kFlagLongPressed;
359 bool isRepeatPressed() {
360 return mFlags & kFlagRepeatPressed;
363 void setRepeatPressed() {
364 mFlags |= kFlagRepeatPressed;
367 void clearRepeatPressed() {
368 mFlags &= ~kFlagRepeatPressed;
371 bool isClickPostponed() {
372 return mFlags & kFlagClickPostponed;
375 void setClickPostponed() {
376 mFlags |= kFlagClickPostponed;
379 void clearClickPostponed() {
380 mFlags &= ~kFlagClickPostponed;
388 bool checkDebounced(uint16_t now, uint8_t buttonState);
396 bool checkInitialized(uint16_t buttonState);
399 void checkEvent(uint16_t now, uint8_t buttonState);
402 void checkLongPress(uint16_t now, uint8_t buttonState);
405 void checkRepeatPress(uint16_t now, uint8_t buttonState);
408 void checkChanged(uint16_t now, uint8_t buttonState);
414 void checkReleased(uint16_t now, uint8_t buttonState);
417 void checkPressed(uint16_t now, uint8_t buttonState);
420 void checkClicked(uint16_t now);
426 void checkDoubleClicked(uint16_t now);
436 void checkOrphanedClick(uint16_t now);
442 void checkPostponedClick(uint16_t now);
490 void handleEvent(uint8_t eventType);
508 uint8_t mLastButtonState;
513 uint16_t mLastDebounceTime;
514 uint16_t mLastClickTime;
515 uint16_t mLastPressTime;
516 uint16_t mLastRepeatPressTime;