FastLED 3.9.15
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages

◆ 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(); } \
};

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 1077 of file lib8tion.h.

1077#define INSTANTIATE_EVERY_N_TIME_PERIODS(NAME,TIMETYPE,TIMEGETTER) \
1078class NAME { \
1079public: \
1080 TIMETYPE mPrevTrigger; \
1081 TIMETYPE mPeriod; \
1082 \
1083 NAME() { reset(); mPeriod = 1; }; \
1084 NAME(TIMETYPE period) { reset(); setPeriod(period); }; \
1085 void setPeriod( TIMETYPE period) { mPeriod = period; }; \
1086 TIMETYPE getTime() { return (TIMETYPE)(TIMEGETTER()); }; \
1087 TIMETYPE getPeriod() { return mPeriod; }; \
1088 TIMETYPE getElapsed() { return getTime() - mPrevTrigger; } \
1089 TIMETYPE getRemaining() { return mPeriod - getElapsed(); } \
1090 TIMETYPE getLastTriggerTime() { return mPrevTrigger; } \
1091 bool ready() { \
1092 bool isReady = (getElapsed() >= mPeriod); \
1093 if( isReady ) { reset(); } \
1094 return isReady; \
1095 } \
1096 void reset() { mPrevTrigger = getTime(); }; \
1097 void trigger() { mPrevTrigger = getTime() - mPeriod; }; \
1098 \
1099 operator bool() { return ready(); } \
1100};