Библиотека LUFA (раннее название MyUSB) версия 101122
|
Простой шедулер (планировщик) псевдозадач с алгоритмом round-robbin (перебор задач по кругу). More...
#include <stdint.h>
#include <stdbool.h>
#include <util/atomic.h>
#include "../Common/Common.h"
Data Structures | |
struct | TaskEntry_t |
Структура записи задачи для списка. More... | |
Defines | |
#define | TASK(name) void name (void) |
#define | TASK_LIST TaskEntry_t Scheduler_TaskList[] = |
#define | TASK_MAX_DELAY (MAX_DELAYCTR_COUNT - 1) |
#define | TASK_RUN true |
#define | TASK_STOP false |
Typedefs | |
typedef void(* | TaskPtr_t )(void) |
typedef uint16_t | SchedulerDelayCounter_t |
Functions | |
void | Scheduler_Start (void) |
void | Scheduler_Init (void) |
static void | Scheduler_ResetDelay (SchedulerDelayCounter_t *const DelayCounter) ATTR_NON_NULL_PTR_ARG(1) ATTR_ALWAYS_INLINE |
bool | Scheduler_HasDelayElapsed (const uint16_t Delay, SchedulerDelayCounter_t *const DelayCounter) ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(2) |
void | Scheduler_SetTaskMode (const TaskPtr_t Task, const bool TaskStatus) |
void | Scheduler_SetGroupTaskMode (const uint8_t GroupID, const bool TaskStatus) |
Variables | |
exter TaskEntry_t | Scheduler_TaskList [] |
volatile uint8_t | Scheduler_TotalTasks |
volatile SchedulerDelayCounter_t | Scheduler_TickCounter |
Простейший планироващик с алгоритмом кооперативной передачи управления задачами по кругу для использования в простых проектах, где не нужно выполнять задачи реального времени (real-time). Каждая задача выполняется последовательно, и может быть разрешена или запрещена индивидуально или группой.