Blynk library for embedded hardware. Works with Arduino, ESP8266, Raspberry Pi, Intel Edison/Galileo, LinkIt ONE, Particle Core/Photon, Energia, ARM mbed, etc. http://www.blynk.cc/
Dependents: Blynk_RBL_BLE_Nano Blynk_MicroBit Blynk_Serial Blynk_RBL_BLE_Nano
Blynk/BlynkEveryN.h@22:e1d3971fd902, 2018-01-26 (annotated)
- Committer:
- vshymanskyy
- Date:
- Fri Jan 26 22:18:19 2018 +0000
- Revision:
- 22:e1d3971fd902
- Parent:
- 15:975b60f7a8ff
Fix BlynkSystemInit for MBED
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Volodymyr Shymanskyy |
15:975b60f7a8ff | 1 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 2 | #ifndef BLYNKEVERYN_H |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 3 | #define BLYNKEVERYN_H |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 4 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 5 | #include <Blynk/BlynkDebug.h> |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 6 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 7 | millis_time_t blynk_count_millis() { |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 8 | const millis_time_t ms = BlynkMillis(); |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 9 | return ms; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 10 | } |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 11 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 12 | uint16_t blynk_count_seconds16() { |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 13 | const millis_time_t ms = BlynkMillis(); |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 14 | return (ms / 1000); |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 15 | } |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 16 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 17 | uint16_t blynk_count_minutes16() |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 18 | { |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 19 | const millis_time_t ms = BlynkMillis(); |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 20 | return (ms / (60000L)) & 0xFFFF; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 21 | } |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 22 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 23 | uint8_t blynk_count_hours8() |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 24 | { |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 25 | const millis_time_t ms = BlynkMillis(); |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 26 | return (ms / (3600000L)) & 0xFF; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 27 | } |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 28 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 29 | template<typename T, T (*timeGetter)()> |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 30 | class BlynkPeriodic { |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 31 | public: |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 32 | T mPrev; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 33 | T mPeriod; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 34 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 35 | BlynkPeriodic() { reset(); mPeriod = 1; }; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 36 | BlynkPeriodic(T period) { reset(); setPeriod(period); }; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 37 | void setPeriod( T period) { mPeriod = period; }; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 38 | T getTime() { return (T)(timeGetter()); }; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 39 | T getPeriod() { return mPeriod; }; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 40 | T getElapsed() { return getTime() - mPrev; } |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 41 | T getRemaining() { return mPeriod - getElapsed(); } |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 42 | T getLastTriggerTime() { return mPrev; } |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 43 | bool ready() { |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 44 | bool isReady = (getElapsed() >= mPeriod); |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 45 | if( isReady ) { reset(); } |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 46 | return isReady; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 47 | } |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 48 | void reset() { mPrev = getTime(); }; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 49 | void trigger() { mPrev = getTime() - mPeriod; }; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 50 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 51 | operator bool() { return ready(); } |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 52 | }; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 53 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 54 | typedef BlynkPeriodic<millis_time_t,blynk_count_millis> BlynkEveryNMillis; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 55 | typedef BlynkPeriodic<uint16_t,blynk_count_seconds16> BlynkEveryNSeconds; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 56 | typedef BlynkPeriodic<uint16_t,blynk_count_minutes16> BlynkEveryNMinutes; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 57 | typedef BlynkPeriodic<uint8_t,blynk_count_hours8> BlynkEveryNHours; |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 58 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 59 | #define BLYNK_EVERY_N_MILLIS_I(NAME,N) static BlynkEveryNMillis NAME(N); if(NAME) |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 60 | #define BLYNK_EVERY_N_SECONDS_I(NAME,N) static BlynkEveryNSeconds NAME(N); if(NAME) |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 61 | #define BLYNK_EVERY_N_MINUTES_I(NAME,N) static BlynkEveryNMinutes NAME(N); if(NAME) |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 62 | #define BLYNK_EVERY_N_HOURS_I(NAME,N) static BlynkEveryNHours NAME(N); if(NAME) |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 63 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 64 | #define BLYNK_EVERY_N_MILLIS(N) BLYNK_EVERY_N_MILLIS_I(BLYNK_CONCAT2(PER, __COUNTER__),N) |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 65 | #define BLYNK_EVERY_N_SECONDS(N) BLYNK_EVERY_N_SECONDS_I(BLYNK_CONCAT2(PER, __COUNTER__),N) |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 66 | #define BLYNK_EVERY_N_MINUTES(N) BLYNK_EVERY_N_MINUTES_I(BLYNK_CONCAT2(PER, __COUNTER__),N) |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 67 | #define BLYNK_EVERY_N_HOURS(N) BLYNK_EVERY_N_HOURS_I(BLYNK_CONCAT2(PER, __COUNTER__),N) |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 68 | |
Volodymyr Shymanskyy |
15:975b60f7a8ff | 69 | #endif |