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,
141 void init(uint8_t pin = 0, uint8_t defaultReleasedState = HIGH,
146 return mButtonConfig;
155 mButtonConfig = buttonConfig;
194 return mLastButtonState;
248 void setPin(uint8_t pin) { mPin = pin; }
257 void setDefaultReleasedState(uint8_t state);
260 void setId(uint8_t
id) { mId = id; }
265 static const uint8_t kFlagDefaultReleasedState = 0x01;
266 static const uint8_t kFlagDebouncing = 0x02;
267 static const uint8_t kFlagPressed = 0x04;
268 static const uint8_t kFlagClicked = 0x08;
269 static const uint8_t kFlagDoubleClicked = 0x10;
270 static const uint8_t kFlagLongPressed = 0x20;
271 static const uint8_t kFlagRepeatPressed = 0x40;
272 static const uint8_t kFlagClickPostponed = 0x80;
278 bool isDebouncing() {
279 return mFlags & kFlagDebouncing;
282 void setDebouncing() {
283 mFlags |= kFlagDebouncing;
286 void clearDebouncing() {
287 mFlags &= ~kFlagDebouncing;
292 return mFlags & kFlagPressed;
296 mFlags |= kFlagPressed;
299 void clearPressed() {
300 mFlags &= ~kFlagPressed;
305 return mFlags & kFlagClicked;
309 mFlags |= kFlagClicked;
312 void clearClicked() {
313 mFlags &= ~kFlagClicked;
318 bool isDoubleClicked() {
319 return mFlags & kFlagDoubleClicked;
322 void setDoubleClicked() {
323 mFlags |= kFlagDoubleClicked;
326 void clearDoubleClicked() {
327 mFlags &= ~kFlagDoubleClicked;
332 bool isLongPressed() {
333 return mFlags & kFlagLongPressed;
336 void setLongPressed() {
337 mFlags |= kFlagLongPressed;
340 void clearLongPressed() {
341 mFlags &= ~kFlagLongPressed;
345 bool isRepeatPressed() {
346 return mFlags & kFlagRepeatPressed;
349 void setRepeatPressed() {
350 mFlags |= kFlagRepeatPressed;
353 void clearRepeatPressed() {
354 mFlags &= ~kFlagRepeatPressed;
357 bool isClickPostponed() {
358 return mFlags & kFlagClickPostponed;
361 void setClickPostponed() {
362 mFlags |= kFlagClickPostponed;
365 void clearClickPostponed() {
366 mFlags &= ~kFlagClickPostponed;
374 bool checkDebounced(uint16_t now, uint8_t buttonState);
382 bool checkInitialized(uint16_t buttonState);
385 void checkEvent(uint16_t now, uint8_t buttonState);
388 void checkLongPress(uint16_t now, uint8_t buttonState);
391 void checkRepeatPress(uint16_t now, uint8_t buttonState);
394 void checkChanged(uint16_t now, uint8_t buttonState);
400 void checkReleased(uint16_t now, uint8_t buttonState);
403 void checkPressed(uint16_t now, uint8_t buttonState);
406 void checkClicked(uint16_t now);
412 void checkDoubleClicked(uint16_t now);
422 void checkOrphanedClick(uint16_t now);
428 void checkPostponedClick(uint16_t now);
476 void handleEvent(uint8_t eventType);
484 uint16_t mLastDebounceTime;
485 uint16_t mLastClickTime;
486 uint16_t mLastPressTime;
487 uint16_t mLastRepeatPressTime;
496 uint8_t mLastButtonState;