]> git.earman.xyz Git - sensor-watch.git/commitdiff
Movement: give watch faces their index at setup time
authorJoey Castillo <joeycastillo@utexas.edu>
Mon, 20 Dec 2021 23:02:17 +0000 (17:02 -0600)
committerJoey Castillo <joeycastillo@utexas.edu>
Mon, 20 Dec 2021 23:02:17 +0000 (17:02 -0600)
33 files changed:
movement/README.md
movement/movement.c
movement/movement.h
movement/watch_faces/clock/simple_clock_face.c
movement/watch_faces/clock/simple_clock_face.h
movement/watch_faces/clock/world_clock_face.c
movement/watch_faces/clock/world_clock_face.h
movement/watch_faces/complications/beats_face.c
movement/watch_faces/complications/beats_face.h
movement/watch_faces/complications/day_one_face.c
movement/watch_faces/complications/day_one_face.h
movement/watch_faces/complications/pulsometer_face.c
movement/watch_faces/complications/pulsometer_face.h
movement/watch_faces/complications/stopwatch_face.c
movement/watch_faces/complications/stopwatch_face.h
movement/watch_faces/complications/totp_face.c
movement/watch_faces/complications/totp_face.h
movement/watch_faces/demos/character_set_face.c
movement/watch_faces/demos/character_set_face.h
movement/watch_faces/demos/demo_face.c
movement/watch_faces/demos/demo_face.h
movement/watch_faces/demos/lis2dh_logging_face.c
movement/watch_faces/demos/lis2dh_logging_face.h
movement/watch_faces/demos/voltage_face.c
movement/watch_faces/demos/voltage_face.h
movement/watch_faces/settings/preferences_face.c
movement/watch_faces/settings/preferences_face.h
movement/watch_faces/settings/set_time_face.c
movement/watch_faces/settings/set_time_face.h
movement/watch_faces/thermistor/thermistor_logging_face.c
movement/watch_faces/thermistor/thermistor_logging_face.h
movement/watch_faces/thermistor/thermistor_readout_face.c
movement/watch_faces/thermistor/thermistor_readout_face.h

index f5b9cb15877add55387765b67317f599e3d496b5..66c1f890a096bd709d13418d142e14f9f13751d3 100644 (file)
@@ -91,7 +91,7 @@ typedef struct {
 Finally, we define the four required functions, and define the watch face struct that users will use to add the face to their watch:
 
 ```c
-void pulsometer_face_setup(movement_settings_t *settings, void ** context_ptr);
+void pulsometer_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void pulsometer_face_activate(movement_settings_t *settings, void *context);
 bool pulsometer_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void pulsometer_face_resign(movement_settings_t *settings, void *context);
@@ -119,7 +119,7 @@ These define the tick frequency: when the pulsometer widget is updating the scre
 #### Watch Face Setup
 
 ```c
-void pulsometer_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void pulsometer_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
     if (*context_ptr == NULL) *context_ptr = malloc(sizeof(pulsometer_state_t));
 }
index 783c666c8e772c07ad0173501f8e827cf21317af..3e22ace549116a53fb243d524da9e70aeef2f55d 100644 (file)
@@ -218,7 +218,7 @@ void app_setup(void) {
         movement_request_tick_frequency(1);
 
         for(uint8_t i = 0; i < MOVEMENT_NUM_FACES; i++) {
-            watch_faces[i].setup(&movement_state.settings, &watch_face_contexts[i]);
+            watch_faces[i].setup(&movement_state.settings, i, &watch_face_contexts[i]);
         }
 
         watch_faces[movement_state.current_watch_face].activate(&movement_state.settings, watch_face_contexts[movement_state.current_watch_face]);
index b99f4e8b4c2029b5b70e0dae8a11dd1f2f04a4b8..5431436b4e3f8226aa3465c991c2a18858cd1bc0 100644 (file)
@@ -120,7 +120,7 @@ extern const char movement_valid_position_1_chars[];
   *                    data required for your watch face.
   *
   */
-typedef void (*watch_face_setup)(movement_settings_t *settings, void ** context_ptr);
+typedef void (*watch_face_setup)(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 
 /** @brief Prepare to go on-screen.
   * @details This function is called just before your watch enters the foreground. If your watch face has any
index 72f7713f00bfe3f1573b32ae49881a8f90cce8a5..0b26812f96bd3e1a46aa7e15eda12a5ae5671bb9 100644 (file)
@@ -3,8 +3,9 @@
 #include "watch.h"
 #include "watch_utility.h"
 
-void simple_clock_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void simple_clock_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     // the only context we need is the timestamp of the previous tick.
     if (*context_ptr == NULL) *context_ptr = malloc(sizeof(uint32_t));
 }
index 3db894d20c448bc3d5f6c12eb5c2418479607577..a6cb6ac2d56237f21338b41e710f261985637f68 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "movement.h"
 
-void simple_clock_face_setup(movement_settings_t *settings, void ** context_ptr);
+void simple_clock_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void simple_clock_face_activate(movement_settings_t *settings, void *context);
 bool simple_clock_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void simple_clock_face_resign(movement_settings_t *settings, void *context);
index e1d96c97dfcf6cd65c1409e16888ca97b84b6a97..5f2a1a86fc1f5585509bfe756c161a58f08e6f55 100644 (file)
@@ -4,8 +4,9 @@
 #include "watch.h"
 #include "watch_utility.h"
 
-void world_clock_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void world_clock_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     if (*context_ptr == NULL) {
         *context_ptr = malloc(sizeof(world_clock_state_t));
         world_clock_state_t *state = (world_clock_state_t *)*context_ptr;
index 1c4525a4acc8bed31c667f93fc7aceba5bbf78bd..b5e766bd91f041d3d6975718764756ed875de755 100644 (file)
@@ -15,7 +15,7 @@ typedef struct {
     uint32_t previous_date_time;
 } world_clock_state_t;
 
-void world_clock_face_setup(movement_settings_t *settings, void ** context_ptr);
+void world_clock_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void world_clock_face_activate(movement_settings_t *settings, void *context);
 bool world_clock_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void world_clock_face_resign(movement_settings_t *settings, void *context);
index 519d3e4e353fee7a4134882f1d9a7483328113df..b4c76db1da4d774e56a71cad79e04dcf914c6396 100644 (file)
@@ -5,8 +5,9 @@
 
 const uint8_t BEAT_REFRESH_FREQUENCY = 8;
 
-void beats_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void beats_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     (void) context_ptr;
     if (*context_ptr == NULL) {
         *context_ptr = malloc(sizeof(beats_face_state_t));
index bbe2396c7c630d481211d2dd698ab3897e496b92..f11126d1a86d059336dd30ea7e7f6dc62f21f45c 100644 (file)
@@ -9,7 +9,7 @@ typedef struct {
 } beats_face_state_t;
 
 uint32_t clock2beats(uint32_t hours, uint32_t minutes, uint32_t seconds, uint32_t subseconds, int16_t utc_offset);
-void beats_face_setup(movement_settings_t *settings, void ** context_ptr);
+void beats_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void beats_face_activate(movement_settings_t *settings, void *context);
 bool beats_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void beats_face_resign(movement_settings_t *settings, void *context);
index 3b185d048d9382259c5e24ed91f197f35e35c961..6cc2610627f0f14b5b441326d9215c476a2cdbcc 100644 (file)
@@ -17,8 +17,9 @@ static void _day_one_face_update(day_one_state_t state) {
     watch_display_string(buf, 0);
 }
 
-void day_one_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void day_one_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     if (*context_ptr == NULL) {
         *context_ptr = malloc(sizeof(day_one_state_t));
         memset(*context_ptr, 0, sizeof(day_one_state_t));
index 06c7816e9ac312b968ca54919b7d28053a1aa5c7..3eb911954f0f38fe4b36a5f0a790769aecae4a31 100644 (file)
@@ -15,7 +15,7 @@ typedef struct {
     bool birthday_changed;
 } day_one_state_t;
 
-void day_one_face_setup(movement_settings_t *settings, void ** context_ptr);
+void day_one_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void day_one_face_activate(movement_settings_t *settings, void *context);
 bool day_one_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void day_one_face_resign(movement_settings_t *settings, void *context);
index d54d8ddfb0cdc8c8f02931670fdcbff3dcf7b664..f1da963323f3e5edd8ea855e7b7c4644863b60ff 100644 (file)
@@ -6,8 +6,9 @@
 #define PULSOMETER_FACE_FREQUENCY_FACTOR (4ul) // refresh rate will be 2 to this power Hz (0 for 1 Hz, 2 for 4 Hz, etc.)
 #define PULSOMETER_FACE_FREQUENCY (1 << PULSOMETER_FACE_FREQUENCY_FACTOR)
 
-void pulsometer_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void pulsometer_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     if (*context_ptr == NULL) *context_ptr = malloc(sizeof(pulsometer_state_t));
 }
 
index cdb5b9772b50b520d4fd44759beda725b866b922..cb0b86bd374ef6cd950422cf2f311b685a3f5e62 100644 (file)
@@ -9,7 +9,7 @@ typedef struct {
     int16_t ticks;
 } pulsometer_state_t;
 
-void pulsometer_face_setup(movement_settings_t *settings, void ** context_ptr);
+void pulsometer_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void pulsometer_face_activate(movement_settings_t *settings, void *context);
 bool pulsometer_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void pulsometer_face_resign(movement_settings_t *settings, void *context);
index d1d1ee736e19d4cdd3e0c0b502d9e244f00bfbf7..4a145abf371645f72628308580ac42067498a0ed 100644 (file)
@@ -3,8 +3,9 @@
 #include "stopwatch_face.h"
 #include "watch.h"
 
-void stopwatch_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void stopwatch_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     if (*context_ptr == NULL) *context_ptr = malloc(sizeof(stopwatch_state_t));
 }
 
index 537c01ce7489a25f435b5a1924d3e3ef4595dbe4..ff0c1796e83ef05ce4ec4260c73fc374e91c4717 100644 (file)
@@ -10,7 +10,7 @@ typedef struct {
     uint8_t hours;
 } stopwatch_state_t;
 
-void stopwatch_face_setup(movement_settings_t *settings, void ** context_ptr);
+void stopwatch_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void stopwatch_face_activate(movement_settings_t *settings, void *context);
 bool stopwatch_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void stopwatch_face_resign(movement_settings_t *settings, void *context);
index 4a34d7ad5089ac1e53cb454e36e459a56454ff96..468e6a8c3aa712f4536ac2ffb9cc96ecc93d6463 100644 (file)
@@ -17,8 +17,9 @@ static uint8_t hmacKey[] = {0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x21, 0xde, 0xad, 0xbe
 
 static const uint32_t TIMESTEP = 30;
 
-void totp_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void totp_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     if (*context_ptr == NULL) *context_ptr = malloc(sizeof(totp_state_t));
     TOTP(hmacKey, sizeof(hmacKey), TIMESTEP);
 }
index 0527627aae38e3e2ec909757d3a657e5a3c47046..1e2c5c028edbbe352835a5ec4ec69963b4eee7e4 100644 (file)
@@ -10,7 +10,7 @@ typedef struct {
 
 } totp_state_t;
 
-void totp_face_setup(movement_settings_t *settings, void ** context_ptr);
+void totp_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void totp_face_activate(movement_settings_t *settings, void *context);
 bool totp_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void totp_face_resign(movement_settings_t *settings, void *context);
index eabb133f0ba1a6ce4a7004592ca3a598b8c68cc9..127c0fb3cbfe2a6782cfe95bd90aea69fb3b59d8 100644 (file)
@@ -3,8 +3,9 @@
 #include "character_set_face.h"
 #include "watch.h"
 
-void character_set_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void character_set_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     if (*context_ptr == NULL) *context_ptr = malloc(sizeof(char));
 }
 
index b27a835974e78fc07f36cf2d103aef998bdeb4cd..0c7cb85c753d54433573543403e3aee049e557a1 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "movement.h"
 
-void character_set_face_setup(movement_settings_t *settings, void ** context_ptr);
+void character_set_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void character_set_face_activate(movement_settings_t *settings, void *context);
 bool character_set_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void character_set_face_resign(movement_settings_t *settings, void *context);
index 82256767c85edd27031ed2d423f516ec307179e5..44a180ab9fe969c19d024e4b5f0da80ca63e72e3 100644 (file)
@@ -14,8 +14,9 @@ typedef enum {
     DEMO_FACE_NUM_FACES
 } demo_face_index_t;
 
-void demo_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void demo_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     if (*context_ptr == NULL) {
         *context_ptr = malloc(sizeof(demo_face_index_t));
         memset(*context_ptr, 0, sizeof(demo_face_index_t));
index b9e36ffcf8b8a11b1f372e615abd44fa38720927..1bc39c4f80b25b0b0e43d33a57947a9f3d359309 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "movement.h"
 
-void demo_face_setup(movement_settings_t *settings, void ** context_ptr);
+void demo_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void demo_face_activate(movement_settings_t *settings, void *context);
 bool demo_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void demo_face_resign(movement_settings_t *settings, void *context);
index 9f5783fe32d7fcd2059de31883a121f5bc794075..76892d07b8d894563ba4b159e07f2bba354291ec 100644 (file)
@@ -86,8 +86,9 @@ static void _lis2dh_logging_face_log_data(lis2dh_logger_state_t *logger_state) {
     logger_state->z_interrupts_this_hour = 0;
 }
 
-void lis2dh_logging_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void lis2dh_logging_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     if (*context_ptr == NULL) {
         *context_ptr = malloc(sizeof(lis2dh_logger_state_t));
         memset(*context_ptr, 0, sizeof(lis2dh_logger_state_t));
index b0faeca52a12447fd8759d7bf7d110877195c8eb..02b7ce9b74827707942c1b439635c34241ebefb9 100644 (file)
@@ -25,7 +25,7 @@ typedef struct {
     lis2dh_logger_data_point_t data[LIS2DH_LOGGING_NUM_DATA_POINTS];
 } lis2dh_logger_state_t;
 
-void lis2dh_logging_face_setup(movement_settings_t *settings, void ** context_ptr);
+void lis2dh_logging_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void lis2dh_logging_face_activate(movement_settings_t *settings, void *context);
 bool lis2dh_logging_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void lis2dh_logging_face_resign(movement_settings_t *settings, void *context);
index fe43343f97df24d3ca74ef0d66d8ca7a09941b24..a2b66854cc4f5d352b999971c091e66beb202f20 100644 (file)
@@ -11,8 +11,9 @@ static void _voltage_face_update_display(void) {
     watch_display_string(buf, 0);
 }
 
-void voltage_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void voltage_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     (void) context_ptr;
 }
 
index da580da558390c1bcda5a395e31e459962808ef1..530cf34f4eb747384512857cd22bed94982fc77e 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "movement.h"
 
-void voltage_face_setup(movement_settings_t *settings, void ** context_ptr);
+void voltage_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void voltage_face_activate(movement_settings_t *settings, void *context);
 bool voltage_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void voltage_face_resign(movement_settings_t *settings, void *context);
index ef65b1afe62e6f98808f6e5b4c9c1e744071cb50..8cbe4c688a03ed82e650c75e61818a8b18489d35 100644 (file)
@@ -17,8 +17,9 @@ const char preferences_face_titles[PREFERENCES_FACE_NUM_PREFEFENCES][11] = {
     "LT   red  ",   // Light: red component
 };
 
-void preferences_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void preferences_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     if (*context_ptr == NULL) *context_ptr = malloc(sizeof(uint8_t));
 }
 
index af628ba35fb35cb3e58b30664c31f4c491329a3b..54b4cff0ad0ab0e4819f2e0bbd0af2d01f767294 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "movement.h"
 
-void preferences_face_setup(movement_settings_t *settings, void ** context_ptr);
+void preferences_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void preferences_face_activate(movement_settings_t *settings, void *context);
 bool preferences_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void preferences_face_resign(movement_settings_t *settings, void *context);
index 0f5af31278159ba995073d0092e4cec281726abc..a32efe9fce5f6b901db367b267a8648349b6c4d4 100644 (file)
@@ -5,8 +5,9 @@
 #define SET_TIME_FACE_NUM_SETTINGS (7)
 const char set_time_face_titles[SET_TIME_FACE_NUM_SETTINGS][3] = {"HR", "M1", "SE", "YR", "MO", "DA", "ZO"};
 
-void set_time_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void set_time_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     if (*context_ptr == NULL) *context_ptr = malloc(sizeof(uint8_t));
 }
 
index 21fb1e442380401fc5199517f387b13e62d016f1..d58c46187c1f9529ff9b7465a8f728d70b3c8a30 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "movement.h"
 
-void set_time_face_setup(movement_settings_t *settings, void ** context_ptr);
+void set_time_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void set_time_face_activate(movement_settings_t *settings, void *context);
 bool set_time_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void set_time_face_resign(movement_settings_t *settings, void *context);
index 0d456785e49314539b57c69b256b1c33c1af3296..094600c2f734144d4ec5fc6fb5e2b5c6efd50c51 100644 (file)
@@ -48,8 +48,9 @@ static void _thermistor_logging_face_update_display(thermistor_logger_state_t *l
     watch_display_string(buf, 0);
 }
 
-void thermistor_logging_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void thermistor_logging_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     if (*context_ptr == NULL) {
         *context_ptr = malloc(sizeof(thermistor_logger_state_t));
         memset(*context_ptr, 0, sizeof(thermistor_logger_state_t));
index ece89396307f2eefcdd1f10b9e70d3e1e27b04c4..03e7ff3c16cc13f22d7da0ab3a94a0e2783d2bb6 100644 (file)
@@ -18,7 +18,7 @@ typedef struct {
     thermistor_logger_data_point_t data[THERMISTOR_LOGGING_NUM_DATA_POINTS];
 } thermistor_logger_state_t;
 
-void thermistor_logging_face_setup(movement_settings_t *settings, void ** context_ptr);
+void thermistor_logging_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void thermistor_logging_face_activate(movement_settings_t *settings, void *context);
 bool thermistor_logging_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void thermistor_logging_face_resign(movement_settings_t *settings, void *context);
index 5478f07dc6bfbbba9c002d0654b77978afb015ba..f55a42100b460f128f22af9879fc6aaccb895a29 100644 (file)
@@ -17,8 +17,9 @@ static void _thermistor_readout_face_update_display(bool in_fahrenheit) {
     thermistor_driver_disable();
 }
 
-void thermistor_readout_face_setup(movement_settings_t *settings, void ** context_ptr) {
+void thermistor_readout_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
     (void) settings;
+    (void) watch_face_index;
     (void) context_ptr;
 }
 
index 71d1542786c019f5a7bd63091b5ac118bdb32453..dc4f1b9903145ee77c1bbbd780b76d16c5668772 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "movement.h"
 
-void thermistor_readout_face_setup(movement_settings_t *settings, void ** context_ptr);
+void thermistor_readout_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
 void thermistor_readout_face_activate(movement_settings_t *settings, void *context);
 bool thermistor_readout_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
 void thermistor_readout_face_resign(movement_settings_t *settings, void *context);