embedded-software
reusable software modules for embedded systems
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
task.h
Go to the documentation of this file.
1 #ifndef _TASK_H_
2 #define _TASK_H_
3 
37 #include <stdint.h>
38 #include "project_settings.h"
39 
40 #ifndef USE_MODULE_TASK
41 #warning "USE_MODULE_TASK not defined in project_settings.h. Other modules won't be able to utilize this module."
42 #endif
43 
44 #ifdef USE_MODULE_SUBSYS
45 #include "subsys.h"
46 #endif
47 
48 // Make sure timing.h is included
49 #include "timing.h"
50 
53 typedef void (*task_fn_pointer_input_t)(void *);
56 typedef void (*task_t)(void);
57 
66 #ifndef TASK_MAX_LENGTH
67 #define TASK_MAX_LENGTH 20
68 #endif
69 
70 
81 #ifndef TASK_ROLL_TIME
82 #define TASK_ROLL_TIME (TIME_MAX-(uint32_t)10*24*60*60*1000) // roll 10 days before the timer would naturally roll
83 #endif
84 
89 void Task_Init(void);
90 
103 void SystemTick(void);
104 
121 void Task_Queue(task_t fn, void * pointer);
122 
148 int8_t Task_Schedule(task_t fn, void * pointer,
149  uint32_t delay, uint32_t period);
150 
156 int8_t Task_SetIdleTask(task_t fn);
157 
158 
180 void Task_Remove(task_t fn, void * pointer);
181 
195 void WaitMs(uint32_t wait);
196 
202 uint8_t Task_IsScheduled(task_t fn);
203 
212 void Task_ChangePeriod(task_t fn, uint32_t period, uint8_t update_next_time);
213 
216 #endif // _TASK_H_
void Task_Init(void)
Definition: task.c:38
void Task_Remove(task_t fn, void *pointer)
Removes Task.
Definition: task.c:135
void Task_ChangePeriod(task_t fn, uint32_t period, uint8_t update_next_time)
Definition: task.c:187
int8_t Task_Schedule(task_t fn, void *pointer, uint32_t delay, uint32_t period)
Adds task to be scheduled for execution.
Definition: task.c:111
uint8_t Task_IsScheduled(task_t fn)
Definition: task.c:180
void WaitMs(uint32_t wait)
Definition: task.c:169
void(* task_t)(void)
Definition: task.h:56
void(* task_fn_pointer_input_t)(void *)
Definition: task.h:53
void Task_Queue(task_t fn, void *pointer)
Adds a function to the task queue.
Definition: task.c:101
const int delay
Definition: hal_seven_seg.c:25
void SystemTick(void)
Definition: task.c:55
int8_t Task_SetIdleTask(task_t fn)
Sets a task to run whenever the task queue is empty / no tasks due to run.
Definition: task.c:125