6#ifndef TASKMANAGER_IO_H
7#define TASKMANAGER_IO_H
25#if defined(IOA_USE_MBED) || defined(BUILD_FOR_PICO_CMAKE)
34#define delayMicroseconds(x) wait_us(x)
36#define delayMicroseconds(x) sleep_us(x)
82 uint32_t repeating: 1;
85 TimePeriod(uint32_t amount,
TimerUnit unit,
bool repeat);
87 TimePeriod(
const TimePeriod& other) =
default;
88 TimePeriod& operator= (
const TimePeriod& other) =
default;
90 uint32_t getAmount()
const {
98 bool getRepeating()
const {
99 return repeating != 0;
161 TaskBlock*
volatile taskBlocks[DEFAULT_TASK_BLOCKS];
165 tm_internal::TimerTaskAtomicPtr first;
168 volatile pintype_t lastInterruptTrigger;
169 volatile bool interrupted;
172 tm_internal::TmAtomicBool memLockerFlag;
173 tm_internal::TimerTaskAtomicPtr runningTask;
283 lastInterruptTrigger = 0xff;
342 for(
taskid_t i =0; i<numberOfBlocks; i++) {
343 taskBlocks[i]->clearAll();
382 if(maybeTask ==
nullptr)
return 600 * 1000000U;
383 else return maybeTask->microsFromNow();
421 void dealWithInterrupt();
430#define millisToMicros(x) ((x)*1000UL)
435#define secondsToMicros(x) ((x)*1000000UL)
440#define secondsToMillis(x) ((x)*1000UL)
An internal class definition that is the representation of a task.
void(* InterruptFn)(pintype_t pin)
Definition TaskManagerIO.h:50
TimePeriod onceSeconds(uint32_t seconds)
Definition TaskManagerIO.h:129
TimePeriod onceMicros(uint32_t micros)
Definition TaskManagerIO.h:143
TimePeriod repeatMicros(uint32_t micros)
Definition TaskManagerIO.h:122
void yield()
Definition TaskManagerIO.cpp:21
void(* RawIntHandler)()
Definition TaskManagerIO.h:43
TimePeriod repeatSeconds(uint32_t seconds)
Definition TaskManagerIO.h:108
TimePeriod repeatMillis(uint32_t millis)
Definition TaskManagerIO.h:115
TimePeriod onceMillis(uint32_t millis)
Definition TaskManagerIO.h:136
This class represents the core tasks that are added to task manager, and the TimerTask object itself.
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
unsigned int taskid_t
Definition TaskTypes.h:22
Definition TaskTypes.h:57
Definition TaskTypes.h:28
Definition TaskManagerIO.h:59
virtual void attachInterrupt(pintype_t pin, RawIntHandler fn, uint8_t mode)=0
Definition TaskBlock.h:26
Definition TaskManagerIO.cpp:213
Definition TaskManagerIO.h:158
void addInterrupt(InterruptAbstraction *interruptAbstraction, pintype_t pin, uint8_t mode)
Definition TaskManagerIO.cpp:423
void reset()
Definition TaskManagerIO.h:340
char * checkAvailableSlots(char *slotData, size_t slotDataSize) const
Definition TaskManagerIO.cpp:451
uint32_t microsToNextTask()
Definition TaskManagerIO.h:380
void runLoop()
Definition TaskManagerIO.cpp:255
taskid_t execute(TimerFn workToDo)
Definition TaskManagerIO.h:193
taskid_t registerEvent(BaseEvent *eventToAdd, bool deleteWhenDone=false)
Definition TaskManagerIO.cpp:171
static void markInterrupted(pintype_t interruptNo)
Definition TaskManagerIO.cpp:65
taskid_t scheduleOnce(uint32_t when, TimerFn timerFunction, TimerUnit timeUnit=TIME_MILLIS)
Definition TaskManagerIO.cpp:131
void cancelTask(taskid_t task)
Definition TaskManagerIO.cpp:190
TaskManager()
Definition TaskManagerIO.cpp:70
void setTaskEnabled(taskid_t task, bool ena)
Definition TaskManagerIO.cpp:181
TimerTask * getTask(taskid_t task)
Definition TaskManagerIO.cpp:469
taskid_t scheduleFixedRate(uint32_t when, TimerFn timerFunction, TimerUnit timeUnit=TIME_MILLIS)
Definition TaskManagerIO.cpp:141
TimerTask * getRunningTask()
Definition TaskManagerIO.h:392
taskid_t schedule(const TimePeriod &when, TimerFn timerFunction)
Definition TaskManagerIO.cpp:477
virtual void yieldForMicros(uint32_t micros)
Definition TaskManagerIO.cpp:202
taskid_t execute(Executable *execToDo, bool deleteWhenDone=false)
Definition TaskManagerIO.h:209
ISR_ATTR void triggerEvents()
Definition TaskManagerIO.h:282
void setInterruptCallback(InterruptFn handler)
Definition TaskManagerIO.cpp:447
TimerTask * getFirstTask()
Definition TaskManagerIO.h:364
Definition TaskManagerIO.h:78
Definition TaskTypes.h:163