From b0bdf35d8f6340be04aebe7fbd368418d8c15043 Mon Sep 17 00:00:00 2001 From: Joey Castillo Date: Wed, 20 Apr 2022 17:18:58 -0400 Subject: add mechanism for building alternate firmware images --- movement/alt_fw/alt_time.h | 41 +++++++++++++++++++++++++++++++++++ movement/alt_fw/deep_space_now.h | 44 ++++++++++++++++++++++++++++++++++++++ movement/alt_fw/focus.h | 42 ++++++++++++++++++++++++++++++++++++ movement/alt_fw/the_athlete.h | 43 +++++++++++++++++++++++++++++++++++++ movement/alt_fw/the_backpacker.h | 44 ++++++++++++++++++++++++++++++++++++++ movement/alt_fw/the_stargazer.h | 42 ++++++++++++++++++++++++++++++++++++ movement/make/.gitignore | 1 + movement/make/make_alternate_fw.sh | 36 +++++++++++++++++++++++++++++++ movement/movement.c | 17 +++++++++++++++ 9 files changed, 310 insertions(+) create mode 100644 movement/alt_fw/alt_time.h create mode 100644 movement/alt_fw/deep_space_now.h create mode 100644 movement/alt_fw/focus.h create mode 100644 movement/alt_fw/the_athlete.h create mode 100644 movement/alt_fw/the_backpacker.h create mode 100644 movement/alt_fw/the_stargazer.h create mode 100755 movement/make/make_alternate_fw.sh (limited to 'movement') diff --git a/movement/alt_fw/alt_time.h b/movement/alt_fw/alt_time.h new file mode 100644 index 00000000..8108bcf3 --- /dev/null +++ b/movement/alt_fw/alt_time.h @@ -0,0 +1,41 @@ +/* + * 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 MOVEMENT_CONFIG_H_ +#define MOVEMENT_CONFIG_H_ + +#include "movement_faces.h" + +const watch_face_t watch_faces[] = { + simple_clock_face, + beats_face, + day_one_face, + + preferences_face, + set_time_face, +}; + +#define MOVEMENT_NUM_FACES (sizeof(watch_faces) / sizeof(watch_face_t)) + +#endif // MOVEMENT_CONFIG_H_ diff --git a/movement/alt_fw/deep_space_now.h b/movement/alt_fw/deep_space_now.h new file mode 100644 index 00000000..1d395fca --- /dev/null +++ b/movement/alt_fw/deep_space_now.h @@ -0,0 +1,44 @@ +/* + * 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 MOVEMENT_CONFIG_H_ +#define MOVEMENT_CONFIG_H_ + +#include "movement_faces.h" + +const watch_face_t watch_faces[] = { + simple_clock_face, + mars_time_face, + world_clock_face, + world_clock_face, + world_clock_face, + day_one_face, + + preferences_face, + set_time_face, +}; + +#define MOVEMENT_NUM_FACES (sizeof(watch_faces) / sizeof(watch_face_t)) + +#endif // MOVEMENT_CONFIG_H_ diff --git a/movement/alt_fw/focus.h b/movement/alt_fw/focus.h new file mode 100644 index 00000000..865459e8 --- /dev/null +++ b/movement/alt_fw/focus.h @@ -0,0 +1,42 @@ +/* + * 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 MOVEMENT_CONFIG_H_ +#define MOVEMENT_CONFIG_H_ + +#include "movement_faces.h" + +const watch_face_t watch_faces[] = { + simple_clock_face, + tomato_face, + stopwatch_face, + countdown_face, + + preferences_face, + set_time_face, +}; + +#define MOVEMENT_NUM_FACES (sizeof(watch_faces) / sizeof(watch_face_t)) + +#endif // MOVEMENT_CONFIG_H_ diff --git a/movement/alt_fw/the_athlete.h b/movement/alt_fw/the_athlete.h new file mode 100644 index 00000000..5d9d9529 --- /dev/null +++ b/movement/alt_fw/the_athlete.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 MOVEMENT_CONFIG_H_ +#define MOVEMENT_CONFIG_H_ + +#include "movement_faces.h" + +const watch_face_t watch_faces[] = { + simple_clock_face, + stopwatch_face, + countdown_face, + counter_face, + pulsometer_face, + + preferences_face, + set_time_face, +}; + +#define MOVEMENT_NUM_FACES (sizeof(watch_faces) / sizeof(watch_face_t)) + +#endif // MOVEMENT_CONFIG_H_ diff --git a/movement/alt_fw/the_backpacker.h b/movement/alt_fw/the_backpacker.h new file mode 100644 index 00000000..01af7b06 --- /dev/null +++ b/movement/alt_fw/the_backpacker.h @@ -0,0 +1,44 @@ +/* + * 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 MOVEMENT_CONFIG_H_ +#define MOVEMENT_CONFIG_H_ + +#include "movement_faces.h" + +const watch_face_t watch_faces[] = { + simple_clock_face, + sunrise_sunset_face, + moon_phase_face, + thermistor_readout_face, + thermistor_logging_face, + blinky_face, + + preferences_face, + set_time_face, +}; + +#define MOVEMENT_NUM_FACES (sizeof(watch_faces) / sizeof(watch_face_t)) + +#endif // MOVEMENT_CONFIG_H_ diff --git a/movement/alt_fw/the_stargazer.h b/movement/alt_fw/the_stargazer.h new file mode 100644 index 00000000..320436ad --- /dev/null +++ b/movement/alt_fw/the_stargazer.h @@ -0,0 +1,42 @@ +/* + * 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 MOVEMENT_CONFIG_H_ +#define MOVEMENT_CONFIG_H_ + +#include "movement_faces.h" + +const watch_face_t watch_faces[] = { + simple_clock_face, + astronomy_face, + sunrise_sunset_face, + moon_phase_face, + + preferences_face, + set_time_face, +}; + +#define MOVEMENT_NUM_FACES (sizeof(watch_faces) / sizeof(watch_face_t)) + +#endif // MOVEMENT_CONFIG_H_ diff --git a/movement/make/.gitignore b/movement/make/.gitignore index 3722ac63..45eba6ef 100755 --- a/movement/make/.gitignore +++ b/movement/make/.gitignore @@ -1 +1,2 @@ build/ +firmware/ diff --git a/movement/make/make_alternate_fw.sh b/movement/make/make_alternate_fw.sh new file mode 100755 index 00000000..575c9e52 --- /dev/null +++ b/movement/make/make_alternate_fw.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +fw_dir="firmware/download" +sim_dir="firmware/simulate" +colors=("green" "blue") +variants=("standard" "alt_time" "deep_space_now" "focus" "the_athlete" "the_backpacker" "the_stargazer") + +if [ -d "$fw_dir" ] ; then + rm -r "$fw_dir" +fi +if [ -d "$sim_dir" ] ; then + rm -r "$sim_dir" +fi + +mkdir -p "$fw_dir" +mkdir -p "$sim_dir" + +for variant in "${variants[@]}" +do + VARIANT=$(echo "$variant" | tr '[:lower:]' '[:upper:]') + for color in "${colors[@]}" + do + COLOR=$(echo "$color" | tr '[:lower:]' '[:upper:]') + make clean + make LED=$COLOR FIRMWARE=$VARIANT + mv "build/watch.uf2" "$fw_dir/$variant-$color.uf2" + done + make clean + emmake make FIRMWARE=$VARIANT + mkdir "$sim_dir/$variant/" + mv "build/watch.wasm" "$sim_dir/$variant/" + mv "build/watch.js" "$sim_dir/$variant/" + mv "build/watch.html" "$sim_dir/$variant/index.html" +done + +echo "Done." diff --git a/movement/movement.c b/movement/movement.c index 13cef97b..d61c90c7 100644 --- a/movement/movement.c +++ b/movement/movement.c @@ -27,7 +27,24 @@ #include #include "watch.h" #include "movement.h" + +#ifndef MOVEMENT_FIRMWARE +#include "movement_config.h" +#elif MOVEMENT_FIRMWARE == MOVEMENT_FIRMWARE_STANDARD #include "movement_config.h" +#elif MOVEMENT_FIRMWARE == MOVEMENT_FIRMWARE_ALT_TIME +#include "alt_fw/alt_time.h" +#elif MOVEMENT_FIRMWARE == MOVEMENT_FIRMWARE_FOCUS +#include "alt_fw/focus.h" +#elif MOVEMENT_FIRMWARE == MOVEMENT_FIRMWARE_THE_BACKPACKER +#include "alt_fw/the_backpacker.h" +#elif MOVEMENT_FIRMWARE == MOVEMENT_FIRMWARE_THE_ATHLETE +#include "alt_fw/the_athlete.h" +#elif MOVEMENT_FIRMWARE == MOVEMENT_FIRMWARE_THE_STARGAZER +#include "alt_fw/the_stargazer.h" +#elif MOVEMENT_FIRMWARE == MOVEMENT_FIRMWARE_DEEP_SPACE_NOW +#include "alt_fw/deep_space_now.h" +#endif #if __EMSCRIPTEN__ #include -- cgit v1.2.3