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;
276 bool isRunning()
const {
return (timingInformation & TM_TIME_RUNNING) != 0; }
283 return (
isInUse() && execType == EXECTYPE_EVENT);
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:39
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:129
void initialise(sched_t when, TimerUnit unit, TimerFn execCallback, bool repeating)
Definition TaskTypes.cpp:40
void clear()
Definition TaskTypes.cpp:110
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:140
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)