This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
in202:seance_6:jalon_4 [2021/05/03 10:55] bmonsuez |
in202:seance_6:jalon_4 [2022/11/18 10:47] (current) |
||
---|---|---|---|
Line 54: | Line 54: | ||
<code cpp> | <code cpp> | ||
- | template<int First, int... _Rest> class _ButtonEvents | + | template<int First, int... _Rest> |
class _ButtonEvents <First, _Rest...> : private _ButtonEvents <_Rest...> | class _ButtonEvents <First, _Rest...> : private _ButtonEvents <_Rest...> | ||
{ | { | ||
Line 108: | Line 108: | ||
<code cpp> | <code cpp> | ||
+ | template<int First, int... _Rest> | ||
class _ButtonEvents <First, _Rest...> : private _ButtonEvents <_Rest...> | class _ButtonEvents <First, _Rest...> : private _ButtonEvents <_Rest...> | ||
{ | { | ||
Line 145: | Line 146: | ||
<code cpp> | <code cpp> | ||
+ | template<int First, int... _Rest> | ||
class _ButtonEvents <First, _Rest...> : private _ButtonEvents <_Rest...> | class _ButtonEvents <First, _Rest...> : private _ButtonEvents <_Rest...> | ||
{ | { | ||
Line 308: | Line 310: | ||
static void Released(); | static void Released(); | ||
static void Changed(); | static void Changed(); | ||
- | static int mLastPressed; | ||
- | static int mLastReleased; | ||
public: | public: | ||
static interrupt_type GetPressed(int thePort) { return thePort == mPortNumber ? Pressed : _ButtonEvents<_Rest...>::GetPressed(thePort); } | static interrupt_type GetPressed(int thePort) { return thePort == mPortNumber ? Pressed : _ButtonEvents<_Rest...>::GetPressed(thePort); } | ||
Line 363: | Line 363: | ||
template<int First, int... _Rest> | template<int First, int... _Rest> | ||
Button* _ButtonEvents<First, _Rest...>::mButton = NULL; | Button* _ButtonEvents<First, _Rest...>::mButton = NULL; | ||
- | template<int First, int... _Rest> | ||
- | int _ButtonEvents<First, _Rest...>::mLastReleased = 0; | ||
- | template<int First, int... _Rest> | ||
- | int _ButtonEvents<First, _Rest...>::mLastPressed = 0; | ||
template<int First, int... _Rest> | template<int First, int... _Rest> | ||
void _ButtonEvents<First, _Rest...>::Pressed() | void _ButtonEvents<First, _Rest...>::Pressed() | ||
- | { | + | { if(mButton != NULL) mButton->OnPressed(); } |
- | int currentTime = millis(); | + | |
- | if(currentTime - mLastPressed > 400) | + | |
- | { | + | |
- | mLastPressed = currentTime; | + | |
- | if(mButton != NULL) mButton->OnPressed(); | + | |
- | } | + | |
- | } | + | |
template <int First, int... _Rest> | template <int First, int... _Rest> | ||
void _ButtonEvents<First, _Rest...>::Released() | void _ButtonEvents<First, _Rest...>::Released() | ||
- | { | + | { if(mButton != NULL) mButton->OnReleased(); } |
- | int currentTime = millis(); | + | |
- | if(currentTime - mLastReleased > 400) | + | |
- | { | + | |
- | mLastReleased = currentTime; | + | |
- | if(mButton != NULL) mButton->OnReleased(); | + | |
- | } | + | |
- | } | + | |
template <int First, int... _Rest> | template <int First, int... _Rest> | ||
- | void _ButtonEvents<First, _Rest...>::Changed() { if(mButton != NULL) mButton->OnChanged(); } | + | void _ButtonEvents<First, _Rest...>::Changed() |
+ | { if(mButton != NULL) mButton->OnChanged(); } | ||
template <int First, int... _Rest> | template <int First, int... _Rest> |