35template <
int TStackSize>
60 while(!chThdShouldTerminateX()) {
75 prev = chThdSleepUntilWindowed(prev, chTimeAddX(prev,
m_period));
78 criticalError(
"Thread died: %s", this->
m_name);
85 ,
m_period(CH_CFG_ST_FREQUENCY / frequencyHz)
96 float frequencyHz = 1000.0 / periodMs;
97 this->m_period = CH_CFG_ST_FREQUENCY / frequencyHz;
102#define NOT_TOO_OFTEN(threshold, value) maxI(threshold, value)
Base class for a controller that needs to run periodically to perform work.
virtual void PeriodicTask(efitick_t nowNt)=0
Called periodically. Override this method to do work for your controller.
virtual void OnStarted()
Called before running the periodic task. Optionally override this method to set up.
PeriodicController(const char *name)
void setPeriod(int periodMs)
void ThreadTask() override final
PeriodicController(const char *name, tprio_t priority, float frequencyHz)
A base class for a controller that requires its own thread.
@ PeriodicControllerPeriodicTask