From: joeycastillo Date: Wed, 9 Oct 2024 00:13:29 +0000 (-0400) Subject: rename thermistor_readout_face -> temperature_display_face X-Git-Url: https://git.earman.xyz/?a=commitdiff_plain;h=918c410c9a1fae7f6947e956c5a3ef144687bddf;p=sensor-watch.git rename thermistor_readout_face -> temperature_display_face --- diff --git a/movement/alt_fw/backer.h b/movement/alt_fw/backer.h index d41f567..ff04222 100644 --- a/movement/alt_fw/backer.h +++ b/movement/alt_fw/backer.h @@ -32,7 +32,7 @@ const watch_face_t watch_faces[] = { world_clock_face, sunrise_sunset_face, moon_phase_face, - thermistor_readout_face, + temperature_display_face, preferences_face, set_time_face, diff --git a/movement/alt_fw/the_backpacker.h b/movement/alt_fw/the_backpacker.h index 0a599cf..d344204 100644 --- a/movement/alt_fw/the_backpacker.h +++ b/movement/alt_fw/the_backpacker.h @@ -31,7 +31,7 @@ const watch_face_t watch_faces[] = { simple_clock_face, sunrise_sunset_face, moon_phase_face, - thermistor_readout_face, + temperature_display_face, thermistor_logging_face, blinky_face, diff --git a/movement/movement_faces.h b/movement/movement_faces.h index d13a34f..1f82713 100644 --- a/movement/movement_faces.h +++ b/movement/movement_faces.h @@ -33,7 +33,7 @@ #include "set_time_face.h" #include "set_time_hackwatch_face.h" #include "pulsometer_face.h" -#include "thermistor_readout_face.h" +#include "temperature_display_face.h" #include "thermistor_logging_face.h" #include "thermistor_testing_face.h" #include "character_set_face.h" diff --git a/movement/watch_faces/sensor/temperature_display_face.c b/movement/watch_faces/sensor/temperature_display_face.c new file mode 100644 index 0000000..3c81df9 --- /dev/null +++ b/movement/watch_faces/sensor/temperature_display_face.c @@ -0,0 +1,100 @@ +/* + * MIT License + * + * Copyright (c) 2022 Joey Castillo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include +#include +#include "temperature_display_face.h" +#include "thermistor_driver.h" +#include "watch.h" + +static void _temperature_display_face_update_display(bool in_fahrenheit) { + thermistor_driver_enable(); + float temperature_c = thermistor_driver_get_temperature(); + char buf[14]; + if (in_fahrenheit) { + sprintf(buf, "%4.1f#F", temperature_c * 1.8 + 32.0); + } else { + sprintf(buf, "%4.1f#C", temperature_c); + } + watch_display_string(buf, 4); + thermistor_driver_disable(); +} + +void temperature_display_face_setup(uint8_t watch_face_index, void ** context_ptr) { + (void) watch_face_index; + (void) context_ptr; +} + +void temperature_display_face_activate(void *context) { + (void) context; + watch_display_string("TE", 0); +} + +bool temperature_display_face_loop(movement_event_t event, void *context) { + (void) context; + watch_date_time_t date_time = watch_rtc_get_date_time(); + switch (event.event_type) { + case EVENT_ALARM_BUTTON_DOWN: + movement_set_use_imperial_units(!movement_use_imperial_units()); + _temperature_display_face_update_display(movement_use_imperial_units()); + break; + case EVENT_ACTIVATE: + // force a measurement to be taken immediately. + date_time.unit.second = 0; + // fall through + case EVENT_TICK: + if (date_time.unit.second % 5 == 4) { + // Not 100% on this, but I like the idea of using the signal indicator to indicate that we're sensing data. + // In this case we turn the indicator on a second before the reading is taken, and clear it when we're done. + // In reality the measurement takes a fraction of a second, but this is just to show something is happening. + watch_set_indicator(WATCH_INDICATOR_SIGNAL); + } else if (date_time.unit.second % 5 == 0) { + _temperature_display_face_update_display(movement_use_imperial_units()); + watch_clear_indicator(WATCH_INDICATOR_SIGNAL); + } + break; + case EVENT_LOW_ENERGY_UPDATE: + // clear seconds area and start tick animation if necessary + if (!watch_sleep_animation_is_running()) { + watch_display_string(" ", 8); + watch_start_sleep_animation(1000); + } + // update every 5 minutes + if (date_time.unit.minute % 5 == 0) { + watch_clear_indicator(WATCH_INDICATOR_SIGNAL); + _temperature_display_face_update_display(movement_use_imperial_units()); + watch_display_string(" ", 8); + } + break; + default: + movement_default_loop_handler(event); + break; + } + + return true; +} + +void temperature_display_face_resign(void *context) { + (void) context; +} diff --git a/movement/watch_faces/sensor/temperature_display_face.h b/movement/watch_faces/sensor/temperature_display_face.h new file mode 100644 index 0000000..1c5fb8d --- /dev/null +++ b/movement/watch_faces/sensor/temperature_display_face.h @@ -0,0 +1,66 @@ +/* + * MIT License + * + * Copyright (c) 2022 Joey Castillo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef TEMPERATURE_DISPLAY_FACE_H_ +#define TEMPERATURE_DISPLAY_FACE_H_ + +/* + * THERMISTOR READOUT (aka Temperature Display) + * + * This watch face is designed to work with either the Temperature + GPIO + * sensor board or the Temperature + Light sensor board. It reads the current + * temperature from the thermistor voltage divider on the sensor board, and + * displays the current temperature in degrees Celsius. + * + * When the watch is on your wrist, your body heat interferes with an ambient + * temperature reading, but if you set it on a bedside table, strap it to your + * bike handlebars or place it outside of your tent while camping, this watch + * face can act as a digital thermometer for displaying ambient conditions. + * + * The temperature sensor watch face automatically samples the temperature + * once every five seconds, and it illuminates the Signal indicator just + * before taking a reading. + * + * Pressing the ALARM button toggles the unit display from Celsius to + * Fahrenheit. Technically this sets the global “Metric / Imperial” flag, so + * any other watch face that displays localizable units will display them in + * the system selected here. + */ + +#include "movement.h" + +void temperature_display_face_setup(uint8_t watch_face_index, void ** context_ptr); +void temperature_display_face_activate(void *context); +bool temperature_display_face_loop(movement_event_t event, void *context); +void temperature_display_face_resign(void *context); + +#define temperature_display_face ((const watch_face_t){ \ + temperature_display_face_setup, \ + temperature_display_face_activate, \ + temperature_display_face_loop, \ + temperature_display_face_resign, \ + NULL, \ +}) + +#endif // TEMPERATURE_DISPLAY_FACE_H_ diff --git a/movement/watch_faces/sensor/thermistor_readout_face.c b/movement/watch_faces/sensor/thermistor_readout_face.c deleted file mode 100644 index 520ac4f..0000000 --- a/movement/watch_faces/sensor/thermistor_readout_face.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2022 Joey Castillo - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include -#include -#include "thermistor_readout_face.h" -#include "thermistor_driver.h" -#include "watch.h" - -static void _thermistor_readout_face_update_display(bool in_fahrenheit) { - thermistor_driver_enable(); - float temperature_c = thermistor_driver_get_temperature(); - char buf[14]; - if (in_fahrenheit) { - sprintf(buf, "%4.1f#F", temperature_c * 1.8 + 32.0); - } else { - sprintf(buf, "%4.1f#C", temperature_c); - } - watch_display_string(buf, 4); - thermistor_driver_disable(); -} - -void thermistor_readout_face_setup(uint8_t watch_face_index, void ** context_ptr) { - (void) watch_face_index; - (void) context_ptr; -} - -void thermistor_readout_face_activate(void *context) { - (void) context; - watch_display_string("TE", 0); -} - -bool thermistor_readout_face_loop(movement_event_t event, void *context) { - (void) context; - watch_date_time_t date_time = watch_rtc_get_date_time(); - switch (event.event_type) { - case EVENT_ALARM_BUTTON_DOWN: - movement_set_use_imperial_units(!movement_use_imperial_units()); - _thermistor_readout_face_update_display(movement_use_imperial_units()); - break; - case EVENT_ACTIVATE: - // force a measurement to be taken immediately. - date_time.unit.second = 0; - // fall through - case EVENT_TICK: - if (date_time.unit.second % 5 == 4) { - // Not 100% on this, but I like the idea of using the signal indicator to indicate that we're sensing data. - // In this case we turn the indicator on a second before the reading is taken, and clear it when we're done. - // In reality the measurement takes a fraction of a second, but this is just to show something is happening. - watch_set_indicator(WATCH_INDICATOR_SIGNAL); - } else if (date_time.unit.second % 5 == 0) { - _thermistor_readout_face_update_display(movement_use_imperial_units()); - watch_clear_indicator(WATCH_INDICATOR_SIGNAL); - } - break; - case EVENT_LOW_ENERGY_UPDATE: - // clear seconds area and start tick animation if necessary - if (!watch_sleep_animation_is_running()) { - watch_display_string(" ", 8); - watch_start_sleep_animation(1000); - } - // update every 5 minutes - if (date_time.unit.minute % 5 == 0) { - watch_clear_indicator(WATCH_INDICATOR_SIGNAL); - _thermistor_readout_face_update_display(movement_use_imperial_units()); - watch_display_string(" ", 8); - } - break; - default: - movement_default_loop_handler(event); - break; - } - - return true; -} - -void thermistor_readout_face_resign(void *context) { - (void) context; -} diff --git a/movement/watch_faces/sensor/thermistor_readout_face.h b/movement/watch_faces/sensor/thermistor_readout_face.h deleted file mode 100644 index 6ca5a1a..0000000 --- a/movement/watch_faces/sensor/thermistor_readout_face.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2022 Joey Castillo - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#ifndef THERMISTOR_READOUT_FACE_H_ -#define THERMISTOR_READOUT_FACE_H_ - -/* - * THERMISTOR READOUT (aka Temperature Display) - * - * This watch face is designed to work with either the Temperature + GPIO - * sensor board or the Temperature + Light sensor board. It reads the current - * temperature from the thermistor voltage divider on the sensor board, and - * displays the current temperature in degrees Celsius. - * - * When the watch is on your wrist, your body heat interferes with an ambient - * temperature reading, but if you set it on a bedside table, strap it to your - * bike handlebars or place it outside of your tent while camping, this watch - * face can act as a digital thermometer for displaying ambient conditions. - * - * The temperature sensor watch face automatically samples the temperature - * once every five seconds, and it illuminates the Signal indicator just - * before taking a reading. - * - * Pressing the ALARM button toggles the unit display from Celsius to - * Fahrenheit. Technically this sets the global “Metric / Imperial” flag, so - * any other watch face that displays localizable units will display them in - * the system selected here. - */ - -#include "movement.h" - -void thermistor_readout_face_setup(uint8_t watch_face_index, void ** context_ptr); -void thermistor_readout_face_activate(void *context); -bool thermistor_readout_face_loop(movement_event_t event, void *context); -void thermistor_readout_face_resign(void *context); - -#define thermistor_readout_face ((const watch_face_t){ \ - thermistor_readout_face_setup, \ - thermistor_readout_face_activate, \ - thermistor_readout_face_loop, \ - thermistor_readout_face_resign, \ - NULL, \ -}) - -#endif // THERMISTOR_READOUT_FACE_H_ diff --git a/movement/watch_faces/sensor/thermistor_testing_face.h b/movement/watch_faces/sensor/thermistor_testing_face.h index e1efcaa..720a8ea 100644 --- a/movement/watch_faces/sensor/thermistor_testing_face.h +++ b/movement/watch_faces/sensor/thermistor_testing_face.h @@ -31,7 +31,7 @@ * This watch face is designed for testing temperature sensor boards. * It displays temperature readings at a relatively fast rate of 8 Hz, * and disables low energy mode so my testing device doesn't sleep. - * You more than likely want to use thermistor_readout_face instead. + * You more than likely want to use temperature_display_face instead. * * Press ALARM to toggle display of metric vs. imperial units. */