Browse Source

Add REDRAW signal to Kernel

master
Adam Pippin 4 years ago
parent
commit
21ad1679f7
  1. 12
      Kernel.cpp
  2. 1
      Kernel.h

12
Kernel.cpp

@ -28,7 +28,6 @@ void Kernel_setup()
{
last_tick_start = millis();
last_tick_duration = 0;
//Serial.begin(115200);
}
void Kernel_start(int (*callback)(int, unsigned int), unsigned long interval)
@ -223,10 +222,13 @@ void Kernel_tick()
// If the process has any non-masked signals pending, run it
if ((tasks[i].signal & tasks[i].signal_mask) != 0)
{
// Run the task
int task_return = (*tasks[i].callback)(tasks[i].pid, tasks[i].signal);
// Reset the signal
unsigned int signals = tasks[i].signal;
tasks[i].signal = SIGNAL_NONE;
// Run the task
int task_return = (*tasks[i].callback)(tasks[i].pid, signals);
// If the tasks's return value was non-zero, it has exited.
if (task_return != 0)
@ -263,7 +265,7 @@ void Kernel_tick()
bool signals_pending = false;
for (int i=0; i<MAX_TASKS; i++)
{
if (tasks[i].signal != SIGNAL_NONE)
if ((tasks[i].signal & tasks[i].signal_mask) != 0)
{
signals_pending = true;
}

1
Kernel.h

@ -56,6 +56,7 @@ unsigned long Kernel_get_last_tick_duration();
#define SIGNAL_STOP 0x0004
#define SIGNAL_INPUT_A 0x0008
#define SIGNAL_INPUT_B 0x0010
#define SIGNAL_REDRAW 0x0020
#define KERNEL_INPUT_BUTTON_A 0
#define KERNEL_INPUT_BUTTON_B 1

Loading…
Cancel
Save