From 683032219edc7ac725723136a22e07775205cd66 Mon Sep 17 00:00:00 2001 From: Matheus Afonso Martins Moreira Date: Tue, 17 Sep 2024 17:02:16 -0300 Subject: [PATCH] Revert PR #471 - add DST to sunrise/sunset The DST code has not yet been fully tested, the upcoming movement refactor is upon us and it will integrate with the micro timezone library anyway. Revert it so that next can be merged into main. This reverts commit 0cc28b9811e76de3dc2cc2919d5309cfa48edfeb, reversing changes made to 337864eb543c9b5cd83667ab0eafb476f63af54c. --- .../complication/sunrise_sunset_face.c | 28 +++++++------------ .../complication/sunrise_sunset_face.h | 15 ++++------ 2 files changed, 15 insertions(+), 28 deletions(-) diff --git a/movement/watch_faces/complication/sunrise_sunset_face.c b/movement/watch_faces/complication/sunrise_sunset_face.c index 4c77fe5..4a3c884 100644 --- a/movement/watch_faces/complication/sunrise_sunset_face.c +++ b/movement/watch_faces/complication/sunrise_sunset_face.c @@ -49,29 +49,20 @@ static void _sunrise_sunset_face_update(movement_settings_t *settings, sunrise_s double rise, set, minutes, seconds; bool show_next_match = false; movement_location_t movement_location; - int16_t tz; - watch_date_time date_time = watch_rtc_get_date_time(); // the current local date / time - if (state->longLatToUse == 0 || _location_count <= 1) { - tz = get_timezone_offset(settings->bit.time_zone, date_time); + if (state->longLatToUse == 0 || _location_count <= 1) movement_location = (movement_location_t) watch_get_backup_data(1); - } else{ movement_location.bit.latitude = longLatPresets[state->longLatToUse].latitude; movement_location.bit.longitude = longLatPresets[state->longLatToUse].longitude; - if (longLatPresets[state->longLatToUse].uses_dst && dst_occurring(date_time)) - tz = movement_timezone_dst_offsets[longLatPresets[state->longLatToUse].timezone]; - else - tz = movement_timezone_offsets[longLatPresets[state->longLatToUse].timezone]; } if (movement_location.reg == 0) { - watch_clear_all_indicators(); - watch_clear_colon(); watch_display_string("RI no Loc", 0); return; } - watch_date_time utc_now = watch_utility_date_time_convert_zone(date_time, tz * 60, 0); // the current date / time in UTC + watch_date_time date_time = watch_rtc_get_date_time(); // the current local date / time + watch_date_time utc_now = watch_utility_date_time_convert_zone(date_time, state->tz * 60, 0); // the current date / time in UTC watch_date_time scratch_time; // scratchpad, contains different values at different times scratch_time.reg = utc_now.reg; @@ -86,7 +77,7 @@ static void _sunrise_sunset_face_update(movement_settings_t *settings, sunrise_s // sunriset returns the rise/set times as signed decimal hours in UTC. // this can mean hours below 0 or above 31, which won't fit into a watch_date_time struct. // to deal with this, we set aside the offset in hours, and add it back before converting it to a watch_date_time. - double hours_from_utc = ((double)tz) / 60.0; + double hours_from_utc = ((double)state->tz) / 60.0; // we loop twice because if it's after sunset today, we need to recalculate to display values for tomorrow. for(int i = 0; i < 2; i++) { @@ -343,6 +334,7 @@ void sunrise_sunset_face_activate(movement_settings_t *settings, void *context) movement_location_t movement_location = (movement_location_t) watch_get_backup_data(1); state->working_latitude = _sunrise_sunset_face_struct_from_latlon(movement_location.bit.latitude); state->working_longitude = _sunrise_sunset_face_struct_from_latlon(movement_location.bit.longitude); + state->tz = get_timezone_offset(settings->bit.time_zone, watch_rtc_get_date_time()); } bool sunrise_sunset_face_loop(movement_event_t event, movement_settings_t *settings, void *context) { @@ -407,11 +399,11 @@ bool sunrise_sunset_face_loop(movement_event_t event, movement_settings_t *setti break; case EVENT_ALARM_LONG_PRESS: if (state->page == 0) { - if (state->longLatToUse != 0) { - state->longLatToUse = 0; - _sunrise_sunset_face_update(settings, state); - break; - } + if (state->longLatToUse != 0) { + state->longLatToUse = 0; + _sunrise_sunset_face_update(settings, state); + break; + } state->page++; state->active_digit = 0; watch_clear_display(); diff --git a/movement/watch_faces/complication/sunrise_sunset_face.h b/movement/watch_faces/complication/sunrise_sunset_face.h index d100dd4..f216a2f 100644 --- a/movement/watch_faces/complication/sunrise_sunset_face.h +++ b/movement/watch_faces/complication/sunrise_sunset_face.h @@ -52,14 +52,13 @@ typedef struct { uint8_t rise_index; uint8_t active_digit; bool location_changed; + int16_t tz; watch_date_time rise_set_expires; sunrise_sunset_lat_lon_settings_t working_latitude; sunrise_sunset_lat_lon_settings_t working_longitude; uint8_t longLatToUse; } sunrise_sunset_state_t; -#define SUNRISE_USE_LOCAL_TZ 0xFF - void sunrise_sunset_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr); void sunrise_sunset_face_activate(movement_settings_t *settings, void *context); bool sunrise_sunset_face_loop(movement_event_t event, movement_settings_t *settings, void *context); @@ -77,18 +76,14 @@ typedef struct { char name[2]; int16_t latitude; int16_t longitude; - uint8_t timezone; // References element in movement_timezone_offsets - bool uses_dst; } long_lat_presets_t; -// Locations must either use the same timezone as local time, or not observe DST. static const long_lat_presets_t longLatPresets[] = { - { .name = " "}, // Default, the long, lat, and timezone get replaced by what's set in the watch -// { .name = "Ny", .latitude = 4072, .longitude = -7401, .timezone = 33, .uses_dst = true }, // New York City, NY -// { .name = "LA", .latitude = 3405, .longitude = -11824, .timezone = 30, .uses_dst = true }, // Los Angeles, CA -// { .name = "dE", .latitude = 4221, .longitude = -8305, .timezone = 33, .uses_dst = true }, // Detroit, MI -// { .name = "To", .latitude = 3567, .longitude = 13965, .timezone = 15, .uses_dst = false }, // Tokyo, JP + { .name = " "}, // Default, the long and lat get replaced by what's set in the watch +// { .name = "Ny", .latitude = 4072, .longitude = -7401 }, // New York City, NY +// { .name = "LA", .latitude = 3405, .longitude = -11824 }, // Los Angeles, CA +// { .name = "dE", .latitude = 4221, .longitude = -8305 }, // Detroit, MI }; #endif // SUNRISE_SUNSET_FACE_H_