]> git.earman.xyz Git - sensor-watch.git/commitdiff
movement: add low battery warning to simple clock
authorJoey Castillo <joeycastillo@utexas.edu>
Sat, 5 Feb 2022 22:42:43 +0000 (17:42 -0500)
committerJoey Castillo <joeycastillo@utexas.edu>
Sat, 5 Feb 2022 22:42:43 +0000 (17:42 -0500)
movement/watch_faces/clock/simple_clock_face.c
movement/watch_faces/clock/simple_clock_face.h

index 60a7a4db83ea868ad0fa17e304d62efcf7518c65..ac9e2a1f3fe54c7cace8c446c057c8be42da545a 100644 (file)
@@ -68,6 +68,20 @@ bool simple_clock_face_loop(movement_event_t event, movement_settings_t *setting
             previous_date_time = state->previous_date_time;
             state->previous_date_time = date_time.reg;
 
+            // check the battery voltage once a day...
+            if (date_time.unit.day != state->last_battery_check) {
+                state->last_battery_check = date_time.unit.day;
+                watch_enable_adc();
+                uint16_t voltage = watch_get_vcc_voltage();
+                watch_disable_adc();
+                // 2.2 volts will happen when the battery has maybe 5-10% remaining?
+                // we can refine this later.
+                state->battery_low = (voltage < 2200);
+            }
+
+            // ...and set the LAP indicator if low.
+            if (state->battery_low) watch_set_indicator(WATCH_INDICATOR_LAP);
+
             if (date_time.reg >> 6 == previous_date_time >> 6 && event.event_type != EVENT_LOW_ENERGY_UPDATE) {
                 // everything before seconds is the same, don't waste cycles setting those segments.
                 pos = 8;
index 6e8665bf106c230b00574711074388add78e3edc..aa6257009946e5feffbf06ada7698ccb1dbcf7ca 100644 (file)
 
 typedef struct {
     uint32_t previous_date_time;
+    uint8_t last_battery_check;
     uint8_t watch_face_index;
     bool signal_enabled;
+    bool battery_low;
 } simple_clock_state_t;
 
 void simple_clock_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);