PixelKey
NeoPixel USB Key
Loading...
Searching...
No Matches
Task Manager Internals

Macros

#define TASK_FLAG(i)   ((task_id_t) FLAG(i))
 
#define XTASK(task, fn, doc)   TASK_ID_ ## task = FLAG(TASK_ ## task) /*!< Flag for @ref TASK_ ## task */,
 
#define XTASK(task, fn, doc)   void fn (void) __attribute__ (( weak, alias ("default_task") ));
 
#define XTASK(task, fn, doc)   [TASK_ ## task] = fn,
 

Enumerations

enum  task_id_t {
  TASK_ID_NONE = 0 , TASK_ID_REBOOT = ( 1 << TASK_REBOOT ) , TASK_ID_FRAME_TX = ( 1 << TASK_FRAME_TX ) , TASK_ID_FRAME_RENDER = ( 1 << TASK_FRAME_RENDER ) ,
  TASK_ID_TERMINAL_CONNECTED = ( 1 << TASK_TERMINAL_CONNECTED ) , TASK_ID_CMD_RX = ( 1 << TASK_CMD_RX ) , TASK_ID_CMD_HANDLER = ( 1 << TASK_CMD_HANDLER ) , TASK_ID_CMD_PROMPT = ( 1 << TASK_CMD_PROMPT )
}
 

Functions

void pixelkey_reboot (void)
 
void tasks_queue (task_t task)
 Queue a task for execution. More...
 
task_status_t tasks_status_get (task_t task)
 Gets the status of a given task. More...
 
void tasks_run (task_fn_t idle_task)
 Main task runner loop. More...
 

Variables

static volatile task_id_t queued_tasks = TASK_ID_NONE
 
static volatile task_id_t pending_tasks = TASK_ID_NONE
 
static volatile task_t running_task = TASK_UNDEFINED
 

Detailed Description

Macro Definition Documentation

◆ TASK_FLAG

#define TASK_FLAG (   i)    ((task_id_t) FLAG(i))

Create a task_id_t for a given task index.

Enumeration Type Documentation

◆ task_id_t

enum task_id_t

Task flags.

Enumerator
TASK_ID_NONE 

No task is selected.

TASK_ID_REBOOT 

Flag for TASK_REBOOT

TASK_ID_FRAME_TX 

Flag for TASK_FRAME_TX

TASK_ID_FRAME_RENDER 

Flag for TASK_FRAME_RENDER

TASK_ID_TERMINAL_CONNECTED 

Flag for TASK_TERMINAL_CONNECTED

TASK_ID_CMD_RX 

Flag for TASK_CMD_RX

TASK_ID_CMD_HANDLER 

Flag for TASK_CMD_HANDLER

TASK_ID_CMD_PROMPT 

Flag for TASK_CMD_PROMPT

Function Documentation

◆ tasks_queue()

void tasks_queue ( task_t  task)

Queue a task for execution.

Parameters
taskThe task to queue.

◆ tasks_run()

void tasks_run ( task_fn_t  idle_task)

Main task runner loop.

Priority, round-robin task manager. Never exits.

Parameters
[in]idle_taskIdle function executed when no tasks are queued, specify NULL to ignore.

◆ tasks_status_get()

task_status_t tasks_status_get ( task_t  task)

Gets the status of a given task.

Parameters
taskThe task to check.
Returns
The task status.

Variable Documentation

◆ pending_tasks

volatile task_id_t pending_tasks = TASK_ID_NONE
static

Tasks pending execution awaiting higher priority tasks.

◆ queued_tasks

volatile task_id_t queued_tasks = TASK_ID_NONE
static

Tasks waiting to execute.

◆ running_task

volatile task_t running_task = TASK_UNDEFINED
static

Current running task.