From 63dbaad730ca1c42d0ee658de9517d1734e4cb2c Mon Sep 17 00:00:00 2001 From: Joey Castillo Date: Sat, 17 May 2025 12:16:27 -0400 Subject: [PATCH] let temperature screen skip itself, restore it to the default firmware --- movement_config.h | 3 ++- watch-faces/sensor/temperature_display_face.c | 10 +++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/movement_config.h b/movement_config.h index 9315a40c..a3578ff1 100644 --- a/movement_config.h +++ b/movement_config.h @@ -35,6 +35,7 @@ const watch_face_t watch_faces[] = { countdown_face, stopwatch_face, voltage_face, + temperature_display_face, settings_face, set_time_face }; @@ -47,7 +48,7 @@ const watch_face_t watch_faces[] = { * Some folks also like to use this to hide the preferences and time set faces from the normal rotation. * If you don't want any faces to be excluded, set this to 0 and a long Mode press will have no effect. */ -#define MOVEMENT_SECONDARY_FACE_INDEX (MOVEMENT_NUM_FACES - 3) +#define MOVEMENT_SECONDARY_FACE_INDEX (MOVEMENT_NUM_FACES - 4) /* Custom hourly chime tune. Check movement_custom_signal_tunes.h for options. */ #define SIGNAL_TUNE_DEFAULT diff --git a/watch-faces/sensor/temperature_display_face.c b/watch-faces/sensor/temperature_display_face.c index af7202fb..c3dd82fc 100644 --- a/watch-faces/sensor/temperature_display_face.c +++ b/watch-faces/sensor/temperature_display_face.c @@ -28,6 +28,8 @@ #include "thermistor_driver.h" #include "watch.h" +static bool skip = false; + static void _temperature_display_face_update_display(bool in_fahrenheit) { float temperature_c = movement_get_temperature(); if (in_fahrenheit) { @@ -40,11 +42,12 @@ static void _temperature_display_face_update_display(bool in_fahrenheit) { void temperature_display_face_setup(uint8_t watch_face_index, void ** context_ptr) { (void) watch_face_index; (void) context_ptr; + // if temperature is invalid, we don't have a temperature sensor which means we shouldn't be here. + if (movement_get_temperature() == 0xFFFFFFFF) skip = true; } void temperature_display_face_activate(void *context) { (void) context; - watch_display_text_with_fallback(WATCH_POSITION_TOP, "TEMP", "TE"); } bool temperature_display_face_loop(movement_event_t event, void *context) { @@ -56,6 +59,11 @@ bool temperature_display_face_loop(movement_event_t event, void *context) { _temperature_display_face_update_display(movement_use_imperial_units()); break; case EVENT_ACTIVATE: + if (skip) { + movement_move_to_next_face(); + return false; + } + watch_display_text_with_fallback(WATCH_POSITION_TOP, "TEMP", "TE"); // force a measurement to be taken immediately. date_time.unit.second = 0; // fall through