diff --git a/src/wordclock_esp8266.cpp b/src/wordclock_esp8266.cpp index b3381f6..7a5978b 100644 --- a/src/wordclock_esp8266.cpp +++ b/src/wordclock_esp8266.cpp @@ -1,7 +1,7 @@ /** * Wordclock 2.0 - Wordclock with ESP8266 and NTP time update * - * created by techniccontroller 04.12.2021 + * created by techniccontroller 04.12.2021, refactored and additions by ranse 10.12.2024 * * components: * - ESP8266 @@ -60,10 +60,10 @@ ESP8266WebServer webserver(HTTP_PORT); // Webse // STATIC VARIABLES // ---------------------------------------------------------------------------------- // EEPROM values -static EepromLayout_st eeprom_buffer = {{0, 0, 0, 0}, {0U, 0U, 0U, false}, {0U, 0U, 0U, 0U}}; -static Brightness_st *const brightness_ps = &eeprom_buffer.brightness_values; -static Color_st *const colors_ps = &eeprom_buffer.color_values; -static NightModeTimes_st *const night_mode_times_ps = &eeprom_buffer.night_mode_times; +static EepromLayout_st eeprom_buffer_st = {{0, 0, 0, 0}, {0U, 0U, 0U, false}, {0U, 0U, 0U, 0U}}; +static Brightness_st *const brightness_cpst = &eeprom_buffer_st.brightness_values; +static Color_st *const colors_cpst = &eeprom_buffer_st.color_values; +static NightModeTimes_st *const night_mode_times_cpst = &eeprom_buffer_st.night_mode_times; // Games static Pong pong = Pong(&led_matrix, &logger); @@ -138,7 +138,7 @@ void setup() led_matrix.set_current_limit(CURRENT_LIMIT_LED); // Turn on minutes LEDs (blue) - led_matrix.set_min_indicator((uint8_t)0b1111, colors_24bit[6]); + led_matrix.set_min_indicator(MIN_LEDS_PATTERN, colors_24bit[6]); led_matrix.draw_on_matrix_instant(); /* Use WiFiMaanger for handling initial Wifi setup */ @@ -157,7 +157,7 @@ void setup() WiFi.persistent(true); // Turn off minutes LEDs - led_matrix.set_min_indicator((uint8_t)0b1111, 0); + led_matrix.set_min_indicator(MIN_LEDS_PATTERN, 0); led_matrix.draw_on_matrix_instant(); // init ESP8266 File manager (LittleFS) @@ -295,8 +295,8 @@ void log_data() logger.log_string("IP: " + WiFi.localIP().toString()); logger.log_string("Reset Reason: " + ESP.getResetReason()); - logger.log_string("Nightmode starts at: " + String(night_mode_times_ps->start_hour) + ":" + String(night_mode_times_ps->start_min)); - logger.log_string("Nightmode ends at: " + String(night_mode_times_ps->end_hour) + ":" + String(night_mode_times_ps->end_min)); + logger.log_string("Nightmode starts at: " + String(night_mode_times_cpst->start_hour) + ":" + String(night_mode_times_cpst->start_min)); + logger.log_string("Nightmode ends at: " + String(night_mode_times_cpst->end_hour) + ":" + String(night_mode_times_cpst->end_min)); logger.log_string("Brightness: " + String(((uint16_t)current_brightness * 100) / UINT8_MAX) + "%\n"); } @@ -363,7 +363,7 @@ void handle_current_state() // clear matrix led_matrix.flush(); // Turn on minutes LEDs (blue) - led_matrix.set_min_indicator((uint8_t)0b1111, colors_24bit[6]); + led_matrix.set_min_indicator((uint8_t)MIN_LEDS_PATTERN, colors_24bit[6]); led_matrix.draw_on_matrix_instant(); } break; @@ -379,7 +379,7 @@ void handle_current_state() // clear matrix led_matrix.flush(); // Turn on minutes LEDs (blue) - led_matrix.set_min_indicator((uint8_t)0b1111, colors_24bit[6]); + led_matrix.set_min_indicator((uint8_t)MIN_LEDS_PATTERN, colors_24bit[6]); led_matrix.draw_on_matrix_instant(); } break; @@ -482,11 +482,11 @@ void check_night_mode() int hours = tm_mgr.hour(); int minutes = tm_mgr.minute(); - if ((hours == night_mode_times_ps->start_hour) && (minutes == night_mode_times_ps->start_min)) + if ((hours == night_mode_times_cpst->start_hour) && (minutes == night_mode_times_cpst->start_min)) { set_night_mode(true); } - else if ((hours == night_mode_times_ps->end_hour) && (minutes == night_mode_times_ps->end_min)) + else if ((hours == night_mode_times_cpst->end_hour) && (minutes == night_mode_times_cpst->end_min)) { set_night_mode(false); } @@ -657,9 +657,9 @@ void set_main_color(uint8_t red, uint8_t green, uint8_t blue) main_color_clock = LEDMatrix::color_24bit(red, green, blue); // Update colors and save color settings to EEPROM - colors_ps->blue = blue; - colors_ps->red = red; - colors_ps->green = green; + colors_cpst->blue = blue; + colors_cpst->red = red; + colors_cpst->green = green; write_settings_to_EEPROM(); } @@ -670,9 +670,9 @@ void set_main_color(uint8_t red, uint8_t green, uint8_t blue) void draw_main_color() { - uint8_t red = colors_ps->red; - uint8_t green = colors_ps->green; - uint8_t blue = colors_ps->blue; + uint8_t red = colors_cpst->red; + uint8_t green = colors_cpst->green; + uint8_t blue = colors_cpst->blue; if ((int(red) + int(green) + int(blue)) < 50) { @@ -769,14 +769,14 @@ void handle_command() { String cmd_str = webserver.arg(0) + "-"; logger.log_string("Nightmode setting change via Webserver to: " + cmd_str); - night_mode_times_ps->start_hour = (int)split(cmd_str, '-', 0).toInt(); - night_mode_times_ps->start_min = (int)split(cmd_str, '-', 1).toInt(); - night_mode_times_ps->end_hour = (int)split(cmd_str, '-', 2).toInt(); - night_mode_times_ps->end_min = (int)split(cmd_str, '-', 3).toInt(); - brightness_ps->static_brightness = (uint8_t)split(cmd_str, '-', 4).toInt(); + night_mode_times_cpst->start_hour = (int)split(cmd_str, '-', 0).toInt(); + night_mode_times_cpst->start_min = (int)split(cmd_str, '-', 1).toInt(); + night_mode_times_cpst->end_hour = (int)split(cmd_str, '-', 2).toInt(); + night_mode_times_cpst->end_min = (int)split(cmd_str, '-', 3).toInt(); + brightness_cpst->static_brightness = (uint8_t)split(cmd_str, '-', 4).toInt(); flg_reset_wifi_creds = split(cmd_str, '-', 5).toInt() > 0 ? true : false; - brightness_ps->dyn_brightness_min = (uint8_t)split(cmd_str, '-', 6).toInt(); - brightness_ps->dyn_brightness_max = (uint8_t)split(cmd_str, '-', 7).toInt(); + brightness_cpst->dyn_brightness_min = (uint8_t)split(cmd_str, '-', 6).toInt(); + brightness_cpst->dyn_brightness_max = (uint8_t)split(cmd_str, '-', 7).toInt(); if (flg_reset_wifi_creds == true) { @@ -788,9 +788,9 @@ void handle_command() // Update EEPROM with new settings write_settings_to_EEPROM(); - logger.log_string("Nightmode starts at: " + String(night_mode_times_ps->start_hour) + ":" + String(night_mode_times_ps->start_min)); + logger.log_string("Nightmode starts at: " + String(night_mode_times_cpst->start_hour) + ":" + String(night_mode_times_cpst->start_min)); delay(10); - logger.log_string("Nightmode ends at: " + String(night_mode_times_ps->end_hour) + ":" + String(night_mode_times_ps->end_min)); + logger.log_string("Nightmode ends at: " + String(night_mode_times_cpst->end_hour) + ":" + String(night_mode_times_cpst->end_min)); delay(10); // Update brightness @@ -906,17 +906,17 @@ void handle_data_request() message += ","; message += "\"night_mode\":\"" + String(flg_night_mode) + "\""; message += ","; - message += "\"nightModeStart\":\"" + leading_zero2digit(night_mode_times_ps->start_hour) + "-" + leading_zero2digit(night_mode_times_ps->start_min) + "\""; + message += "\"nightModeStart\":\"" + leading_zero2digit(night_mode_times_cpst->start_hour) + "-" + leading_zero2digit(night_mode_times_cpst->start_min) + "\""; message += ","; - message += "\"nightModeEnd\":\"" + leading_zero2digit(night_mode_times_ps->end_hour) + "-" + leading_zero2digit(night_mode_times_ps->end_min) + "\""; + message += "\"nightModeEnd\":\"" + leading_zero2digit(night_mode_times_cpst->end_hour) + "-" + leading_zero2digit(night_mode_times_cpst->end_min) + "\""; message += ","; - message += "\"static_brightness\":\"" + String(brightness_ps->static_brightness) + "\""; + message += "\"static_brightness\":\"" + String(brightness_cpst->static_brightness) + "\""; message += ","; - message += "\"dyn_brightness\":\"" + String(brightness_ps->flg_dynamic_brightness) + "\""; + message += "\"dyn_brightness\":\"" + String(brightness_cpst->flg_dynamic_brightness) + "\""; message += ","; - message += "\"min_brightness\":\"" + String(brightness_ps->dyn_brightness_min) + "\""; + message += "\"min_brightness\":\"" + String(brightness_cpst->dyn_brightness_min) + "\""; message += ","; - message += "\"max_brightness\":\"" + String(brightness_ps->dyn_brightness_max) + "\""; + message += "\"max_brightness\":\"" + String(brightness_cpst->dyn_brightness_max) + "\""; } message += "}"; webserver.send(200, "application/json", message); @@ -942,7 +942,7 @@ void set_night_mode(bool state) */ void set_dynamic_brightness(bool state) { - brightness_ps->flg_dynamic_brightness = state; + brightness_cpst->flg_dynamic_brightness = state; } /** @@ -1012,7 +1012,7 @@ uint8_t calculate_dynamic_brightness(uint8_t min_brightness, uint8_t max_brightn */ void read_settings_from_EEPROM() { - EEPROM.get(0, eeprom_buffer); + EEPROM.get(0, eeprom_buffer_st); } /** @@ -1023,7 +1023,7 @@ void read_settings_from_EEPROM() void write_settings_to_EEPROM() { // Copy EEPROM buffer - EEPROM.put(0, eeprom_buffer); + EEPROM.put(0, eeprom_buffer_st); // Commit changes EEPROM.commit(); } @@ -1037,17 +1037,17 @@ uint8_t update_brightness() { uint8_t new_brightness = 0; - if (brightness_ps->flg_dynamic_brightness == true) + if (brightness_cpst->flg_dynamic_brightness == true) { - new_brightness = calculate_dynamic_brightness(brightness_ps->dyn_brightness_min, - brightness_ps->dyn_brightness_max, + new_brightness = calculate_dynamic_brightness(brightness_cpst->dyn_brightness_min, + brightness_cpst->dyn_brightness_max, tm_mgr.hour(), tm_mgr.minute(), tm_mgr.isdst()); } else // use static brightness { - new_brightness = brightness_ps->static_brightness; + new_brightness = brightness_cpst->static_brightness; } // now set new brightness led_matrix.set_brightness(new_brightness); @@ -1063,30 +1063,30 @@ uint8_t update_brightness() void limit_value_ranges() { // Range limits - brightness_ps->dyn_brightness_min = RANGE_LIMIT(brightness_ps->dyn_brightness_min, - MIN_BRIGHTNESS, - brightness_ps->dyn_brightness_max - 1); // minimum brightness - brightness_ps->dyn_brightness_max = RANGE_LIMIT(brightness_ps->dyn_brightness_max, - brightness_ps->dyn_brightness_min + 1, - MAX_BRIGHTNESS); // maximum brightness - brightness_ps->static_brightness = RANGE_LIMIT(brightness_ps->static_brightness, - MIN_BRIGHTNESS, - MAX_BRIGHTNESS); // static brightness + brightness_cpst->dyn_brightness_min = RANGE_LIMIT(brightness_cpst->dyn_brightness_min, + MIN_BRIGHTNESS, + brightness_cpst->dyn_brightness_max - 1); // minimum brightness + brightness_cpst->dyn_brightness_max = RANGE_LIMIT(brightness_cpst->dyn_brightness_max, + brightness_cpst->dyn_brightness_min + 1, + MAX_BRIGHTNESS); // maximum brightness + brightness_cpst->static_brightness = RANGE_LIMIT(brightness_cpst->static_brightness, + MIN_BRIGHTNESS, + MAX_BRIGHTNESS); // static brightness - night_mode_times_ps->start_hour = RANGE_LIMIT_SUB(night_mode_times_ps->start_hour, + night_mode_times_cpst->start_hour = RANGE_LIMIT_SUB(night_mode_times_cpst->start_hour, + 0, + HOUR_MAX, + NIGHTMODE_START_HR); + night_mode_times_cpst->start_min = RANGE_LIMIT_SUB(night_mode_times_cpst->start_min, + 0, + MINUTE_MAX, + NIGHTMODE_START_MIN); + night_mode_times_cpst->end_hour = RANGE_LIMIT_SUB(night_mode_times_cpst->end_hour, 0, HOUR_MAX, - NIGHTMODE_START_HR); - night_mode_times_ps->start_min = RANGE_LIMIT_SUB(night_mode_times_ps->start_min, + NIGHTMODE_END_HR); + night_mode_times_cpst->end_min = RANGE_LIMIT_SUB(night_mode_times_cpst->end_min, 0, MINUTE_MAX, - NIGHTMODE_START_MIN); - night_mode_times_ps->end_hour = RANGE_LIMIT_SUB(night_mode_times_ps->end_hour, - 0, - HOUR_MAX, - NIGHTMODE_END_HR); - night_mode_times_ps->end_min = RANGE_LIMIT_SUB(night_mode_times_ps->end_min, - 0, - MINUTE_MAX, - NIGHTMODE_END_MIN); + NIGHTMODE_END_MIN); }