6 #ifndef CT_TASK_DEADLINE_H
7 #define CT_TASK_DEADLINE_H
9 #include "ps_parameter.h"
10 #include "utl_sched.h"
16 #include <initializer_list>
18 #define TASK_NAME_LENGTH 64
33 TaskDeadline(
const char* name, parameter_server::Parameter* parent);
37 void setName(
const char* name);
38 const char* getName(
void)
const;
40 void add(Module* module, Command cmd = AUTOSTART);
41 void remove(Module* module);
44 void start(
unsigned long cycle_time_micro_s, utils::SchedType = utils::SchedType::OTHER, std::initializer_list<int> cpu_affinity_list = {-1},
int priority = 0);
47 void setCycleTimeMicroS(
unsigned long micro_s);
48 unsigned long getCycleMicroS(
void);
49 double getCycleTimeS(
void);
61 bool setCpuAffinity(std::initializer_list<int> cpu_affinity_list);
63 struct time_statistics_t {
70 Command user_command_;
74 long desired_cycle_time_micro_s;
75 utils::SchedType sched_type;
88 static void* runHelper(
void *context);
90 inline void correctNSec(
struct timespec &time_nsec);
91 inline void fillCycleTime(time_statistics_t& cycleTime,
unsigned long time,
unsigned long cycle);
93 std::atomic<State> state_;
94 char task_name_[TASK_NAME_LENGTH + 1];
95 std::vector<module_info> modules_;
98 struct timespec desired_cycle_time_;
99 time_statistics_t actual_load_time_;
100 time_statistics_t actual_cycle_time_;
102 int reset_absolute_max_time_micro_s_;
103 long absolute_max_time_micro_s_;
105 sched_data sched_data_;
115 parameter_server::Parameter local_branch_;