diff --git a/watch-faces/sensor/temperature_logging_face.c b/watch-faces/sensor/temperature_logging_face.c index 2016d94a..a68238fa 100644 --- a/watch-faces/sensor/temperature_logging_face.c +++ b/watch-faces/sensor/temperature_logging_face.c @@ -27,6 +27,8 @@ #include "temperature_logging_face.h" #include "watch.h" +static bool skip = false; + static void _temperature_logging_face_log_data(temperature_logging_state_t *logger_state) { watch_date_time_t date_time = watch_rtc_get_date_time(); size_t pos = logger_state->data_points % TEMPERATURE_LOGGING_NUM_DATA_POINTS; @@ -81,6 +83,10 @@ static void _temperature_logging_face_update_display(temperature_logging_state_t void temperature_logging_face_setup(uint8_t watch_face_index, void ** context_ptr) { (void) watch_face_index; + + // 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; + if (*context_ptr == NULL) { *context_ptr = malloc(sizeof(temperature_logging_state_t)); memset(*context_ptr, 0, sizeof(temperature_logging_state_t)); @@ -112,6 +118,10 @@ bool temperature_logging_face_loop(movement_event_t event, void *context) { logger_state->ts_ticks = 0; // fall through case EVENT_ACTIVATE: + if (skip) { + movement_move_to_next_face(); + return false; + } _temperature_logging_face_update_display(logger_state, movement_use_imperial_units(), movement_clock_mode_24h()); break; case EVENT_TICK: