PixelKey
NeoPixel USB Key
Loading...
Searching...
No Matches
hal_tasks.c File Reference
#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include "hal_data.h"
#include "hal_device.h"
#include "hal_tasks.h"

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