]> git.earman.xyz Git - sensor-watch.git/commitdiff
movement: add mechanism for watch faces to use backup registers
authorJoey Castillo <joeycastillo@utexas.edu>
Sun, 13 Feb 2022 03:23:13 +0000 (22:23 -0500)
committerJoey Castillo <joeycastillo@utexas.edu>
Sun, 13 Feb 2022 16:25:28 +0000 (11:25 -0500)
movement/movement.c
movement/movement.h

index 42b7352666125ee06addee09e8a02664ca2c5527..8185458c7f062e4779eb1ecbcbb40ed0f0339af1 100644 (file)
@@ -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__
index cb2c9ca2bad0d82674e270a4a84a738cb525ccb3..a29c446914eb50af3ab43561430c2d93938cde48 100644 (file)
@@ -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_