FastLED 3.9.15
Loading...
Searching...
No Matches

◆ INSTANTIATE_EVERY_N_TIME_PERIODS

#define INSTANTIATE_EVERY_N_TIME_PERIODS ( NAME,
TIMETYPE,
TIMEGETTER )
Value:
class NAME { \
public: \
TIMETYPE mPrevTrigger; \
TIMETYPE mPeriod; \
\
NAME() { reset(); mPeriod = 1; }; \
NAME(TIMETYPE period) { reset(); setPeriod(period); }; \
void setPeriod( TIMETYPE period) { mPeriod = period; }; \
TIMETYPE getTime() { return (TIMETYPE)(TIMEGETTER()); }; \
TIMETYPE getPeriod() { return mPeriod; }; \
TIMETYPE getElapsed() { return getTime() - mPrevTrigger; } \
TIMETYPE getRemaining() { return mPeriod - getElapsed(); } \
TIMETYPE getLastTriggerTime() { return mPrevTrigger; } \
bool ready() { \
bool isReady = (getElapsed() >= mPeriod); \
if( isReady ) { reset(); } \
return isReady; \
} \
void reset() { mPrevTrigger = getTime(); }; \
void trigger() { mPrevTrigger = getTime() - mPeriod; }; \
\
operator bool() { return ready(); } \
};
UIButton trigger("Trigger")

Preprocessor-based class "template" for CEveryNTime, used with EVERY_N_TIME timekeepers.

Classes to implement EVERY_N_MILLIS, EVERY_N_SECONDS, EVERY_N_MINUTES, EVERY_N_HOURS, and EVERY_N_BSECONDS.

Definition at line 939 of file lib8tion.h.

939#define INSTANTIATE_EVERY_N_TIME_PERIODS(NAME,TIMETYPE,TIMEGETTER) \
940class NAME { \
941public: \
942 TIMETYPE mPrevTrigger; \
943 TIMETYPE mPeriod; \
944 \
945 NAME() { reset(); mPeriod = 1; }; \
946 NAME(TIMETYPE period) { reset(); setPeriod(period); }; \
947 void setPeriod( TIMETYPE period) { mPeriod = period; }; \
948 TIMETYPE getTime() { return (TIMETYPE)(TIMEGETTER()); }; \
949 TIMETYPE getPeriod() { return mPeriod; }; \
950 TIMETYPE getElapsed() { return getTime() - mPrevTrigger; } \
951 TIMETYPE getRemaining() { return mPeriod - getElapsed(); } \
952 TIMETYPE getLastTriggerTime() { return mPrevTrigger; } \
953 bool ready() { \
954 bool isReady = (getElapsed() >= mPeriod); \
955 if( isReady ) { reset(); } \
956 return isReady; \
957 } \
958 void reset() { mPrevTrigger = getTime(); }; \
959 void trigger() { mPrevTrigger = getTime() - mPeriod; }; \
960 \
961 operator bool() { return ready(); } \
962};