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

1
Kernel.h

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

Loading…
Cancel
Save