DST roll is now a global variable in watch_rtc
This commit is contained in:
@@ -280,31 +280,16 @@ void clock_face_resign(movement_settings_t *settings, void *context) {
|
||||
(void) context;
|
||||
}
|
||||
|
||||
static void check_and_act_on_daylight_savings(movement_settings_t *settings, watch_date_time date_time) {
|
||||
if (!settings ->bit.dst_active) return;
|
||||
uint8_t dst_result = get_dst_status(date_time);
|
||||
|
||||
if (settings ->bit.dst_skip_rolling_back && dst_result == DST_ENDED) {
|
||||
settings ->bit.dst_skip_rolling_back = false;
|
||||
return;
|
||||
}
|
||||
else if (dst_result == DST_ENDING && !settings ->bit.dst_skip_rolling_back) {
|
||||
settings ->bit.dst_skip_rolling_back = true;
|
||||
date_time.unit.hour = (date_time.unit.hour + 24 - 1) % 24;
|
||||
watch_rtc_set_date_time(date_time);
|
||||
return;
|
||||
}
|
||||
else if (dst_result == DST_STARTING) {
|
||||
date_time.unit.hour = (date_time.unit.hour + 1) % 24;
|
||||
watch_rtc_set_date_time(date_time);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
bool clock_face_wants_background_task(movement_settings_t *settings, void *context) {
|
||||
(void) settings;
|
||||
clock_state_t *state = (clock_state_t *) context;
|
||||
watch_date_time date_time = watch_rtc_get_date_time();
|
||||
check_and_act_on_daylight_savings(settings, date_time);
|
||||
uint8_t hour_dst = check_and_act_on_daylight_savings(date_time);
|
||||
if(hour_dst != date_time.unit.hour) {
|
||||
char buf[3 + 1];
|
||||
sprintf(buf, "%2d", hour_dst);
|
||||
watch_display_string(buf, 4);
|
||||
}
|
||||
if (!state->time_signal_enabled) return false;
|
||||
|
||||
return date_time.unit.minute == 0;
|
||||
|
||||
@@ -230,9 +230,9 @@ void minute_repeater_decimal_face_resign(movement_settings_t *settings, void *co
|
||||
bool minute_repeater_decimal_face_wants_background_task(movement_settings_t *settings, void *context) {
|
||||
(void) settings;
|
||||
minute_repeater_decimal_state_t *state = (minute_repeater_decimal_state_t *)context;
|
||||
if (!state->signal_enabled) return false;
|
||||
|
||||
watch_date_time date_time = watch_rtc_get_date_time();
|
||||
check_and_act_on_daylight_savings(date_time);
|
||||
if (!state->signal_enabled) return false;
|
||||
|
||||
return date_time.unit.minute == 0;
|
||||
}
|
||||
|
||||
@@ -213,9 +213,9 @@ void repetition_minute_face_resign(movement_settings_t *settings, void *context)
|
||||
bool repetition_minute_face_wants_background_task(movement_settings_t *settings, void *context) {
|
||||
(void) settings;
|
||||
repetition_minute_state_t *state = (repetition_minute_state_t *)context;
|
||||
if (!state->signal_enabled) return false;
|
||||
|
||||
watch_date_time date_time = watch_rtc_get_date_time();
|
||||
check_and_act_on_daylight_savings(date_time);
|
||||
if (!state->signal_enabled) return false;
|
||||
|
||||
return date_time.unit.minute == 0;
|
||||
}
|
||||
|
||||
@@ -214,9 +214,9 @@ void simple_clock_bin_led_face_resign(movement_settings_t *settings, void *conte
|
||||
bool simple_clock_bin_led_face_wants_background_task(movement_settings_t *settings, void *context) {
|
||||
(void) settings;
|
||||
simple_clock_bin_led_state_t *state = (simple_clock_bin_led_state_t *)context;
|
||||
if (!state->signal_enabled) return false;
|
||||
|
||||
watch_date_time date_time = watch_rtc_get_date_time();
|
||||
check_and_act_on_daylight_savings(date_time);
|
||||
if (!state->signal_enabled) return false;
|
||||
|
||||
return date_time.unit.minute == 0;
|
||||
}
|
||||
|
||||
@@ -150,31 +150,15 @@ void simple_clock_face_resign(movement_settings_t *settings, void *context) {
|
||||
(void) context;
|
||||
}
|
||||
|
||||
static void check_and_act_on_daylight_savings(movement_settings_t *settings, watch_date_time date_time) {
|
||||
if (!settings ->bit.dst_active) return;
|
||||
uint8_t dst_result = get_dst_status(date_time);
|
||||
|
||||
if (settings ->bit.dst_skip_rolling_back && (dst_result == DST_ENDED)) {
|
||||
settings ->bit.dst_skip_rolling_back = false;
|
||||
return;
|
||||
}
|
||||
else if (dst_result == DST_ENDING && !settings ->bit.dst_skip_rolling_back) {
|
||||
settings ->bit.dst_skip_rolling_back = true;
|
||||
date_time.unit.hour = (date_time.unit.hour + 24 - 1) % 24;
|
||||
watch_rtc_set_date_time(date_time);
|
||||
return;
|
||||
}
|
||||
else if (dst_result == DST_STARTING) {
|
||||
date_time.unit.hour = (date_time.unit.hour + 1) % 24;
|
||||
watch_rtc_set_date_time(date_time);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
bool simple_clock_face_wants_background_task(movement_settings_t *settings, void *context) {
|
||||
simple_clock_state_t *state = (simple_clock_state_t *)context;
|
||||
date_time = watch_rtc_get_date_time();
|
||||
check_and_act_on_daylight_savings(settings, date_time);
|
||||
watch_date_time date_time = watch_rtc_get_date_time();
|
||||
uint8_t hour_dst = check_and_act_on_daylight_savings(date_time);
|
||||
if(hour_dst != date_time.unit.hour) {
|
||||
char buf[3 + 1];
|
||||
sprintf(buf, "%2d", hour_dst);
|
||||
watch_display_string(buf, 4);
|
||||
}
|
||||
if (!state->signal_enabled) return false;
|
||||
|
||||
return date_time.unit.minute == 0;
|
||||
|
||||
@@ -72,7 +72,6 @@ static void _handle_alarm_button(movement_settings_t *settings, watch_date_time
|
||||
break;
|
||||
}
|
||||
watch_rtc_set_date_time(date_time);
|
||||
settings->bit.dst_skip_rolling_back = false;
|
||||
}
|
||||
|
||||
static void _abort_quick_ticks() {
|
||||
|
||||
@@ -94,7 +94,6 @@ bool set_time_hackwatch_face_loop(movement_event_t event, movement_settings_t *s
|
||||
}
|
||||
date_time_settings.unit.second = 0;
|
||||
watch_rtc_set_date_time(date_time_settings);
|
||||
settings->bit.dst_skip_rolling_back = false;
|
||||
}
|
||||
break;
|
||||
case EVENT_ALARM_BUTTON_DOWN:
|
||||
@@ -137,7 +136,6 @@ bool set_time_hackwatch_face_loop(movement_event_t event, movement_settings_t *s
|
||||
}
|
||||
if (current_page != 2) { // Do not set time when we are at seconds, it was already set previously
|
||||
watch_rtc_set_date_time(date_time_settings);
|
||||
settings->bit.dst_skip_rolling_back = false;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -183,7 +181,6 @@ bool set_time_hackwatch_face_loop(movement_event_t event, movement_settings_t *s
|
||||
}
|
||||
if (current_page != 2) { // Do not set time when we are at seconds, it was already set previously
|
||||
watch_rtc_set_date_time(date_time_settings);
|
||||
settings->bit.dst_skip_rolling_back = false;
|
||||
}
|
||||
//TODO: Do not update whole RTC, just what we are changing
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user