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

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?

UserRevisionLine numberNew 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