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