28 uint16_t stack_size = DEFAULT_STACK_SIZE)
29 :
task(name, stack_size) {
31 _mode = TIMER::ONE_SHOT;
45 void setPeriod(uint32_t us, TIMER::timer_mode mode)
override {
46 assert((us % 1000) == 0);
47 _delta_ms = us / 1000;
51 uint32_t getPeriod()
override {
52 return _delta_ms * 1000;
55 void setCallback(function<
void()> f)
override {
59 void start()
override {
66 void stop()
override {
71 bool isRunning()
override {
72 return getState() != state_t::SUSPENDED;
75 void reset()
override {
76 _next_ms = task::millis() + _delta_ms;
79 [[noreturn]]
void run()
override {
82 uint64_t now = task::millis();
84 uint64_t diff = _next_ms - now;
88 _next_ms += _delta_ms;
89 if (_mode == TIMER::ONE_SHOT) {
102 TIMER::timer_mode _mode;
107 function<void()> _callback;