From 96017d6ec1816ab1c9bd95b0308b908b4708d388 Mon Sep 17 00:00:00 2001 From: Joey Castillo Date: Sat, 12 Feb 2022 22:23:13 -0500 Subject: [PATCH] movement: add mechanism for watch faces to use backup registers --- movement/movement.c | 6 ++++++ movement/movement.h | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/movement/movement.c b/movement/movement.c index 42b73526..8185458c 100644 --- a/movement/movement.c +++ b/movement/movement.c @@ -216,6 +216,11 @@ void movement_play_alarm(void) { _movement_enable_fast_tick_if_needed(); } +uint8_t movement_claim_backup_register(void) { + if (movement_state.next_available_backup_register >= 8) return 0; + return movement_state.next_available_backup_register++; +} + void app_init(void) { memset(&movement_state, 0, sizeof(movement_state)); @@ -226,6 +231,7 @@ void app_init(void) { movement_state.settings.bit.time_zone = 16; // default to GMT movement_state.light_ticks = -1; movement_state.alarm_ticks = -1; + movement_state.next_available_backup_register = 4; _movement_reset_inactivity_countdown(); #if __EMSCRIPTEN__ diff --git a/movement/movement.h b/movement/movement.h index cb2c9ca2..a29c4469 100644 --- a/movement/movement.h +++ b/movement/movement.h @@ -268,6 +268,9 @@ typedef struct { uint8_t tick_frequency; uint8_t last_second; uint8_t subsecond; + + // backup register stuff + uint8_t next_available_backup_register; } movement_state_t; void movement_move_to_face(uint8_t watch_face_index); @@ -287,4 +290,6 @@ void movement_cancel_background_task(void); void movement_play_signal(void); void movement_play_alarm(void); +uint8_t movement_claim_backup_register(void); + #endif // MOVEMENT_H_