From: Joey Castillo Date: Sun, 13 Feb 2022 03:23:13 +0000 (-0500) Subject: movement: add mechanism for watch faces to use backup registers X-Git-Url: https://git.earman.xyz/?a=commitdiff_plain;h=96017d6ec1816ab1c9bd95b0308b908b4708d388;p=sensor-watch.git movement: add mechanism for watch faces to use backup registers --- diff --git a/movement/movement.c b/movement/movement.c index 42b7352..8185458 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 cb2c9ca..a29c446 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_