From: joeycastillo Date: Wed, 2 Oct 2024 11:41:56 +0000 (-0400) Subject: bring over character set demo X-Git-Url: https://git.earman.xyz/?a=commitdiff_plain;h=3f846ff6b40037a2c49d287eb256307ef47fa045;p=sensor-watch.git bring over character set demo --- diff --git a/movement/watch_faces/demo/character_set_face.c b/movement/watch_faces/demo/character_set_face.c deleted file mode 100644 index 833362e..0000000 --- a/movement/watch_faces/demo/character_set_face.c +++ /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. - */ - -#include -#include -#include "character_set_face.h" -#include "watch.h" - -void character_set_face_setup(uint8_t watch_face_index, void ** context_ptr) { - (void) watch_face_index; - if (*context_ptr == NULL) *context_ptr = malloc(sizeof(char)); -} - -void character_set_face_activate(void *context) { - char *c = (char *)context; - *c = '@'; - movement_request_tick_frequency(0); -} - -bool character_set_face_loop(movement_event_t event, void *context) { - char *c = (char *)context; - char buf[11]; - switch (event.event_type) { - case EVENT_ALARM_BUTTON_UP: - *c = (*c) + 1; - if (*c & 0x80) *c = ' '; - // fall through - case EVENT_ACTIVATE: - sprintf(buf, "%c%c%c%c%c%c%c%c%c%c", *c, *c, *c, *c, *c, *c, *c, *c, *c, *c); - watch_display_string(buf, 0); - break; - case EVENT_TIMEOUT: - movement_move_to_face(0); - break; - default: - movement_default_loop_handler(event); - break; - } - - return true; -} - -void character_set_face_resign(void *context) { - (void) context; -} diff --git a/movement/watch_faces/demo/character_set_face.h b/movement/watch_faces/demo/character_set_face.h deleted file mode 100644 index b7c4c26..0000000 --- a/movement/watch_faces/demo/character_set_face.h +++ /dev/null @@ -1,54 +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 CHARACTER_SET_FACE_H_ -#define CHARACTER_SET_FACE_H_ - -/* - * CHARACTER SET FACE - * - * This watch face displays all of the characters in the Sensor Watch character - * set. You can advance from one character to the next with a short press of the - * ALARM button. - * - * This watch face may be useful to watch face developers, in that it can help - * them to understand which characters will work in different positions. - */ - -#include "movement.h" - -void character_set_face_setup(uint8_t watch_face_index, void ** context_ptr); -void character_set_face_activate(void *context); -bool character_set_face_loop(movement_event_t event, void *context); -void character_set_face_resign(void *context); - -#define character_set_face ((const watch_face_t){ \ - character_set_face_setup, \ - character_set_face_activate, \ - character_set_face_loop, \ - character_set_face_resign, \ - NULL, \ -}) - -#endif // CHARACTER_SET_FACE_H_ diff --git a/movement_faces.h b/movement_faces.h index 1d3215d..d774dcf 100644 --- a/movement_faces.h +++ b/movement_faces.h @@ -31,6 +31,7 @@ #include "countdown_face.h" #include "fast_stopwatch_face.h" #include "sunrise_sunset_face.h" +#include "character_set_face.h" #include "float_demo_face.h" #include "voltage_face.h" #include "set_time_face.h" diff --git a/watch-faces.mk b/watch-faces.mk index 0e38e1c..c36886c 100644 --- a/watch-faces.mk +++ b/watch-faces.mk @@ -6,6 +6,7 @@ SRCS += \ ./watch-faces/complication/countdown_face.c \ ./watch-faces/complication/fast_stopwatch_face.c \ ./watch-faces/complication/sunrise_sunset_face.c \ + ./watch-faces/demo/character_set_face.c \ ./watch-faces/demo/float_demo_face.c \ ./watch-faces/sensor/voltage_face.c \ ./watch-faces/settings/set_time_face.c \ diff --git a/watch-faces/demo/character_set_face.c b/watch-faces/demo/character_set_face.c new file mode 100644 index 0000000..9b1d8c8 --- /dev/null +++ b/watch-faces/demo/character_set_face.c @@ -0,0 +1,69 @@ +/* + * 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 "character_set_face.h" +#include "watch.h" +#include "watch_common_display.h" + +void character_set_face_setup(uint8_t watch_face_index, void ** context_ptr) { + (void) watch_face_index; + if (*context_ptr == NULL) *context_ptr = malloc(sizeof(char)); +} + +void character_set_face_activate(void *context) { + char *c = (char *)context; + *c = '@'; + movement_request_tick_frequency(0); +} + +bool character_set_face_loop(movement_event_t event, void *context) { + char *c = (char *)context; + char buf[11]; + switch (event.event_type) { + case EVENT_ALARM_BUTTON_UP: + *c = (*c) + 1; + if (*c & 0x80) *c = ' '; + // fall through + case EVENT_ACTIVATE: + sprintf(buf, "%c%c%c%c%c%c", *c, *c, *c, *c, *c, *c); + watch_display_text_with_fallback(WATCH_POSITION_TOP_LEFT, buf, buf); + watch_display_text_with_fallback(WATCH_POSITION_TOP_RIGHT, buf, buf); + watch_display_text_with_fallback(WATCH_POSITION_BOTTOM, buf, buf); + break; + case EVENT_TIMEOUT: + movement_move_to_face(0); + break; + default: + movement_default_loop_handler(event); + break; + } + + return true; +} + +void character_set_face_resign(void *context) { + (void) context; +} diff --git a/watch-faces/demo/character_set_face.h b/watch-faces/demo/character_set_face.h new file mode 100644 index 0000000..b7c4c26 --- /dev/null +++ b/watch-faces/demo/character_set_face.h @@ -0,0 +1,54 @@ +/* + * 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 CHARACTER_SET_FACE_H_ +#define CHARACTER_SET_FACE_H_ + +/* + * CHARACTER SET FACE + * + * This watch face displays all of the characters in the Sensor Watch character + * set. You can advance from one character to the next with a short press of the + * ALARM button. + * + * This watch face may be useful to watch face developers, in that it can help + * them to understand which characters will work in different positions. + */ + +#include "movement.h" + +void character_set_face_setup(uint8_t watch_face_index, void ** context_ptr); +void character_set_face_activate(void *context); +bool character_set_face_loop(movement_event_t event, void *context); +void character_set_face_resign(void *context); + +#define character_set_face ((const watch_face_t){ \ + character_set_face_setup, \ + character_set_face_activate, \ + character_set_face_loop, \ + character_set_face_resign, \ + NULL, \ +}) + +#endif // CHARACTER_SET_FACE_H_