begin cleanup on gps code

This commit is contained in:
geeksville
2020-02-06 07:39:21 -08:00
parent 0050e4b05a
commit 0b226132b8
10 changed files with 180 additions and 78 deletions

36
src/PeriodicTask.h Normal file
View File

@@ -0,0 +1,36 @@
#pragma once
#include <Arduino.h>
#include "configuration.h"
class PeriodicTask
{
/// we use prevMsec rather than nextMsec because it is easier to handle the uint32 rollover in that case, also changes in periodMsec take effect immediately
uint32_t prevMsec;
public:
uint32_t periodMsec;
virtual ~PeriodicTask() {}
PeriodicTask(uint32_t period) : periodMsec(period)
{
prevMsec = millis();
}
/// call this from loop
virtual void loop()
{
uint32_t now = millis();
if (now > (prevMsec + periodMsec))
{
// FIXME, this lets period slightly drift based on scheduling - not sure if that is always good
prevMsec = now;
DEBUG_MSG("Calling periodic task\n");
doTask();
}
}
virtual void doTask() = 0;
};