From 4ebc4e97ce3aa46909907f8b50a23ceb520326e0 Mon Sep 17 00:00:00 2001 From: Joey Castillo Date: Fri, 1 Apr 2022 15:42:49 -0400 Subject: movement: add thermistor testing watch face --- movement/make/Makefile | 1 + movement/movement_faces.h | 1 + .../watch_faces/sensor/thermistor_testing_face.c | 88 ++++++++++++++++++++++ .../watch_faces/sensor/thermistor_testing_face.h | 43 +++++++++++ 4 files changed, 133 insertions(+) create mode 100644 movement/watch_faces/sensor/thermistor_testing_face.c create mode 100644 movement/watch_faces/sensor/thermistor_testing_face.h (limited to 'movement') diff --git a/movement/make/Makefile b/movement/make/Makefile index cd4471b5..1e529954 100755 --- a/movement/make/Makefile +++ b/movement/make/Makefile @@ -41,6 +41,7 @@ SRCS += \ ../watch_faces/settings/set_time_face.c \ ../watch_faces/sensor/thermistor_readout_face.c \ ../watch_faces/sensor/thermistor_logging_face.c \ + ../watch_faces/sensor/thermistor_testing_face.c \ ../watch_faces/demo/character_set_face.c \ ../watch_faces/demo/voltage_face.c \ ../watch_faces/demo/lis2dh_logging_face.c \ diff --git a/movement/movement_faces.h b/movement/movement_faces.h index b093ebfa..50df00d0 100644 --- a/movement/movement_faces.h +++ b/movement/movement_faces.h @@ -32,6 +32,7 @@ #include "pulsometer_face.h" #include "thermistor_readout_face.h" #include "thermistor_logging_face.h" +#include "thermistor_testing_face.h" #include "character_set_face.h" #include "beats_face.h" #include "day_one_face.h" diff --git a/movement/watch_faces/sensor/thermistor_testing_face.c b/movement/watch_faces/sensor/thermistor_testing_face.c new file mode 100644 index 00000000..f50e0567 --- /dev/null +++ b/movement/watch_faces/sensor/thermistor_testing_face.c @@ -0,0 +1,88 @@ +/* + * 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_testing_face.h" +#include "thermistor_driver.h" +#include "watch.h" + +// 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. + +static void _thermistor_testing_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_testing_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) { + (void) watch_face_index; + (void) context_ptr; + // force one setting: never enter low energy mode. + // I'm using this watch face to test the temperature sensor boards; there's no need for it. + settings->bit.le_interval = 0; +} + +void thermistor_testing_face_activate(movement_settings_t *settings, void *context) { + (void) settings; + (void) context; + watch_display_string("TE", 0); + movement_request_tick_frequency(8); +} + +bool thermistor_testing_face_loop(movement_event_t event, movement_settings_t *settings, void *context) { + (void) context; + switch (event.event_type) { + case EVENT_MODE_BUTTON_UP: + movement_move_to_next_face(); + break; + case EVENT_ALARM_BUTTON_DOWN: + settings->bit.use_imperial_units = !settings->bit.use_imperial_units; + _thermistor_testing_face_update_display(settings->bit.use_imperial_units); + break; + case EVENT_ACTIVATE: + case EVENT_TICK: + _thermistor_testing_face_update_display(settings->bit.use_imperial_units); + break; + default: + break; + } + + return true; +} + +void thermistor_testing_face_resign(movement_settings_t *settings, void *context) { + (void) settings; + (void) context; +} diff --git a/movement/watch_faces/sensor/thermistor_testing_face.h b/movement/watch_faces/sensor/thermistor_testing_face.h new file mode 100644 index 00000000..656f58d5 --- /dev/null +++ b/movement/watch_faces/sensor/thermistor_testing_face.h @@ -0,0 +1,43 @@ +/* + * 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_TESTING_FACE_H_ +#define THERMISTOR_TESTING_FACE_H_ + +#include "movement.h" + +void thermistor_testing_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr); +void thermistor_testing_face_activate(movement_settings_t *settings, void *context); +bool thermistor_testing_face_loop(movement_event_t event, movement_settings_t *settings, void *context); +void thermistor_testing_face_resign(movement_settings_t *settings, void *context); + +#define thermistor_testing_face ((const watch_face_t){ \ + thermistor_testing_face_setup, \ + thermistor_testing_face_activate, \ + thermistor_testing_face_loop, \ + thermistor_testing_face_resign, \ + NULL, \ +}) + +#endif // THERMISTOR_TESTING_FACE_H_ -- cgit v1.2.3