]> git.earman.xyz Git - sensor-watch.git/commitdiff
let temperature screen skip itself, restore it to the default firmware
authorJoey Castillo <joeycastillo@utexas.edu>
Sat, 17 May 2025 16:16:27 +0000 (12:16 -0400)
committerJoey Castillo <joeycastillo@utexas.edu>
Sat, 17 May 2025 16:16:27 +0000 (12:16 -0400)
movement_config.h
watch-faces/sensor/temperature_display_face.c

index 9315a40c26637c532f5a9dfd79af2b3db68fd36d..a3578ff11d3a763cf3ac6490289913b49684523c 100644 (file)
@@ -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
index af7202fb3f1c9c5cfeaa9f4fc77613de8d2fdd03..c3dd82fcb9da7cf4d5f1cd04574b2744f9d8cc21 100644 (file)
@@ -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