Minor changes
This commit is contained in:
parent
308bd4cbb6
commit
28708ac96c
@ -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
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user