first commit
This commit is contained in:
72
blinker-library/src/Functions/BlinkerTicker.h
Normal file
72
blinker-library/src/Functions/BlinkerTicker.h
Normal file
@@ -0,0 +1,72 @@
|
||||
#ifndef BLINEKR_TICKER_H
|
||||
#define BLINEKR_TICKER_H
|
||||
|
||||
#if defined(ARDUINO)
|
||||
#if ARDUINO >= 100
|
||||
#include <Arduino.h>
|
||||
#else
|
||||
#include <WProgram.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "../Blinker/BlinkerDebug.h"
|
||||
|
||||
extern "C" {
|
||||
typedef void (*blinker_callback_t)(void);
|
||||
}
|
||||
|
||||
class BlinkerTicker
|
||||
{
|
||||
public :
|
||||
BlinkerTicker() {}
|
||||
// : day_time(0)
|
||||
// , os_time(0)
|
||||
// {}
|
||||
|
||||
// void freshTime(uint32_t time_s) { day_time = time_s; os_time = millis(); }
|
||||
|
||||
void attach(uint32_t seconds, blinker_callback_t func)
|
||||
{
|
||||
aim_time = seconds;
|
||||
tickerFunc = func;
|
||||
|
||||
isRun = true;
|
||||
}
|
||||
|
||||
void detach() { isRun = false; }
|
||||
|
||||
void run()
|
||||
{
|
||||
if (millis() - os_time >= 1000 && millis() - os_time < 2000)
|
||||
{
|
||||
os_time += 1000;
|
||||
tick_time ++;
|
||||
}
|
||||
else if (millis() - os_time >= 2000)
|
||||
{
|
||||
tick_time += (millis() - os_time) / 1000;
|
||||
os_time = millis();
|
||||
}
|
||||
|
||||
if (isRun)
|
||||
{
|
||||
if (tick_time - aim_time >= 0 && tick_time - aim_time < 60)
|
||||
{
|
||||
BLINKER_LOG_ALL(BLINKER_F("ticker trigged"));
|
||||
isRun = false;
|
||||
|
||||
if (tickerFunc) tickerFunc();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected :
|
||||
uint32_t tick_time;
|
||||
uint32_t os_time;
|
||||
uint32_t aim_time;
|
||||
bool isRun = false;
|
||||
|
||||
blinker_callback_t tickerFunc = NULL;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user