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,
139 void init(uint8_t pin = 0, uint8_t defaultReleasedState = HIGH,
144 return mButtonConfig;
153 mButtonConfig = buttonConfig;
171 uint8_t
getPin() ACE_BUTTON_INLINE {
return mPin; }
174 uint8_t
getId() ACE_BUTTON_INLINE {
return mId; }
193 return mLastButtonState;
236 void setPin(uint8_t pin) ACE_BUTTON_INLINE { mPin = pin; }
245 void setDefaultReleasedState(uint8_t state);
248 void setId(uint8_t
id) ACE_BUTTON_INLINE { mId = id; }
253 static const uint8_t kFlagDefaultReleasedState = 0x01;
254 static const uint8_t kFlagDebouncing = 0x02;
255 static const uint8_t kFlagPressed = 0x04;
256 static const uint8_t kFlagClicked = 0x08;
257 static const uint8_t kFlagDoubleClicked = 0x10;
258 static const uint8_t kFlagLongPressed = 0x20;
259 static const uint8_t kFlagRepeatPressed = 0x40;
260 static const uint8_t kFlagClickPostponed = 0x80;
266 bool isDebouncing() ACE_BUTTON_INLINE {
267 return mFlags & kFlagDebouncing;
270 void setDebouncing() ACE_BUTTON_INLINE {
271 mFlags |= kFlagDebouncing;
274 void clearDebouncing() ACE_BUTTON_INLINE {
275 mFlags &= ~kFlagDebouncing;
279 bool isPressed() ACE_BUTTON_INLINE {
280 return mFlags & kFlagPressed;
283 void setPressed() ACE_BUTTON_INLINE {
284 mFlags |= kFlagPressed;
287 void clearPressed() ACE_BUTTON_INLINE {
288 mFlags &= ~kFlagPressed;
292 bool isClicked() ACE_BUTTON_INLINE {
293 return mFlags & kFlagClicked;
296 void setClicked() ACE_BUTTON_INLINE {
297 mFlags |= kFlagClicked;
300 void clearClicked() ACE_BUTTON_INLINE {
301 mFlags &= ~kFlagClicked;
306 bool isDoubleClicked() ACE_BUTTON_INLINE {
307 return mFlags & kFlagDoubleClicked;
310 void setDoubleClicked() ACE_BUTTON_INLINE {
311 mFlags |= kFlagDoubleClicked;
314 void clearDoubleClicked() ACE_BUTTON_INLINE {
315 mFlags &= ~kFlagDoubleClicked;
320 bool isLongPressed() ACE_BUTTON_INLINE {
321 return mFlags & kFlagLongPressed;
324 void setLongPressed() ACE_BUTTON_INLINE {
325 mFlags |= kFlagLongPressed;
328 void clearLongPressed() ACE_BUTTON_INLINE {
329 mFlags &= ~kFlagLongPressed;
333 bool isRepeatPressed() ACE_BUTTON_INLINE {
334 return mFlags & kFlagRepeatPressed;
337 void setRepeatPressed() ACE_BUTTON_INLINE {
338 mFlags |= kFlagRepeatPressed;
341 void clearRepeatPressed() ACE_BUTTON_INLINE {
342 mFlags &= ~kFlagRepeatPressed;
345 bool isClickPostponed() ACE_BUTTON_INLINE {
346 return mFlags & kFlagClickPostponed;
349 void setClickPostponed() ACE_BUTTON_INLINE {
350 mFlags |= kFlagClickPostponed;
353 void clearClickPostponed() ACE_BUTTON_INLINE {
354 mFlags &= ~kFlagClickPostponed;
362 bool checkDebounced(uint16_t now, uint8_t buttonState);
370 bool checkInitialized(uint16_t buttonState);
373 void checkEvent(uint16_t now, uint8_t buttonState);
376 void checkLongPress(uint16_t now, uint8_t buttonState);
379 void checkRepeatPress(uint16_t now, uint8_t buttonState);
382 void checkChanged(uint16_t now, uint8_t buttonState);
388 void checkReleased(uint16_t now, uint8_t buttonState);
391 void checkPressed(uint16_t now, uint8_t buttonState);
394 void checkClicked(uint16_t now);
400 void checkDoubleClicked(uint16_t now);
410 void checkOrphanedClick(uint16_t now);
416 void checkPostponedClick(uint16_t now);
464 void handleEvent(uint8_t eventType);
472 uint16_t mLastDebounceTime;
473 uint16_t mLastClickTime;
474 uint16_t mLastPressTime;
475 uint16_t mLastRepeatPressTime;
484 uint8_t mLastButtonState;