move logic for deciding enabling a task inside the controller
This commit is contained in:
parent
ca31851afe
commit
598638239f
@ -77,7 +77,7 @@ namespace Devices {
|
||||
.addSecondary(
|
||||
Builder<Button>::instance(new Button{"Display sensor data", "display_sensor_data",
|
||||
[](const char* msg) {
|
||||
if (strcmp("PRESS", msg) == 0 && !Display::tDisplaySensor.isEnabled()) {
|
||||
if (strcmp("PRESS", msg) == 0) {
|
||||
Bme::data.readAll();
|
||||
Display::displayTask.activate(Display::tDisplaySensor);
|
||||
};
|
||||
@ -87,7 +87,7 @@ namespace Devices {
|
||||
.addSecondary(
|
||||
Builder<Button>::instance(new Button{"Display date", "display_date",
|
||||
[](const char* msg) {
|
||||
if (strcmp("PRESS", msg) == 0 && !Display::tDisplayDate.isEnabled()) {
|
||||
if (strcmp("PRESS", msg) == 0) {
|
||||
Display::displayTask.activate(Display::tDisplayDate);
|
||||
};
|
||||
}
|
||||
@ -96,7 +96,7 @@ namespace Devices {
|
||||
.addSecondary(
|
||||
Builder<Button>::instance(new Button{"Display remaining timer", "display_remaining_timer",
|
||||
[](const char* msg) {
|
||||
if (strcmp("PRESS", msg) == 0 && !Display::tDisplayTimer.isEnabled()) {
|
||||
if (strcmp("PRESS", msg) == 0) {
|
||||
Display::displayTask.activate(Display::tDisplayTimer);
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,17 +25,17 @@ namespace Display {
|
||||
return *perm;
|
||||
}
|
||||
|
||||
Task& activate(Task& task) {
|
||||
bool activate(Task& task) {
|
||||
if (task.isEnabled()) return false;
|
||||
if (temp) temp->cancel();
|
||||
if (perm) perm->cancel();
|
||||
if (task.getIterations() == TASK_FOREVER) {
|
||||
task.enable();
|
||||
perm = &task;
|
||||
return task.enable();
|
||||
} else {
|
||||
task.restart();
|
||||
temp = &task;
|
||||
return task.restart();
|
||||
}
|
||||
return task;
|
||||
}
|
||||
|
||||
void restorePerm() {
|
||||
|
||||
@ -28,9 +28,7 @@ void turnLed(bool on = true) {
|
||||
|
||||
Task tButton(TASK_IMMEDIATE, TASK_ONCE,
|
||||
[]() {
|
||||
if (Display::tDisplaySensor.isEnabled()) return;
|
||||
Bme::data.readAll();
|
||||
Display::displayTask.activate(Display::tDisplaySensor);
|
||||
if (Display::displayTask.activate(Display::tDisplaySensor)) Bme::data.readAll();
|
||||
}, &ts);
|
||||
Task tLed(TASK_IMMEDIATE, TASK_ONCE,
|
||||
[]() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user