diff --git a/lambda/rules.c b/lambda/rules.c index d301da1..7429615 100644 --- a/lambda/rules.c +++ b/lambda/rules.c @@ -164,6 +164,7 @@ if (getHeaterState() != heaterStateFault) { setHeaterState(heaterStateOn); } + setAirgate(100); *fired = true; } if (state == burning_down && meas.tempI < TEMP_AIRGATE_0) { diff --git a/lambda/scheduler.c b/lambda/scheduler.c index a0a8024..4de05af 100644 --- a/lambda/scheduler.c +++ b/lambda/scheduler.c @@ -16,9 +16,9 @@ #include "interrupts.h" static Task tasks[] = { - {0, 0, 0, true}, - {0, 0, 0, true}, - {0, 0, 0, true} + {0, 0, true}, + {0, 0, true}, + {0, 0, true} }; bool scheduleTask(void (*func)(void), uint16_t const delay) { @@ -26,8 +26,7 @@ for (int i = 0; i < ARRAY_LENGTH(tasks); i++) { if (tasks[i].done) { tasks[i].func = func; - tasks[i].delay = delay; - tasks[i].time = getTime(); + tasks[i].time = getTime() + delay; tasks[i].done = false; scheduled = true; break; @@ -39,7 +38,7 @@ void runTasks(void) { for (int i = 0; i < ARRAY_LENGTH(tasks); i++) { - if (! tasks[i].done && getTime() - tasks[i].time >= tasks[i].delay) { + if (! tasks[i].done && getTime() >= tasks[i].time) { tasks[i].func(); tasks[i].done = true; } diff --git a/lambda/scheduler.h b/lambda/scheduler.h index ec1fe8b..4295f29 100644 --- a/lambda/scheduler.h +++ b/lambda/scheduler.h @@ -28,7 +28,6 @@ */ typedef struct { void (*func)(void); - uint16_t delay; uint32_t time; bool done; } Task;