25 #ifndef ACE_BUTTON_ACE_BUTTON_H 26 #define ACE_BUTTON_ACE_BUTTON_H 29 #include "ButtonConfig.h" 124 explicit AceButton(uint8_t pin = 0, uint8_t defaultReleasedState = HIGH,
132 void init(uint8_t pin = 0, uint8_t defaultReleasedState = HIGH,
137 return mButtonConfig;
142 mButtonConfig = buttonConfig;
160 uint8_t
getPin() ACE_BUTTON_INLINE {
return mPin; }
163 uint8_t
getId() ACE_BUTTON_INLINE {
return mId; }
182 return mLastButtonState;
225 void setPin(uint8_t pin) ACE_BUTTON_INLINE { mPin = pin; }
234 void setDefaultReleasedState(uint8_t state);
237 void setId(uint8_t
id) ACE_BUTTON_INLINE { mId = id; }
242 static const uint8_t kFlagDefaultReleasedState = 0x01;
243 static const uint8_t kFlagDebouncing = 0x02;
244 static const uint8_t kFlagPressed = 0x04;
245 static const uint8_t kFlagClicked = 0x08;
246 static const uint8_t kFlagDoubleClicked = 0x10;
247 static const uint8_t kFlagLongPressed = 0x20;
248 static const uint8_t kFlagRepeatPressed = 0x40;
249 static const uint8_t kFlagClickPostponed = 0x80;
255 bool isDebouncing() ACE_BUTTON_INLINE {
256 return mFlags & kFlagDebouncing;
259 void setDebouncing() ACE_BUTTON_INLINE {
260 mFlags |= kFlagDebouncing;
263 void clearDebouncing() ACE_BUTTON_INLINE {
264 mFlags &= ~kFlagDebouncing;
268 bool isPressed() ACE_BUTTON_INLINE {
269 return mFlags & kFlagPressed;
272 void setPressed() ACE_BUTTON_INLINE {
273 mFlags |= kFlagPressed;
276 void clearPressed() ACE_BUTTON_INLINE {
277 mFlags &= ~kFlagPressed;
281 bool isClicked() ACE_BUTTON_INLINE {
282 return mFlags & kFlagClicked;
285 void setClicked() ACE_BUTTON_INLINE {
286 mFlags |= kFlagClicked;
289 void clearClicked() ACE_BUTTON_INLINE {
290 mFlags &= ~kFlagClicked;
295 bool isDoubleClicked() ACE_BUTTON_INLINE {
296 return mFlags & kFlagDoubleClicked;
299 void setDoubleClicked() ACE_BUTTON_INLINE {
300 mFlags |= kFlagDoubleClicked;
303 void clearDoubleClicked() ACE_BUTTON_INLINE {
304 mFlags &= ~kFlagDoubleClicked;
309 bool isLongPressed() ACE_BUTTON_INLINE {
310 return mFlags & kFlagLongPressed;
313 void setLongPressed() ACE_BUTTON_INLINE {
314 mFlags |= kFlagLongPressed;
317 void clearLongPressed() ACE_BUTTON_INLINE {
318 mFlags &= ~kFlagLongPressed;
322 bool isRepeatPressed() ACE_BUTTON_INLINE {
323 return mFlags & kFlagRepeatPressed;
326 void setRepeatPressed() ACE_BUTTON_INLINE {
327 mFlags |= kFlagRepeatPressed;
330 void clearRepeatPressed() ACE_BUTTON_INLINE {
331 mFlags &= ~kFlagRepeatPressed;
334 bool isClickPostponed() ACE_BUTTON_INLINE {
335 return mFlags & kFlagClickPostponed;
338 void setClickPostponed() ACE_BUTTON_INLINE {
339 mFlags |= kFlagClickPostponed;
342 void clearClickPostponed() ACE_BUTTON_INLINE {
343 mFlags &= ~kFlagClickPostponed;
351 bool checkDebounced(uint16_t now, uint8_t buttonState);
359 bool checkInitialized(uint16_t buttonState);
362 void checkEvent(uint16_t now, uint8_t buttonState);
365 void checkLongPress(uint16_t now, uint8_t buttonState);
368 void checkRepeatPress(uint16_t now, uint8_t buttonState);
371 void checkChanged(uint16_t now, uint8_t buttonState);
377 void checkReleased(uint16_t now, uint8_t buttonState);
380 void checkPressed(uint16_t now, uint8_t buttonState);
383 void checkClicked(uint16_t now);
389 void checkDoubleClicked(uint16_t now);
399 void checkOrphanedClick(uint16_t now);
405 void checkPostponedClick(uint16_t now);
453 void handleEvent(uint8_t eventType);
461 uint16_t mLastDebounceTime;
462 uint16_t mLastClickTime;
463 uint16_t mLastPressTime;
464 uint16_t mLastRepeatPressTime;
473 uint8_t mLastButtonState;