add locks to PeriodicTask

This commit is contained in:
Girts Folkmanis
2020-03-15 19:27:42 -07:00
parent 0cbcb7a9bd
commit 90ecdf229e
2 changed files with 22 additions and 14 deletions

View File

@@ -1,23 +1,25 @@
#include "PeriodicTask.h"
#include "Periodic.h"
PeriodicTask::PeriodicTask(uint32_t initialPeriod) : period(initialPeriod)
{
}
PeriodicTask::PeriodicTask(uint32_t initialPeriod) : period(initialPeriod) {}
/// call this from loop
void PeriodicTask::loop()
{
uint32_t now = millis();
if (period && (now - lastMsec) >= period)
{
meshtastic::LockGuard lg(&lock);
uint32_t now = millis();
if (!period || (now - lastMsec) < period) {
return;
}
lastMsec = now;
doTask();
}
// Release the lock in case the task wants to change the period.
doTask();
}
void Periodic::doTask()
{
uint32_t p = callback();
setPeriod(p);
}
}