discoLight
Loading...
Searching...
No Matches
PeriodicTask.h
Go to the documentation of this file.
1
28#ifndef PERIODICTASK_H_
29#define PERIODICTASK_H_
30
31#include "RunnableClass.h"
32
33#include <chrono>
34
35namespace SWE4211RPi {
36
38protected:
44 uint32_t taskPeriod = 100000;
45private:
50
55
60
64 //std::chrono::microseconds lastWallTime = std::chrono::microseconds(0);
65 long lastWallTime = 0;
66
70 //std::chrono::microseconds worstCaseWallTime = std::chrono::microseconds(0);
72
76 void invokeRun();
77
81 void waitForNextExecution(std::chrono::microseconds remainingSleepTime);
82
86 void waitForNextExecution(struct timespec sleepTime);
87
88public:
95 PeriodicTask(std::string threadName, uint32_t period, int priority=1);
96
100 virtual ~PeriodicTask();
101
106 virtual void taskMethod()=0;
107
113 virtual void setTaskPeriod(uint32_t period) final;
114
119 virtual uint32_t getTaskPeriod() final;
120
124 void run() final;
125
129 virtual void printInformation();
130
135 virtual double getCPUUsageInfo();
136
140 virtual void resetThreadDiagnostics();
141
142protected:
149 virtual void startChildRunnables() final;
150
156 virtual void stopChildRunnables() final;
157
164 virtual void startChildTasks();
165
171 virtual void stopChildTasks();
172
173};
174
175}
176#endif /* PERIODICTASK_H_ */
Definition PeriodicTask.h:37
void waitForNextExecution(std::chrono::microseconds remainingSleepTime)
Definition PeriodicTask.cpp:85
long worstCaseExecutionTime
Definition PeriodicTask.h:49
virtual void startChildTasks()
Definition PeriodicTask.cpp:235
virtual void setTaskPeriod(uint32_t period) final
Definition PeriodicTask.cpp:65
virtual double getCPUUsageInfo()
Definition PeriodicTask.cpp:107
uint32_t taskPeriod
Definition PeriodicTask.h:44
virtual ~PeriodicTask()
Definition PeriodicTask.cpp:54
long lastWallTime
Definition PeriodicTask.h:65
long lastExecutionTime
Definition PeriodicTask.h:54
virtual void stopChildTasks()
Definition PeriodicTask.cpp:244
long worstCaseWallTime
Definition PeriodicTask.h:71
virtual void printInformation()
Definition PeriodicTask.cpp:116
virtual void resetThreadDiagnostics()
Definition PeriodicTask.cpp:136
virtual void startChildRunnables() final
Definition PeriodicTask.cpp:254
long missedDeadlineCount
Definition PeriodicTask.h:59
void run() final
Definition PeriodicTask.cpp:148
virtual void taskMethod()=0
virtual void stopChildRunnables() final
Definition PeriodicTask.cpp:259
virtual uint32_t getTaskPeriod() final
Definition PeriodicTask.cpp:78
Definition RunnableClass.h:45
int priority
Definition RunnableClass.h:93