]> git.earman.xyz Git - sensor-watch.git/commitdiff
allow watch faces to schedule tasks from background
authorjoeycastillo <joeycastillo@utexas.edu>
Sat, 22 Oct 2022 18:16:46 +0000 (13:16 -0500)
committerjoeycastillo <joeycastillo@utexas.edu>
Sat, 22 Oct 2022 18:16:46 +0000 (13:16 -0500)
movement/movement.c
movement/movement.h

index e904687cb19f0a6e1ed1075ed2e62d5bb1155d79..09ebf0c2b3a8f9a329c2eeaeae9bbdb776e5c080 100644 (file)
@@ -211,15 +211,23 @@ void movement_move_to_next_face(void) {
 }
 
 void movement_schedule_background_task(watch_date_time date_time) {
+    movement_schedule_background_task_for_face(movement_state.current_watch_face, date_time);
+}
+
+void movement_cancel_background_task(void) {
+    movement_cancel_background_task_for_face(movement_state.current_watch_face);
+}
+
+void movement_schedule_background_task_for_face(uint8_t watch_face_index, watch_date_time date_time) {
     watch_date_time now = watch_rtc_get_date_time();
     if (date_time.reg > now.reg) {
         movement_state.has_scheduled_background_task = true;
-        scheduled_tasks[movement_state.current_watch_face].reg = date_time.reg;
+        scheduled_tasks[watch_face_index].reg = date_time.reg;
     }
 }
 
-void movement_cancel_background_task(void) {
-    scheduled_tasks[movement_state.current_watch_face].reg = 0;
+void movement_cancel_background_task_for_face(uint8_t watch_face_index) {
+    scheduled_tasks[watch_face_index].reg = 0;
     bool other_tasks_scheduled = false;
     for(uint8_t i = 0; i < MOVEMENT_NUM_FACES; i++) {
         if (scheduled_tasks[i].reg != 0) {
index a013a861fd7b56ba350056bebc92d30b4ff8acbf..79222e8c34d159de7bcde75e0f2d4b8f28514ea6 100644 (file)
@@ -292,6 +292,10 @@ void movement_schedule_background_task(watch_date_time date_time);
 // movement will associate the scheduled task with the currently active face.
 void movement_cancel_background_task(void);
 
+// these functions should work around the limitation of the above functions, which will be deprecated.
+void movement_schedule_background_task_for_face(uint8_t watch_face_index, watch_date_time date_time);
+void movement_cancel_background_task_for_face(uint8_t watch_face_index);
+
 void movement_request_wake(void);
 
 void movement_play_signal(void);