6#ifndef TASKMANAGER_IO_TASKTYPES_H
7#define TASKMANAGER_IO_TASKTYPES_H
16#define TASKMGR_INVALIDID 0xffffU
60 volatile bool triggered;
61 volatile bool finished;
64 taskMgrAssociation(taskMgrToUse), triggered(
false), finished(
false) {}
118#ifdef TM_ALLOW_CAPTURED_LAMBDA
136 TM_TIME_REPEATING = 0x10,
137 TM_TIME_RUNNING = 0x20,
146 EXECTYPE_FUNCTION = 0,
147 EXECTYPE_EXECUTABLE = 1,
150 EXECTYPE_MASK = 0x03,
151 EXECTYPE_DELETE_ON_DONE = 0x08,
153 EXECTYPE_DEL_EXECUTABLE = EXECTYPE_EXECUTABLE | EXECTYPE_DELETE_ON_DONE,
154 EXECTYPE_DEL_EVENT = EXECTYPE_EVENT | EXECTYPE_DELETE_ON_DONE
165#ifdef TM_ALLOW_CAPTURED_LAMBDA
182 tm_internal::TimerTaskAtomicPtr next;
185 volatile uint32_t scheduledAt;
187 volatile sched_t myTimingSchedule;
194 tm_internal::TmAtomicBool taskInUse;
198 tm_internal::TmAtomicBool taskEnabled;
242 bool isInUse() {
return tm_internal::atomicReadBool(&taskInUse); }
260 return tm_internal::atomicSwapBool(&taskInUse,
false,
true);
276 bool isRunning()
const {
return (timingInformation & TM_TIME_RUNNING) != 0; }
283 return (
isInUse() && execType == EXECTYPE_EVENT);
290 TimerTask *
getNext() {
return tm_internal::atomicReadPtr(&next); }
296 void setNext(TimerTask *nextTask) { tm_internal::atomicWritePtr(&this->next, nextTask); }
324 bool isEnabled() {
return tm_internal::atomicReadBool(&taskEnabled); }
330 void setEnabled(
bool ena) { tm_internal::atomicWriteBool(&taskEnabled, ena); }
std::function< void()> TimerFn
Definition TaskTypes.h:120
TimerUnit
Definition TaskTypes.h:128
@ TIME_SECONDS
Definition TaskTypes.h:132
@ TIME_MILLIS
Definition TaskTypes.h:134
@ TIME_MICROS
Definition TaskTypes.h:130
ExecutionType
Definition TaskTypes.h:145
TaskManager taskManager
Definition TaskManagerIO.cpp:33
unsigned int taskid_t
Definition TaskTypes.h:22
Definition TaskTypes.h:57
virtual uint32_t timeOfNextCheck()=0
bool isComplete() const
Definition TaskTypes.h:93
void setTriggered(bool t)
Definition TaskTypes.h:79
bool isTriggered() const
Definition TaskTypes.h:86
void setCompleted(bool complete)
Definition TaskTypes.h:102
void markTriggeredAndNotify()
Definition TaskTypes.cpp:151
Definition TaskTypes.h:28
virtual ~Executable()=default
Definition TaskManagerIO.h:158
void execute()
Definition TaskTypes.cpp:86
void setEnabled(bool ena)
Definition TaskTypes.h:330
bool isInUse()
Definition TaskTypes.h:242
bool isRunning() const
Definition TaskTypes.h:276
void markRunning()
Definition TaskTypes.h:266
void processEvent()
Definition TaskTypes.cpp:128
void initialise(sched_t when, TimerUnit unit, TimerFn execCallback, bool repeating)
Definition TaskTypes.cpp:40
void clear()
Definition TaskTypes.cpp:109
void setNext(TimerTask *nextTask)
Definition TaskTypes.h:296
TimerTask * getNext()
Definition TaskTypes.h:290
bool allocateIfPossible()
Definition TaskTypes.h:259
void clearRunning()
Definition TaskTypes.h:271
unsigned long microsFromNow()
Definition TaskTypes.cpp:71
bool isRepeating() const
Definition TaskTypes.cpp:139
bool isMicrosSchedule()
Definition TaskTypes.h:315
bool isEvent()
Definition TaskTypes.h:281
void initialiseEvent(BaseEvent *event, bool deleteWhenDone)
Definition TaskTypes.cpp:65
bool isEnabled()
Definition TaskTypes.h:324
bool isMillisSchedule()
Definition TaskTypes.h:319
void handleScheduling(sched_t when, TimerUnit unit, bool repeating)
Definition TaskTypes.cpp:46
void initialise(sched_t when, TimerUnit unit, Executable *executable, bool deleteWhenDone, bool repeating)