From 4b3b2d177201de6222557426af2fafdac3ff505a Mon Sep 17 00:00:00 2001 From: Tropicananass Date: Mon, 12 May 2025 17:53:09 +0200 Subject: [PATCH] update and test with rpi zero 2 --- .vscode/c_cpp_properties.json | 17 + .vscode/settings.json | 9 + LedBars.code-workspace | 19 + RpiLedBars/README.md | 42 + RpiLedBars/backend/.build/CPackConfig.cmake | 87 + .../backend/.build/CPackSourceConfig.cmake | 94 + .../{ => backend/.build/src}/cava_config | 0 RpiLedBars/backend/CMakeLists.txt | 5 +- RpiLedBars/backend/README.md | 23 +- RpiLedBars/backend/build.sh | 3 + RpiLedBars/backend/install.sh | 5 +- RpiLedBars/backend/libs/CMakeLists.txt | 12 +- RpiLedBars/backend/run.sh | 6 + RpiLedBars/backend/src/main.c | 38 +- RpiLedBars/backend/src/rpi_param.c | 1 + RpiLedBars/backend/src/rpi_param.h | 53 +- RpiLedBars/backend/src/rpi_pattern.c | 97 +- RpiLedBars/backend/src/rpi_pattern.h | 17 +- .../backend/src/tasks/websocket/websocket.c | 177 +- RpiLedBars/deploy_target.sh | 2 + RpiLedBars/frontend/ledbars.nginx | 23 +- RpiLedBars/frontend/web/index.html | 83 +- RpiLedBars/frontend/web/index.js | 54 +- .../frontend/web/index_network_handler.js | 21 +- RpiLedBars/frontend/web/index_ui_handler.js | 45 +- .../LedBarsHat-2022-12-30_122742.zip | Bin 0 -> 55332 bytes .../LedBarsHat-2024-02-10_161903.zip | Bin 0 -> 26195 bytes .../LedBarsHat-2024-02-11_175928.zip | Bin 0 -> 26195 bytes .../LedBarsHat-2024-07-13_171800.zip | Bin 0 -> 26826 bytes .../LedBarsHat-2024-07-13_172332.zip | Bin 0 -> 26826 bytes RpiLedBars/hw/LedBarsHat/LedBarsHat.kicad_pcb | 3085 +- RpiLedBars/hw/LedBarsHat/LedBarsHat.kicad_prl | 81 + RpiLedBars/hw/LedBarsHat/LedBarsHat.kicad_pro | 699 + RpiLedBars/hw/LedBarsHat/LedBarsHat.sch | 1928 +- RpiLedBars/hw/LedBarsHat/LedBarsHat.sch-bak | 20 +- RpiLedBars/hw/LedBarsHat/LedBarsHat.sch.bak | 1087 + RpiLedBars/hw/LedBarsHat/fp-info-cache | 93058 +++++++++++++++ .../LedBarsUHat-2024-07-13_174533.zip | Bin 0 -> 20664 bytes .../LedBarsUHat-2024-07-13_175055.zip | Bin 0 -> 20664 bytes .../LedBarsUHat-2024-07-26_120910.zip | Bin 0 -> 38506 bytes .../LedBarsUHat-2024-07-26_131103.zip | Bin 0 -> 39906 bytes .../LedBarsUHat-2024-07-31_180047.zip | Bin 0 -> 39906 bytes .../LedBarsUHat-2024-08-31_175902.zip | Bin 0 -> 74048 bytes .../LedBarsUHat-2024-08-31_192339.zip | Bin 0 -> 64793 bytes .../LedBarsUHat-2024-08-31_193225.zip | Bin 0 -> 68732 bytes .../LedBarsUHat-2024-08-31_193730.zip | Bin 0 -> 69119 bytes .../LedBarsUHat-2024-08-31_194736.zip | Bin 0 -> 74617 bytes .../LedBarsUHat-2024-09-02_230914.zip | Bin 0 -> 84520 bytes .../LedBarsUHat-2025-05-08_201538.zip | Bin 0 -> 52200 bytes .../LedBarsUHat-2025-05-08_232357.zip | Bin 0 -> 52200 bytes .../hw/LedBarsUHat/LedBarsUHat.kicad_pcb | 4568 + .../hw/LedBarsUHat/LedBarsUHat.kicad_prl | 83 + .../hw/LedBarsUHat/LedBarsUHat.kicad_pro | 632 + .../hw/LedBarsUHat/LedBarsUHat.kicad_sch | 7025 ++ .../hw/LedBarsUHat/LedBarsUHat.kicad_sch-bak | 4410 + RpiLedBars/hw/LedBarsUHat/fp-info-cache | 96587 ++++++++++++++++ RpiLedBars/hw/LedBarsUHat/fp-lib-table | 4 + .../~_autosave-LedBarsUHat.kicad_pcb.lck | 1 + .../LedBarsHat-2024-07-13_174740.zip | Bin 0 -> 27538 bytes RpiLedBars/hw/recoverd/LedBarsHat.kicad_pcb | 1504 + RpiLedBars/hw/recoverd/LedBarsHat.kicad_prl | 87 + RpiLedBars/hw/recoverd/LedBarsHat.kicad_pro | 825 + .../I2S_MEMS_Microphone.kicad_mod | 28 + .../LedBarsHat.pretty/Led_Power_Bus.kicad_mod | 46 + .../Led_Signal_Bus.kicad_mod | 36 + .../hw/recoverd/LedBarsHat_DIP.kicad_pcb | 1532 + RpiLedBars/hw/recoverd/fp-info-cache | 1 + RpiLedBars/hw/recoverd/fp-lib-table | 3 + RpiLedBars/hw/recoverd/sym-lib-table | 4 + RpiLedBars/install.sh | 17 +- RpiLedBars/res/src/pixled/rpi_pixleds.c | 68 +- RpiLedBars/target_test.sh | 9 + RpiLedBars/wget-log | 11 - 73 files changed, 215772 insertions(+), 2600 deletions(-) create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/settings.json create mode 100644 LedBars.code-workspace create mode 100644 RpiLedBars/README.md create mode 100644 RpiLedBars/backend/.build/CPackConfig.cmake create mode 100644 RpiLedBars/backend/.build/CPackSourceConfig.cmake rename RpiLedBars/{ => backend/.build/src}/cava_config (100%) create mode 100644 RpiLedBars/backend/build.sh create mode 100644 RpiLedBars/backend/run.sh create mode 100644 RpiLedBars/deploy_target.sh create mode 100644 RpiLedBars/hw/LedBarsHat/LedBarsHat-backups/LedBarsHat-2022-12-30_122742.zip create mode 100644 RpiLedBars/hw/LedBarsHat/LedBarsHat-backups/LedBarsHat-2024-02-10_161903.zip create mode 100644 RpiLedBars/hw/LedBarsHat/LedBarsHat-backups/LedBarsHat-2024-02-11_175928.zip create mode 100644 RpiLedBars/hw/LedBarsHat/LedBarsHat-backups/LedBarsHat-2024-07-13_171800.zip create mode 100644 RpiLedBars/hw/LedBarsHat/LedBarsHat-backups/LedBarsHat-2024-07-13_172332.zip create mode 100644 RpiLedBars/hw/LedBarsHat/LedBarsHat.kicad_prl create mode 100644 RpiLedBars/hw/LedBarsHat/LedBarsHat.kicad_pro create mode 100644 RpiLedBars/hw/LedBarsHat/LedBarsHat.sch.bak create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2024-07-13_174533.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2024-07-13_175055.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2024-07-26_120910.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2024-07-26_131103.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2024-07-31_180047.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2024-08-31_175902.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2024-08-31_192339.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2024-08-31_193225.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2024-08-31_193730.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2024-08-31_194736.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2024-09-02_230914.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2025-05-08_201538.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat-backups/LedBarsUHat-2025-05-08_232357.zip create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat.kicad_pcb create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat.kicad_prl create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat.kicad_pro create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat.kicad_sch create mode 100644 RpiLedBars/hw/LedBarsUHat/LedBarsUHat.kicad_sch-bak create mode 100644 RpiLedBars/hw/LedBarsUHat/fp-info-cache create mode 100644 RpiLedBars/hw/LedBarsUHat/fp-lib-table create mode 100644 RpiLedBars/hw/LedBarsUHat/~_autosave-LedBarsUHat.kicad_pcb.lck create mode 100644 RpiLedBars/hw/recoverd/LedBarsHat-backups/LedBarsHat-2024-07-13_174740.zip create mode 100644 RpiLedBars/hw/recoverd/LedBarsHat.kicad_pcb create mode 100644 RpiLedBars/hw/recoverd/LedBarsHat.kicad_prl create mode 100644 RpiLedBars/hw/recoverd/LedBarsHat.kicad_pro create mode 100644 RpiLedBars/hw/recoverd/LedBarsHat.pretty/I2S_MEMS_Microphone.kicad_mod create mode 100644 RpiLedBars/hw/recoverd/LedBarsHat.pretty/Led_Power_Bus.kicad_mod create mode 100644 RpiLedBars/hw/recoverd/LedBarsHat.pretty/Led_Signal_Bus.kicad_mod create mode 100644 RpiLedBars/hw/recoverd/LedBarsHat_DIP.kicad_pcb create mode 100644 RpiLedBars/hw/recoverd/fp-info-cache create mode 100644 RpiLedBars/hw/recoverd/fp-lib-table create mode 100644 RpiLedBars/hw/recoverd/sym-lib-table create mode 100644 RpiLedBars/target_test.sh delete mode 100644 RpiLedBars/wget-log diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..e556c1e --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,17 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**", + "${workspaceFolder}/RpiLedBars/backend/src/tasks/includes/*" + ], + "defines": [], + "compilerPath": "/usr/bin/gcc", + "cStandard": "gnu17", + "cppStandard": "c++17", + "intelliSenseMode": "linux-gcc-arm" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4c6866e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "files.associations": { + "stdlib.h": "c", + "websocket.h": "c", + "stdint.h": "c", + "stdint-gcc.h": "c", + "rpi_param.h": "c" + } +} \ No newline at end of file diff --git a/LedBars.code-workspace b/LedBars.code-workspace new file mode 100644 index 0000000..6e5ab30 --- /dev/null +++ b/LedBars.code-workspace @@ -0,0 +1,19 @@ +{ + "folders": [ + { + "path": "." + }, + { + "path": "RpiLedBars" + } + ], + "settings": { + "files.associations": { + "stdlib.h": "c", + "websocket.h": "c", + "stdint.h": "c", + "stdint-gcc.h": "c", + "rpi_param.h": "c" + } + } +} \ No newline at end of file diff --git a/RpiLedBars/README.md b/RpiLedBars/README.md new file mode 100644 index 0000000..aeda0de --- /dev/null +++ b/RpiLedBars/README.md @@ -0,0 +1,42 @@ +# RpiLedBars + +## TODO + +### backend + +#### Toolchain + +- [ ] build raspberrypi toolchain : + - https://tttapa.github.io/Pages/Raspberry-Pi/C++-Development/Building-The-Toolchain.html + - https://medium.com/@stonepreston/how-to-cross-compile-a-cmake-c-application-for-the-raspberry-pi-4-on-ubuntu-20-04-bac6735d36df +- [ ] create a dockerized dev env +- [ ] use CMake to crosscompile +- [ ] use gdb and valgrind to debug and itegrate in vscode : + - https://code.visualstudio.com/docs/cpp/configure-intellisense-crosscompilation + +#### Code + +- [ ] move midi specific computing from param +- [ ] Use Json : https://github.com/json-c/json-c +- [ ] Midi note and clock sync +- [ ] Transitions + +### frontend + +- [ ] use Vue.js +- [ ] automate deployment +- [ ] define protocol + +### hardware + +- [ ] add button to switch AP + +## Protocol + +### From frontend to backend +| msg | desc | +| --- | ---- | +| c | | +| | | + +### From backend to frontend \ No newline at end of file diff --git a/RpiLedBars/backend/.build/CPackConfig.cmake b/RpiLedBars/backend/.build/CPackConfig.cmake new file mode 100644 index 0000000..7ff6035 --- /dev/null +++ b/RpiLedBars/backend/.build/CPackConfig.cmake @@ -0,0 +1,87 @@ +# This file will be configured to contain variables for CPack. These variables +# should be set in the CMake list file of the project before CPack module is +# included. The list of available CPACK_xxx variables and their associated +# documentation may be obtained using +# cpack --help-variable-list +# +# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) +# and some are specific to a generator +# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables +# usually begin with CPACK__xxxx. + + +set(CPACK_BINARY_7Z "") +set(CPACK_BINARY_BUNDLE "") +set(CPACK_BINARY_CYGWIN "") +set(CPACK_BINARY_DEB "OFF") +set(CPACK_BINARY_DRAGNDROP "") +set(CPACK_BINARY_FREEBSD "OFF") +set(CPACK_BINARY_IFW "OFF") +set(CPACK_BINARY_NSIS "OFF") +set(CPACK_BINARY_NUGET "") +set(CPACK_BINARY_OSXX11 "") +set(CPACK_BINARY_PACKAGEMAKER "") +set(CPACK_BINARY_PRODUCTBUILD "") +set(CPACK_BINARY_RPM "OFF") +set(CPACK_BINARY_STGZ "ON") +set(CPACK_BINARY_TBZ2 "OFF") +set(CPACK_BINARY_TGZ "ON") +set(CPACK_BINARY_TXZ "OFF") +set(CPACK_BINARY_TZ "ON") +set(CPACK_BINARY_WIX "") +set(CPACK_BINARY_ZIP "") +set(CPACK_BUILD_SOURCE_DIRS "/home/paquito/Projects/LedBars/RpiLedBars/backend;/home/paquito/Projects/LedBars/RpiLedBars/backend/.build") +set(CPACK_CMAKE_GENERATOR "Unix Makefiles") +set(CPACK_COMPONENTS_ALL "") +set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") +set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/share/cmake-3.16/Templates/CPack.GenericDescription.txt") +set(CPACK_GENERATOR "STGZ;TGZ;TZ") +set(CPACK_INSTALL_CMAKE_PROJECTS "/home/paquito/Projects/LedBars/RpiLedBars/backend/.build;RpiLedBars;ALL;/") +set(CPACK_INSTALL_PREFIX "/usr/local") +set(CPACK_MODULE_PATH "") +set(CPACK_NSIS_DISPLAY_NAME "json-c 0.16.99") +set(CPACK_NSIS_INSTALLER_ICON_CODE "") +set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") +set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") +set(CPACK_NSIS_PACKAGE_NAME "json-c 0.16.99") +set(CPACK_OUTPUT_CONFIG_FILE "/home/paquito/Projects/LedBars/RpiLedBars/backend/.build/CPackConfig.cmake") +set(CPACK_PACKAGE_DEFAULT_LOCATION "/") +set(CPACK_PACKAGE_DESCRIPTION_FILE "/usr/share/cmake-3.16/Templates/CPack.GenericDescription.txt") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "RpiLedBars built using CMake") +set(CPACK_PACKAGE_FILE_NAME "json-c-0.16.99-Linux") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "json-c 0.16.99") +set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "json-c 0.16.99") +set(CPACK_PACKAGE_NAME "json-c") +set(CPACK_PACKAGE_RELOCATABLE "true") +set(CPACK_PACKAGE_VENDOR "Humanity") +set(CPACK_PACKAGE_VERSION "0.16.99") +set(CPACK_PACKAGE_VERSION_MAJOR "0") +set(CPACK_PACKAGE_VERSION_MINOR "16") +set(CPACK_PACKAGE_VERSION_PATCH "99") +set(CPACK_RESOURCE_FILE_LICENSE "/usr/share/cmake-3.16/Templates/CPack.GenericLicense.txt") +set(CPACK_RESOURCE_FILE_README "/usr/share/cmake-3.16/Templates/CPack.GenericDescription.txt") +set(CPACK_RESOURCE_FILE_WELCOME "/usr/share/cmake-3.16/Templates/CPack.GenericWelcome.txt") +set(CPACK_SET_DESTDIR "OFF") +set(CPACK_SOURCE_7Z "") +set(CPACK_SOURCE_CYGWIN "") +set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ") +set(CPACK_SOURCE_IGNORE_FILES "/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/build;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/cmake-build-debug;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/pack;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.idea;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.DS_Store;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.git;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.vscode") +set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/home/paquito/Projects/LedBars/RpiLedBars/backend/.build/CPackSourceConfig.cmake") +set(CPACK_SOURCE_RPM "OFF") +set(CPACK_SOURCE_TBZ2 "ON") +set(CPACK_SOURCE_TGZ "ON") +set(CPACK_SOURCE_TXZ "ON") +set(CPACK_SOURCE_TZ "ON") +set(CPACK_SOURCE_ZIP "OFF") +set(CPACK_SYSTEM_NAME "Linux") +set(CPACK_TOPLEVEL_TAG "Linux") +set(CPACK_WIX_SIZEOF_VOID_P "8") + +if(NOT CPACK_PROPERTIES_FILE) + set(CPACK_PROPERTIES_FILE "/home/paquito/Projects/LedBars/RpiLedBars/backend/.build/CPackProperties.cmake") +endif() + +if(EXISTS ${CPACK_PROPERTIES_FILE}) + include(${CPACK_PROPERTIES_FILE}) +endif() diff --git a/RpiLedBars/backend/.build/CPackSourceConfig.cmake b/RpiLedBars/backend/.build/CPackSourceConfig.cmake new file mode 100644 index 0000000..9bedac9 --- /dev/null +++ b/RpiLedBars/backend/.build/CPackSourceConfig.cmake @@ -0,0 +1,94 @@ +# This file will be configured to contain variables for CPack. These variables +# should be set in the CMake list file of the project before CPack module is +# included. The list of available CPACK_xxx variables and their associated +# documentation may be obtained using +# cpack --help-variable-list +# +# Some variables are common to all generators (e.g. CPACK_PACKAGE_NAME) +# and some are specific to a generator +# (e.g. CPACK_NSIS_EXTRA_INSTALL_COMMANDS). The generator specific variables +# usually begin with CPACK__xxxx. + + +set(CPACK_BINARY_7Z "") +set(CPACK_BINARY_BUNDLE "") +set(CPACK_BINARY_CYGWIN "") +set(CPACK_BINARY_DEB "OFF") +set(CPACK_BINARY_DRAGNDROP "") +set(CPACK_BINARY_FREEBSD "OFF") +set(CPACK_BINARY_IFW "OFF") +set(CPACK_BINARY_NSIS "OFF") +set(CPACK_BINARY_NUGET "") +set(CPACK_BINARY_OSXX11 "") +set(CPACK_BINARY_PACKAGEMAKER "") +set(CPACK_BINARY_PRODUCTBUILD "") +set(CPACK_BINARY_RPM "OFF") +set(CPACK_BINARY_STGZ "ON") +set(CPACK_BINARY_TBZ2 "OFF") +set(CPACK_BINARY_TGZ "ON") +set(CPACK_BINARY_TXZ "OFF") +set(CPACK_BINARY_TZ "ON") +set(CPACK_BINARY_WIX "") +set(CPACK_BINARY_ZIP "") +set(CPACK_BUILD_SOURCE_DIRS "/home/paquito/Projects/LedBars/RpiLedBars/backend;/home/paquito/Projects/LedBars/RpiLedBars/backend/.build") +set(CPACK_CMAKE_GENERATOR "Unix Makefiles") +set(CPACK_COMPONENTS_ALL "") +set(CPACK_COMPONENT_UNSPECIFIED_HIDDEN "TRUE") +set(CPACK_COMPONENT_UNSPECIFIED_REQUIRED "TRUE") +set(CPACK_DEFAULT_PACKAGE_DESCRIPTION_FILE "/usr/share/cmake-3.16/Templates/CPack.GenericDescription.txt") +set(CPACK_GENERATOR "TBZ2;TGZ;TXZ;TZ") +set(CPACK_IGNORE_FILES "/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/build;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/cmake-build-debug;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/pack;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.idea;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.DS_Store;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.git;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.vscode") +set(CPACK_INSTALLED_DIRECTORIES "/home/paquito/Projects/LedBars/RpiLedBars/backend;/") +set(CPACK_INSTALL_CMAKE_PROJECTS "") +set(CPACK_INSTALL_PREFIX "/usr/local") +set(CPACK_MODULE_PATH "") +set(CPACK_NSIS_DISPLAY_NAME "json-c 0.16.99") +set(CPACK_NSIS_INSTALLER_ICON_CODE "") +set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "") +set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES") +set(CPACK_NSIS_PACKAGE_NAME "json-c 0.16.99") +set(CPACK_OUTPUT_CONFIG_FILE "/home/paquito/Projects/LedBars/RpiLedBars/backend/.build/CPackConfig.cmake") +set(CPACK_PACKAGE_DEFAULT_LOCATION "/") +set(CPACK_PACKAGE_DESCRIPTION_FILE "/usr/share/cmake-3.16/Templates/CPack.GenericDescription.txt") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "RpiLedBars built using CMake") +set(CPACK_PACKAGE_FILE_NAME "json-c-0.16.99-Source") +set(CPACK_PACKAGE_INSTALL_DIRECTORY "json-c 0.16.99") +set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "json-c 0.16.99") +set(CPACK_PACKAGE_NAME "json-c") +set(CPACK_PACKAGE_RELOCATABLE "true") +set(CPACK_PACKAGE_VENDOR "Humanity") +set(CPACK_PACKAGE_VERSION "0.16.99") +set(CPACK_PACKAGE_VERSION_MAJOR "0") +set(CPACK_PACKAGE_VERSION_MINOR "16") +set(CPACK_PACKAGE_VERSION_PATCH "99") +set(CPACK_RESOURCE_FILE_LICENSE "/usr/share/cmake-3.16/Templates/CPack.GenericLicense.txt") +set(CPACK_RESOURCE_FILE_README "/usr/share/cmake-3.16/Templates/CPack.GenericDescription.txt") +set(CPACK_RESOURCE_FILE_WELCOME "/usr/share/cmake-3.16/Templates/CPack.GenericWelcome.txt") +set(CPACK_RPM_PACKAGE_SOURCES "ON") +set(CPACK_SET_DESTDIR "OFF") +set(CPACK_SOURCE_7Z "") +set(CPACK_SOURCE_CYGWIN "") +set(CPACK_SOURCE_GENERATOR "TBZ2;TGZ;TXZ;TZ") +set(CPACK_SOURCE_IGNORE_FILES "/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/build;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/cmake-build-debug;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/pack;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.idea;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.DS_Store;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.git;/mnt/c/Users/Paquito/Projects/LedBars/RpiLedBars/backend/.build/_deps/json-c-src/.vscode") +set(CPACK_SOURCE_INSTALLED_DIRECTORIES "/home/paquito/Projects/LedBars/RpiLedBars/backend;/") +set(CPACK_SOURCE_OUTPUT_CONFIG_FILE "/home/paquito/Projects/LedBars/RpiLedBars/backend/.build/CPackSourceConfig.cmake") +set(CPACK_SOURCE_PACKAGE_FILE_NAME "json-c-0.16.99-Source") +set(CPACK_SOURCE_RPM "OFF") +set(CPACK_SOURCE_TBZ2 "ON") +set(CPACK_SOURCE_TGZ "ON") +set(CPACK_SOURCE_TOPLEVEL_TAG "Linux-Source") +set(CPACK_SOURCE_TXZ "ON") +set(CPACK_SOURCE_TZ "ON") +set(CPACK_SOURCE_ZIP "OFF") +set(CPACK_STRIP_FILES "") +set(CPACK_SYSTEM_NAME "Linux") +set(CPACK_TOPLEVEL_TAG "Linux-Source") +set(CPACK_WIX_SIZEOF_VOID_P "8") + +if(NOT CPACK_PROPERTIES_FILE) + set(CPACK_PROPERTIES_FILE "/home/paquito/Projects/LedBars/RpiLedBars/backend/.build/CPackProperties.cmake") +endif() + +if(EXISTS ${CPACK_PROPERTIES_FILE}) + include(${CPACK_PROPERTIES_FILE}) +endif() diff --git a/RpiLedBars/cava_config b/RpiLedBars/backend/.build/src/cava_config similarity index 100% rename from RpiLedBars/cava_config rename to RpiLedBars/backend/.build/src/cava_config diff --git a/RpiLedBars/backend/CMakeLists.txt b/RpiLedBars/backend/CMakeLists.txt index 4b7d0e8..12cb9ea 100644 --- a/RpiLedBars/backend/CMakeLists.txt +++ b/RpiLedBars/backend/CMakeLists.txt @@ -5,8 +5,9 @@ project(RpiLedBars VERSION 0.5 LANGUAGES C) set(CMAKE_C_STANDARD 99) +add_subdirectory(src) + add_subdirectory(libs) -configure_file(cava_config ../ COPYONLY) +configure_file(cava_config src/ COPYONLY) -add_subdirectory(src) \ No newline at end of file diff --git a/RpiLedBars/backend/README.md b/RpiLedBars/backend/README.md index 53ceb4b..1cfa335 100644 --- a/RpiLedBars/backend/README.md +++ b/RpiLedBars/backend/README.md @@ -19,11 +19,18 @@ sudo pip3 install --upgrade adafruit-python-shell ~~~ #### Build and install module +OLD OS <= buster ~~~bash cd /tmp sudo wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2smic.py sudo python3 i2smic.py ~~~ +New os +Edit `sudo nano /boot/firmware/config.txt` to add +~~~ +dtoverlay=googlevoicehat-soundcard +~~~ + After a kernel update this step as to be executed again (after reboot -> depends on `uname`) @@ -48,14 +55,24 @@ cp res/.asoundrc ~/.asoundrc ### Project depenencies ~~~bash -sudo apt install libasound2-dev wiringpi +sudo apt install cmake libasound2-dev +~~~ + +#### WiringPi +~~~bash +( +cd /tmp +wget https://github.com/WiringPi/WiringPi/releases/download/3.6/wiringpi_3.6_armhf.deb +sudo apt install /tmp/wiringpi_3.6_armhf.deb +) ~~~ #### Cava ~~~bash -sudo apt install libfftw3-dev libasound2-dev libtool automake -cd cava_ +sudo apt install libfftw3-dev libasound2-dev libtool automake git +git clone https://github.com/karlstav/cava.git +cd cava ./autogen.sh ./configure make diff --git a/RpiLedBars/backend/build.sh b/RpiLedBars/backend/build.sh new file mode 100644 index 0000000..8a5d4df --- /dev/null +++ b/RpiLedBars/backend/build.sh @@ -0,0 +1,3 @@ +#! /usr/bin/env bash + +cmake -B .build && cmake --build .build \ No newline at end of file diff --git a/RpiLedBars/backend/install.sh b/RpiLedBars/backend/install.sh index 135c5ad..a75dbb5 100755 --- a/RpiLedBars/backend/install.sh +++ b/RpiLedBars/backend/install.sh @@ -1,5 +1,8 @@ +#! /usr/bin/env bash + # make -install -v -D ../build/src/RpiLedBars cava_config -t /opt/pixled/ +sudo -s install -v -D ./build/src cava_config -t /opt/pixled/ +sudo -s install -v -D ./build/src RpiLedBars -t /opt/pixled/ # cp ./bin/pixled bin/service_pixled sudo -s bash -c "cp pixled.service /etc/systemd/system; systemctl daemon-reload" # sudo -s bash -c "systemctl enable pixled" diff --git a/RpiLedBars/backend/libs/CMakeLists.txt b/RpiLedBars/backend/libs/CMakeLists.txt index c68072b..061ee43 100644 --- a/RpiLedBars/backend/libs/CMakeLists.txt +++ b/RpiLedBars/backend/libs/CMakeLists.txt @@ -1,6 +1,9 @@ include(FetchContent) -set(FETCHCONTENT_FULLY_DISCONNECTED ON) +#set(FETCHCONTENT_FULLY_DISCONNECTED ON) + +# set(BUILD_SHARED_LIBS off) +# set(ENABLE_CJSON_TEST off) FetchContent_Declare( logc @@ -12,5 +15,10 @@ FetchContent_Declare( GIT_REPOSITORY "https://github.com/Tropicananass/wsServer.git" ) +# FetchContent_Declare( +# cjson +# GIT_REPOSITORY "https://github.com/DaveGamble/cJSON.git" +# ) + # add the log.c and ws libraries -FetchContent_MakeAvailable(logc ws) \ No newline at end of file +FetchContent_MakeAvailable(logc ws) diff --git a/RpiLedBars/backend/run.sh b/RpiLedBars/backend/run.sh new file mode 100644 index 0000000..6b12855 --- /dev/null +++ b/RpiLedBars/backend/run.sh @@ -0,0 +1,6 @@ +#! /usr/bin/env bash + +sudo -s bash -c "systemctl stop pixled" +cd '.build/src/' || exit 1 +chmod u+x ./RpiLedBars +sudo ./RpiLedBars -n 60 -d 1 \ No newline at end of file diff --git a/RpiLedBars/backend/src/main.c b/RpiLedBars/backend/src/main.c index 7dae59c..6a170ba 100644 --- a/RpiLedBars/backend/src/main.c +++ b/RpiLedBars/backend/src/main.c @@ -137,40 +137,48 @@ int main(int argc, char const *argv[]) { **************************************************************************************************/ void parseCommandLineArgs(int argc, char const *argv[]) { - int args = 0; + int argIt = 0; - while (argc > ++args) // Process command-line args + while (argc > ++argIt) // Process command-line args { - if (argv[args][0] == '-') { - switch (toupper(argv[args][1])) { + if (argv[argIt][0] == '-' && argv[argIt][2] == '\0') { + switch (toupper(argv[argIt][1])) { case 'N': // -N: number of LEDs per channel - if (args >= argc - 1) { + if (argIt >= argc - 1) { log_error("no numeric value"); exit(-EXIT_FAILURE); } else { - param_access->pixled.chanLedCount = atoi(argv[++args]); + int ledCount = atoi(argv[++argIt]); + param_access->pixled.chanLedCount = ledCount <= CHAN_MAXLEDS ? ledCount : CHAN_MAXLEDS; } break; + case 'D': // -D: debug level - if (args >= argc - 1) { + if (argIt >= argc - 1) { log_error("no debug level"); exit(-EXIT_FAILURE); } else { - logLevel = atoi(argv[++args]); + logLevel = atoi(argv[++argIt]); log_set_level(logLevel); } break; + case 'T': // -T: test mode IsTestMode = true; break; + default: // Otherwise error - log_error("Unrecognised option '%c'\n", argv[args][1]); - fprintf(stderr, "Options:\n" - " -t Test mode (flash LEDs)\n" - " -n num number of LEDs per channel\n" - " -d lvl debug level\n"); + log_error("Unknown option '%c'\n", argv[argIt][1]); + fprintf(stderr, + "Options:\n" + " -t Test mode (flash LEDs)\n" + " -n num number of LEDs per channel (max : %d)\n" + " -d lvl debug level\n", + CHAN_MAXLEDS); exit(-EXIT_FAILURE); } + } else { + log_warn("Unknown option '%s'\n", argv[argIt]); } } } @@ -288,10 +296,10 @@ void execute_autonomous_mode() { if ((ret = cava_get_buffer(&buffer)) == 0) { switch (param_access->auton.pattern) { case 0: - bounce_led_and_color(buffer, CAVA_BAR_NUMBER); + bounce_led(buffer, CAVA_BAR_NUMBER); break; case 1: - bounce_led(buffer, CAVA_BAR_NUMBER); + bounce_led_and_color(buffer, CAVA_BAR_NUMBER); break; case 2: bounce_led_and_travel(buffer, CAVA_BAR_NUMBER); diff --git a/RpiLedBars/backend/src/rpi_param.c b/RpiLedBars/backend/src/rpi_param.c index df95f9e..35f20c0 100644 --- a/RpiLedBars/backend/src/rpi_param.c +++ b/RpiLedBars/backend/src/rpi_param.c @@ -43,6 +43,7 @@ ledbar_param_t const dummyLedbarParam = {.sensitivity = 1., **************************************************************************************************/ param_t param; +param_t *param_access = NULL; pthread_mutex_t paramLockMutex = PTHREAD_MUTEX_INITIALIZER; diff --git a/RpiLedBars/backend/src/rpi_param.h b/RpiLedBars/backend/src/rpi_param.h index 590304c..62e9f1d 100644 --- a/RpiLedBars/backend/src/rpi_param.h +++ b/RpiLedBars/backend/src/rpi_param.h @@ -54,7 +54,10 @@ typedef struct { } auton_param_t; /** + * @brief * + * @var ledbar_param_t::sensitivity + * sensitivity of the led bar */ typedef struct { float sensitivity; @@ -81,7 +84,7 @@ typedef struct { * Global Variables **************************************************************************************************/ -param_t *param_access; +extern param_t *param_access; /*************************************************************************************************** * External Function Prototypes @@ -89,56 +92,92 @@ param_t *param_access; /** * @brief + * */ void param_setup(); /** - * @brief + * @brief Set the mode object * * @param[in] mode */ void set_mode(unsigned int mode); /** - * @brief + * @brief Set the pattern object * * @param[in] pattern */ void set_pattern(unsigned int pattern); /** - * @brief + * @brief Set the hue auto shift object * * @param[in] HasToBeEnabled */ void set_hue_auto_shift(bool HasToBeEnabled); /** - * @brief + * @brief Set the gravity object * * @param[in] gravity8 */ void set_gravity(int8_t gravity8); /** - * @brief + * @brief Set the sensitivity object * * @param[in] channel - * * @param[in] sensitivity8 */ void set_sensitivity(int channel, int8_t sensitivity8); +/** + * @brief Set the hue base object + * + * @param[in] channel + * @param[in] hueBase8 + */ void set_hue_base(int channel, int8_t hueBase8); +/** + * @brief Set the hue interval object + * + * @param[in] channel + * @param[in] hueInterval8 + */ void set_hue_interval(int channel, int8_t hueInterval8); +/** + * @brief Set the hue auto shift interval object + * + * @param[in] channel + * @param[in] hueInterval8 + */ void set_hue_auto_shift_interval(int channel, int8_t hueInterval8); +/** + * @brief Set the hue auto shift speed object + * + * @param[in] channel + * @param[in] hueSpeed8 + */ void set_hue_auto_shift_speed(int channel, int8_t hueSpeed8); +/** + * @brief Set the luminosity object + * + * @param[in] channel + * @param[in] luminosity8 + */ void set_luminosity(int channel, int8_t luminosity8); +/** + * @brief Set the saturation object + * + * @param[in] channel + * @param[in] saturation8 + */ void set_saturation(int channel, int8_t saturation8); #endif /* __RPI_PARAM_H__ */ \ No newline at end of file diff --git a/RpiLedBars/backend/src/rpi_pattern.c b/RpiLedBars/backend/src/rpi_pattern.c index a0d41e3..43f3749 100644 --- a/RpiLedBars/backend/src/rpi_pattern.c +++ b/RpiLedBars/backend/src/rpi_pattern.c @@ -51,51 +51,64 @@ int baseLedIndexArray[LED_NCHANS]; * Internal Function Prototypes **************************************************************************************************/ +/** + * @brief Get the max on interval object + * + * @param array + * @param length + * @param intervalMin + * @param intervalSize + * @return uint16_t + */ uint16_t get_max_on_interval(uint16_t *array, unsigned int length, size_t intervalMin, size_t intervalSize); +/** + * @brief + * + * @param value + * @param valueIndex + * @return uint16_t + */ uint16_t apply_sensitivity(uint16_t value, unsigned int valueIndex); +/** + * @brief Get the led to light count object + * + * @param barValue + * @param barIndex + * @return unsigned int + */ unsigned int get_led_to_light_count(uint16_t barValue, unsigned int barIndex); +/** + * @brief Get the first led to light object + * + * @param barIndex + * @return unsigned int + */ unsigned int get_first_led_to_light(unsigned int barIndex); +/** + * @brief Get the hsv color object + * + * @param barIndex + * @param shiftRatio + * @return uint32_t + */ uint32_t get_hsv_color(unsigned int barIndex, float shiftRatio); +/** + * @brief + * + * @param barIndex + */ void increment_autoshift(unsigned int barIndex); /*************************************************************************************************** * External Function Definitions **************************************************************************************************/ -void bounce_led_and_color(uint16_t *spectrumArray, unsigned int spectrumLength) { - for (size_t ledBarIndex = 0; ledBarIndex < LED_NCHANS; ++ledBarIndex) { - size_t intervalSize = spectrumLength / LED_NCHANS; - uint16_t barMax = 0; - unsigned int ledToLightCount = 0; - - barMax = get_max_on_interval(spectrumArray, spectrumLength, ledBarIndex * intervalSize, - intervalSize); - barMax = apply_sensitivity(barMax, ledBarIndex); - ledToLightCount = get_led_to_light_count(barMax, ledBarIndex); - - uint32_t color = get_hsv_color(ledBarIndex, (ledToLightCount - 1) / - (float)param_access->pixled.chanLedCount); - - for (size_t i = 0; i < ledToLightCount; ++i) { - rgbData[i][ledBarIndex] = color; - rgb_txdata(rgbData[i], i); - } - for (size_t i = ledToLightCount; i < param_access->pixled.chanLedCount; ++i) { - rgbData[i][ledBarIndex] = 0x000000; - rgb_txdata(rgbData[i], i); - } - - increment_autoshift(ledBarIndex); - } - leddriver_refresh(); -} - void bounce_led(uint16_t *spectrumArray, unsigned int spectrumLength) { for (size_t ledBarIndex = 0; ledBarIndex < LED_NCHANS; ++ledBarIndex) { size_t intervalSize = spectrumLength / LED_NCHANS; @@ -124,6 +137,34 @@ void bounce_led(uint16_t *spectrumArray, unsigned int spectrumLength) { leddriver_refresh(); } +void bounce_led_and_color(uint16_t *spectrumArray, unsigned int spectrumLength) { + for (size_t ledBarIndex = 0; ledBarIndex < LED_NCHANS; ++ledBarIndex) { + size_t intervalSize = spectrumLength / LED_NCHANS; + uint16_t barMax = 0; + unsigned int ledToLightCount = 0; + + barMax = get_max_on_interval(spectrumArray, spectrumLength, ledBarIndex * intervalSize, + intervalSize); + barMax = apply_sensitivity(barMax, ledBarIndex); + ledToLightCount = get_led_to_light_count(barMax, ledBarIndex); + + uint32_t color = get_hsv_color(ledBarIndex, (ledToLightCount - 1) / + (float)param_access->pixled.chanLedCount); + + for (size_t i = 0; i < ledToLightCount; ++i) { + rgbData[i][ledBarIndex] = color; + rgb_txdata(rgbData[i], i); + } + for (size_t i = ledToLightCount; i < param_access->pixled.chanLedCount; ++i) { + rgbData[i][ledBarIndex] = 0x000000; + rgb_txdata(rgbData[i], i); + } + + increment_autoshift(ledBarIndex); + } + leddriver_refresh(); +} + void bounce_led_and_travel(uint16_t *spectrumArray, unsigned int spectrumLength) { for (size_t ledBarIndex = 0; ledBarIndex < LED_NCHANS; ++ledBarIndex) { size_t intervalSize = spectrumLength / LED_NCHANS; diff --git a/RpiLedBars/backend/src/rpi_pattern.h b/RpiLedBars/backend/src/rpi_pattern.h index f0a0642..4e0ac76 100644 --- a/RpiLedBars/backend/src/rpi_pattern.h +++ b/RpiLedBars/backend/src/rpi_pattern.h @@ -31,16 +31,6 @@ * @brief * * @param[in] spectrumArray array of value from spectral analysis - * - * @param[in] spectrumLength length of spectrum array - */ -void bounce_led_and_color(uint16_t *spectrumArray, unsigned int spectrumLength); - -/** - * @brief - * - * @param[in] spectrumArray array of value from spectral analysis - * * @param[in] spectrumLength length of spectrum array */ void bounce_led(uint16_t *spectrumArray, unsigned int spectrumLength); @@ -49,7 +39,14 @@ void bounce_led(uint16_t *spectrumArray, unsigned int spectrumLength); * @brief * * @param[in] spectrumArray array of value from spectral analysis + * @param[in] spectrumLength length of spectrum array + */ +void bounce_led_and_color(uint16_t *spectrumArray, unsigned int spectrumLength); + +/** + * @brief * + * @param[in] spectrumArray array of value from spectral analysis * @param[in] spectrumLength length of spectrum array */ void bounce_led_and_travel(uint16_t *spectrumArray, unsigned int spectrumLength); diff --git a/RpiLedBars/backend/src/tasks/websocket/websocket.c b/RpiLedBars/backend/src/tasks/websocket/websocket.c index 3926751..201cf5e 100644 --- a/RpiLedBars/backend/src/tasks/websocket/websocket.c +++ b/RpiLedBars/backend/src/tasks/websocket/websocket.c @@ -34,7 +34,7 @@ int client_fd = -1; -int channel = LED_NCHANS; +int current_channel = LED_NCHANS; /*************************************************************************************************** * Internal Function Prototypes @@ -73,18 +73,74 @@ void onclose(int fd); */ void onmessage(int fd, const unsigned char *msg, uint64_t size, int type); -void mode_command_handler(char *payload); +/** + * @brief + * + * @param payload + */ +void mode_command_handler(const char *payload); -void pattern_command_handler(char *payload); +/** + * @brief + * + * @param payload + */ +void pattern_command_handler(const char *payload); +/** + * @brief + * + * @param payload + */ void color_command_handler(char *payload); +/** + * @brief + * + * @param payload + */ +void hue_interval_command_handler(char *payload); + +/** + * @brief + * + * @param payload + */ void modulate_command_handler(char *payload); -void channel_command_handler(char *payload); +/** + * @brief + * + * @param payload + */ +void modulation_interval_command_handler(char *payload); +/** + * @brief + * + * @param payload + */ +void modulation_speed_command_handler(char *payload); + +/** + * @brief + * + * @param payload + */ +void channel_command_handler(const char *payload); + +/** + * @brief + * + * @param payload + */ void sensitivity_command_handler(char *payload); +/** + * @brief + * + * @param payload + */ void gravity_command_handler(char *payload); /*************************************************************************************************** @@ -130,45 +186,65 @@ void onclose(int fd) { client_fd = -1; } +#define FOREACH_CMD(FNCT) \ + FNCT(mode) \ + FNCT(pattern) \ + FNCT(channel) + +#define GENERATE_SWITCH(CASE) \ + if (!strcmp(command, #CASE)) { \ + CASE##_command_handler(payload); \ + } else + void onmessage(int fd, const unsigned char *msg, uint64_t size, int type) { char msgStr[size + 1]; char *command, *payload; char *cli = ws_getaddress(fd); log_trace("Received message: %s (size: %" PRId64 ", type: %d), from: %s/%d", msg, size, type, cli, fd); - strcpy(msgStr, (char *)msg); command = strtok(msgStr, ":"); if (command != NULL) { payload = strtok(NULL, ":"); - if (payload != NULL && strlen(command) == 1) { - switch (command[0]) { - case 'm': - mode_command_handler(payload); - break; - case 'p': - pattern_command_handler(payload); - break; - case 'c': - color_command_handler(payload); - break; - case 's': - modulate_command_handler(payload); - break; - case 'h': - channel_command_handler(payload); - break; - case 'e': - sensitivity_command_handler(payload); - break; - case 'g': - gravity_command_handler(payload); - break; + if (payload != NULL) { - default: - log_warn("Unkown command in \"%s\"", msgStr); - break; - } + FOREACH_CMD(GENERATE_SWITCH) log_warn("Unkown command %s in \"%s\"", command, msg); + // switch (command[0]) { + // case 'm': + // mode_command_handler(payload); + // break; + // case 'p': + // pattern_command_handler(payload); + // break; + // case 'i': + // hue_interval_command_handler(payload); + // break; + // case 'c': + // color_command_handler(payload); + // break; + // case 's': + // modulate_command_handler(payload); + // break; + // case 't': + // modulation_interval_command_handler(payload); + // break; + // case 'u': + // modulation_speed_command_handler(payload); + // break; + // case 'h': + // channel_command_handler(payload); + // break; + // case 'e': + // sensitivity_command_handler(payload); + // break; + // case 'g': + // gravity_command_handler(payload); + // break; + + // default: + // log_warn("Unkown command in \"%s\"", msgStr); + // break; + // } } else { log_warn("Empty payload in \"%s\"", msgStr); } @@ -179,7 +255,7 @@ void onmessage(int fd, const unsigned char *msg, uint64_t size, int type) { free(cli); } -void mode_command_handler(char *payload) { +void mode_command_handler(const char *payload) { int newMode = atoi(payload); if (0 <= newMode && newMode <= 3) { set_mode(newMode); @@ -188,7 +264,7 @@ void mode_command_handler(char *payload) { } } -void pattern_command_handler(char *payload) { +void pattern_command_handler(const char *payload) { int newPattern = atoi(payload); if (0 <= newPattern && newPattern <= 3) { set_pattern(newPattern); @@ -209,33 +285,46 @@ void color_command_handler(char *payload) { log_debug(" - %s", tokenArray[n]); } if (atoi(tokenArray[0]) == 0) { - set_hue_base(channel, atoi(tokenArray[1]) * INT8_MAX / HUE_MAX); - set_saturation(channel, atoi(tokenArray[2]) * INT8_MAX / 100); - set_luminosity(channel, atoi(tokenArray[3]) * INT8_MAX / 100); - } else { - set_saturation(channel, atoi(tokenArray[2]) * INT8_MAX / 100); - set_luminosity(channel, atoi(tokenArray[3]) * INT8_MAX / 100); + set_hue_base(current_channel, atoi(tokenArray[1]) * INT8_MAX / HUE_MAX); + set_saturation(current_channel, atoi(tokenArray[2]) * INT8_MAX / 100); + set_luminosity(current_channel, atoi(tokenArray[3]) * INT8_MAX / 100); } } +void hue_interval_command_handler(char *payload) { + int hueInterval = atoi(payload); + log_debug("hueInterval: %d", hueInterval); + set_hue_interval(current_channel, hueInterval); +} + void modulate_command_handler(char *payload) { bool modulate; modulate = strcmp(payload, "true") == 0; log_debug("modulate :%s", modulate ? "true" : "false"); - set_hue_auto_shift(modulate); + set_hue_auto_shift(modulate); } -void channel_command_handler(char *payload) { +void modulation_interval_command_handler(char *payload) { + int modulationInterval = atoi(payload); + set_hue_auto_shift_interval(8, modulationInterval); +} + +void modulation_speed_command_handler(char *payload) { + int modulationSpeed = atoi(payload); + set_hue_auto_shift_speed(8, modulationSpeed); +} + +void channel_command_handler(const char *payload) { int newChannel = atoi(payload); if (0 <= newChannel && newChannel <= LED_NCHANS) { log_debug("Channel: %d", newChannel); - channel = newChannel; + current_channel = newChannel; } } void sensitivity_command_handler(char *payload) { int newSensitivity = atoi(payload); - set_sensitivity(channel, newSensitivity); + set_sensitivity(current_channel, newSensitivity); } void gravity_command_handler(char *payload) { diff --git a/RpiLedBars/deploy_target.sh b/RpiLedBars/deploy_target.sh new file mode 100644 index 0000000..12eb205 --- /dev/null +++ b/RpiLedBars/deploy_target.sh @@ -0,0 +1,2 @@ +#! /usr/bin/env bash + diff --git a/RpiLedBars/frontend/ledbars.nginx b/RpiLedBars/frontend/ledbars.nginx index c15c93a..c956bf0 100644 --- a/RpiLedBars/frontend/ledbars.nginx +++ b/RpiLedBars/frontend/ledbars.nginx @@ -28,16 +28,23 @@ server { server_name _; location / { - root /home/pi/LedBars/RpiLedBars/frontend/webapp/dist; - # First attempt to serve request as file, then - # as directory, then fall back to displaying a 404. - try_files $uri $uri/ =404; + root /home/pi/RpiLedBars/frontend/web/; + # First attempt to serve request as file, then + # as directory, then fall back to displaying a 404. + try_files $uri $uri/ =404; } location /old/ { - alias /home/pi/LedBars/RpiLedBars/frontend/web/; - # First attempt to serve request as file, then - # as directory, then fall back to displaying a 404. - try_files $uri $uri/ =404; + alias /home/pi/RpiLedBars/frontend/web/; + # First attempt to serve request as file, then + # as directory, then fall back to displaying a 404. + try_files $uri $uri/ index.html =404; + } + + location /dev/ { + alias /home/pi/LedBars/RpiLedBars/frontend/webapp/dist; + # First attempt to serve request as file, then + # as directory, then fall back to displaying a 404. + try_files $uri $uri/ index.html =404; } } diff --git a/RpiLedBars/frontend/web/index.html b/RpiLedBars/frontend/web/index.html index 19961f0..f35e954 100644 --- a/RpiLedBars/frontend/web/index.html +++ b/RpiLedBars/frontend/web/index.html @@ -20,7 +20,8 @@ -