4 Commits

Author SHA1 Message Date
hueso
aeeb62eefd fix LED turning off on face changes
Some checks failed
Build / build (push) Has been cancelled
Build / build-simulator (push) Has been cancelled
2025-12-16 12:03:27 -03:00
hueso
0b58ac750e close_enough_face: swap bell/alarm to match stock firmware 2025-06-16 22:04:26 -03:00
hueso
45583b3120 ignore indicators for short beep alarms 2025-06-16 22:01:35 -03:00
hueso
8abf6f4f5b Fixed buffer overflows in sunrise_sunset_face
Some checks failed
Build / build (push) Has been cancelled
Build / build-simulator (push) Has been cancelled
GitHub Pages / gh-pages (push) Has been cancelled
2025-05-15 11:59:21 -03:00
6 changed files with 10 additions and 18 deletions

View File

@@ -55,9 +55,9 @@ static const int hour_switch_index = 8;
static void _update_alarm_indicator(bool settings_alarm_enabled, close_enough_clock_state_t *state) { static void _update_alarm_indicator(bool settings_alarm_enabled, close_enough_clock_state_t *state) {
state->alarm_enabled = settings_alarm_enabled; state->alarm_enabled = settings_alarm_enabled;
if (state->alarm_enabled) { if (state->alarm_enabled) {
watch_set_indicator(WATCH_INDICATOR_BELL); watch_set_indicator(WATCH_INDICATOR_SIGNAL);
} else { } else {
watch_clear_indicator(WATCH_INDICATOR_BELL); watch_clear_indicator(WATCH_INDICATOR_SIGNAL);
}; };
} }

View File

@@ -148,7 +148,7 @@ static void _alarm_update_alarm_enabled(movement_settings_t *settings, alarm_sta
uint16_t now_minutes_of_day; uint16_t now_minutes_of_day;
uint16_t alarm_minutes_of_day; uint16_t alarm_minutes_of_day;
for (uint8_t i = 0; i < ALARM_ALARMS; i++) { for (uint8_t i = 0; i < ALARM_ALARMS; i++) {
if (state->alarm[i].enabled) { if (state->alarm[i].enabled && state->alarm[i].beeps != 0) {
// figure out if alarm is to go off in the next 24 h // figure out if alarm is to go off in the next 24 h
if (state->alarm[i].day == ALARM_DAY_EACH_DAY || state->alarm[i].day == ALARM_DAY_ONE_TIME) { if (state->alarm[i].day == ALARM_DAY_EACH_DAY || state->alarm[i].day == ALARM_DAY_ONE_TIME) {
active_alarms = true; active_alarms = true;
@@ -235,7 +235,6 @@ void alarm_face_resign(movement_settings_t *settings, void *context) {
alarm_state_t *state = (alarm_state_t *)context; alarm_state_t *state = (alarm_state_t *)context;
state->is_setting = false; state->is_setting = false;
_alarm_update_alarm_enabled(settings, state); _alarm_update_alarm_enabled(settings, state);
watch_set_led_off();
state->alarm_quick_ticks = false; state->alarm_quick_ticks = false;
_wait_ticks = -1; _wait_ticks = -1;
movement_request_tick_frequency(1); movement_request_tick_frequency(1);

View File

@@ -330,6 +330,5 @@ bool simon_face_loop(movement_event_t event, movement_settings_t *settings,
void simon_face_resign(movement_settings_t *settings, void *context) { void simon_face_resign(movement_settings_t *settings, void *context) {
(void)settings; (void)settings;
(void)context; (void)context;
watch_set_led_off();
watch_set_buzzer_off(); watch_set_buzzer_off();
} }

View File

@@ -45,7 +45,7 @@ static void _sunrise_sunset_set_expiration(sunrise_sunset_state_t *state, watch_
} }
static void _sunrise_sunset_face_update(movement_settings_t *settings, sunrise_sunset_state_t *state) { static void _sunrise_sunset_face_update(movement_settings_t *settings, sunrise_sunset_state_t *state) {
char buf[14]; char buf[11];
double rise, set, minutes, seconds; double rise, set, minutes, seconds;
bool show_next_match = false; bool show_next_match = false;
movement_location_t movement_location; movement_location_t movement_location;
@@ -87,7 +87,7 @@ static void _sunrise_sunset_face_update(movement_settings_t *settings, sunrise_s
watch_clear_colon(); watch_clear_colon();
watch_clear_indicator(WATCH_INDICATOR_PM); watch_clear_indicator(WATCH_INDICATOR_PM);
watch_clear_indicator(WATCH_INDICATOR_24H); watch_clear_indicator(WATCH_INDICATOR_24H);
sprintf(buf, "%s%2d none ", (result == 1) ? "SE" : "rI", scratch_time.unit.day); snprintf(buf, sizeof(buf), "%s%2d none ", (result == 1) ? "SE" : "rI", scratch_time.unit.day);
watch_display_string(buf, 0); watch_display_string(buf, 0);
return; return;
} }
@@ -120,7 +120,7 @@ static void _sunrise_sunset_face_update(movement_settings_t *settings, sunrise_s
} else if (settings->bit.clock_24h_leading_zero && scratch_time.unit.hour < 10) { } else if (settings->bit.clock_24h_leading_zero && scratch_time.unit.hour < 10) {
set_leading_zero = true; set_leading_zero = true;
} }
sprintf(buf, "rI%2d%2d%02d%s", scratch_time.unit.day, scratch_time.unit.hour, scratch_time.unit.minute,longLatPresets[state->longLatToUse].name); snprintf(buf, sizeof(buf), "rI%2d%2d%02d%s", scratch_time.unit.day, scratch_time.unit.hour, scratch_time.unit.minute,longLatPresets[state->longLatToUse].name);
watch_display_string(buf, 0); watch_display_string(buf, 0);
if (set_leading_zero) if (set_leading_zero)
watch_display_string("0", 4); watch_display_string("0", 4);
@@ -152,7 +152,7 @@ static void _sunrise_sunset_face_update(movement_settings_t *settings, sunrise_s
} else if (settings->bit.clock_24h_leading_zero && scratch_time.unit.hour < 10) { } else if (settings->bit.clock_24h_leading_zero && scratch_time.unit.hour < 10) {
set_leading_zero = true; set_leading_zero = true;
} }
sprintf(buf, "SE%2d%2d%02d%s", scratch_time.unit.day, scratch_time.unit.hour, scratch_time.unit.minute, longLatPresets[state->longLatToUse].name); snprintf(buf, sizeof(buf), "SE%2d%2d%02d%s", scratch_time.unit.day, scratch_time.unit.hour, scratch_time.unit.minute, longLatPresets[state->longLatToUse].name);
watch_display_string(buf, 0); watch_display_string(buf, 0);
if (set_leading_zero) if (set_leading_zero)
watch_display_string("0", 4); watch_display_string("0", 4);
@@ -212,16 +212,16 @@ static void _sunrise_sunset_face_update_location_register(sunrise_sunset_state_t
} }
static void _sunrise_sunset_face_update_settings_display(movement_event_t event, sunrise_sunset_state_t *state) { static void _sunrise_sunset_face_update_settings_display(movement_event_t event, sunrise_sunset_state_t *state) {
char buf[12]; char buf[11];
switch (state->page) { switch (state->page) {
case 0: case 0:
return; return;
case 1: case 1:
sprintf(buf, "LA %c %04d", state->working_latitude.sign ? '-' : '+', abs(_sunrise_sunset_face_latlon_from_struct(state->working_latitude))); snprintf(buf, sizeof(buf), "LA %c %04d", state->working_latitude.sign ? '-' : '+', abs(_sunrise_sunset_face_latlon_from_struct(state->working_latitude)));
break; break;
case 2: case 2:
sprintf(buf, "LO %c%05d", state->working_longitude.sign ? '-' : '+', abs(_sunrise_sunset_face_latlon_from_struct(state->working_longitude))); snprintf(buf, sizeof(buf), "LO %c%05d", state->working_longitude.sign ? '-' : '+', abs(_sunrise_sunset_face_latlon_from_struct(state->working_longitude)));
break; break;
} }
if (event.subsecond % 2) { if (event.subsecond % 2) {

View File

@@ -60,10 +60,6 @@ bool preferences_face_loop(movement_event_t event, movement_settings_t *settings
case EVENT_ACTIVATE: case EVENT_ACTIVATE:
// Do nothing; handled below. // Do nothing; handled below.
break; break;
case EVENT_MODE_BUTTON_UP:
watch_set_led_off();
movement_move_to_next_face();
return false;
case EVENT_LIGHT_BUTTON_DOWN: case EVENT_LIGHT_BUTTON_DOWN:
current_page = (current_page + 1) % PREFERENCES_FACE_NUM_PREFERENCES; current_page = (current_page + 1) % PREFERENCES_FACE_NUM_PREFERENCES;
*((uint8_t *)context) = current_page; *((uint8_t *)context) = current_page;
@@ -202,7 +198,6 @@ bool preferences_face_loop(movement_event_t event, movement_settings_t *settings
return false; return false;
} }
watch_set_led_off();
return true; return true;
} }

View File

@@ -183,6 +183,5 @@ bool set_time_face_loop(movement_event_t event, movement_settings_t *settings, v
void set_time_face_resign(movement_settings_t *settings, void *context) { void set_time_face_resign(movement_settings_t *settings, void *context) {
(void) settings; (void) settings;
(void) context; (void) context;
watch_set_led_off();
watch_store_backup_data(settings->reg, 0); watch_store_backup_data(settings->reg, 0);
} }