From ed8149a759ed15dcb8f96c66e9643579151ed22a Mon Sep 17 00:00:00 2001 From: Hein-NonesensE <45372986+Hein-NonesensE@users.noreply.github.com> Date: Sat, 28 Jan 2023 22:32:08 +0100 Subject: [PATCH 1/2] Counter face: change sound to non-blocking, add option to deactivate sound --- .../watch_faces/complication/counter_face.c | 76 ++++++++++++++----- 1 file changed, 59 insertions(+), 17 deletions(-) diff --git a/movement/watch_faces/complication/counter_face.c b/movement/watch_faces/complication/counter_face.c index 14f68629..1ebcb42d 100644 --- a/movement/watch_faces/complication/counter_face.c +++ b/movement/watch_faces/complication/counter_face.c @@ -27,6 +27,8 @@ #include "counter_face.h" #include "watch.h" +bool beep_on = true; + void counter_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) { (void) settings; (void) watch_face_index; @@ -38,6 +40,9 @@ void counter_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void counter_face_activate(movement_settings_t *settings, void *context) { (void) settings; + if (beep_on) { + watch_set_indicator(WATCH_INDICATOR_SIGNAL); + } (void) context; } @@ -48,12 +53,24 @@ bool counter_face_loop(movement_event_t event, movement_settings_t *settings, vo switch (event.event_type) { case EVENT_ALARM_BUTTON_UP: + watch_buzzer_abort_sequence(); //abort running buzzer sequence when counting fast state->counter_idx++; // increment counter index if (state->counter_idx>99) { //0-99 state->counter_idx=0;//reset counter index } print_counter(state); - beep_counter(state); + if (beep_on) { + beep_counter(state); + } + break; + case EVENT_LIGHT_LONG_PRESS: + watch_buzzer_abort_sequence(); + beep_on = !beep_on; + if (beep_on) { + watch_set_indicator(WATCH_INDICATOR_SIGNAL); + } else { + watch_clear_indicator(WATCH_INDICATOR_SIGNAL); + } break; case EVENT_ALARM_LONG_PRESS: state->counter_idx=0; // reset counter index @@ -75,22 +92,47 @@ bool counter_face_loop(movement_event_t event, movement_settings_t *settings, vo // beep counter index times void beep_counter(counter_state_t *state) { - - int low_count = state->counter_idx/5; - int high_count = state->counter_idx - low_count * 5; - - for (int i=0; icounter_idx/5; + int high_count = state->counter_idx - low_count * 5; + static int8_t sound_seq[15]; + memset(sound_seq, 0, 15); + int i = 0; + if (low_count > 0) { + sound_seq[i] = BUZZER_NOTE_A6; + i++; + sound_seq[i] = 3; + i++; + sound_seq[i] = BUZZER_NOTE_REST; + i++; + sound_seq[i] = 6; + i++; + if (low_count > 1) { + sound_seq[i] = -2; + i++; + sound_seq[i] = low_count-1; + i++; + } + sound_seq[i] = BUZZER_NOTE_REST; + i++; + sound_seq[i] = 6; + i++; + } + if (high_count > 0) { + sound_seq[i] = BUZZER_NOTE_B6; + i++; + sound_seq[i] = 3; + i++; + sound_seq[i] = BUZZER_NOTE_REST; + i++; + sound_seq[i] = 6; + i++; + } + if (high_count > 1) { + sound_seq[i] = -2; + i++; + sound_seq[i] = high_count-1; + } + watch_buzzer_play_sequence((int8_t *)sound_seq, NULL); } From e5dcc9d1b750a5deae46f91c39f083635f3ccb7a Mon Sep 17 00:00:00 2001 From: joeycastillo Date: Sat, 29 Jul 2023 07:43:51 -0400 Subject: [PATCH 2/2] counter face: move beep_on to watch face state --- movement/watch_faces/complication/counter_face.c | 14 +++++++------- movement/watch_faces/complication/counter_face.h | 1 + 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/movement/watch_faces/complication/counter_face.c b/movement/watch_faces/complication/counter_face.c index 1ebcb42d..69ca1f73 100644 --- a/movement/watch_faces/complication/counter_face.c +++ b/movement/watch_faces/complication/counter_face.c @@ -27,23 +27,23 @@ #include "counter_face.h" #include "watch.h" -bool beep_on = true; - void counter_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(counter_state_t)); memset(*context_ptr, 0, sizeof(counter_state_t)); + counter_state_t *state = (counter_state_t *)*context_ptr; + state->beep_on = true; } } void counter_face_activate(movement_settings_t *settings, void *context) { (void) settings; - if (beep_on) { + counter_state_t *state = (counter_state_t *)context; + if (state->beep_on) { watch_set_indicator(WATCH_INDICATOR_SIGNAL); } - (void) context; } bool counter_face_loop(movement_event_t event, movement_settings_t *settings, void *context) { @@ -59,14 +59,14 @@ bool counter_face_loop(movement_event_t event, movement_settings_t *settings, vo state->counter_idx=0;//reset counter index } print_counter(state); - if (beep_on) { + if (state->beep_on) { beep_counter(state); } break; case EVENT_LIGHT_LONG_PRESS: watch_buzzer_abort_sequence(); - beep_on = !beep_on; - if (beep_on) { + state->beep_on = !state->beep_on; + if (state->beep_on) { watch_set_indicator(WATCH_INDICATOR_SIGNAL); } else { watch_clear_indicator(WATCH_INDICATOR_SIGNAL); diff --git a/movement/watch_faces/complication/counter_face.h b/movement/watch_faces/complication/counter_face.h index 430f5a8e..85f203e9 100644 --- a/movement/watch_faces/complication/counter_face.h +++ b/movement/watch_faces/complication/counter_face.h @@ -30,6 +30,7 @@ // Counter face is designed to count the number of running laps during excercises. typedef struct { uint8_t counter_idx; + bool beep_on; } counter_state_t;