]> git.earman.xyz Git - sensor-watch.git/commitdiff
timer face: fix problem with messed up durations for repeating timers / always beep...
authorTheOnePerson <a.nebinger@web.de>
Thu, 18 May 2023 11:10:32 +0000 (13:10 +0200)
committerTheOnePerson <a.nebinger@web.de>
Thu, 18 May 2023 11:10:32 +0000 (13:10 +0200)
movement/watch_faces/complication/timer_face.c
movement/watch_faces/complication/timer_face.h

index 4b0b70b1db959a237f46c471ae10729cf00f50bb..70f250a535bffb9d42b8dcf76ccf25d96c1e6f16 100644 (file)
@@ -62,9 +62,9 @@ static void _start(timer_state_t *state, movement_settings_t *settings, bool wit
                                                           state->timers[state->current_timer].unit.seconds);
     watch_date_time target_dt = watch_utility_date_time_from_unix_time(state->target_ts, _get_tz_offset(settings));
     state->mode = running;
-    movement_schedule_background_task(target_dt);
+    movement_schedule_background_task_for_face(state->watch_face_index, target_dt);
     watch_set_indicator(WATCH_INDICATOR_BELL);
-    if (settings->bit.button_should_sound && with_beep) watch_buzzer_play_sequence((int8_t *)_sound_seq_start, NULL);
+    if (with_beep) watch_buzzer_play_sequence((int8_t *)_sound_seq_start, NULL);
 }
 
 static void _draw(timer_state_t *state, uint8_t subsecond) {
@@ -128,7 +128,7 @@ static void _draw(timer_state_t *state, uint8_t subsecond) {
 
 static void _reset(timer_state_t *state) {
     state->mode = waiting;
-    movement_cancel_background_task();
+    movement_cancel_background_task_for_face(state->watch_face_index);
     watch_clear_indicator(WATCH_INDICATOR_BELL);
 }
 
@@ -193,12 +193,12 @@ static inline bool _check_for_signal() {
 
 void timer_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
-    (void) watch_face_index;
 
     if (*context_ptr == NULL) {
         *context_ptr = malloc(sizeof(timer_state_t));
         timer_state_t *state = (timer_state_t *)*context_ptr;
         memset(*context_ptr, 0, sizeof(timer_state_t));
+        state->watch_face_index = watch_face_index;
         for (uint8_t i = 0; i < sizeof(_default_timer_values) / sizeof(uint16_t); i++) {
             state->timers[i].value = _default_timer_values[i];
         }
index 293f652421c28aded3e17d352ed38398b7f8aecd..5f035cb3c2eb2685af951f12e8843c3ee2b3ced9 100644 (file)
@@ -77,6 +77,7 @@ typedef struct {
     uint32_t now_ts;
     uint16_t paused_left;
     uint8_t pausing_seconds;
+    uint8_t watch_face_index;
     timer_setting_t timers[TIMER_SLOTS]; 
     uint8_t settings_state : 4;
     uint8_t current_timer : 4;