encapsulate hourFormat24 under a struct

This commit is contained in:
Nicu Hodos 2025-02-10 12:00:31 +01:00
parent dbaae667ec
commit f10c456f68
2 changed files with 17 additions and 10 deletions

View File

@ -43,7 +43,7 @@ namespace Devices {
auto hourFormatMqtt = Builder<Switch>::instance(new Switch{ "Format 24h", "format_24h",
[](const char* msg) {
strcmp("ON", msg) == 0 ? Display::changeHourFormat24(true) : Display::changeHourFormat24(false);
Display::hourFormat24 = (strcmp("ON", msg) == 0);
}
}).restoreStateFromCommand().build();
Number* displayTimerMqtt = Builder<Number>::instance(new Number{ "Timer duration", "timer_duration",
@ -131,7 +131,7 @@ namespace Devices {
}
void setup() {
Display::hourFormatChangedCallback = []{
Display::hourFormat24.changedCallback = []{
hourFormatMqtt->updateState(Display::hourFormat24);
};
Display::brightness.changedCallback = []{

View File

@ -51,8 +51,21 @@ namespace Display {
tDisplayTime.enable();
});
bool hourFormat24 = false;
void (*hourFormatChangedCallback)();
struct HourFormat {
void (*changedCallback)();
operator bool() {
return format24;
}
void operator=(bool value) {
format24 = value;
tDisplayTime.restart();
if (changedCallback) changedCallback();
}
private:
bool format24 = false;
} hourFormat24;
// Create display object
Adafruit_7segment clockDisplay = Adafruit_7segment();
@ -225,12 +238,6 @@ namespace Display {
clockDisplay.writeDisplay();
}
void changeHourFormat24(bool format24) {
hourFormat24 = format24;
tDisplayTime.restart();
if (hourFormatChangedCallback) hourFormatChangedCallback();
}
void setup() {
clockDisplay.begin(DISPLAY_ADDRESS);
clockDisplay.setBrightness(brightness);