Compare commits

...

3 Commits

Author SHA1 Message Date
anschrammh
30a0cc672c Updated software version number 2019-09-05 14:03:56 +02:00
anschrammh
a11366a094 Merge branch 'master' of http://88.167.116.148/git/Th3maz1ng/ESP8266_swiss_army_board 2019-09-05 14:02:46 +02:00
anschrammh
28708ac96c Minor changes 2019-09-05 14:02:21 +02:00
3 changed files with 25 additions and 17 deletions

View File

@ -40,7 +40,7 @@ TaskSchedulerManagerHelper::Schedule *TaskSchedulerManagerHelper::Schedule::sche
return new TaskSchedulerManagerHelper::Schedule(); return new TaskSchedulerManagerHelper::Schedule();
} }
TaskSchedulerManagerHelper::Schedule *TaskSchedulerManagerHelper::Schedule::setMillis(uint64_t millis) TaskSchedulerManagerHelper::Schedule *TaskSchedulerManagerHelper::Schedule::setMillis(uint32_t millis)
{ {
if(millis == 0)return this; if(millis == 0)return this;
@ -177,26 +177,33 @@ void TaskSchedulerManager::runTaskScheduler()
{ {
if(p->schedule._everyMillis != 0) if(p->schedule._everyMillis != 0)
{ {
if(p->schedule._triggerRightAway && !p->schedule._hasBeenTriggeredRightAway)//No rollover possible
if(p->schedule._triggerRightAway || p->schedule._millis != 0)
{
if(p->schedule._triggerRightAway && !p->schedule._hasBeenTriggeredRightAway)
{ {
p->schedule._millis = millis(); p->schedule._millis = millis();
p->schedule._hasBeenTriggeredRightAway = true; p->schedule._hasBeenTriggeredRightAway = true;
p->schedule._triggered = true; p->schedule._triggered = true;
(*(p->taskRoutine))(p->pData); (*(p->taskRoutine))(p->pData);
} }
else if(millis() - p->schedule._millis >= p->schedule._everyMillis) //We execute the task else if(millis() >= p->schedule._millis) //Millis rollover ?
{
if(millis() - p->schedule._millis >= p->schedule._everyMillis) //No, we execute the task
{ {
p->schedule._millis = millis(); p->schedule._millis = millis();
p->schedule._triggered = true; p->schedule._triggered = true;
(*(p->taskRoutine))(p->pData); (*(p->taskRoutine))(p->pData);
} }
} }
else else //Millis rollover
{
//We compute the time elapsed during the rollover:
unsigned long max_ul(~0), from_last_millis_to_max(max_ul - p->schedule._millis), total_elapsed_millis(from_last_millis_to_max + millis());
if(total_elapsed_millis >= p->schedule._everyMillis)
{ {
p->schedule._millis = millis(); p->schedule._millis = millis();
p->schedule._triggered = true;
(*(p->taskRoutine))(p->pData);
}
} }
} }
else //Probably AT mode task else //Probably AT mode task

View File

@ -25,7 +25,7 @@ namespace TaskSchedulerManagerHelper
} }
static Schedule *scheduleBuilder(); static Schedule *scheduleBuilder();
Schedule *setMillis(uint64_t millis); Schedule *setMillis(uint32_t millis);
Schedule *setSeconds(uint32_t seconds); Schedule *setSeconds(uint32_t seconds);
Schedule *setDateTime(DateTime &dateTime); Schedule *setDateTime(DateTime &dateTime);
Schedule *setDays(uint8_t days); Schedule *setDays(uint8_t days);
@ -46,8 +46,8 @@ namespace TaskSchedulerManagerHelper
TriggerType _triggerType; TriggerType _triggerType;
Mode _mode; Mode _mode;
boolean _enabled; boolean _enabled;
uint64_t _millis; //Used to internally keep track of the time elapsed for this task uint32_t _millis; //Used to internally keep track of the time elapsed for this task
uint64_t _everyMillis; //We can use millis or DateTime, but not both e.g every 00h 10m 00s 000ms uint32_t _everyMillis; //We can use millis or DateTime, but not both e.g every 00h 10m 00s 000ms
DateTime *_dateTime; DateTime *_dateTime;
}; };
} }

View File

@ -11,5 +11,6 @@
#define SOFT_VERSION "1.1.0" //Added trailing zeros to the date and time #define SOFT_VERSION "1.1.0" //Added trailing zeros to the date and time
#define SOFT_VERSION "1.1.1" //Added delayed esp restart/reset api call #define SOFT_VERSION "1.1.1" //Added delayed esp restart/reset api call
#define SOFT_VERSION "1.1.2" //Fixed a big memory leak :( shame on me... #define SOFT_VERSION "1.1.2" //Fixed a big memory leak :( shame on me...
#define SOFT_VERSION "1.1.3" //TaskSchedulerManager added millis rollover
#endif //VERSIONS_H #endif //VERSIONS_H