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 0cc28b9811, reversing
changes made to 337864eb54.
This commit is contained in:
Matheus Afonso Martins Moreira 2024-09-17 17:02:16 -03:00
parent ea5efb4d82
commit 683032219e
2 changed files with 15 additions and 28 deletions

View file

@ -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();

View file

@ -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_