21 #include "ButtonConfig.h" 116 explicit AceButton(uint8_t pin = 0, uint8_t defaultReleasedState = HIGH,
124 void init(uint8_t pin = 0, uint8_t defaultReleasedState = HIGH,
129 return mButtonConfig;
134 mButtonConfig = buttonConfig;
152 uint8_t
getPin() ACE_BUTTON_INLINE {
return mPin; }
155 uint8_t
getId() ACE_BUTTON_INLINE {
return mId; }
174 return mLastButtonState;
217 void setPin(uint8_t pin) ACE_BUTTON_INLINE { mPin = pin; }
226 void setDefaultReleasedState(uint8_t state);
229 void setId(uint8_t
id) ACE_BUTTON_INLINE { mId = id; }
234 static const uint8_t kFlagDefaultReleasedState = 0x01;
235 static const uint8_t kFlagDebouncing = 0x02;
236 static const uint8_t kFlagPressed = 0x04;
237 static const uint8_t kFlagClicked = 0x08;
238 static const uint8_t kFlagDoubleClicked = 0x10;
239 static const uint8_t kFlagLongPressed = 0x20;
240 static const uint8_t kFlagRepeatPressed = 0x40;
241 static const uint8_t kFlagClickPostponed = 0x80;
247 bool isDebouncing() ACE_BUTTON_INLINE {
248 return mFlags & kFlagDebouncing;
251 void setDebouncing() ACE_BUTTON_INLINE {
252 mFlags |= kFlagDebouncing;
255 void clearDebouncing() ACE_BUTTON_INLINE {
256 mFlags &= ~kFlagDebouncing;
260 bool isPressed() ACE_BUTTON_INLINE {
261 return mFlags & kFlagPressed;
264 void setPressed() ACE_BUTTON_INLINE {
265 mFlags |= kFlagPressed;
268 void clearPressed() ACE_BUTTON_INLINE {
269 mFlags &= ~kFlagPressed;
273 bool isClicked() ACE_BUTTON_INLINE {
274 return mFlags & kFlagClicked;
277 void setClicked() ACE_BUTTON_INLINE {
278 mFlags |= kFlagClicked;
281 void clearClicked() ACE_BUTTON_INLINE {
282 mFlags &= ~kFlagClicked;
287 bool isDoubleClicked() ACE_BUTTON_INLINE {
288 return mFlags & kFlagDoubleClicked;
291 void setDoubleClicked() ACE_BUTTON_INLINE {
292 mFlags |= kFlagDoubleClicked;
295 void clearDoubleClicked() ACE_BUTTON_INLINE {
296 mFlags &= ~kFlagDoubleClicked;
301 bool isLongPressed() ACE_BUTTON_INLINE {
302 return mFlags & kFlagLongPressed;
305 void setLongPressed() ACE_BUTTON_INLINE {
306 mFlags |= kFlagLongPressed;
309 void clearLongPressed() ACE_BUTTON_INLINE {
310 mFlags &= ~kFlagLongPressed;
314 bool isRepeatPressed() ACE_BUTTON_INLINE {
315 return mFlags & kFlagRepeatPressed;
318 void setRepeatPressed() ACE_BUTTON_INLINE {
319 mFlags |= kFlagRepeatPressed;
322 void clearRepeatPressed() ACE_BUTTON_INLINE {
323 mFlags &= ~kFlagRepeatPressed;
326 bool isClickPostponed() ACE_BUTTON_INLINE {
327 return mFlags & kFlagClickPostponed;
330 void setClickPostponed() ACE_BUTTON_INLINE {
331 mFlags |= kFlagClickPostponed;
334 void clearClickPostponed() ACE_BUTTON_INLINE {
335 mFlags &= ~kFlagClickPostponed;
343 bool checkDebounced(uint16_t now, uint8_t buttonState);
351 bool checkInitialized(uint16_t buttonState);
354 void checkLongPress(uint16_t now, uint8_t buttonState);
357 void checkRepeatPress(uint16_t now, uint8_t buttonState);
360 void checkChanged(uint16_t now, uint8_t buttonState);
366 void checkReleased(uint16_t now, uint8_t buttonState);
369 void checkPressed(uint16_t now, uint8_t buttonState);
372 void checkClicked(uint16_t now);
378 void checkDoubleClicked(uint16_t now);
388 void checkOrphanedClick(uint16_t now);
394 void checkPostponedClick(uint16_t now);
442 void handleEvent(uint8_t eventType);
450 uint16_t mLastDebounceTime;
451 uint16_t mLastClickTime;
452 uint16_t mLastPressTime;
453 uint16_t mLastRepeatPressTime;
462 uint8_t mLastButtonState;
465 ButtonConfig* mButtonConfig;