summaryrefslogtreecommitdiffstats
path: root/movement
diff options
context:
space:
mode:
authorJoey Castillo <joeycastillo@utexas.edu>2022-02-05 17:42:43 -0500
committerJoey Castillo <joeycastillo@utexas.edu>2022-02-05 17:42:43 -0500
commit18302bf9c46093c90e6bfea499360e342c996151 (patch)
treea669ea0621ad3a6f1d5382e85fd6fbe928218d4b /movement
parentdf0c2bfd80e5d0da61b43cdcb79443d797179820 (diff)
downloadSensor-Watch-18302bf9c46093c90e6bfea499360e342c996151.tar.gz
Sensor-Watch-18302bf9c46093c90e6bfea499360e342c996151.tar.bz2
Sensor-Watch-18302bf9c46093c90e6bfea499360e342c996151.zip
movement: add low battery warning to simple clock
Diffstat (limited to 'movement')
-rw-r--r--movement/watch_faces/clock/simple_clock_face.c14
-rw-r--r--movement/watch_faces/clock/simple_clock_face.h2
2 files changed, 16 insertions, 0 deletions
diff --git a/movement/watch_faces/clock/simple_clock_face.c b/movement/watch_faces/clock/simple_clock_face.c
index 60a7a4db..ac9e2a1f 100644
--- a/movement/watch_faces/clock/simple_clock_face.c
+++ b/movement/watch_faces/clock/simple_clock_face.c
@@ -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;
diff --git a/movement/watch_faces/clock/simple_clock_face.h b/movement/watch_faces/clock/simple_clock_face.h
index 6e8665bf..aa625700 100644
--- a/movement/watch_faces/clock/simple_clock_face.h
+++ b/movement/watch_faces/clock/simple_clock_face.h
@@ -29,8 +29,10 @@
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);