#ifndef SYSTEM_TASK_H_ #define SYSTEM_TASK_H_ #include "stm8s.h" typedef struct sys_task{ uint8_t status; uint16_t cycle; void (*taskPointer)(void); uint32_t lastCounterHeld; uint8_t startUpOffset; }sys_task_t; typedef enum task_status{ Uninitialized = 0U, // not ready for kick-start, default status Active, // already running Deactive // initialized but not running, task "ready" }task_status_t; typedef enum task_numbers{ Task_00 = 0U, Task_01, Task_02, Task_03, Task_04, Task_05, Task_06, Task_07, Task_08, Task_09, Task_10, Task_11, Task_12, Task_13, Task_14, Task_15 }task_number_t; #define TASK_STARTED ((uint8_t)(0x00)) #define TASK_NOT_READY ((uint8_t)(0x01)) #define TASK_ALREADY_RUNNING ((uint8_t)(0x02)) #define TASK_ALREADY_STOPPED ((uint8_t)(0x03)) #define TASK_INITIALIZED ((uint8_t)(0x04)) uint8_t startTask(uint8_t, uint8_t); uint8_t stopTask(uint8_t); uint8_t configTask(uint8_t, void (*)(void), uint16_t); void eliminateTask(uint8_t); void taskHandler(void); extern void taskA(void); extern void taskB(void); #endif /* SYSTEM_TASK_H_ */