summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoey Castillo <jose.castillo@gmail.com>2021-10-19 15:37:08 -0400
committerJoey Castillo <jose.castillo@gmail.com>2021-10-19 15:37:08 -0400
commit148a47f76a457514c0571345d59c2179842cd30d (patch)
tree995519f0881e4e988970b056d02260b26d406b07
parent75be6219142a7333fb62ac91fb6abaaf648077e4 (diff)
downloadSensor-Watch-148a47f76a457514c0571345d59c2179842cd30d.tar.gz
Sensor-Watch-148a47f76a457514c0571345d59c2179842cd30d.tar.bz2
Sensor-Watch-148a47f76a457514c0571345d59c2179842cd30d.zip
movement: add tick animation in sleep mode
-rw-r--r--movement/watch_faces/clock/simple_clock_face.c8
-rw-r--r--watch-library/watch/watch_slcd.c4
-rw-r--r--watch-library/watch/watch_slcd.h5
3 files changed, 14 insertions, 3 deletions
diff --git a/movement/watch_faces/clock/simple_clock_face.c b/movement/watch_faces/clock/simple_clock_face.c
index 70e35047..e1e82031 100644
--- a/movement/watch_faces/clock/simple_clock_face.c
+++ b/movement/watch_faces/clock/simple_clock_face.c
@@ -9,9 +9,10 @@ void simple_clock_face_setup(movement_settings_t *settings, void ** context_ptr)
}
void simple_clock_face_activate(movement_settings_t *settings, void *context) {
- if (settings->bit.clock_mode_24h) {
- watch_set_indicator(WATCH_INDICATOR_24H);
- }
+ if (watch_tick_animation_is_running()) watch_stop_tick_animation();
+
+ if (settings->bit.clock_mode_24h) watch_set_indicator(WATCH_INDICATOR_24H);
+
watch_set_colon();
// this ensures that none of the timestamp fields will match, so we can re-render them all.
*((uint32_t *)context) = 0xFFFFFFFF;
@@ -55,6 +56,7 @@ bool simple_clock_face_loop(movement_event_t event, movement_settings_t *setting
}
pos = 0;
if (event.event_type == EVENT_LOW_ENERGY_UPDATE) {
+ if (!watch_tick_animation_is_running()) watch_start_tick_animation(500);
sprintf(buf, "%s%2d%2d%02d ", weekdays[simple_clock_face_get_weekday(date_time.unit.year, date_time.unit.month, date_time.unit.day)], date_time.unit.day, date_time.unit.hour, date_time.unit.minute);
} else {
sprintf(buf, "%s%2d%2d%02d%02d", weekdays[simple_clock_face_get_weekday(date_time.unit.year, date_time.unit.month, date_time.unit.day)], date_time.unit.day, date_time.unit.hour, date_time.unit.minute, date_time.unit.second);
diff --git a/watch-library/watch/watch_slcd.c b/watch-library/watch/watch_slcd.c
index 08f8c0e3..6c63d966 100644
--- a/watch-library/watch/watch_slcd.c
+++ b/watch-library/watch/watch_slcd.c
@@ -277,6 +277,10 @@ void watch_start_tick_animation(uint32_t duration) {
slcd_sync_start_animation(&SEGMENT_LCD_0, segs, 1, duration);
}
+bool watch_tick_animation_is_running() {
+ return hri_slcd_get_CTRLD_CSREN_bit(SLCD);
+}
+
void watch_stop_tick_animation() {
const uint32_t segs[] = { SLCD_SEGID(0, 2)};
slcd_sync_stop_animation(&SEGMENT_LCD_0, segs, 1);
diff --git a/watch-library/watch/watch_slcd.h b/watch-library/watch/watch_slcd.h
index e18ee9b4..724d3dde 100644
--- a/watch-library/watch/watch_slcd.h
+++ b/watch-library/watch/watch_slcd.h
@@ -138,6 +138,11 @@ void watch_stop_blink();
*/
void watch_start_tick_animation(uint32_t duration);
+/** @brief Checks if the tick animation is currently running.
+ * @return true if the animation is running; false otherwise.
+ */
+bool watch_tick_animation_is_running();
+
/** @brief Stops the tick/tock animation and clears all animating segments.
* @details This will stop the animation and clear all segments in position 8.
*/