| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 
							- /*
 
- Switch.cpp
 
- Copyright (C) 2012  Albert van Dalen http://www.avdweb.nl
 
- This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
 
- as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
 
- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
 
- of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License at http://www.gnu.org/licenses .
 
- AUTHOR: Albert van Dalen
 
- WEBSITE: http://www.avdweb.nl/arduino/hardware-interfacing/simple-switch-debouncer.html
 
- */
 
- #ifndef AVDWEB_SWITCH_H
 
- #define AVDWEB_SWITCH_H
 
- typedef void (*switchCallback_t)(void*);
 
- class Switch
 
- {
 
- public:	
 
-   Switch(byte _pin, byte PinMode=INPUT_PULLUP, bool polarity=LOW, int debouncePeriod=50, int longPressPeriod=300, int doubleClickPeriod=250, int deglitchPeriod=10);
 
-   bool poll(); // Returns 1 if switched
 
-   bool switched(); // will be refreshed by poll()
 
-   bool on();
 
-   bool pushed(); // will be refreshed by poll()
 
-   bool released(); // will be refreshed by poll()
 
-   bool longPress(); // will be refreshed by poll()
 
-   bool doubleClick(); // will be refreshed by poll()
 
-   bool singleClick(); // will be refreshed by poll()
 
-   // Set methods for event callbacks
 
-   void setPushedCallback(switchCallback_t cb, void* param = nullptr);
 
-   void setReleasedCallback(switchCallback_t cb, void* param = nullptr);
 
-   void setLongPressCallback(switchCallback_t cb, void* param = nullptr);
 
-   void setDoubleClickCallback(switchCallback_t cb, void* param = nullptr);
 
-   void setSingleClickCallback(switchCallback_t cb, void* param = nullptr);
 
-   protected:
 
-   bool process(); // not inline, used in child class
 
-   void inline deglitch();
 
-   void inline debounce();
 
-   void inline calcLongPress();
 
-   void inline calcDoubleClick();
 
-   void inline calcSingleClick();
 
-   void triggerCallbacks();
 
-   unsigned long deglitchTime, switchedTime, pushedTime, releasedTime, ms;
 
-   const byte pin;
 
-   const int deglitchPeriod, debouncePeriod, longPressPeriod, doubleClickPeriod;
 
-   const bool polarity;
 
-   bool input, lastInput, equal, deglitched, debounced, _switched, _longPress, longPressDisable, _doubleClick, _singleClick, singleClickDisable;
 
-   // Event callbacks
 
-   switchCallback_t _pushedCallback = nullptr;
 
-   switchCallback_t _releasedCallback = nullptr;
 
-   switchCallback_t _longPressCallback = nullptr;
 
-   switchCallback_t _doubleClickCallback = nullptr;
 
-   switchCallback_t _singleClickCallback = nullptr;
 
-   void* _pushedCallbackParam = nullptr;
 
-   void* _releasedCallbackParam = nullptr;
 
-   void* _longPressCallbackParam = nullptr;
 
-   void* _doubleClickCallbackParam = nullptr;
 
-   void* _singleClickCallbackParam = nullptr;
 
- };
 
- #endif
 
 
  |