summaryrefslogtreecommitdiffstats
path: root/movement/watch_faces/complication
diff options
context:
space:
mode:
authorjoeycastillo <joeycastillo@utexas.edu>2022-10-29 18:16:29 -0500
committerGitHub <noreply@github.com>2022-10-29 18:16:29 -0500
commit09f1d023300b1108f93039e37d80d255247f1361 (patch)
tree941fd0cce77f6ee1d909961bd6afb27c2df6672c /movement/watch_faces/complication
parent425dd775087319cdab0977911ab6d2643bc5afb8 (diff)
parent501d3f844784fbe5beb2b102fd7f05d43895a87a (diff)
downloadSensor-Watch-09f1d023300b1108f93039e37d80d255247f1361.tar.gz
Sensor-Watch-09f1d023300b1108f93039e37d80d255247f1361.tar.bz2
Sensor-Watch-09f1d023300b1108f93039e37d80d255247f1361.zip
Merge pull request #109 from TheOnePerson/auto-fire-long-press
Make movement auto fire long press event
Diffstat (limited to 'movement/watch_faces/complication')
-rw-r--r--movement/watch_faces/complication/alarm_face.c52
-rw-r--r--movement/watch_faces/complication/alarm_face.h3
-rw-r--r--movement/watch_faces/complication/pulsometer_face.c2
3 files changed, 21 insertions, 36 deletions
diff --git a/movement/watch_faces/complication/alarm_face.c b/movement/watch_faces/complication/alarm_face.c
index d7843e68..8d1eddd2 100644
--- a/movement/watch_faces/complication/alarm_face.c
+++ b/movement/watch_faces/complication/alarm_face.c
@@ -103,7 +103,7 @@ static void _alarm_face_draw(movement_settings_t *settings, alarm_state_t *state
h,
state->alarm[state->alarm_idx].minute);
// blink items if in settings mode
- if (state->is_setting && subsecond % 2 && state->setting_state < alarm_setting_idx_pitch && state->alarm_quick_ticks == -1) {
+ if (state->is_setting && subsecond % 2 && state->setting_state < alarm_setting_idx_pitch && !state->alarm_quick_ticks) {
buf[_blink_idx[state->setting_state]] = buf[_blink_idx2[state->setting_state]] = ' ';
}
watch_display_string(buf, 0);
@@ -180,9 +180,9 @@ static void _alarm_indicate_beep(alarm_state_t *state) {
static void _abort_quick_ticks(alarm_state_t *state) {
// abort counting quick ticks
- if (state->alarm_quick_ticks >= ALARM_QUICK_MIN_TICKS) state->alarm[state->alarm_idx].enabled = true;
- if (state->alarm_quick_ticks >= 0) {
- state->alarm_quick_ticks = -1;
+ if (state->alarm_quick_ticks) {
+ state->alarm[state->alarm_idx].enabled = true;
+ state->alarm_quick_ticks = false;
movement_request_tick_frequency(4);
}
}
@@ -202,7 +202,6 @@ void alarm_face_setup(movement_settings_t *settings, uint8_t watch_face_index, v
state->alarm[i].pitch = 1;
}
state->alarm_handled_minute = -1;
- state->alarm_quick_ticks = -1;
}
}
@@ -218,7 +217,7 @@ void alarm_face_resign(movement_settings_t *settings, void *context) {
_alarm_update_alarm_enabled(settings, state);
watch_set_led_off();
watch_store_backup_data(settings->reg, 0);
- state->alarm_quick_ticks = -1;
+ state->alarm_quick_ticks = false;
movement_request_tick_frequency(1);
}
@@ -262,38 +261,18 @@ bool alarm_face_loop(movement_event_t event, movement_settings_t *settings, void
switch (event.event_type) {
case EVENT_TICK:
- if (state->alarm_quick_ticks >= 0) {
- // we are counting ticks for the alarm button
- if (state->setting_state == alarm_setting_idx_hour || state->setting_state == alarm_setting_idx_minute) {
- if (state->alarm_quick_ticks < INT8_MAX) state->alarm_quick_ticks++;
- if (state->alarm_quick_ticks == ALARM_QUICK_MIN_TICKS) {
- // initiate fast counting
- movement_request_tick_frequency(8);
- } else if (state->alarm_quick_ticks > ALARM_QUICK_MIN_TICKS) {
- // fast count hours or minutes
- if (state->setting_state == alarm_setting_idx_hour)
+ if (state->alarm_quick_ticks) {
+ // we are in fast cycling mode
+ if (state->setting_state == alarm_setting_idx_hour) {
state->alarm[state->alarm_idx].hour = (state->alarm[state->alarm_idx].hour + 1) % 24;
- else if (state->setting_state == alarm_setting_idx_minute)
+ } else if (state->setting_state == alarm_setting_idx_minute) {
state->alarm[state->alarm_idx].minute = (state->alarm[state->alarm_idx].minute + 1) % 60;
- _alarm_face_draw(settings, state, event.subsecond);
- break;
- }
- } else {
- _abort_quick_ticks(state);
- }
+ } else _abort_quick_ticks(state);
} else if (!state->is_setting) break; // no need to do anything when we are not in settings mode and no quick ticks are running
// fall through
case EVENT_ACTIVATE:
_alarm_face_draw(settings, state, event.subsecond);
break;
- case EVENT_LIGHT_BUTTON_DOWN:
- break;
- case EVENT_ALARM_BUTTON_DOWN:
- // check if we need to start counting ticks
- if (state->is_setting && (state->setting_state == alarm_setting_idx_hour || state->setting_state == alarm_setting_idx_minute)) {
- state->alarm_quick_ticks = 0;
- }
- break;
case EVENT_LIGHT_BUTTON_UP:
if (!state->is_setting) {
movement_illuminate_led();
@@ -371,8 +350,9 @@ bool alarm_face_loop(movement_event_t event, movement_settings_t *settings, void
break;
case alarm_setting_idx_minute:
case alarm_setting_idx_hour:
- // hour or minute selection
- _abort_quick_ticks(state);
+ // initiate fast cycling for hour or minute settings
+ movement_request_tick_frequency(8);
+ state->alarm_quick_ticks = true;
break;
default:
break;
@@ -380,6 +360,12 @@ bool alarm_face_loop(movement_event_t event, movement_settings_t *settings, void
}
_alarm_face_draw(settings, state, event.subsecond);
break;
+ case EVENT_ALARM_LONG_UP:
+ if (state->is_setting) {
+ if (state->setting_state == alarm_setting_idx_hour || state->setting_state == alarm_setting_idx_minute)
+ _abort_quick_ticks(state);
+ }
+ break;
case EVENT_BACKGROUND_TASK:
// play alarm
if (state->alarm[state->alarm_playing_idx].beeps == 0) {
diff --git a/movement/watch_faces/complication/alarm_face.h b/movement/watch_faces/complication/alarm_face.h
index 874b2a0d..dafbee5e 100644
--- a/movement/watch_faces/complication/alarm_face.h
+++ b/movement/watch_faces/complication/alarm_face.h
@@ -41,7 +41,6 @@ A face for setting various alarms
#define ALARM_DAY_WEEKEND 10
#define ALARM_MAX_BEEP_ROUNDS 11 // maximum number of beeping rounds for an alarm slot (including short and long alarms)
#define ALARM_SETTING_STATES 6
-#define ALARM_QUICK_MIN_TICKS 2 * 4 // number of ticks (quarter seconds) to wait until fast counting for hours and minutes kicks in
typedef struct {
uint8_t day : 4; // day of week: 0=MO, 1=TU, 2=WE, 3=TH, 4=FR, 5=SA, 6=SU, 7=each day, 8=one time alarm, 9=Weekdays, 10=Weekend
@@ -57,7 +56,7 @@ typedef struct {
uint8_t alarm_playing_idx : 4;
uint8_t setting_state : 3;
int8_t alarm_handled_minute;
- int8_t alarm_quick_ticks;
+ bool alarm_quick_ticks : 1;
bool is_setting : 1;
alarm_setting_t alarm[ALARM_ALARMS];
} alarm_state_t;
diff --git a/movement/watch_faces/complication/pulsometer_face.c b/movement/watch_faces/complication/pulsometer_face.c
index 1d6f2086..ea7aad59 100644
--- a/movement/watch_faces/complication/pulsometer_face.c
+++ b/movement/watch_faces/complication/pulsometer_face.c
@@ -59,7 +59,7 @@ bool pulsometer_face_loop(movement_event_t event, movement_settings_t *settings,
movement_request_tick_frequency(PULSOMETER_FACE_FREQUENCY);
break;
case EVENT_ALARM_BUTTON_UP:
- case EVENT_ALARM_LONG_PRESS:
+ case EVENT_ALARM_LONG_UP:
pulsometer_state->measuring = false;
movement_request_tick_frequency(1);
break;