From 067715985af5bf4d51f004588cb92874ce220ff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Martign=C3=A8ne?= Date: Sun, 6 Aug 2023 08:39:49 +0200 Subject: [PATCH] Move source code to monorepo --- .gitignore | 17 - CHANGELOG.md | 426 +++ CMakeLists.txt | 225 -- README.md | 128 +- cmake/AmalgamateSourceFiles.cmake | 65 - cmake/FindEasyQt5.cmake | 190 -- cmake/Utility.cmake | 81 - contrib/cmake/i686-w64-mingw32.cmake | 19 - contrib/cmake/x86_64-darwin-clang.cmake | 32 - contrib/cmake/x86_64-w64-mingw32.cmake | 19 - contrib/debian/build.sh | 14 - contrib/debian/compat | 1 - contrib/debian/docker/Dockerfile | 3 - contrib/debian/docker/customize.sh | 4 - contrib/debian/format | 1 - contrib/debian/install | 8 - contrib/debian/package.sh | 51 - contrib/debian/rules | 4 - contrib/debian/teensy.rules | 39 - contrib/images/wix_banner.jpg | Bin 11213 -> 0 bytes contrib/images/wix_dialog.jpg | Bin 31806 -> 0 bytes contrib/mingw/COPYING.MinGW-w64-runtime.txt | 240 -- contrib/mingw/COPYING.winpthreads.txt | 57 - contrib/msvc/unistd.h | 22 - lib/qt5/README.md | 109 - lib/qt5/download-static-qt5.sh | 39 - resources/images/board_attached.png | Bin 10139 -> 0 bytes resources/images/board_attached.xcf | Bin 19214 -> 0 bytes resources/images/board_bootloader.png | Bin 8694 -> 0 bytes resources/images/board_bootloader.xcf | Bin 13771 -> 0 bytes resources/images/board_detached.png | Bin 10175 -> 0 bytes resources/images/board_detached.xcf | Bin 32902 -> 0 bytes resources/images/board_error.png | Bin 12394 -> 0 bytes resources/images/board_error.xcf | Bin 33881 -> 0 bytes resources/images/board_other.png | Bin 8922 -> 0 bytes resources/images/board_other.xcf | Bin 15743 -> 0 bytes resources/images/board_pending.png | Bin 13639 -> 0 bytes resources/images/board_pending.xcf | Bin 19022 -> 0 bytes resources/images/board_working.png | Bin 20389 -> 0 bytes resources/images/board_working.xcf | Bin 40793 -> 0 bytes resources/images/monitor.png | Bin 2166 -> 0 bytes resources/images/reboot.png | Bin 1711 -> 0 bytes resources/images/reset.png | Bin 3586 -> 0 bytes resources/images/tycommander.icns | Bin 300165 -> 0 bytes resources/images/tycommander.ico | Bin 157965 -> 0 bytes resources/images/tycommander.png | Bin 142731 -> 0 bytes resources/images/tycommander.xcf | Bin 313724 -> 0 bytes resources/images/tyuploader.icns | Bin 43044 -> 0 bytes resources/images/tyuploader.ico | Bin 107999 -> 0 bytes resources/images/tyuploader.png | Bin 17219 -> 0 bytes resources/images/tyuploader.xcf | Bin 72525 -> 0 bytes resources/images/upload.png | Bin 1869 -> 0 bytes resources/resources.qrc | 18 - src/libhs/CMakeLists.txt | 81 - src/libhs/README.md | 12 - src/libhs/array.c | 69 - src/libhs/array.h | 84 - src/libhs/common.c | 182 -- src/libhs/common.h | 325 -- src/libhs/common_priv.h | 23 - src/libhs/device.c | 129 - src/libhs/device.h | 250 -- src/libhs/device_posix.c | 162 - src/libhs/device_priv.h | 72 - src/libhs/device_win32.c | 276 -- src/libhs/doc/Doxyfile | 2636 ----------------- src/libhs/doc/index.md | 36 - .../examples/enumerate_devices/CMakeLists.txt | 12 - .../enumerate_devices/enumerate_devices.c | 59 - .../enumerate_devices.vcxproj | 156 - .../enumerate_devices.vcxproj.filters | 22 - .../examples/monitor_devices/CMakeLists.txt | 12 - .../monitor_devices/monitor_devices.c | 123 - .../monitor_devices/monitor_devices.vcxproj | 156 - .../monitor_devices.vcxproj.filters | 22 - .../examples/serial_dumper/CMakeLists.txt | 12 - .../examples/serial_dumper/serial_dumper.c | 240 -- .../serial_dumper/serial_dumper.vcxproj | 155 - .../serial_dumper.vcxproj.filters | 22 - src/libhs/hid.h | 90 - src/libhs/hid_darwin.c | 498 ---- src/libhs/hid_linux.c | 184 -- src/libhs/hid_win32.c | 131 - src/libhs/htable.c | 70 - src/libhs/htable.h | 70 - src/libhs/libhs.h | 68 - src/libhs/libhs.sln | 68 - src/libhs/libhs.vcxproj | 168 -- src/libhs/libhs.vcxproj.filters | 99 - src/libhs/match.c | 119 - src/libhs/match.h | 88 - src/libhs/match_priv.h | 33 - src/libhs/monitor.h | 204 -- src/libhs/monitor_common.c | 100 - src/libhs/monitor_darwin.c | 733 ----- src/libhs/monitor_linux.c | 688 ----- src/libhs/monitor_priv.h | 29 - src/libhs/monitor_win32.c | 1614 ---------- src/libhs/platform.c | 24 - src/libhs/platform.h | 200 -- src/libhs/platform_darwin.c | 123 - src/libhs/platform_linux.c | 105 - src/libhs/platform_win32.c | 100 - src/libhs/serial.h | 246 -- src/libhs/serial_posix.c | 366 --- src/libhs/serial_win32.c | 305 -- src/libty/CMakeLists.txt | 80 - src/libty/board.c | 1078 ------- src/libty/board.h | 128 - src/libty/board_priv.h | 72 - src/libty/class.c | 215 -- src/libty/class.h | 55 - src/libty/class_default.c | 44 - src/libty/class_generic.c | 174 -- src/libty/class_priv.h | 50 - src/libty/class_teensy.c | 864 ------ src/libty/common.c | 317 -- src/libty/common.h | 125 - src/libty/config.h.in | 24 - src/libty/firmware.c | 429 --- src/libty/firmware.h | 79 - src/libty/firmware_elf.c | 207 -- src/libty/firmware_ihex.c | 224 -- src/libty/ini.c | 151 - src/libty/ini.h | 25 - src/libty/monitor.c | 717 ----- src/libty/monitor.h | 50 - src/libty/optline.c | 186 -- src/libty/optline.h | 42 - src/libty/system.c | 52 - src/libty/system.h | 85 - src/libty/system_posix.c | 368 --- src/libty/system_win32.c | 200 -- src/libty/task.c | 462 --- src/libty/task.h | 100 - src/libty/thread.h | 81 - src/libty/thread_pthread.c | 199 -- src/libty/thread_win32.c | 160 - src/libty/timer.h | 36 - src/libty/timer_kqueue.c | 115 - src/libty/timer_linux.c | 106 - src/libty/timer_win32.c | 184 -- src/libty/version.h.in | 16 - src/tycmd/CMakeLists.txt | 32 - src/tycmd/identify.c | 99 - src/tycmd/list.c | 284 -- src/tycmd/main.c | 243 -- src/tycmd/main.h | 32 - src/tycmd/monitor.c | 580 ---- src/tycmd/reset.c | 71 - src/tycmd/upload.c | 132 - src/tycommander/CMakeLists.txt | 110 - src/tycommander/about_dialog.cc | 51 - src/tycommander/about_dialog.hpp | 29 - src/tycommander/about_dialog.ui | 152 - src/tycommander/arduino_dialog.cc | 214 -- src/tycommander/arduino_dialog.hpp | 47 - src/tycommander/arduino_dialog.ui | 109 - src/tycommander/arduino_install.cc | 374 --- src/tycommander/arduino_install.hpp | 72 - src/tycommander/board.cc | 902 ------ src/tycommander/board.hpp | 224 -- src/tycommander/board_widget.cc | 138 - src/tycommander/board_widget.hpp | 56 - src/tycommander/board_widget.ui | 206 -- src/tycommander/client_handler.cc | 421 --- src/tycommander/client_handler.hpp | 76 - src/tycommander/database.cc | 73 - src/tycommander/database.hpp | 73 - src/tycommander/descriptor_notifier.cc | 84 - src/tycommander/descriptor_notifier.hpp | 73 - src/tycommander/enhanced_widgets.cc | 244 -- src/tycommander/enhanced_widgets.hpp | 116 - src/tycommander/firmware.cc | 36 - src/tycommander/firmware.hpp | 43 - src/tycommander/log_dialog.cc | 74 - src/tycommander/log_dialog.hpp | 34 - src/tycommander/log_dialog.ui | 105 - src/tycommander/main.cc | 161 - src/tycommander/main_window.cc | 1148 ------- src/tycommander/main_window.hpp | 141 - src/tycommander/main_window.ui | 1133 ------- src/tycommander/monitor.cc | 515 ---- src/tycommander/monitor.hpp | 147 - src/tycommander/preferences_dialog.cc | 110 - src/tycommander/preferences_dialog.hpp | 33 - src/tycommander/preferences_dialog.ui | 251 -- src/tycommander/selector_dialog.cc | 139 - src/tycommander/selector_dialog.hpp | 54 - src/tycommander/selector_dialog.ui | 63 - src/tycommander/session_channel.cc | 276 -- src/tycommander/session_channel.hpp | 98 - src/tycommander/task.cc | 299 -- src/tycommander/task.hpp | 168 -- src/tycommander/tycommander.cc | 668 ----- src/tycommander/tycommander.hpp | 130 - src/tycommander/tycommander_linux.desktop.in | 10 - src/tycommander/tycommander_macos.plist.in | 40 - src/tycommander/tycommander_win32.manifest | 11 - src/tycommander/tycommander_win32.rc.in | 6 - src/tycommander/tycommanderc.c | 190 -- src/tyuploader/CMakeLists.txt | 82 - src/tyuploader/tyuploader.cc | 118 - src/tyuploader/tyuploader.hpp | 51 - src/tyuploader/tyuploader_linux.desktop.in | 10 - src/tyuploader/tyuploader_macos.plist.in | 40 - src/tyuploader/tyuploader_win32.manifest | 11 - src/tyuploader/tyuploader_win32.rc.in | 6 - src/tyuploader/uploader_window.cc | 183 -- src/tyuploader/uploader_window.hpp | 68 - src/tyuploader/uploader_window.ui | 311 -- tests/libty/CMakeLists.txt | 14 - tests/libty/test_libty.c | 81 - tests/libty/test_libty.h | 35 - tests/libty/test_optline.c | 293 -- variants/README.md | 2 - variants/canchecked/resources.qrc | 19 - variants/canchecked/tyuploader.icns | Bin 41857 -> 0 bytes variants/canchecked/tyuploader.ico | Bin 99678 -> 0 bytes variants/canchecked/tyuploader.png | Bin 7551 -> 0 bytes variants/canchecked/tyuploader_logo.png | Bin 6292 -> 0 bytes variants/canchecked/variant.cmake | 10 - variants/datalooper/resources.qrc | 19 - variants/datalooper/tyuploader.icns | Bin 148287 -> 0 bytes variants/datalooper/tyuploader.ico | Bin 122559 -> 0 bytes variants/datalooper/tyuploader.png | Bin 77208 -> 0 bytes variants/datalooper/tyuploader_logo.png | Bin 11150 -> 0 bytes variants/datalooper/variant.cmake | 10 - variants/morningstar/class_default.c | 57 - variants/morningstar/resources.qrc | 19 - variants/morningstar/tyuploader.icns | Bin 180194 -> 0 bytes variants/morningstar/tyuploader.ico | Bin 370070 -> 0 bytes variants/morningstar/tyuploader.png | Bin 21940 -> 0 bytes variants/morningstar/tyuploader_logo.png | Bin 9147 -> 0 bytes variants/morningstar/variant.cmake | 10 - 235 files changed, 433 insertions(+), 33579 deletions(-) delete mode 100644 .gitignore create mode 100644 CHANGELOG.md delete mode 100644 CMakeLists.txt delete mode 100644 cmake/AmalgamateSourceFiles.cmake delete mode 100644 cmake/FindEasyQt5.cmake delete mode 100644 cmake/Utility.cmake delete mode 100644 contrib/cmake/i686-w64-mingw32.cmake delete mode 100644 contrib/cmake/x86_64-darwin-clang.cmake delete mode 100644 contrib/cmake/x86_64-w64-mingw32.cmake delete mode 100755 contrib/debian/build.sh delete mode 100644 contrib/debian/compat delete mode 100644 contrib/debian/docker/Dockerfile delete mode 100755 contrib/debian/docker/customize.sh delete mode 100644 contrib/debian/format delete mode 100644 contrib/debian/install delete mode 100755 contrib/debian/package.sh delete mode 100644 contrib/debian/rules delete mode 100644 contrib/debian/teensy.rules delete mode 100644 contrib/images/wix_banner.jpg delete mode 100644 contrib/images/wix_dialog.jpg delete mode 100644 contrib/mingw/COPYING.MinGW-w64-runtime.txt delete mode 100644 contrib/mingw/COPYING.winpthreads.txt delete mode 100644 contrib/msvc/unistd.h delete mode 100644 lib/qt5/README.md delete mode 100755 lib/qt5/download-static-qt5.sh delete mode 100644 resources/images/board_attached.png delete mode 100644 resources/images/board_attached.xcf delete mode 100644 resources/images/board_bootloader.png delete mode 100644 resources/images/board_bootloader.xcf delete mode 100644 resources/images/board_detached.png delete mode 100644 resources/images/board_detached.xcf delete mode 100644 resources/images/board_error.png delete mode 100644 resources/images/board_error.xcf delete mode 100644 resources/images/board_other.png delete mode 100644 resources/images/board_other.xcf delete mode 100644 resources/images/board_pending.png delete mode 100644 resources/images/board_pending.xcf delete mode 100644 resources/images/board_working.png delete mode 100644 resources/images/board_working.xcf delete mode 100644 resources/images/monitor.png delete mode 100644 resources/images/reboot.png delete mode 100644 resources/images/reset.png delete mode 100644 resources/images/tycommander.icns delete mode 100644 resources/images/tycommander.ico delete mode 100644 resources/images/tycommander.png delete mode 100644 resources/images/tycommander.xcf delete mode 100644 resources/images/tyuploader.icns delete mode 100644 resources/images/tyuploader.ico delete mode 100644 resources/images/tyuploader.png delete mode 100644 resources/images/tyuploader.xcf delete mode 100644 resources/images/upload.png delete mode 100644 resources/resources.qrc delete mode 100644 src/libhs/CMakeLists.txt delete mode 100644 src/libhs/README.md delete mode 100644 src/libhs/array.c delete mode 100644 src/libhs/array.h delete mode 100644 src/libhs/common.c delete mode 100644 src/libhs/common.h delete mode 100644 src/libhs/common_priv.h delete mode 100644 src/libhs/device.c delete mode 100644 src/libhs/device.h delete mode 100644 src/libhs/device_posix.c delete mode 100644 src/libhs/device_priv.h delete mode 100644 src/libhs/device_win32.c delete mode 100644 src/libhs/doc/Doxyfile delete mode 100644 src/libhs/doc/index.md delete mode 100644 src/libhs/examples/enumerate_devices/CMakeLists.txt delete mode 100644 src/libhs/examples/enumerate_devices/enumerate_devices.c delete mode 100644 src/libhs/examples/enumerate_devices/enumerate_devices.vcxproj delete mode 100644 src/libhs/examples/enumerate_devices/enumerate_devices.vcxproj.filters delete mode 100644 src/libhs/examples/monitor_devices/CMakeLists.txt delete mode 100644 src/libhs/examples/monitor_devices/monitor_devices.c delete mode 100644 src/libhs/examples/monitor_devices/monitor_devices.vcxproj delete mode 100644 src/libhs/examples/monitor_devices/monitor_devices.vcxproj.filters delete mode 100644 src/libhs/examples/serial_dumper/CMakeLists.txt delete mode 100644 src/libhs/examples/serial_dumper/serial_dumper.c delete mode 100644 src/libhs/examples/serial_dumper/serial_dumper.vcxproj delete mode 100644 src/libhs/examples/serial_dumper/serial_dumper.vcxproj.filters delete mode 100644 src/libhs/hid.h delete mode 100644 src/libhs/hid_darwin.c delete mode 100644 src/libhs/hid_linux.c delete mode 100644 src/libhs/hid_win32.c delete mode 100644 src/libhs/htable.c delete mode 100644 src/libhs/htable.h delete mode 100644 src/libhs/libhs.h delete mode 100644 src/libhs/libhs.sln delete mode 100644 src/libhs/libhs.vcxproj delete mode 100644 src/libhs/libhs.vcxproj.filters delete mode 100644 src/libhs/match.c delete mode 100644 src/libhs/match.h delete mode 100644 src/libhs/match_priv.h delete mode 100644 src/libhs/monitor.h delete mode 100644 src/libhs/monitor_common.c delete mode 100644 src/libhs/monitor_darwin.c delete mode 100644 src/libhs/monitor_linux.c delete mode 100644 src/libhs/monitor_priv.h delete mode 100644 src/libhs/monitor_win32.c delete mode 100644 src/libhs/platform.c delete mode 100644 src/libhs/platform.h delete mode 100644 src/libhs/platform_darwin.c delete mode 100644 src/libhs/platform_linux.c delete mode 100644 src/libhs/platform_win32.c delete mode 100644 src/libhs/serial.h delete mode 100644 src/libhs/serial_posix.c delete mode 100644 src/libhs/serial_win32.c delete mode 100644 src/libty/CMakeLists.txt delete mode 100644 src/libty/board.c delete mode 100644 src/libty/board.h delete mode 100644 src/libty/board_priv.h delete mode 100644 src/libty/class.c delete mode 100644 src/libty/class.h delete mode 100644 src/libty/class_default.c delete mode 100644 src/libty/class_generic.c delete mode 100644 src/libty/class_priv.h delete mode 100644 src/libty/class_teensy.c delete mode 100644 src/libty/common.c delete mode 100644 src/libty/common.h delete mode 100644 src/libty/config.h.in delete mode 100644 src/libty/firmware.c delete mode 100644 src/libty/firmware.h delete mode 100644 src/libty/firmware_elf.c delete mode 100644 src/libty/firmware_ihex.c delete mode 100644 src/libty/ini.c delete mode 100644 src/libty/ini.h delete mode 100644 src/libty/monitor.c delete mode 100644 src/libty/monitor.h delete mode 100644 src/libty/optline.c delete mode 100644 src/libty/optline.h delete mode 100644 src/libty/system.c delete mode 100644 src/libty/system.h delete mode 100644 src/libty/system_posix.c delete mode 100644 src/libty/system_win32.c delete mode 100644 src/libty/task.c delete mode 100644 src/libty/task.h delete mode 100644 src/libty/thread.h delete mode 100644 src/libty/thread_pthread.c delete mode 100644 src/libty/thread_win32.c delete mode 100644 src/libty/timer.h delete mode 100644 src/libty/timer_kqueue.c delete mode 100644 src/libty/timer_linux.c delete mode 100644 src/libty/timer_win32.c delete mode 100644 src/libty/version.h.in delete mode 100644 src/tycmd/CMakeLists.txt delete mode 100644 src/tycmd/identify.c delete mode 100644 src/tycmd/list.c delete mode 100644 src/tycmd/main.c delete mode 100644 src/tycmd/main.h delete mode 100644 src/tycmd/monitor.c delete mode 100644 src/tycmd/reset.c delete mode 100644 src/tycmd/upload.c delete mode 100644 src/tycommander/CMakeLists.txt delete mode 100644 src/tycommander/about_dialog.cc delete mode 100644 src/tycommander/about_dialog.hpp delete mode 100644 src/tycommander/about_dialog.ui delete mode 100644 src/tycommander/arduino_dialog.cc delete mode 100644 src/tycommander/arduino_dialog.hpp delete mode 100644 src/tycommander/arduino_dialog.ui delete mode 100644 src/tycommander/arduino_install.cc delete mode 100644 src/tycommander/arduino_install.hpp delete mode 100644 src/tycommander/board.cc delete mode 100644 src/tycommander/board.hpp delete mode 100644 src/tycommander/board_widget.cc delete mode 100644 src/tycommander/board_widget.hpp delete mode 100644 src/tycommander/board_widget.ui delete mode 100644 src/tycommander/client_handler.cc delete mode 100644 src/tycommander/client_handler.hpp delete mode 100644 src/tycommander/database.cc delete mode 100644 src/tycommander/database.hpp delete mode 100644 src/tycommander/descriptor_notifier.cc delete mode 100644 src/tycommander/descriptor_notifier.hpp delete mode 100644 src/tycommander/enhanced_widgets.cc delete mode 100644 src/tycommander/enhanced_widgets.hpp delete mode 100644 src/tycommander/firmware.cc delete mode 100644 src/tycommander/firmware.hpp delete mode 100644 src/tycommander/log_dialog.cc delete mode 100644 src/tycommander/log_dialog.hpp delete mode 100644 src/tycommander/log_dialog.ui delete mode 100644 src/tycommander/main.cc delete mode 100644 src/tycommander/main_window.cc delete mode 100644 src/tycommander/main_window.hpp delete mode 100644 src/tycommander/main_window.ui delete mode 100644 src/tycommander/monitor.cc delete mode 100644 src/tycommander/monitor.hpp delete mode 100644 src/tycommander/preferences_dialog.cc delete mode 100644 src/tycommander/preferences_dialog.hpp delete mode 100644 src/tycommander/preferences_dialog.ui delete mode 100644 src/tycommander/selector_dialog.cc delete mode 100644 src/tycommander/selector_dialog.hpp delete mode 100644 src/tycommander/selector_dialog.ui delete mode 100644 src/tycommander/session_channel.cc delete mode 100644 src/tycommander/session_channel.hpp delete mode 100644 src/tycommander/task.cc delete mode 100644 src/tycommander/task.hpp delete mode 100644 src/tycommander/tycommander.cc delete mode 100644 src/tycommander/tycommander.hpp delete mode 100644 src/tycommander/tycommander_linux.desktop.in delete mode 100644 src/tycommander/tycommander_macos.plist.in delete mode 100644 src/tycommander/tycommander_win32.manifest delete mode 100644 src/tycommander/tycommander_win32.rc.in delete mode 100644 src/tycommander/tycommanderc.c delete mode 100644 src/tyuploader/CMakeLists.txt delete mode 100644 src/tyuploader/tyuploader.cc delete mode 100644 src/tyuploader/tyuploader.hpp delete mode 100644 src/tyuploader/tyuploader_linux.desktop.in delete mode 100644 src/tyuploader/tyuploader_macos.plist.in delete mode 100644 src/tyuploader/tyuploader_win32.manifest delete mode 100644 src/tyuploader/tyuploader_win32.rc.in delete mode 100644 src/tyuploader/uploader_window.cc delete mode 100644 src/tyuploader/uploader_window.hpp delete mode 100644 src/tyuploader/uploader_window.ui delete mode 100644 tests/libty/CMakeLists.txt delete mode 100644 tests/libty/test_libty.c delete mode 100644 tests/libty/test_libty.h delete mode 100644 tests/libty/test_optline.c delete mode 100644 variants/README.md delete mode 100644 variants/canchecked/resources.qrc delete mode 100644 variants/canchecked/tyuploader.icns delete mode 100644 variants/canchecked/tyuploader.ico delete mode 100644 variants/canchecked/tyuploader.png delete mode 100644 variants/canchecked/tyuploader_logo.png delete mode 100644 variants/canchecked/variant.cmake delete mode 100644 variants/datalooper/resources.qrc delete mode 100644 variants/datalooper/tyuploader.icns delete mode 100644 variants/datalooper/tyuploader.ico delete mode 100644 variants/datalooper/tyuploader.png delete mode 100644 variants/datalooper/tyuploader_logo.png delete mode 100644 variants/datalooper/variant.cmake delete mode 100644 variants/morningstar/class_default.c delete mode 100644 variants/morningstar/resources.qrc delete mode 100644 variants/morningstar/tyuploader.icns delete mode 100644 variants/morningstar/tyuploader.ico delete mode 100644 variants/morningstar/tyuploader.png delete mode 100644 variants/morningstar/tyuploader_logo.png delete mode 100644 variants/morningstar/variant.cmake diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 0dc94a3c..00000000 --- a/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -# Build and IDE files -build/ -bin/ -CMakeLists.txt.* -*.pro.* -.tags* -src/libhs/doc/pages - -# I like to keep a bunch of test firmwares around -*.hex -*.elf - -# Don't show the static Qt5 builds -qt5/* -lib/qt5/* -!lib/qt5/README.md -!lib/qt5/download-static-qt5.sh diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..69b5c6da --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,426 @@ +## TyTools 0.9.9 (2023-08-06) + +**Main changes:** + +- Tolerate longer delays in Teensy code +- Port TyTools to Qt 6 + +**Platform support:** + +- Only macOS 11, 12, 13 are supported +- Only Windows 10 and 11 (64-bit) are supported + +**Repository change :** + +- This repository does not contain any code anymore because I host [everything in my monorepo](https://github.com/Koromix/rygel) +- For reasons explained here: https://github.com/Koromix/rygel#mono-repository + +## TyTools 0.9.8 (2022-10-02) + +- Support Teensy USB Type Serial + MTP (@KurtE) +- Support infinite log size + +## TyTools 0.9.7 (2022-01-23) + +- Fix upload failure regression introduced in version 0.9.6 + +## TyTools 0.9.6 (2022-01-17) + +**Main Fixes:** + +- Fix support for big firmware files (for Teensy 4.0 and 4.1) +- Signal Serial readiness to Teensy in SEREMU mode +- Increase wait delay after board reset + +**Other changes:** + +- Companion app TyUpdater is renamed to TyUploader + +## TyTools 0.9.5 (2021-11-03) + +**New Features:** + +- Add per-board RTC mode setting to TyCommander (localtime, UTC, ignore) + +**Other changes:** + +- Change URL in About dialog +- Remove leftover debug statement + +## TyTools 0.9.4 (2021-10-21) + +**New Features:** + +- Set RTC time when uploading to Teensy 4.0 and 4.1 (thanks @mecparts) +- Support Teensy Micro Mod (@KurtE) + +**Other changes:** + +- Use bright blue icon for TyCommander and bright green for TyUpdater +- Fix Qt HighDPI support being set incorrectly + +## TyTools 0.9.3 (2020-11-26) + +- Fix wrong COM port detection with Teensyduino 1.54 on Windows (thanks to @luni64 and @Defragster) + +## TyTools 0.9.2 (2020-08-07) + +**New Features:** + +- Show Dual/Triple Serial Teensy builds as multiple boards + +**Other changes:** + +- Add TyCommander upload --delegate to cooperate with Teensy Loader +- Fix support for composite devices on Windows 7 (e.g. Serial + MIDI) +- Remove all Windows XP compatibility code + +**OS support:** + +- Prevous release builds did not actually work on Windows XP, but the code for it was still there... +- ... now it is official, and it is not possible to build TyTools or libhs with XP support anymore + +## TyTools 0.9.1 (2020-06-27) + +**New Features:** + +- Support Teensy 4.1 (@KurtE) + +**Other changes:** + +- Disable autocompletion in serial input field +- Allow 1984K flash to be used on Teensy 4.0 +- Add VID:PID pairs for dual and triple serial Teensy sketches + +## TyTools 0.9.0 (2019-12-02) + +**New Features:** + +- Support Teensy 4 (caveat: no RTC programming yet) +- Support macOS Catalina +- Configurable per-board serial rate (useful for serial non-Teensy boards) + +**Main Fixes:** + +- Look less ugly on HiDPI screens +- Fix ugly "classic Windows" style in TyUpdater +- Fix extra empty lines in serial monitor in some cases +- Fix JSON format in tycmd list -Ojson (string escaping, array) + +## TyTools 0.8.11 (2019-03-31) + +**New Features:** + +- Support Teensy 4 beta boards (experimental) + +**OS support:** + +- macOS 10.10 (Yosemite) is now the oldest supported version +- Windows 7 is now the oldest supported version + +**Other changes:** + +- Use Qt 5.12.2 on Windows +- Use Qt 5.9.7 on macOS + +## TyTools 0.8.10 (2018-09-23) + +**New Features:** + +- Detect running Teensy model with bcdDevice descriptor value (introduced in Teensyduino 1.42) +- Add @-prefixed commands 'send_file' and 'send' to TyCommander serial input +- Support loading firmwares from stdin in tycmd upload and tycmd identity + +**Main Fixes:** + +- Fix errors with Teensy 3.5 firmwares (caused by 'RAM = 256K' change introduced Teensyduino 1.42) +- Fix rare Intel HEX parse errors + +*Note: This is the mostly the same as 0.8.9 except this time the macOS version works. For Windows and Linux users, nothing has changed (except the version number).* + +## TyTools 0.8.8 (2019-08-20) + +**Main Fixes:** + +- Fix firmware model detection with LTO, -mpure-code +- Fix occasional serial read truncation with HID boards on Win32 + +**Miscellaneous:** + +- Remove artificial Teensy upload delays (makes upload faster) + +## TyTools 0.8.7 (2017-06-06) + +*This project has been renamed to TyTools, along with the tools included in this project.* + +Old name | New name +-------- | ----------- +TyQt | TyCommander +tyc | tycmd +UpTy | TyUpdater + +**New Features:** + +- Support non-Teensy USB serial devices ("Generic" boards) +- Customize board models and PID:VID matching with TyTools.ini +- Add option to configure board serial log directory +- Add tyc identify to analyze firmware models +- Add TyCommanderC attach (and detach) commands + +**Main Fixes:** + +- Fix crash with some USB3 controllers on Windows (pre-10) +- Restore compatibility with Mac OS X Yosemite +- Fix broken Teensy firmware compatibility check with LTO builds +- Expand Teensy VID/PID list for new USB modes +- Support FTDI chips (@jbliesener) +- Fix incorrect use of case-sensitive test with firmware extensions +- Configure serial speed (115200 bauds) in tycmd and TyCommander +- Fix board selection behavior on insertion and removal +- Fix optline bug with non-option permutation and option values + +**UI changes:** + +- Change serial input field to QComboBox, which supports history dropdown (@tni) +- Reduce board list wiget height and show tag on top +- Use monospaced fonts in serial monitor +- Turn board log path label into clickable URLs with tooltips (@tni) + +**Miscellaneous:** + +- Harmonize libty and TyCommander INI configuration path +- Echo 'Send File' (when echo is enabled) commands in serial log +- Rename 'TY_' environment variables to 'TYTOOLS_' +- Add tweakable board drop delay +- Increase limit number of board log files from 3 to 4 +- Rotate board log file when 'Clear on reset' is checked +- Add Win32 crash memory dumper to TyCommander +- Use Unity builds for releases +- Upgrade Win32 and OSX builds to Qt 5.7.1 +- Improve thread-safety of serial log file handling +- Provide single-file amalgamation of libhs +- Replace all uses of linked lists with dynamic arrays +- Various small fixes and code improvements + +## TyQt 0.8.0 (2016-11-05) + +**New Features:** + +- Add support for Teensy 3.5 and 3.6, including beta versions +- Implement command-line multi-action with TyQt --multi +- Add Send File to serial and Seremu boards +- Add per-board serial log file +- Add simple firmware updater application called UpTy +- Improve Arduino integration when building for different board models + +**Main Fixes:** + +- Enumerate boards / devices without opening them +- Improve USB 3.0 device enumeration on Windows (invisible Teensies) +- Fix TyQt freeze with blocking serial writes +- Fix discovery of Serial IAD devices on Windows (Windows 10 only) +- Fix potential crash after application reset +- Assert DTR in all cases when opening serial devices +- Wait for device enumeration on Win32 when the driver wizard is running +- Fix 'Clear on Serial' behavior when enabling serial +- Fix support for Windows running under Virtual PC (probably) + +**UI changes:** + +- Add collapsible groups on settings page in Compact Mode +- Add keyboard shortcuts to switch board (Ctrl + Tab) +- Merge Compact Mode and splitter collapse +- Show board product string in tyc and TyQt Info tab +- Show task progress in Compact Mode +- Focus the serial input widget when changing tab or board selection +- Many other small GUI tweaks + +**Miscellaneous:** + +- Add Teensy model / usage debug information +- Add log statements for added and removed devices +- Show relevant task in log messages +- Improve board task error messages +- Continue 'tyc upload' when some firmwares are invalid +- Add global setting to disable serial by default +- Small tyc command-line changes +- Various small fixes and code improvements + +## TyQt 0.7.6 (2016-07-28) + +- Fix incorrect exit code with TyQt remote commands +- (this fixes the error message when uploading from Arduino 1.6.10) +- Fix potential crashes in HID code on OSX +- Fix intermittent crash when enumerating some devices on Win32 +- Fix incorrect I/O error messages in HalfKay code +- Add debug log with Teensy usage value +- Use smaller 128x128 icons to waste less memory +- Build release binaries with Qt 5.6.1-1 + +## TyQt 0.7.5 (2016-04-29) + +*The windows version is now built with MSVC 2015 and is relatively smaller.* + +**Main Changes:** + +- Improve Compact Mode (board selection combobox, action toolbar) +- Add context menu to the board list +- Add global Preferences dialog +- Add setting to limit number of parallel tasks +- Enable Teensy++ 2.0 support by default +- Configure new windows like the current one +- Add dedicated Log Window (errors and debug) +- Add action to reset TyQt and settings +- Add per-board scrollback size setting +- Add per-board encoding setting +- Disable persistent settings for ambiguous boards (without a unique S/N) +- Memorize the full board model when possible +- Keep a list of recent firmwares for each board +- Add action to forget the firmware associated with a board +- Show RawHID interface device path +- Add pending board status icon +- Use slightly more colorful status icons +- Move newline / echo settings to Monitor tab +- Make attachMonitor a persistent board setting +- Add more context to some errors messages +- Avoid useless error / warning when rebooting a board already in bootloader mode +- Disable UI actions for busy boards + +**Main Fixes:** + +- Fix IRP leak on Win32 that leads to non-paged memory exhaustion after a while +- Fix random serial timeout behavior with Serial devices on Win32 +- Fix support for USB 3.0 ports on OSX (missing devices) +- Improve robustness / checks in Intel HEX parser +- Fix autoscroll quirks with the Monitor text control +- Use lower maxTasks by default to limit USB problems (especially on Windows) +- Fix crash with extension-less firmware filenames +- Fix tyc monitor statements not respecting --quiet +- Fix relatively slow UI updates on board changes +- Try harder to show the board selection dialog on top + +**Code Refactoring:** + +- Extract "low-level" cross-platform device code to libhs +- Port to MSVC for the Windows packages +- Diffuse code refactoring + +## TyQt 0.7.0 (2016-01-20) + +**New features:** + +- Select and work on multiple boards at once +- Add Arduino integration dialog +- Attach/detach function to let other softwares access the device +- Rename/alias boards in TyQt +- Save individual board settings +- Add tyqtc to pilot TyQt (win32) +- Add JSON output in tyc with tyc list -Ojson + +**Main Changes:** + +- Vastly improved monitor performance +- Show board status with dedicated icons +- Visual warning on task errors +- Show last uploaded firmware in board list +- Board tags are now "-" (e.g. 112340-Teensy) +- Drop missing boards after a longer delay +- Faster firmwares uploads +- Use short COM port names when possible (win32) +- Static binaries (no dependency on libty.dll) +- Improve command-line syntax for TyQt (close to tyc) +- Make TyQt autostart opt-in (--autostart) +- Select board using device path in tyc/tyqt (e.g. "tyc upload --board @COM1") +- Extend board selection syntax to "[][-][@]" +- Increase size of monitor scrollback in TyQt to 200000 lines +- Resizable board list using a QSplitter +- Replace "Upload" tab with "Settings" tab +- Allow selection of missing boards in TyQt +- Disable word-wrap in monitor text widget +- Add monitor send button +- Add keyboard shortcut to clear monitor (Ctrl + Alt + X) +- Remove annoying LICENSE prompt from OSX bundles + +**Main Fixes:** + +- Support El Capitan (osx) +- Fix freeze of serial read in some cases on Win32 +- Better handling of device close on Windows XP +- Hide harmless spurious I/O errors when uploading +- Make README.txt/LICENSE.txt notepad-friendly (win32) + +## TyQt 0.6.4 (2015-09-23) + +- Add support for Teensy 3.2 + +## TyQt 0.6.3 (2015-06-16) + +**Main changes:** + +- Windows XP support +- Longer board drop delay + +**Minor fixes:** + +- Ensure non-blocking behavior of tyc monitor on Windows +- Apply serial settings in tyc monitor on reconnect +- Always quit TyQt when the last window is closed + +## TyQt 0.6.2 (2015-03-29) + +- Working Teensy LC support + +## TyQt 0.6.1 (2015-03-26) + +- Disable Teensy LC support (broken until I can get one) +- Always assert DTR line on Windows and OS X, to not block on "while (!Serial);" +- Ignore devices on permission errors, instead of aborting enumeration + +## TyQt 0.6.0 (2015-03-18) + +- Tentative Teensy LC support +- Clear on reset option for monitor +- Better autoscrolling behavior in the monitor (keyboard navigation works) +- Go to bootloader with CLI: tyc reset --bootloader + +## TyQt 0.5.7 (2015-03-11) + +- Use bigger serial buffer to avoid overflows +- Don't hog the CPU if the Teensy sends a lot of stuff +- Better autoscroll behavior in the monitor + +## TyQt 0.5.6 (2015-03-09) + +- Easier to use command-line tool +- Bug fixes and code cleanup + +## TyQt 0.5.5 (2015-02-28) + +- Single-instance mode for TyQt: send commands using tyqt.exe (see tyqt.exe --help) +- Minimal interface option to hide board list, toolbar and statusbar +- Bug fixes + +## TyQt 0.5.1 (2015-02-20) + +- Proper packaging: MSI on Windows, Bundle on OS X +- Better art and icons (well, I try) + +## TyQt 0.5.0 (2015-02-10) + +- Teensy Qt! + +## tyc 0.4.0 (2015-02-12) + +- Support Mac OS X + +## tyc 0.3.0 (2015-01-12) + +- Add native compilation instructions for Windows + +## tyc 0.2.1 (2014-12-21) + +- Dynamic device detection and management + +## ty 0.1.0 (20134-09-01) + +- Document the EXPERIMENTAL option in README.md diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 5ab777c2..00000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,225 +0,0 @@ -# TyTools - public domain -# Niels Martignène -# https://koromix.dev/tytools - -# This software is in the public domain. Where that dedication is not -# recognized, you are granted a perpetual, irrevocable license to copy, -# distribute, and modify this file as you see fit. - -# See the LICENSE file for more details. - -set(CMAKE_OSX_DEPLOYMENT_TARGET "10.10" CACHE STRING "") -cmake_minimum_required(VERSION 3.1) -project(TyTools C CXX) - -if(CONFIG_VARIANT) - if(IS_ABSOLUTE ${CONFIG_VARIANT}) - set(CONFIG_VARIANT_PATH ${CONFIG_VARIANT}) - else() - set(CONFIG_VARIANT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/variants/${CONFIG_VARIANT}") - endif() - if(EXISTS "${CONFIG_VARIANT_PATH}/variant.cmake") - include("${CONFIG_VARIANT_PATH}/variant.cmake") - endif() - - set(USE_UNITY_BUILDS OFF CACHE BOOL "") -endif() - -set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) -include("cmake/Utility.cmake") - -set(VERSION_DEFAULT "0.9.8" CACHE STRING "Default version number") -set(VERSION_WITH_GIT ON CACHE BOOL "Compute version using git tags (fallback)") - -set(CONFIG_TYCMD_BUILD ON CACHE BOOL "Build tycmd (Teensy command-line manager)") -set(CONFIG_TYCMD_EXECUTABLE "tycmd" CACHE STRING "Rename tycmd executable") -set(CONFIG_TYCMD_NAME "tycmd" CACHE STRING "Rename tycmd application") - -set(CONFIG_TYCOMMANDER_BUILD ON CACHE BOOL "Build TyCommander (Teensy GUI manager)") -if(WIN32 OR APPLE) - set(CONFIG_TYCOMMANDER_EXECUTABLE "TyCommander" CACHE STRING "Rename TyCommander executable") -else() - set(CONFIG_TYCOMMANDER_EXECUTABLE "tycommander" CACHE STRING "Rename TyCommander executable") -endif() -set(CONFIG_TYCOMMANDER_NAME "TyCommander" CACHE STRING "Rename TyCommander application") - -set(CONFIG_TYUPLOADER_BUILD ON CACHE BOOL "Build TyUploader (Teensy GUI updater)") -if(WIN32 OR APPLE) - set(CONFIG_TYUPLOADER_EXECUTABLE "TyUploader" CACHE STRING "Rename TyUploader executable") -else() - set(CONFIG_TYUPLOADER_EXECUTABLE "tyuploader" CACHE STRING "Rename TyUploader executable") -endif() -set(CONFIG_TYUPLOADER_NAME "TyUploader" CACHE STRING "Rename TyUploader application") - -set(CONFIG_URL_WEBSITE "https://koromix.dev/tytools" CACHE STRING "Project website") -set(CONFIG_URL_BUGS "https://github.com/Koromix/tytools/issues" CACHE STRING "Project bug report page") - -set(CONFIG_PACKAGE_NAME "TyTools" CACHE STRING "Package / installer name") -set(CONFIG_PACKAGE_FILENAME "TyTools" CACHE STRING "Package / installer filename") - -if(MSVC) - set(USE_SHARED_MSVCRT OFF CACHE BOOL "Build with shared version of MS CRT (/MD)") -endif() -set(BUILD_EXAMPLES ON CACHE BOOL "Build library examples") - -if(MSVC) - add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /MANIFEST:NO") - - if(NOT USE_SHARED_MSVCRT) - foreach(lang C CXX) - foreach(mode DEBUG RELEASE RELWITHDEBINFO MINSIZEREL) - string(REPLACE "/MD" "/MT" CMAKE_${lang}_FLAGS_${mode} "${CMAKE_${lang}_FLAGS_${mode}}") - endforeach() - endforeach() - endif() - - include_directories(contrib/msvc) -elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99 -fvisibility=hidden -D_FILE_OFFSET_BITS=64 -Wall -Wextra -Wno-missing-field-initializers -Wno-missing-braces -Wno-deprecated-declarations -Wshadow -Wconversion -Wformat=2") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11 -fvisibility=hidden -D_FILE_OFFSET_BITS=64 -Wall -Wextra -Wno-missing-field-initializers -Wno-old-style-cast -Wno-deprecated-declarations -Wformat=2") - - foreach(lang C CXX) - foreach(mode RELEASE RELWITHDEBINFO MINSIZEREL) - set(CMAKE_${lang}_FLAGS_${mode} "${CMAKE_${lang}_FLAGS_${mode}} -D_FORTIFY_SOURCE=2") - endforeach() - endforeach() - - if(MINGW) - add_definitions(-D__USE_MINGW_ANSI_STDIO=1) - # Latest approach to force MinGW to statically link libwinpthread, until a new - # version breaks this one too. - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++ -Wl,-Bstatic") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc -static-libstdc++ -Wl,-Bstatic") - set(CMAKE_CXX_STANDARD_LIBRARIES "${CMAKE_CXX_STANDARD_LIBRARIES} -lstdc++ -lwinpthread") - endif() -endif() - -if(WIN32) - add_definitions(-DWINVER=0x0602 -D_WIN32_WINNT=0x0602) -elseif(APPLE) - if(POLICY CMP0042) - cmake_policy(SET CMP0042 NEW) - endif() - - # https://stackoverflow.com/questions/4929255/building-static-libraries-on-mac-using-cmake-and-gcc - set(CMAKE_C_ARCHIVE_CREATE " Scr ") - set(CMAKE_CXX_ARCHIVE_CREATE " Scr ") - set(CMAKE_C_ARCHIVE_FINISH " -no_warning_for_no_symbols -c ") - set(CMAKE_CXX_ARCHIVE_FINISH " -no_warning_for_no_symbols -c ") - - set(CMAKE_INSTALL_NAME_DIR "@rpath") - set(CMAKE_INSTALL_RPATH "@executable_path;@executable_path/../lib;@executable_path/../Frameworks") -endif() - -set(VERSION ${VERSION_DEFAULT}) -if(VERSION_WITH_GIT AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") - find_package(Git) - if(GIT_FOUND) - # Recompute the version string after each commit, does not work for tags though - if(EXISTS "${CMAKE_SOURCE_DIR}/.git/logs/HEAD") - configure_file("${CMAKE_SOURCE_DIR}/.git/logs/HEAD" git_logs_HEAD COPYONLY) - endif() - execute_process( - COMMAND ${GIT_EXECUTABLE} describe --tags - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - OUTPUT_VARIABLE VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(SUBSTRING ${VERSION} 1 -1 VERSION) - endif() -endif() - -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}") - -add_subdirectory(src/libhs) -add_subdirectory(src/libty) -if(CONFIG_TYCMD_BUILD) - add_subdirectory(src/tycmd) -endif() -if(CONFIG_TYCOMMANDER_BUILD OR CONFIG_TYUPLOADER_BUILD) - find_package(EasyQt5) - if(NOT Qt5_FOUND) - message(FATAL_ERROR "Could not find Qt5, add the following flags to the CMake invocation to build non-Qt binaries:\n" - "-DCONFIG_TYCOMMANDER_BUILD=0 -DCONFIG_TYUPLOADER_BUILD=0") - endif() - - if(CONFIG_TYCOMMANDER_BUILD) - add_subdirectory(src/tycommander) - list(APPEND CPACK_PACKAGE_EXECUTABLES tycommander "${CONFIG_TYCOMMANDER_NAME}") - endif() - if(CONFIG_TYUPLOADER_BUILD) - add_subdirectory(src/tyuploader) - list(APPEND CPACK_PACKAGE_EXECUTABLES tyuploader "${CONFIG_TYUPLOADER_NAME}") - endif() -endif() - -set(BUILD_TESTS ON CACHE BOOL "Build unit tests and enable CTest") -if(BUILD_TESTS) - enable_testing() - add_subdirectory(tests/libty) -endif() - -set(CPACK_PACKAGE_NAME "${CONFIG_PACKAGE_NAME}") -string(REGEX REPLACE "\\-.*$" "" CPACK_PACKAGE_VERSION "${VERSION}") -set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CONFIG_PACKAGE_FILENAME}") - -if(WIN32) - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(CPACK_PACKAGE_FILE_NAME "${CONFIG_PACKAGE_FILENAME}-${VERSION}-win64") - else() - set(CPACK_PACKAGE_FILE_NAME "${CONFIG_PACKAGE_FILENAME}-${VERSION}-win32") - endif() - if(CONFIG_TYCOMMANDER_BUILD) - set(CPACK_PACKAGE_ICON "${TYCOMMANDER_ICON_FILE_PREFIX}.ico") - elseif(CONFIG_TYUPLOADER_BUILD) - set(CPACK_PACKAGE_ICON "${TYUPLOADER_ICON_FILE_PREFIX}.ico") - endif() - if (NOT CONFIG_VARIANT AND NOT CMAKE_CROSSCOMPILING) - set(CPACK_GENERATOR ZIP WIX) - else() - set(CPACK_GENERATOR ZIP) - endif() - - set(CPACK_WIX_UPGRADE_GUID "72663aca-47a7-4b9b-aa53-aa067b872b8a") - set(CPACK_WIX_PRODUCT_ICON "${CPACK_PACKAGE_ICON}") - set(CPACK_WIX_UI_BANNER "${CMAKE_SOURCE_DIR}/contrib/images/wix_banner.jpg") - set(CPACK_WIX_UI_DIALOG "${CMAKE_SOURCE_DIR}/contrib/images/wix_dialog.jpg") - set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE.txt") - - if(CONFIG_TYCOMMANDER_BUILD OR CONFIG_TYCMD_BUILD) - # Someday, notepad will support LF newlines and this won't be necessary anymore - file(WRITE "${CMAKE_BINARY_DIR}/dos2unix.cmake" "configure_file(\${IN} \${OUT} NEWLINE_STYLE CRLF)") - add_custom_command(OUTPUT README_crlf.md COMMAND ${CMAKE_COMMAND} - ARGS -DIN="${CMAKE_SOURCE_DIR}/README.md" -DOUT="${CMAKE_BINARY_DIR}/README_crlf.md" -P "${CMAKE_BINARY_DIR}/dos2unix.cmake") - add_custom_command(OUTPUT LICENSE_crlf.txt COMMAND ${CMAKE_COMMAND} - ARGS -DIN="${CMAKE_SOURCE_DIR}/LICENSE.txt" -DOUT="${CMAKE_BINARY_DIR}/LICENSE_crlf.txt" -P "${CMAKE_BINARY_DIR}/dos2unix.cmake") - add_custom_target(crlf ALL DEPENDS README_crlf.md LICENSE_crlf.txt) - - install(FILES "${CMAKE_BINARY_DIR}/README_crlf.md" DESTINATION . RENAME README.txt) - install(FILES "${CMAKE_BINARY_DIR}/LICENSE_crlf.txt" DESTINATION . RENAME LICENSE.txt) - else() - set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0) - endif() - if(MINGW) - install(DIRECTORY contrib/mingw/ DESTINATION . FILES_MATCHING PATTERN *.txt) - endif() - - include(CPack) -elseif(APPLE) - set(CPACK_PACKAGE_FILE_NAME "${CONFIG_PACKAGE_FILENAME}-${VERSION}-osx") - if(CONFIG_TYCOMMANDER_BUILD) - set(CPACK_PACKAGE_ICON "${TYCOMMANDER_ICON_FILE_PREFIX}.icns") - elseif(CONFIG_TYUPLOADER_BUILD) - set(CPACK_PACKAGE_ICON "${TYUPLOADER_ICON_FILE_PREFIX}.icns") - endif() - set(CPACK_GENERATOR DragNDrop) - - if(CONFIG_TYCOMMANDER_BUILD OR CONFIG_TYCMD_BUILD) - install(FILES README.md DESTINATION . RENAME README.txt) - install(FILES LICENSE.txt DESTINATION .) - endif() - - include(CPack) -endif() diff --git a/README.md b/README.md index 59e5d0d0..ffa9351e 100644 --- a/README.md +++ b/README.md @@ -104,129 +104,15 @@ without programming anything. You can also use `tycmd reset -b` to start the bootloader. This is the same as pushing the button on your Teensy. -# Hacking TyTools +# Source code -## Build on Windows +This repository does not contain the code of TyTools but only exists as a front. For pratical reasons, I've started using a single repository for all my projects in 2018 because it is easier to manage. -You can use MSVC (≥ 2015) or MinGW-w64. I have not tested Clang on Windows yet. The historical -MinGW toolchain is not supported. +The source code is available here: https://github.com/Koromix/rygel/ (in the *src/meestic* subdirectory). -You need to install [CMake](http://www.cmake.org/) to build the project files before you can -use Visual Studio or MinGW. +Monorepositories have two killer features for me: -If **you don't have Qt, only the libraries and command-line tools** will be compiled. There -are two options to enable Qt in TyTools: +- Cross-project refactoring +- Simplified dependency management -- _dynamic Qt build_: Easiest option, you only need to install the pre-built Qt DLLs for - your compiler with the official Qt installer. The binaries need the Qt DLLs to work. -- _static Qt build_: Harder, but will produce autonomous binaries. Read the README in the - [lib/qt5 directory](https://github.com/Koromix/tytools/tree/master/lib/qt5) for instructions. - -To build TyTools with MSVC 2015 32-bit, launch _VS2015 x86 Native Tools Command Prompt_, -navigate to the project directory and execute CMake: - -```batch -REM You can of course use another build directory if you prefer. -mkdir build -mkdir build/win32 -cd build/win32 -cmake ../.. -``` - -This will create Visual Studio project and solution files in _build/win32_. You can then open -the _solution TyTools.sln_. - -To build 64-bit binaries, you should use _VS2015 x64 Native Tools Command Prompt_ instead. - -## Build on Mac OS X - -Install Xcode, the developer command-line tools and [CMake](http://www.cmake.org/). The native -Clang compiler can build TyTools. - -If **you don't have Qt, only the libraries and command-line tools** will be compiled. There -are two options to enable Qt in TyTools: - -- _dynamic Qt build_: Easiest option, you only need to install the pre-built Qt DLLs for - your compiler with the official Qt installer. The binaries need the Qt DLLs to work. -- _static Qt build_: Harder, but will produce autonomous binaries. Read the README in the - [lib/qt5 directory](https://github.com/Koromix/tytools/tree/master/lib/qt5) for instructions. - -After Qt is ready, you can build TyTools by executing the following commands in the -project directory: - -```bash -# You can of course use another directory if you prefer. -mkdir -p build/darwin && cd build/darwin -cd build/darwin -cmake ../.. -``` - -If you want to build debug binaries instead, you should specify the build type: - -```bash -cmake -DCMAKE_BUILD_TYPE=Debug ../.. -``` - -## Build on Linux - -TyTools can be built with GCC or Clang. - -### Prerequisites - -To install the dependencies on Debian or Ubuntu execute: - -```bash -sudo apt-get install build-essential cmake libudev-dev qtbase5-dev pkg-config -``` - -On Arch Linux you can do so (as root): - -```bash -pacman -S --needed base-devel cmake udev qt5-base -``` - -### Compilation - -Open the project directory in a terminal and execute: - -```bash -# You can of course use another directory if you prefer. -mkdir -p build/linux && cd build/linux -cmake -DCMAKE_INSTALL_PREFIX=/usr/local ../.. -make -``` - -If you want to build debug binaries instead, you should specify the build type: - -```bash -cmake -DCMAKE_BUILD_TYPE=Debug ../.. -``` - -The compiled binaries can be used directly from the build directory. Follow through the -next section if you want to install the application. - -### Installation - -You can deploy TyTools to your system with the following commands: - -```bash -sudo make install -``` - -By default this will copy the files to `/usr/local`. To change this directory you need -to change the `CMAKE_INSTALL_PREFIX` value in the Compilation section above. - -## Customized builds - -A number of customized builds are available in the [variants directory](https://github.com/Koromix/tytools/tree/master/variants). - -In order to activate a customized build, you need to specify it when running cmake. -For example, in order to build the morningstar variant, run the following commands from the -project directory: - -```batch -mkdir build -mkdir build/morningstar -cd build/morningstar -cmake -DCONFIG_VARIANT=morningstar ../.. -``` +You can find a more detailed rationale here: https://danluu.com/monorepo/ diff --git a/cmake/AmalgamateSourceFiles.cmake b/cmake/AmalgamateSourceFiles.cmake deleted file mode 100644 index 089f2535..00000000 --- a/cmake/AmalgamateSourceFiles.cmake +++ /dev/null @@ -1,65 +0,0 @@ -# TyTools - public domain -# Niels Martignène -# https://koromix.dev/tytools - -# This software is in the public domain. Where that dedication is not -# recognized, you are granted a perpetual, irrevocable license to copy, -# distribute, and modify this file as you see fit. - -# See the LICENSE file for more details. - -set(ARGV) -math(EXPR argv_end "${CMAKE_ARGC} - 1") -foreach(i RANGE 1 ${argv_end}) - if(CMAKE_ARGV${i} STREQUAL "-P") - math(EXPR argv_first "${i} + 2") - foreach(j RANGE ${argv_first} ${argv_end}) - list(APPEND ARGV "${CMAKE_ARGV${j}}") - endforeach() - break() - endif() -endforeach() - -list(GET ARGV 0 SRC) -list(GET ARGV 1 DEST) -if(NOT WORKING_DIRECTORY) - get_filename_component(WORKING_DIRECTORY "${SRC}" DIRECTORY) -endif() - -file(REMOVE "${DEST}") - - -file(STRINGS "${SRC}" lines ENCODING "UTF-8") - -foreach(line IN LISTS lines) - if(line MATCHES "^ *#include \"([a-zA-Z0-9_\\-]+\\.[a-zA-Z]+)\"$") - set(include_file "${CMAKE_MATCH_1}") - list(FIND EXCLUDE "${include_file}" exclude_index) - if(exclude_index EQUAL -1) - if(NOT IS_ABSOLUTE "${include_file}") - set(include_file_full "${WORKING_DIRECTORY}/${include_file}") - else() - set(include_file_full "${include_file}") - endif() - - file(READ "${include_file_full}" include_content) - string(REGEX REPLACE "\n$" "" include_content "${include_content}") - - string(FIND "${include_content}" "#" offset) - if(offset EQUAL -1) - set(offset 0) - endif() - string(SUBSTRING "${include_content}" ${offset} -1 include_content) - string(REGEX REPLACE "(#include \"[a-zA-Z0-9\\.-_]+\")" "// \\1" include_content "${include_content}") - - file(APPEND "${DEST}" "\ -// ${include_file}\n\ -// ------------------------------------\n\n\ -${include_content}\n\n") - else() - file(APPEND "${DEST}" "${line}\n") - endif() - else() - file(APPEND "${DEST}" "${line}\n") - endif() -endforeach() diff --git a/cmake/FindEasyQt5.cmake b/cmake/FindEasyQt5.cmake deleted file mode 100644 index b4fe5a81..00000000 --- a/cmake/FindEasyQt5.cmake +++ /dev/null @@ -1,190 +0,0 @@ -# TyTools - public domain -# Niels Martignène -# https://koromix.dev/tytools - -# This software is in the public domain. Where that dedication is not -# recognized, you are granted a perpetual, irrevocable license to copy, -# distribute, and modify this file as you see fit. - -# See the LICENSE file for more details. - -# I don't really know if this is any close to the "correct" way to make modules -# in modern CMake, but it works and... I don't care much beyond that. - -if(NOT Qt5_FOUND) - # Simple and stupid host-compiler triplet, only valid for the handful of - # supported platforms. - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(HOST_CPU "x86_64") - else() - set(HOST_CPU "i686") - endif() - if(MSVC) - if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 18) - set(HOST "${HOST_CPU}-win32-msvc") - else() - message(FATAL_ERROR "Only Visual Studio 2015 and later versions are supported") - endif() - if(NOT USE_SHARED_MSVCRT) - set(HOST "${HOST}-mt") - endif() - elseif(MINGW) - set(HOST "${HOST_CPU}-w64-mingw32") - elseif(CMAKE_COMPILER_IS_GNUCC) - string(TOLOWER "${HOST_CPU}-${CMAKE_SYSTEM_NAME}-gcc" HOST) - elseif(CMAKE_COMPILER_IS_CLANG) - string(TOLOWER "${HOST_CPU}-${CMAKE_SYSTEM_NAME}-clang" HOST) - else() - string(TOLOWER "${HOST_CPU}-${CMAKE_SYSTEM_NAME}-${CMAKE_C_COMPILER_ID}" HOST) - endif() - - if (CMAKE_CROSSCOMPILING) - find_package(Qt5 - COMPONENTS Widgets Network PrintSupport - HINTS "${CMAKE_SOURCE_DIR}/lib/qt5/${HOST}" - "${CMAKE_SOURCE_DIR}/qt5/${HOST}" - NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH - NO_CMAKE_SYSTEM_PACKAGE_REGISTRY) - else() - find_package(Qt5 - COMPONENTS Widgets Network PrintSupport - HINTS "${CMAKE_SOURCE_DIR}/lib/qt5/${HOST}" - "${CMAKE_SOURCE_DIR}/qt5/${HOST}" - "/usr/local/opt/qt5") - endif() -endif() - -if(Qt5_FOUND AND NOT TARGET EasyQt5) - add_library(EasyQt5 INTERFACE) - - get_target_property(Qt5_TYPE Qt5::Core TYPE) - get_target_property(Qt5_LOCATION Qt5::Core LOCATION) - message(STATUS "Found Qt5: ${Qt5_LOCATION} (${Qt5_TYPE})") - - # Static libraries are painful. Be careful when you touch this, it was made - # through an extremely evolved trial and error process :] - if(Qt5_TYPE STREQUAL "STATIC_LIBRARY") - get_filename_component(Qt5_DIRECTORY "${Qt5_LOCATION}" DIRECTORY) - get_filename_component(Qt5_DIRECTORY "${Qt5_DIRECTORY}" DIRECTORY) - set(Qt5_LIBRARY_DIRECTORIES - "${Qt5_DIRECTORY}/lib" "${Qt5_DIRECTORY}/plugins/platforms" "${Qt5_DIRECTORY}/plugins/styles") - - if(WIN32) - # Fix undefined reference to _imp__WSAAsyncSelect@16 - set_property(TARGET Qt5::Network APPEND PROPERTY INTERFACE_LINK_LIBRARIES ws2_32) - - # Why is there no config package for this? - find_library(qtpcre_LIBRARIES NAMES qtpcre qtpcre2 - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(qtpng_LIBRARIES NAMES qtpng qtlibpng - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(qtfreetype_LIBRARIES qtfreetype - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(qwindows_LIBRARIES qwindows - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(qwindowsvistastyle_LIBRARIES qwindowsvistastyle - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(Qt5WindowsUIAutomationSupport_LIBRARIES Qt5WindowsUIAutomationSupport - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(Qt5FontDatabaseSupport_LIBRARIES Qt5FontDatabaseSupport - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(Qt5EventDispatcherSupport_LIBRARIES Qt5EventDispatcherSupport - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(Qt5ThemeSupport_LIBRARIES Qt5ThemeSupport - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - - target_link_libraries(EasyQt5 INTERFACE - Qt5::QWindowsIntegrationPlugin Qt5::Core Qt5::Widgets Qt5::Network - imm32 winmm dwmapi version wtsapi32 netapi32 userenv uxtheme - ${Qt5WindowsUIAutomationSupport_LIBRARIES} ${Qt5FontDatabaseSupport_LIBRARIES} - ${Qt5EventDispatcherSupport_LIBRARIES} ${Qt5ThemeSupport_LIBRARIES} - ${qwindows_LIBRARIES} ${qwindowsvistastyle_LIBRARIES} - ${qtpcre_LIBRARIES} ${qtpng_LIBRARIES} ${qtfreetype_LIBRARIES}) - elseif(APPLE) - find_library(COCOA_LIBRARIES Cocoa) - find_library(CARBON_LIBRARIES Carbon) - find_library(SECURITY_LIBRARIES Security) - find_library(SC_LIBRARIES SystemConfiguration) - find_package(ZLIB REQUIRED) - find_package(Cups REQUIRED) - find_package(OpenGL REQUIRED) - - find_library(qtpcre_LIBRARIES NAMES qtpcre qtpcre2 - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(qtpng_LIBRARIES NAMES qtpng qtlibpng - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(qcocoa_LIBRARIES qcocoa - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(Qt5FontDatabaseSupport_LIBRARIES Qt5FontDatabaseSupport - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(Qt5EventDispatcherSupport_LIBRARIES Qt5EventDispatcherSupport - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(Qt5ThemeSupport_LIBRARIES Qt5ThemeSupport - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(Qt5ClipboardSupport_LIBRARIES Qt5ClipboardSupport - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(Qt5GraphicsSupport_LIBRARIES Qt5GraphicsSupport - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(Qt5AccessibilitySupport_LIBRARIES Qt5AccessibilitySupport - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - find_library(Qt5CglSupport_LIBRARIES Qt5CglSupport - HINTS ${Qt5_LIBRARY_DIRECTORIES} - NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH NO_SYSTEM_ENVIRONMENT_PATH - NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) - - target_link_libraries(EasyQt5 INTERFACE - Qt5::QCocoaIntegrationPlugin Qt5::PrintSupport - Qt5::Core Qt5::Widgets Qt5::Network - ${qcocoa_LIBRARIES} ${Qt5CglSupport_LIBRARIES} - ${Qt5FontDatabaseSupport_LIBRARIES} ${Qt5ClipboardSupport_LIBRARIES} - ${Qt5EventDispatcherSupport_LIBRARIES} ${Qt5ThemeSupport_LIBRARIES} - ${Qt5GraphicsSupport_LIBRARIES} ${Qt5AccessibilitySupport_LIBRARIES} - ${qtpcre_LIBRARIES} ${qtpng_LIBRARIES} - ${COCOA_LIBRARIES} ${CARBON_LIBRARIES} ${SECURITY_LIBRARIES} - ${ZLIB_LIBRARIES} ${CUPS_LIBRARIES} ${SC_LIBRARIES} ${OPENGL_LIBRARIES}) - endif() - else() - target_link_libraries(EasyQt5 INTERFACE Qt5::Core Qt5::Widgets Qt5::Network) - - if(WIN32 OR APPLE) - message(WARNING "Cannot package Qt5 shared libraries") - endif() - endif() -endif() diff --git a/cmake/Utility.cmake b/cmake/Utility.cmake deleted file mode 100644 index a0a71b04..00000000 --- a/cmake/Utility.cmake +++ /dev/null @@ -1,81 +0,0 @@ -# TyTools - public domain -# Niels Martignène -# https://koromix.dev/tytools - -# This software is in the public domain. Where that dedication is not -# recognized, you are granted a perpetual, irrevocable license to copy, -# distribute, and modify this file as you see fit. - -# See the LICENSE file for more details. - -if(CMAKE_C_COMPILER_ID MATCHES "[Cc]lang") - set(CMAKE_COMPILER_IS_CLANG 1) -endif() -if(CMAKE_SYSTEM_NAME STREQUAL Linux) - set(LINUX 1) -endif() - -if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" OR - CMAKE_BUILD_TYPE STREQUAL "MinSizeRel") - set(USE_UNITY_BUILDS ON CACHE BOOL "Use single-TU builds (aka. Unity builds)") -else() - set(USE_UNITY_BUILDS OFF CACHE BOOL "Use single-TU builds (aka. Unity builds)") -endif() -if(USE_UNITY_BUILDS) - function(enable_unity_build TARGET) - get_target_property(sources ${TARGET} SOURCES) - string(GENEX_STRIP "${sources}" sources) - - set(unity_file_c "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_unity.c") - set(unity_file_cpp "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_unity.cpp") - file(REMOVE ${unity_file_c} ${unity_file_cpp}) - - foreach(src ${sources}) - get_source_file_property(language ${src} LANGUAGE) - if(IS_ABSOLUTE ${src}) - set(src_full ${src}) - else() - set(src_full "${CMAKE_CURRENT_SOURCE_DIR}/${src}") - endif() - if(language STREQUAL "C") - set_source_files_properties(${src} PROPERTIES HEADER_FILE_ONLY 1) - file(APPEND ${unity_file_c} "#include \"${src_full}\"\n") - elseif(language STREQUAL "CXX") - set_source_files_properties(${src} PROPERTIES HEADER_FILE_ONLY 1) - file(APPEND ${unity_file_cpp} "#include \"${src_full}\"\n") - endif() - endforeach() - - if(EXISTS ${unity_file_c}) - target_sources(${TARGET} PRIVATE ${unity_file_c}) - endif() - if(EXISTS ${unity_file_cpp}) - target_sources(${TARGET} PRIVATE ${unity_file_cpp}) - endif() - endfunction() -else() - function(enable_unity_build TARGET) - endfunction() -endif() - -set(utility_list_dir "${CMAKE_CURRENT_LIST_DIR}") -function(add_amalgamated_file TARGET DEST SRC) - cmake_parse_arguments("OPT" "" "WORKING_DIRECTORY" "EXCLUDE" ${ARGN}) - - if(NOT IS_ABSOLUTE "${DEST}") - set(DEST "${CMAKE_CURRENT_BINARY_DIR}/${DEST}") - endif() - if(NOT IS_ABSOLUTE "${SRC}") - set(SRC "${CMAKE_CURRENT_SOURCE_DIR}/${SRC}") - endif() - - # Without that the semicolons are turned into spaces... Fuck CMake. - string(REPLACE ";" "\\;" opt_exclude_escaped "${OPT_EXCLUDE}") - add_custom_command( - TARGET "${TARGET}" POST_BUILD - COMMAND ${CMAKE_COMMAND} - -DEXCLUDE="${opt_exclude_escaped}" -DWORKING_DIRECTORY="${OPT_WORKING_DIRECTORY}" -P "${utility_list_dir}/AmalgamateSourceFiles.cmake" "${SRC}" "${DEST}") - - target_sources(${TARGET} PRIVATE "${SRC}") - set_source_files_properties("${SRC}" PROPERTIES HEADER_FILE_ONLY 1) -endfunction() diff --git a/contrib/cmake/i686-w64-mingw32.cmake b/contrib/cmake/i686-w64-mingw32.cmake deleted file mode 100644 index 641b222b..00000000 --- a/contrib/cmake/i686-w64-mingw32.cmake +++ /dev/null @@ -1,19 +0,0 @@ -# See here: http://www.cmake.org/Wiki/CmakeMingw - -set(CMAKE_SYSTEM_NAME Windows) - -set(CMAKE_C_COMPILER i686-w64-mingw32-gcc) -set(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) -set(CMAKE_RC_COMPILER i686-w64-mingw32-windres) - -set(PKG_CONFIG_EXECUTABLE i686-w64-mingw32-pkg-config) - -set(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32) - -# Adjust the default behaviour of the FIND_XXX() commands: -# - search headers and libraries in the target environment -# - search programs in the host environment -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER) diff --git a/contrib/cmake/x86_64-darwin-clang.cmake b/contrib/cmake/x86_64-darwin-clang.cmake deleted file mode 100644 index bee2c38f..00000000 --- a/contrib/cmake/x86_64-darwin-clang.cmake +++ /dev/null @@ -1,32 +0,0 @@ -# See here: http://www.cmake.org/Wiki/CmakeMingw - -set(CMAKE_SYSTEM_NAME Darwin) - -# Go to https://github.com/tpoechtrager/osxcross and fall in love -execute_process(COMMAND xcrun --show-sdk-path - OUTPUT_VARIABLE CMAKE_FIND_ROOT_PATH OUTPUT_STRIP_TRAILING_WHITESPACE) -execute_process(COMMAND xcrun -f clang - OUTPUT_VARIABLE CMAKE_C_COMPILER OUTPUT_STRIP_TRAILING_WHITESPACE) -execute_process(COMMAND xcrun -f clang++ - OUTPUT_VARIABLE CMAKE_CXX_COMPILER OUTPUT_STRIP_TRAILING_WHITESPACE) -execute_process(COMMAND xcrun -f pkg-config - OUTPUT_VARIABLE PKG_CONFIG_EXECUTABLE OUTPUT_STRIP_TRAILING_WHITESPACE) - -if(NOT CMAKE_FIND_ROOT_PATH) - message(FATAL_ERROR "Cannot find Apple SDK") -endif() -if(NOT CMAKE_C_COMPILER) - message(FATAL_ERROR "Cannot find Apple Clang compiler") -endif() - -# Know a better way to get the Darwin version? -string(REGEX REPLACE "^.*-darwin([0-9]+)-.*$" "\\1" DARWIN_MAJOR_VERSION "${CMAKE_C_COMPILER}") -set(CMAKE_SYSTEM_VERSION "${DARWIN_MAJOR_VERSION}.0") - -# Adjust the default behaviour of the FIND_XXX() commands: -# - search headers and libraries in the target environment -# - search programs in the host environment -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER) diff --git a/contrib/cmake/x86_64-w64-mingw32.cmake b/contrib/cmake/x86_64-w64-mingw32.cmake deleted file mode 100644 index 9634f1fe..00000000 --- a/contrib/cmake/x86_64-w64-mingw32.cmake +++ /dev/null @@ -1,19 +0,0 @@ -# See here: http://www.cmake.org/Wiki/CmakeMingw - -set(CMAKE_SYSTEM_NAME Windows) - -set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) -set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++) -set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres) - -set(PKG_CONFIG_EXECUTABLE x86_64-w64-mingw32-pkg-config) - -set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32) - -# Adjust the default behaviour of the FIND_XXX() commands: -# - search headers and libraries in the target environment -# - search programs in the host environment -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER) diff --git a/contrib/debian/build.sh b/contrib/debian/build.sh deleted file mode 100755 index 7bf10398..00000000 --- a/contrib/debian/build.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -e - -apt install -y libudev-dev qtbase5-dev pkg-config - -# Fix git error about dubious repository ownership -git config --global safe.directory '*' - -rm -rf /io/bin/Debian/build -mkdir /io/bin/Debian/build -cd /io/bin/Debian/build - -cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr ../../.. -ninja -DESTDIR=/io/bin/Debian ninja install diff --git a/contrib/debian/compat b/contrib/debian/compat deleted file mode 100644 index 9a037142..00000000 --- a/contrib/debian/compat +++ /dev/null @@ -1 +0,0 @@ -10 \ No newline at end of file diff --git a/contrib/debian/docker/Dockerfile b/contrib/debian/docker/Dockerfile deleted file mode 100644 index 9abd104d..00000000 --- a/contrib/debian/docker/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM debian:10 -ADD customize.sh /customize.sh -RUN bash /customize.sh && rm -f /customize.sh diff --git a/contrib/debian/docker/customize.sh b/contrib/debian/docker/customize.sh deleted file mode 100755 index fba2eeee..00000000 --- a/contrib/debian/docker/customize.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash -e - -apt update -apt install -y build-essential git cmake ninja-build pkg-config diff --git a/contrib/debian/format b/contrib/debian/format deleted file mode 100644 index 89ae9db8..00000000 --- a/contrib/debian/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (native) diff --git a/contrib/debian/install b/contrib/debian/install deleted file mode 100644 index fd110a8c..00000000 --- a/contrib/debian/install +++ /dev/null @@ -1,8 +0,0 @@ -tycmd usr/bin -tycommander usr/bin -tyuploader usr/bin -tycommander.desktop usr/share/applications -tyuploader.desktop usr/share/applications -tycommander.png usr/share/icons/hicolor/512x512/apps -tyuploader.png usr/share/icons/hicolor/512x512/apps -00-teensy.rules usr/lib/udev/rules.d diff --git a/contrib/debian/package.sh b/contrib/debian/package.sh deleted file mode 100755 index 2fe9290a..00000000 --- a/contrib/debian/package.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh -e - -cd "$(dirname $0)/../.." - -VERSION=$(git describe --tags | cut -c 2- | awk -F '-' '{print $1}') -DATE=$(git describe --tags | sed -e 's/.*-g//' | xargs -n1 git show -s --format=%ci | LANG=en_US xargs -0 -n1 date "+%a, %d %b %Y %H:%M:%S %z" -d) -PACKAGE_DIR=bin/Debian - -rm -rf $PACKAGE_DIR/pkg -mkdir -p $PACKAGE_DIR $PACKAGE_DIR/pkg $PACKAGE_DIR/pkg/debian - -docker build -t rygel/debian10 contrib/debian/docker -docker run -t -i --rm -v $(pwd):/io rygel/debian10 /io/contrib/debian/build.sh - -install -D -m0755 bin/Debian/usr/bin/tycmd $PACKAGE_DIR/pkg/tycmd -install -D -m0755 bin/Debian/usr/bin/tycommander $PACKAGE_DIR/pkg/tycommander -install -D -m0755 bin/Debian/usr/bin/tyuploader $PACKAGE_DIR/pkg/tyuploader -install -D -m0644 bin/Debian/usr/share/applications/tycommander.desktop $PACKAGE_DIR/pkg/tycommander.desktop -install -D -m0644 bin/Debian/usr/share/applications/tyuploader.desktop $PACKAGE_DIR/pkg/tyuploader.desktop -install -D -m0644 resources/images/tycommander.png $PACKAGE_DIR/pkg/tycommander.png -install -D -m0644 resources/images/tyuploader.png $PACKAGE_DIR/pkg/tyuploader.png -install -D -m0644 contrib/debian/teensy.rules $PACKAGE_DIR/pkg/00-teensy.rules - -install -D -m0755 contrib/debian/rules $PACKAGE_DIR/pkg/debian/rules -install -D -m0644 contrib/debian/compat $PACKAGE_DIR/pkg/debian/compat -install -D -m0644 contrib/debian/install $PACKAGE_DIR/pkg/debian/install -install -D -m0644 contrib/debian/format $PACKAGE_DIR/pkg/debian/source/format - -echo "\ -Source: tytools -Section: utils -Priority: optional -Maintainer: Niels Martignène -Standards-Version: 4.5.1 -Rules-Requires-Root: no - -Package: tytools -Architecture: any -Depends: \${shlibs:Depends}, \${misc:Depends} -Description: GUI and command-line tools to manage Teensy devices -" > $PACKAGE_DIR/pkg/debian/control -echo "\ -tytools ($VERSION) unstable; urgency=low - - * Current release. - - -- Niels Martignène $DATE -" > $PACKAGE_DIR/pkg/debian/changelog - -(cd $PACKAGE_DIR/pkg && dpkg-buildpackage -uc -us) -cp $PACKAGE_DIR/*.deb $PACKAGE_DIR/../ diff --git a/contrib/debian/rules b/contrib/debian/rules deleted file mode 100644 index 2d33f6ac..00000000 --- a/contrib/debian/rules +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/make -f - -%: - dh $@ diff --git a/contrib/debian/teensy.rules b/contrib/debian/teensy.rules deleted file mode 100644 index 0a921a50..00000000 --- a/contrib/debian/teensy.rules +++ /dev/null @@ -1,39 +0,0 @@ -# UDEV Rules for Teensy boards, http://www.pjrc.com/teensy/ -# -# The latest version of this file may be found at: -# http://www.pjrc.com/teensy/00-teensy.rules -# -# This file must be placed at: -# -# /etc/udev/rules.d/00-teensy.rules (preferred location) -# or -# /lib/udev/rules.d/00-teensy.rules (req'd on some broken systems) -# -# To install, type this command in a terminal: -# sudo cp 00-teensy.rules /etc/udev/rules.d/00-teensy.rules -# -# After this file is installed, physically unplug and reconnect Teensy. -# -ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04*", ENV{ID_MM_DEVICE_IGNORE}="1", ENV{ID_MM_PORT_IGNORE}="1" -ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04[789a]*", ENV{MTP_NO_PROBE}="1" -KERNEL=="ttyACM*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04*", MODE:="0666", RUN:="/bin/stty -F /dev/%k raw -echo" -KERNEL=="hidraw*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04*", MODE:="0666" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="04*", MODE:="0666" -KERNEL=="hidraw*", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="013*", MODE:="0666" -SUBSYSTEMS=="usb", ATTRS{idVendor}=="1fc9", ATTRS{idProduct}=="013*", MODE:="0666" - -# -# If you share your linux system with other users, or just don't like the -# idea of write permission for everybody, you can replace MODE:="0666" with -# OWNER:="yourusername" to create the device owned by you, or with -# GROUP:="somegroupname" and mange access using standard unix groups. -# -# ModemManager tends to interfere with USB Serial devices like Teensy. -# Problems manifest as the Arduino Serial Monitor missing some incoming -# data, and "Unable to open /dev/ttyACM0 for reboot request" when -# uploading. If you experience these problems, disable or remove -# ModemManager from your system. If you must use a modem, perhaps -# try disabling the "MM_FILTER_RULE_TTY_ACM_INTERFACE" ModemManager -# rule. Changing ModemManager's filter policy from "strict" to "default" -# may also help. But if you don't use a modem, completely removing -# the troublesome ModemManager is the most effective solution. diff --git a/contrib/images/wix_banner.jpg b/contrib/images/wix_banner.jpg deleted file mode 100644 index ab3574d38e5601c8ae8c4ad4ba2eca85797d2882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11213 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 diff --git a/contrib/mingw/COPYING.MinGW-w64-runtime.txt b/contrib/mingw/COPYING.MinGW-w64-runtime.txt deleted file mode 100644 index ca6a077e..00000000 --- a/contrib/mingw/COPYING.MinGW-w64-runtime.txt +++ /dev/null @@ -1,240 +0,0 @@ -MinGW-w64 runtime licensing -*************************** - -This program or library was built using MinGW-w64 and statically -linked against the MinGW-w64 runtime. Some parts of the runtime -are under licenses which require that the copyright and license -notices are included when distributing the code in binary form. -These notices are listed below. - - -======================== -Overall copyright notice -======================== - -Copyright (c) 2009, 2010, 2011, 2012, 2013 by the mingw-w64 project - -This license has been certified as open source. It has also been designated -as GPL compatible by the Free Software Foundation (FSF). - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - 1. Redistributions in source code must retain the accompanying copyright - notice, this list of conditions, and the following disclaimer. - 2. Redistributions in binary form must reproduce the accompanying - copyright notice, this list of conditions, and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - 3. Names of the copyright holders must not be used to endorse or promote - products derived from this software without prior written permission - from the copyright holders. - 4. The right to distribute this software or to use it for any purpose does - not give you the right to use Servicemarks (sm) or Trademarks (tm) of - the copyright holders. Use of them is covered by separate agreement - with the copyright holders. - 5. If any files are modified, you must cause the modified files to carry - prominent notices stating that you changed the files and the date of - any change. - -Disclaimer - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, -OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -======================================== -getopt, getopt_long, and getop_long_only -======================================== - -Copyright (c) 2002 Todd C. Miller - -Permission to use, copy, modify, and distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -Sponsored in part by the Defense Advanced Research Projects -Agency (DARPA) and Air Force Research Laboratory, Air Force -Materiel Command, USAF, under agreement number F39502-99-1-0512. - - * * * * * * * - -Copyright (c) 2000 The NetBSD Foundation, Inc. -All rights reserved. - -This code is derived from software contributed to The NetBSD Foundation -by Dieter Baron and Thomas Klausner. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS -``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS -BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - - -=============================================================== -gdtoa: Converting between IEEE floating point numbers and ASCII -=============================================================== - -The author of this software is David M. Gay. - -Copyright (C) 1997, 1998, 1999, 2000, 2001 by Lucent Technologies -All Rights Reserved - -Permission to use, copy, modify, and distribute this software and -its documentation for any purpose and without fee is hereby -granted, provided that the above copyright notice appear in all -copies and that both that the copyright notice and this -permission notice and warranty disclaimer appear in supporting -documentation, and that the name of Lucent or any of its entities -not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. -IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY -SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER -IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. - - * * * * * * * - -The author of this software is David M. Gay. - -Copyright (C) 2005 by David M. Gay -All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, -provided that the above copyright notice appear in all copies and that -both that the copyright notice and this permission notice and warranty -disclaimer appear in supporting documentation, and that the name of -the author or any of his current or former employers not be used in -advertising or publicity pertaining to distribution of the software -without specific, written prior permission. - -THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN -NO EVENT SHALL THE AUTHOR OR ANY OF HIS CURRENT OR FORMER EMPLOYERS BE -LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY -DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS -SOFTWARE. - - * * * * * * * - -The author of this software is David M. Gay. - -Copyright (C) 2004 by David M. Gay. -All Rights Reserved -Based on material in the rest of /netlib/fp/gdota.tar.gz, -which is copyright (C) 1998, 2000 by Lucent Technologies. - -Permission to use, copy, modify, and distribute this software and -its documentation for any purpose and without fee is hereby -granted, provided that the above copyright notice appear in all -copies and that both that the copyright notice and this -permission notice and warranty disclaimer appear in supporting -documentation, and that the name of Lucent or any of its entities -not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior -permission. - -LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, -INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. -IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY -SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER -IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, -ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF -THIS SOFTWARE. - - -========================= -Parts of the math library -========================= - -Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - -Developed at SunSoft, a Sun Microsystems, Inc. business. -Permission to use, copy, modify, and distribute this -software is freely granted, provided that this notice -is preserved. - - * * * * * * * - -Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. - -Developed at SunPro, a Sun Microsystems, Inc. business. -Permission to use, copy, modify, and distribute this -software is freely granted, provided that this notice -is preserved. - - * * * * * * * - -FIXME: Cephes math lib -Copyright (C) 1984-1998 Stephen L. Moshier - -It sounds vague, but as to be found at -, it gives an -impression that the author could be willing to give an explicit -permission to distribute those files e.g. under a BSD style license. So -probably there is no problem here, although it could be good to get a -permission from the author and then add a license into the Cephes files -in MinGW runtime. At least on follow-up it is marked that debian sees the -version a-like BSD one. As MinGW.org (where those cephes parts are coming -from) distributes them now over 6 years, it should be fine. - -=================================== -Headers and IDLs imported from Wine -=================================== - -Some header and IDL files were imported from the Wine project. These files -are prominent maked in source. Their copyright belongs to contributors and -they are distributed under LGPL license. - -Disclaimer - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. diff --git a/contrib/mingw/COPYING.winpthreads.txt b/contrib/mingw/COPYING.winpthreads.txt deleted file mode 100644 index 35077012..00000000 --- a/contrib/mingw/COPYING.winpthreads.txt +++ /dev/null @@ -1,57 +0,0 @@ -Copyright (c) 2011 mingw-w64 project - -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. - - -/* - * Parts of this library are derived by: - * - * Posix Threads library for Microsoft Windows - * - * Use at own risk, there is no implied warranty to this code. - * It uses undocumented features of Microsoft Windows that can change - * at any time in the future. - * - * (C) 2010 Lockless Inc. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * - * * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * * Neither the name of Lockless Inc. nor the names of its contributors may be - * used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AN - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE - * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - */ diff --git a/contrib/msvc/unistd.h b/contrib/msvc/unistd.h deleted file mode 100644 index d3881a3e..00000000 --- a/contrib/msvc/unistd.h +++ /dev/null @@ -1,22 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef _UNISTD_H -#define _UNISTD_H - -#include -#include -#include - -#define STDIN_FILENO 0 -#define STDOUT_FILENO 1 -#define STDERR_FILENO 2 - -#endif diff --git a/lib/qt5/README.md b/lib/qt5/README.md deleted file mode 100644 index ac5b2f04..00000000 --- a/lib/qt5/README.md +++ /dev/null @@ -1,109 +0,0 @@ -# Compilation on Windows - -## MSVC 20xx 32-bit with static MSVCRT - -These instructions have been tested with *Qt 5.12.11*, they will probably **not work for -Qt versions < or > 5.12**. Even if they work, you may not be able to link TyTools correctly. - -Download qtbase source from http://download.qt.io/official_releases/qt/5.12/5.12.11/submodules/qtbase-everywhere-src-5.12.11.zip - -Extract the directory inside it to "tytools/lib/qt5" and rename "qtbase-everywhere-src-5.12.11" to -"i686-win32-msvc-mt". Open the "VS20xx x86 Native Tools Command Prompt" and cd to -this directory. - -```batch -cd i686-win32-msvc-mt -REM Now we are in tytools/lib/qt5/i686-win32-msvc-mt -configure -platform win32-msvc ^ - -opensource ^ - -confirm-license ^ - -static ^ - -static-runtime ^ - -release ^ - -nomake examples ^ - -nomake tests ^ - -no-opengl ^ - -no-harfbuzz ^ - -no-icu ^ - -no-cups ^ - -qt-pcre ^ - -qt-zlib ^ - -qt-freetype ^ - -qt-libpng ^ - -qt-libjpeg -nmake -``` - -Unfortunately Qt static builds are fragile and cannot be moved around. You will need to rebuild Qt -if you move your project. - -## MSVC 20xx 64-bit with static MSVCRT - -These instructions have been tested with *Qt 5.12.11*, they will probably **not work for -Qt versions < or > 5.12**. Even if they work, you may not be able to link TyTools correctly. - -Download qtbase source from http://download.qt.io/official_releases/qt/5.12/5.12.11/submodules/qtbase-everywhere-src-5.12.11.zip - -Extract the directory inside it to "tytools/lib/qt5" and rename "qtbase-everywhere-src-5.12.11" to -"x86_64-win32-msvc-mt". Open the "VS20xx x64 Native Tools Command Prompt" and cd to -this directory. - -```batch -cd x86_64-win32-msvc-mt -REM Now we are in tytools/lib/qt5/x86_64-win32-msvc-mt -configure -platform win32-msvc ^ - -opensource ^ - -confirm-license ^ - -static ^ - -static-runtime ^ - -release ^ - -nomake examples ^ - -nomake tests ^ - -no-opengl ^ - -no-harfbuzz ^ - -no-icu ^ - -no-cups ^ - -qt-pcre ^ - -qt-zlib ^ - -qt-freetype ^ - -qt-libpng ^ - -qt-libjpeg -nmake -``` - -Unfortunately Qt static builds are fragile and cannot be moved around. You will need to rebuild Qt -if you move your project. - -# Mac OS X / Clang 64-bit - -These instructions have been tested with *Qt 5.9.9*, they will probably **not work for -Qt versions < or > 5.9**. Even if they work, you may not be able to link TyTools correctly. - -A recent version of XCode must be installed. - -Download qtbase source from http://download.qt.io/official_releases/qt/5.9/5.9.9/submodules/qtbase-opensource-src-5.9.9.tar.xz - -Extract the directory inside it to "tytools/lib/qt5" and rename "qtbase-opensource-src-5.9.8" to -"x86_64-darwin-clang". Open a command prompt and go to that directory. - -```sh -cd x86_64-darwin-clang -# Now we are in tytools/lib/qt5/x86_64-darwin-clang -./configure -platform macx-clang \ - -opensource \ - -confirm-license \ - -static \ - -release \ - -nomake examples \ - -nomake tests \ - -no-pkg-config \ - -no-harfbuzz \ - -no-icu \ - -no-cups \ - -no-freetype \ - -qt-pcre -make -``` - -Unfortunately Qt static builds are fragile and cannot be moved around. You will need to rebuild Qt -if you move your project. diff --git a/lib/qt5/download-static-qt5.sh b/lib/qt5/download-static-qt5.sh deleted file mode 100755 index ae9a8f7f..00000000 --- a/lib/qt5/download-static-qt5.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -e - -print_usage() { - printf "usage: %s [options] (e.g. 5.12.2)\n\n" "$(basename $0)" - printf "This tool downloads the appropriate Qt sources needed to build\n" - printf "a static build of Qt\n\n" - printf "Options:\n" - printf " -x [] Extract Qt to \n" - printf " -f Overwrite destination directory if it exists\n" -} - -while getopts ":x:f" opt; do - case $opt in - x) DESTDIR=$OPTARG ;; - f) OVERWRITE=true ;; - - \?) echo "Invalid option -$OPTARG" >&2; print_usage >&2; exit 1 ;; - esac -done -VERSION=${@:$OPTIND:1} - -[ -z "$VERSION" ] && (echo "Missing Qt version parameter" >&2; print_usage >&2; exit 1) - -# Delete any partial downloads using the checksum files, unfortunately I can't find -# any GPG signature for the source downloads to make this secure. -[ ! -f qtbase-md5sums-$VERSION.txt ] && wget -O qtbase-md5sums-$VERSION.txt http://download.qt.io/official_releases/qt/$(echo $VERSION | cut -d. -f1,2)/$VERSION/submodules/md5sums.txt -md5sum --quiet -c qtbase-md5sums-$VERSION.txt 2>/dev/null | cut -d: -f1 | xargs rm -f -[ ! -f qtbase-everywhere-src-$VERSION.tar.xz ] && wget http://download.qt.io/official_releases/qt/$(echo $VERSION | cut -d. -f1,2)/$VERSION/submodules/qtbase-everywhere-src-$VERSION.tar.xz -echo "All files downloaded" - -if [ -n "$DESTDIR" ]; then - echo Extracting qtbase-opensource-src-$VERSION.tar.xz... - if [ "$OVERWRITE" = true ]; then - rm -rf "$DESTDIR" - fi - mkdir "$DESTDIR" - tar Jxf qtbase-opensource-src-$VERSION.tar.xz -C "$DESTDIR" --strip-components 1 - printf "Qt source extracted in '%s'\n" "$DESTDIR" -fi diff --git a/resources/images/board_attached.png b/resources/images/board_attached.png deleted file mode 100644 index a7f4f1dcc4c1c958cb8ea3cb44f61107ecdfe63d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10139 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 XmONC|iGQ(eTY$Q%j!K2H&HMiWzw=PI diff --git a/resources/images/board_attached.xcf b/resources/images/board_attached.xcf deleted file mode 100644 index f87fb46cb0fc645dc61ea13ac11575ba74887ae7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19214 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�V}0HAV~_&Q7OH3D6=OLwe zMs*OZp;zj;Zb`XxC*=|q)ccS%$~yIcQdLx1yOh!zRbNVxL9-}rmQ-n@%1x=cMyfd~ zyn{;NQT1)YF}_=DyZfQ=lqO87!%@WutM{?$5VRwem*|%Wm?)Ubw{ysbyF>rVH5Rp;NLb0{15EN4A8eAx_`s9!lZ?g( zqJ*P_q+~ZfI3+}dBMPb#t`f2mwi3D$z7oO`#uCbs{}9p=))Lwh-V)*x<`U`>?h^76 z_7eIM{t^Nc26Ooqj+nk9YB`a(lFdh$BtbsfBpLFNC-Em~k&i@)M~O*Ek$iMYj0#5- zRwZ5~W+iSVb|ro#h9!-wvWa@V{Wm z8UVg(Kqur(}!6A{P0t`RZOvC*c{F^F=c_O9ItP&|OE{L@b7T0rg09oAb2tU|qtRgEaUvo+t5Q=4|QgP%trZ*<&B!2kHcHth#2yez3=Og2>#u zu8jv3hy?H?RYIDo?v%%CR_%*-n+t*q+= zg}(pEQ3~B{c5~ooLQYaPa#4zskOd^AA8{73EAcBaEO9Kc8BrP$8!qRt&xFjQoTGH3 zRHHnjBqKy3Tq0~DfFhV8tRlc7*uv!;^qG)flv$Kilu(pSluAT5L^?z~#6HA9L`1|! z#7W)R-5hd=8$v`1lm3q$n~!lG_6GKExTXqk<`O_2+<0Rh0pt`p1RA;d=0?RP+dwMM z?DM&0iv-i$wf?#~P|Sz|oG{g?W&psU%WsqWch zJAZjgM`;fJXXPYq-ML}qMU^o^3h-DDJocTR-7=@LU<`R|u{`4qetu}@=I<|To*2VT z3c+vsJiy%p+cw_2Xl7Lr*3^nYgHAbvy`LS~xBb_pJ1BcAIdh6nq5 zPilhv;-hPqT+$LRDKJ6-pq^u%J975a(LLMVdg)0;pX)123-dCA0Xzv5@II)dvhV>W zN7)CP9Bm(X5`J>zeIQCWN=V8l!3U>=sC+62RS8!KS^0zz;uF3S!V<>vi6NXNq$R8+ zv?aVH#3jrn)Fs>{m0 z{G^W9(t??UnWKa=4SS}+P$JUZx0Qx42^BcKvy9+$0?Fzcg;O2-MT~!3~@m45&d$&g6!`|@zCl-_tk&hhz?eaRs&Fyua1tjV2L~?Z{C_KI&x;EKp J&r3G(e*hr-5u^YB diff --git a/resources/images/board_bootloader.png b/resources/images/board_bootloader.png deleted file mode 100644 index 7b0f29cee65761810e7194e37de1f5b56b463257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8694 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 YBt2eAu5JVc{#~gA|H+2##J{WkA8We6iU0rr diff --git a/resources/images/board_detached.png b/resources/images/board_detached.png deleted file mode 100644 index 76dd29a00af7bad0d686b436bdac6acceb542afe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10175 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 St1Cd^aeipGUntM>i}?Rj+vdms diff --git a/resources/images/board_error.png b/resources/images/board_error.png deleted file mode 100644 index 8489cf2927634aba7a46f5f90c9ee133a3a50376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12394 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 diff --git a/resources/images/board_other.xcf b/resources/images/board_other.xcf deleted file mode 100644 index 745089b80a4a23a8db1436add17d7803e4053afa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15743 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 Hq>29qw!vIs diff --git a/resources/images/board_pending.png b/resources/images/board_pending.png deleted file mode 100644 index 2f9e2247768524c1a57baa7c59787ea963a456be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13639 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

Q0+Bw3fA37+Z?@}V?Ox1` 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 diff --git a/resources/images/board_working.png b/resources/images/board_working.png deleted file mode 100644 index 5b3860a494a1e8409f44465469bc454cf1e8fe8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20389 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 diff --git a/resources/images/board_working.xcf b/resources/images/board_working.xcf deleted file mode 100644 index d3f032ef252bad374386a614acb32d23b47e7be6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40793 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 Op|?+6a-T7Eng0hC6^ru# diff --git a/resources/images/monitor.png b/resources/images/monitor.png deleted file mode 100644 index e2e8cd020229ad43c127818b959815d3caf3fae2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2166 zcmZuxdpy&P7yb?##v;Zm*DYN!xfPOGOlAxTW z5ym$3Dt^CyM)At*Pz6_0+Wbux{sCrM?iM|@h*UJyic2OBi{*S+W7|AWFdE@>H<_lJ$`y^8$Y z%kp=VoC zQD0kdljhW}OWVoz>hr8bbavLI4M3&}P#r&J-vgbB-uBujGcT zBTuiKeA6Y}Zn8Id>;N6sn@ObLQx3DcbQH4@tVY=~N0YmU^kwaf&WnFsP@lQkgF-az zW~tC@bnPj$c+cD~==2}m-&BICnS3`z#tmpXVf=pl^exGc+P@dI+F5*UbGj5G)toe8 zd9Ac@;KCQw>MmS)bGmf$(_2kX{aF6zA@_1U*hI-T@Q0nFXWK3M(^zMpa&;$E z`DfFX@1Ljn7ZU?+l>CSg%PQ;wN^DPcQrh-UAc{v{Q2KtfBi$arry{1p5_E01|B4)) zHSPo70vGQy80@++CHwq*pfCF_@r`pzMM_)h6PK3zVZ_g`I*2HD;!5#$Qe0s}#?;B) zz3nxLCUWo6?`YwVv{@#)-G$5JKBQ4MZ>b3vYQV;O&z#4AwGMR3?1;BE9bX}2hPoo4 zl$Me8&Lac$Qbs`yKVw72?#gp^r9DX~TG^i0H#59~NuM9fKIRb&x}eBv`g!%U={M8*{=L;06c_6PVW#ARwU#ylM85e(r`j3v8-8 zEqMTg$7NO=lQFS1mdQk4D41*_ic`xojd_3Ba&*k%k2sn$<6#h zMyEjsoK9i@J9#k03$?hn@a^fW zkdiEj9UNm%r3Z7SJ>FtKa6?$1yP3)nx=%TmTrcb)wddXgNCh0@sa{bA#OuQf%eVDg zGgq3)rS)2>e{c{>eMr4>{)T(g)*(!o5~xpvP`~p~a$t+8A-3mTosbML%sxSTl5VUI zI@vVrbX?$n2s5`Ph}bo&Hw2}Ad!bt{jhCY<7TMTIZ(hHoE%S<~;?|+GA0%sy)?LqdU0Tf{x;fq4O2PG{UfKVV< fCn@>A%&4Sw=BhuIFL%&Ec%uN$+7ZjN^p5`*Ph9UV diff --git a/resources/images/reboot.png b/resources/images/reboot.png deleted file mode 100644 index 348de9dc41424eb47c11ea33566034236d89e45f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1711 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrV0u&)5>XPASgue|l%JNFld4cs zS&*ubT9KK?z)*4P?exGRZA~86|B**^7(F>UpI+b%*(-bI({rcEWpAGNUR`qUc#Xs< zhtprCUSOQl^6&e4!GBH*m1HK(dOoSx#Zy&uokYc+Q&)q1R{u?jI`99jp#Go%XVp%* z;`^Vq-~6gLcxjvb`ELo&uYJ^Y+5SPx$o72UZNXf{ho}91TTc1wbawu<&Gt2UH+BF0 zn!|H4gUj|w$L$~8&xiO zEc7cPtnTFHZIk!icv^PYUr_M=yr0D`YTLW@e@ZX@De*Td*4I)Ywo?C9vSxNmC;O$! zROQ7|c3m6SMg`bjt7wWk9MmtsZzGbFQWLPqZ7SQ>tMf~gjvSfGYy0`+rX0Ovt>;-) z&w4fMHuwv(&lY~dlD02-;nVFt^##v9+~F{uslayZyy+gPx~Tar$7bA~qw#C5_K~B- z^@=^7dD~{NDwve{l|G$*=<3nyMhCe#UU_X!ZZwsfeq`a78_}CAystE@)Qo%Hx+a%# z3CBLsg9+v8U6RtXja-w>l%8BXxLm1d+7Wh+32aZ>G%Pz)4iwJY_p$Hdtkb8aOJ3)8 zSdn75;2hTYWjvE?YNc@w^*$=~iFQET3C9ZL?Y4 zr2^KLX|ql9mtOUgjb6EYoo)H+d*17rt8-6yIJ?W4)l3P@&zk+pcx!mkf4^Qc)3^oC zY^npAZ@zJEdRDqU)%g&U(Adb|5$b!T&z|4KJ~Wwm8jV3YjqqxizqGMp~!liUwBveH>>*T zbywQw@B1NE#l5%no>Tt9?H8h7{MR)3aNPOe{^0)%b6F>Tp7BL_69WTdOQy4PfTy!F zEVTpE_?+5_wjPHaWRAuMyIu@qw_ah9vcgZy#Z_i$m+OXrTU=|cX2kqr^_7|=BJO^0 z>w^c!ldc{-8X3+W?kMnwp|G$tsAQth|LG!8M=A>L^p}5^D}T?hFfMJ?O+&^Nvr<)( z0}Us~itdiP*sb`*(Ip^hnVi4wvWJ%Y-aUN$I<_Ufa{ljPmZ@`2GR*g|IbL#D>7K&8 zn_EiG{XU`?Hbvx7@uR|KJ&!*pN^d?jKgZh6I#1H*(#gt40vjVTl6Uq-UJU45-g&rd zRp7n}g^>^U9F5cskNiCEPiy0xZId2ZofSN?p~XVz%ETTmFO9=aEn&SP!k)MKtA4c0 z);Gl%?et1`65+tArE;AAAN&5@rk{f+=LIQnmF&Cm?YPE;t=uMA+y2((-0l@V@Si6p zQ@4I8-n`WN5Gga=|TB8#iD z-#z}q=n))#+Wf#lMT4*fZ%X^i%eR03_I_qsy?tp>(Fz4)wrjvbh%L$6-G$*l2rk&W zd@@jkv%n*=n1Ml08H5=tmfDvA1=&kHeO=ifb4&6W@y?(1-VYd)`#fD7Lx2U;osGUs zg%ZaeiaYykDPX%E@IQP<b^Fg( z{GU`i>4}xpE8UaFJ-%=CE1LZzn@_#$UFgn>PxDR%_U(C)#SSd+9T+$m7!?>;8W;o^ znBW|~^{I`;dptjFd75iKd5&Mr9$SXT-{!vEFMR#|!wT_WyBXUV<};${K`{V@^Dj2| ypIO1wCyD&ef9yM)D?eGrzh=++2rp=myS-tLJ=SYfox_#Q00f?{elF{r5}E)Iru@19 diff --git a/resources/images/reset.png b/resources/images/reset.png deleted file mode 100644 index 455611c669cce8428ff8fbbb97672f5a5087225b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3586 zcmV+d4*l_oP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+U=K7aw{neMgLjFECERfiRI7@RJ|R{^5;U6cI@O$ z)ui6Xd>G0=%k-7d0i1;X_pcHDLZKoYlA7m|b3{oc6|NX~yvo&6OsoB5TF+1RaDTxt z33|C6bKmnT?D}}Y(zYMZ_F(7M@hwER@G3Gr&vDxkZ6V>yPWw5O{X)&3ma{*6ZrLsV z`kV~OXbL^#h`W%))$-*@5QP+}XbCNg^0Z`(=eN@?U-K94)P0k{d-RgO_z{^r(s2oW zEGxg{Y1>I(>~g!|r-+De&-^(eliS6Y{Eg9kjDD@IrW}y2ychMclr_S{1L?f7kx>mF z#n@IYs2*!PL9Jn_M~DX=3NbQ1C{d$IgZk=EIuT;x&W4`(WLY*B*N#w0ge%mNS^ zJEywxOX2F`YnfmL1a+m^vA`OSOX5&^>@8WGC2GLb6tD9_*0umr1mB8au)7n*Orn%2 z8nY20j}AT+k+UQ|K!7wTH$=%vBm<7~^o@6n)?8M;%(z|vLUB+GXmEf4DZxnb-MaVE z>%d+cGSbkIhYcTP)SKF-`b_PW+`m(!O^p|*InN%{U^e@Zpn09>WCmiK2*hm?z=r0@ zEIOscliXw$3ri5(TZmF8oJNxv2&PV~gKl;Ya=+ykklp{vjlUxoCb~aCE=+Wv$bIGZ z4YgL+bt?WVx}HXEvDf)zV6}U>s^Fr zd7t}p1eKi00G~)a$8^IY-XNaYv~M{K$3LaarNK#aS&^S@WL!g@K&5lHxke5yY^BI1<#6j4Dbf z!$O2sjT93}+K+nphaG={Tr#;zVB}ap1u7)R5B>+gyEXGulWtNV3Ut2M_QxpDwF@+A zw*7r<+l>>z{|sDdEq|pB%zlzyYiZ#lpnn^3_j_SAvuztrjXAA?`QN) zSzzE6=vi}nYwqLp0Z3C<%QwKmAuv{;>~)WKcenTU@0n(QKXr0)s30>2)&Kwi24YJ` zL;(K){{a7>y{D4^000SaNLh0L04^f{04^f|c%?sf00007bV*G`2jdGF4+0HA98_k37^OpdxMM(TWc^a5yl<(`b=_&y6<+2mF)SYt*jgy@trN5wZ zFEF;KOBYIfr1ulz` z{L#+7H7wwJn)jTZ-E6G@0l1D^!Wv>2CnbUIUd3~)?B z>nn2wI0X2`hzq=kw0?Flpz54R)F(>b8T9SsQ?E8KeQ=Tg%MdQz}0U5 zHxzIMI2gFXrZc=1z?T(p4RAm}6SEabL+eI7l{nkF9hgdiQnY+1z!czf%E!3@$wPP) zScTLQ4)?9;0FFfpI?f1qYs;iO?Puupn!S$r$WN_vt7~wI@Jsj1kUWQDOG|6D8c)Y zHY&bP`5#hba(%`WpfXMY9`LYl?nTPVv|$P1XBB6HIlyvi≶*bX;w~^QHjFaST!~ zP|b?)55;chG3Y9D|7s{M%TA_N+A^BN!<=nBlp-usO8ys+ z_AlBFfnW1Az%{_H-Dy6H0K*|jHPMa%r~V@p?)l3UJA%9^z<%M6=1OCZ7Y%jHZz0CZbgz#G@uFi7GYF8UFU1ir3$Xt6~KJrZ+J8r z$tegW9DJ=WjjzT;y9&vyi4F6S#FCKm0V=Kl4G9$>DQ3ED;XlBwNU#1_(1&y`Ed}(> zURLB*>hsq>jMNLn(lmJna0_8Hw7lNOfZIL2%)f!JAmz+4pcM(WtW~T4H~1Lnc+W4j z4Y@mHVJ_}TauBJ6&~C|om-Ai3a&_w(Bm=7h_%aexNs1;P zFVGRtw|_nGKH|nG;DbnkO(pB${vs*B3T3Y3aT#q7i-y@Ax{9CxB_xiZX~}<&BV}Pm z4y#8gis$OOD#o(Mo#fSD7CAwY z0&EA~sdS!Bq;hfVQ1UysT&ql+9gnUpU=8}p!&~v=zkd?=2+9g<+7uoD9{~1KGC%v_ zzgp-SB-+`mVSxK9wF2%{a1b0#x>w;ok2K-VRT0K0_x|P8*twnT>I7eMj-GLO475eL zC-7>k2O3RwkQ;=xjAMmlbKI^arx_zJqFkM~1`bAO3HT<1yI04e<08ozWH|~lpzr3bO&{k}_{`go z!VM#_zWm2=8up;u%UapG>tOUh>=L5$uj|wz6WUn zHP`6#s|csNtwC#@;zlH8YnsuOE~XJA>SV23k%FGYSkMX_kA$9QA@zS#sja_G4{`za3rK3)D&Vi~=l+Q1EGh*U%C~SR zQu#a4{d>S5WN&fu8q$xa8)?OEFc=I5gTY`h7z_r3!4M7p4=Y_hy~kUiL;wH)07*qo IM6N<$g6j9XD*ylh diff --git a/resources/images/tycommander.icns b/resources/images/tycommander.icns deleted file mode 100644 index 65002c31456a81a14522bfe61252b9166f563f8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300165 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

`6@0edo&@NH=A*B-puhL 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Ǵ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%0DjvtB;o$Z?)eK7h_WN#L_>p*1Lx&eUET?RnJt%0Au?!VR^w#8%-c{Hltw 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

Mglcrl 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 diff --git a/resources/images/tycommander.xcf b/resources/images/tycommander.xcf deleted file mode 100644 index 1e4fce2a77cb17be1febd4830d5200a2d6c2d102..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 313724 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 diff --git a/resources/images/tyuploader.icns b/resources/images/tyuploader.icns deleted file mode 100644 index f070911ec3587bb080fbfbdcaf4127803b4549af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43044 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

#+ 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 oQyTv7KQ8e9e~)1MFNA60y*mHfcbpQYW diff --git a/resources/images/tyuploader.xcf b/resources/images/tyuploader.xcf deleted file mode 100644 index 010f38a2b8ddfb8e02286ed6adab171177962800..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72525 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

  • SWis4V*$Zw>mG_VPSY?~bq8wU?5@Ta&wW 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 qLlv1SeM4~?uDe$@Djyo* - - images/tycommander.png - images/tyuploader.png - - images/board_attached.png - images/board_detached.png - images/board_bootloader.png - images/board_other.png - images/board_pending.png - images/board_working.png - images/board_error.png - images/reset.png - images/upload.png - images/reboot.png - images/monitor.png - - diff --git a/src/libhs/CMakeLists.txt b/src/libhs/CMakeLists.txt deleted file mode 100644 index cb32601d..00000000 --- a/src/libhs/CMakeLists.txt +++ /dev/null @@ -1,81 +0,0 @@ -# libhs - public domain -# Niels Martignène -# https://koromix.dev/libhs - -# This software is in the public domain. Where that dedication is not -# recognized, you are granted a perpetual, irrevocable license to copy, -# distribute, and modify this file as you see fit. - -# See the LICENSE file for more details. - -if(WIN32) - list(APPEND LIBHS_LINK_LIBRARIES hid setupapi) -elseif(APPLE) - find_library(COREFOUNDATION_LIBRARIES CoreFoundation) - find_library(IOKIT_LIBRARIES IOKit) - list(APPEND LIBHS_LINK_LIBRARIES ${COREFOUNDATION_LIBRARIES} ${IOKIT_LIBRARIES}) -elseif(LINUX) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_GNU_SOURCE") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GNU_SOURCE") - - find_package(PkgConfig REQUIRED) - pkg_check_modules(LIBUDEV REQUIRED libudev) - - include_directories(${LIBUDEV_INCLUDE_DIRS}) - list(APPEND LIBHS_LINK_LIBRARIES ${LIBUDEV_LIBRARIES}) -endif() - -include(CheckSymbolExists) -check_symbol_exists(asprintf stdio.h HAVE_ASPRINTF) - -find_package(Threads) -list(APPEND LIBHS_LINK_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) - -set(LIBHS_SOURCES array.c - array.h - common.c - common.h - common_priv.h - device.c - device_posix.c - device_win32.c - device.h - device_priv.h - hid_darwin.c - hid_linux.c - hid_win32.c - hid.h - htable.c - match.c - match.h - match_priv.h - monitor_common.c - monitor_darwin.c - monitor_linux.c - monitor_win32.c - monitor.h - monitor_priv.h - platform.c - platform_darwin.c - platform_linux.c - platform_win32.c - platform.h - serial_posix.c - serial_win32.c - serial.h) - -add_library(libhs STATIC ${LIBHS_SOURCES}) -set_target_properties(libhs PROPERTIES OUTPUT_NAME hs) -target_link_libraries(libhs ${LIBHS_LINK_LIBRARIES}) -if(HAVE_ASPRINTF) - target_compile_definitions(libhs PRIVATE HAVE_ASPRINTF) -endif() -enable_unity_build(libhs) - -add_amalgamated_file(libhs "${CMAKE_BINARY_DIR}/libhs.h" libhs.h) - -if(BUILD_EXAMPLES) - add_subdirectory(examples/enumerate_devices) - add_subdirectory(examples/monitor_devices) - add_subdirectory(examples/serial_dumper) -endif() diff --git a/src/libhs/README.md b/src/libhs/README.md deleted file mode 100644 index 83b80246..00000000 --- a/src/libhs/README.md +++ /dev/null @@ -1,12 +0,0 @@ -libhs -===== - -libhs is a C library to enumerate HID and serial devices and interact with them. It is: - -- **single-file**: one header is all you need to make it work. -- **public domain**: use it, hack it, do whatever you want. -- **multiple platforms**: Windows (≥ Vista), Mac OS X (≥ 10.9) and Linux. -- **multiple compilers**: MSVC (≥ 2015), GCC and Clang. -- **driverless**: uses native OS-provided interfaces and does not require custom drivers. - -You can download the library in the [release section](https://github.com/Koromix/libraies). diff --git a/src/libhs/array.c b/src/libhs/array.c deleted file mode 100644 index e0d781db..00000000 --- a/src/libhs/array.c +++ /dev/null @@ -1,69 +0,0 @@ -/* libhs - public domain - Niels Martignène - https://koromix.dev/libhs - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include "common_priv.h" -#include "array.h" - -void _hs_array_release_(struct _hs_array *array) -{ - assert(array); - - free(array->values); - - array->values = NULL; - array->allocated = 0; - array->count = 0; -} - -int _hs_array_expand_(struct _hs_array *array, size_t value_size, size_t need) -{ - assert(array); - assert(array->count <= SIZE_MAX - need); - - if (need > array->allocated - array->count) { - size_t new_size; - void *new_values; - - new_size = 4; - while (new_size < array->count) - new_size += new_size / 2; - while (need > new_size - array->count) - new_size += new_size / 2; - new_values = realloc(array->values, new_size * value_size); - if (!new_values) - return hs_error(HS_ERROR_MEMORY, NULL); - memset((uint8_t *)new_values + (array->allocated * value_size), 0, - (new_size - array->allocated) * value_size); - - array->values = new_values; - array->allocated = new_size; - } - - return 0; -} - -void _hs_array_shrink_(struct _hs_array *array, size_t value_size) -{ - assert(array); - - if (array->count) { - void *new_items = realloc(array->values, array->count * value_size); - if (!new_items) - return; - - array->values = new_items; - array->allocated = array->count; - } else { - free(array->values); - - array->values = NULL; - array->allocated = 0; - } -} diff --git a/src/libhs/array.h b/src/libhs/array.h deleted file mode 100644 index a483238f..00000000 --- a/src/libhs/array.h +++ /dev/null @@ -1,84 +0,0 @@ -/* libhs - public domain - Niels Martignène - https://koromix.dev/libhs - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef HS_ARRAY_H -#define HS_ARRAY_H - -#include "common.h" - -_HS_BEGIN_C - -struct _hs_array { - void *values; - size_t allocated; - size_t count; -}; - -#define _HS_ARRAY(Type) \ - struct { \ - Type *values; \ - size_t allocated; \ - size_t count; \ - } - -#define _hs_array_release(Array) \ - _hs_array_release_((struct _hs_array *)&(Array)->values) - -#define _hs_array_grow(Array, Need) \ - _hs_array_grow_((struct _hs_array *)&(Array)->values, sizeof(*(Array)->values), (Need)) -#define _hs_array_push(Array, Value) \ - (_hs_array_grow((Array), 1) < 0 \ - ? HS_ERROR_MEMORY \ - : (((Array)->values[(Array)->count++] = (Value)), 0)) - -#define _hs_array_shrink(Array) \ - _hs_array_shrink_((struct _hs_array *)&(Array)->values, sizeof(*(Array)->values)) -#define _hs_array_pop(Array, Count) \ - do { \ - (Array)->count -= (Count); \ - if ((Array)->count <= (Array)->allocated / 2) \ - _hs_array_shrink(Array); \ - } while (0) -#define _hs_array_remove(Array, Offset, Count) \ - do { \ - size_t _HS_UNIQUE_ID(start) = (Offset); \ - size_t _HS_UNIQUE_ID(count) = (Count); \ - size_t _HS_UNIQUE_ID(end) = _HS_UNIQUE_ID(start) + _HS_UNIQUE_ID(count); \ - memmove((Array)->values + _HS_UNIQUE_ID(start), \ - (Array)->values + _HS_UNIQUE_ID(end), \ - ((Array)->count - _HS_UNIQUE_ID(end)) * sizeof(*(Array)->values)); \ - _hs_array_pop((Array), _HS_UNIQUE_ID(count)); \ - } while (0) - -#define _hs_array_move(Src, Dest) \ - do { \ - (Dest)->values = (Src)->values; \ - (Dest)->count = (Src)->count; \ - (Dest)->allocated = (Src)->allocated; \ - memset((Src), 0, sizeof(*(Src))); \ - } while (0) - -void _hs_array_release_(struct _hs_array *array); - -int _hs_array_expand_(struct _hs_array *array, size_t value_size, size_t need); -static inline int _hs_array_grow_(struct _hs_array *array, size_t value_size, size_t need) -{ - if (need > array->allocated - array->count) { - return _hs_array_expand_(array, value_size, need); - } else { - return 0; - } -} - -void _hs_array_shrink_(struct _hs_array *array, size_t value_size); - -_HS_END_C - -#endif diff --git a/src/libhs/common.c b/src/libhs/common.c deleted file mode 100644 index 9c9444b7..00000000 --- a/src/libhs/common.c +++ /dev/null @@ -1,182 +0,0 @@ -/* libhs - public domain - Niels Martignène - https://koromix.dev/libhs - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include "common_priv.h" - -static hs_log_handler_func *log_handler = hs_log_default_handler; -static void *log_handler_udata; - -static _HS_THREAD_LOCAL hs_error_code error_masks[32]; -static _HS_THREAD_LOCAL unsigned int error_masks_count; - -static _HS_THREAD_LOCAL char last_error_msg[512]; - -uint32_t hs_version(void) -{ - return HS_VERSION; -} - -const char *hs_version_string(void) -{ - return HS_VERSION_STRING; -} - -static const char *generic_message(int err) -{ - if (err >= 0) - return "Success"; - - switch ((hs_error_code)err) { - case HS_ERROR_MEMORY: { return "Memory error"; } break; - case HS_ERROR_NOT_FOUND: { return "Not found"; } break; - case HS_ERROR_ACCESS: { return "Permission error"; } break; - case HS_ERROR_IO: { return "I/O error"; } break; - case HS_ERROR_PARSE: { return "Parse error"; } break; - case HS_ERROR_SYSTEM: { return "System error"; } break; - } - - return "Unknown error"; -} - -void hs_log_set_handler(hs_log_handler_func *f, void *udata) -{ - assert(f); - assert(f != hs_log_default_handler || !udata); - - log_handler = f; - log_handler_udata = udata; -} - -void hs_log_default_handler(hs_log_level level, int err, const char *msg, void *udata) -{ - _HS_UNUSED(err); - _HS_UNUSED(udata); - - if (level == HS_LOG_DEBUG && !getenv("LIBHS_DEBUG")) - return; - - fputs(msg, stderr); - fputc('\n', stderr); -} - -void hs_error_mask(hs_error_code err) -{ - assert(error_masks_count < _HS_COUNTOF(error_masks)); - - error_masks[error_masks_count++] = err; -} - -void hs_error_unmask(void) -{ - assert(error_masks_count); - - error_masks_count--; -} - -int hs_error_is_masked(int err) -{ - if (err >= 0) - return 0; - - for (unsigned int i = 0; i < error_masks_count; i++) { - if (error_masks[i] == err) - return 1; - } - - return 0; -} - -const char *hs_error_last_message() -{ - return last_error_msg; -} - -void hs_log(hs_log_level level, const char *fmt, ...) -{ - assert(fmt); - - va_list ap; - char buf[sizeof(last_error_msg)]; - - va_start(ap, fmt); - vsnprintf(buf, sizeof(buf), fmt, ap); - va_end(ap); - - (*log_handler)(level, 0, buf, log_handler_udata); -} - -int hs_error(hs_error_code err, const char *fmt, ...) -{ - va_list ap; - char buf[sizeof(last_error_msg)]; - - /* Don't copy directly to last_error_message because we need to support - ty_error(err, "%s", ty_error_last_message()). */ - if (fmt) { - va_start(ap, fmt); - vsnprintf(buf, sizeof(buf), fmt, ap); - va_end(ap); - } else { - strncpy(buf, generic_message(err), sizeof(buf)); - buf[sizeof(buf) - 1] = 0; - } - - strcpy(last_error_msg, buf); - if (!hs_error_is_masked(err)) - (*log_handler)(HS_LOG_ERROR, err, buf, log_handler_udata); - - return err; -} - -int _hs_asprintf(char **strp, const char *fmt, ...) -{ - va_list ap; - int r; - - va_start(ap, fmt); -#ifdef HAVE_ASPRINTF - r = vasprintf(strp, fmt, ap); -#else - r = _hs_vasprintf(strp, fmt, ap); -#endif - va_end(ap); - - return r; -} - -int _hs_vasprintf(char **strp, const char *fmt, va_list ap) -{ -#ifdef HAVE_ASPRINTF - return vasprintf(strp, fmt, ap); -#else - va_list ap_copy; - char *s; - int r; - - va_copy(ap_copy, ap); - r = vsnprintf(NULL, 0, fmt, ap_copy); - if (r < 0) - return -1; - va_end(ap_copy); - - s = (char *)malloc((size_t)r + 1); - if (!s) - return -1; - - va_copy(ap_copy, ap); - r = vsnprintf(s, (size_t)r + 1, fmt, ap_copy); - if (r < 0) - return -1; - va_end(ap_copy); - - *strp = s; - return r; -#endif -} diff --git a/src/libhs/common.h b/src/libhs/common.h deleted file mode 100644 index 78e0da79..00000000 --- a/src/libhs/common.h +++ /dev/null @@ -1,325 +0,0 @@ -/* libhs - public domain - Niels Martignène - https://koromix.dev/libhs - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef HS_COMMON_H -#define HS_COMMON_H - -#include -#include -#include -#include -#include - -#ifdef __cplusplus - #define _HS_BEGIN_C extern "C" { - #define _HS_END_C } -#else - #define _HS_BEGIN_C - #define _HS_END_C -#endif - -_HS_BEGIN_C - -typedef struct hs_device hs_device; -typedef struct hs_monitor hs_monitor; -typedef struct hs_port hs_port; -typedef struct hs_match_spec hs_match_spec; - -/** - * @defgroup misc Miscellaneous - * @brief Error management and platform-specific functions. - */ - -/** - * @ingroup misc - * @brief Compile-time libhs version. - * - * The version is represented as a six-digit decimal value respecting **semantic versioning**: - * MMmmpp (major, minor, patch), e.g. 900 for "0.9.0", 10002 for "1.0.2" or 220023 for "22.0.23". - * - * @sa hs_version() for the run-time version. - * @sa HS_VERSION_STRING for the version string. - */ -#define HS_VERSION 900 -/** - * @ingroup misc - * @brief Compile-time libhs version string. - * - * @sa hs_version_string() for the run-time version. - * @sa HS_VERSION for the version number. - */ -#define HS_VERSION_STRING "0.9.0" - -#if defined(__GNUC__) - #define _HS_POSSIBLY_UNUSED __attribute__((__unused__)) - #define _HS_THREAD_LOCAL __thread - #define _HS_ALIGN_OF(type) __alignof__(type) - - #ifdef __MINGW_PRINTF_FORMAT - #define _HS_PRINTF_FORMAT(fmt, first) __attribute__((__format__(__MINGW_PRINTF_FORMAT, fmt, first))) - #else - #define _HS_PRINTF_FORMAT(fmt, first) __attribute__((__format__(__printf__, fmt, first))) - #endif -#elif _MSC_VER >= 1900 - #define _HS_POSSIBLY_UNUSED - #define _HS_THREAD_LOCAL __declspec(thread) - #define _HS_ALIGN_OF(type) __alignof(type) - - #define _HS_PRINTF_FORMAT(fmt, first) - - // HAVE_SSIZE_T is used this way by other projects - #ifndef HAVE_SSIZE_T - #define HAVE_SSIZE_T - #ifdef _WIN64 -typedef __int64 ssize_t; - #else -typedef long ssize_t; - #endif - #endif - - #define strcasecmp _stricmp - #define strncasecmp _strnicmp -#else - #error "This compiler is not supported" -#endif - -#define _HS_CONCAT_HELPER(a, b) a ## b -#define _HS_CONCAT(a, b) _HS_CONCAT_HELPER(a, b) -#define _HS_UNIQUE_ID(prefix) _HS_CONCAT(prefix, __LINE__) -#define _HS_UNUSED(arg) ((void)(arg)) -#define _HS_COUNTOF(a) (sizeof(a) / sizeof(*(a))) -#define _HS_MIN(a,b) ((a) < (b) ? (a) : (b)) -#define _HS_MAX(a,b) ((a) > (b) ? (a) : (b)) -#define _HS_ALIGN_SIZE(size, align) (((size) + (align) - 1) / (align) * (align)) -#define _HS_ALIGN_SIZE_FOR_TYPE(size, type) _HS_ALIGN_SIZE((size), sizeof(type)) -#define _HS_CONTAINER_OF(head, type, member) \ - ((type *)((char *)(head) - (size_t)(&((type *)0)->member))) - -int _hs_asprintf(char **strp, const char *fmt, ...) _HS_PRINTF_FORMAT(2, 3); -int _hs_vasprintf(char **strp, const char *fmt, va_list ap) _HS_PRINTF_FORMAT(2, 0); - -#if defined(DOXYGEN) -/** - * @ingroup misc - * @brief Type representing an OS descriptor/handle. - * - * This is used in functions taking or returning an OS descriptor/handle, in order to avoid - * having different function prototypes on different platforms. - * - * The underlying type is: - * - int on POSIX platforms, including OS X - * - HANDLE (aka. void *) on Windows - */ -typedef _platform_specific_ hs_handle; -#elif defined(_WIN32) -typedef void *hs_handle; // HANDLE -#else -typedef int hs_handle; -#endif - -/** - * @ingroup misc - * @brief libhs message log levels. - */ -typedef enum hs_log_level { - /** Fatal errors. */ - HS_LOG_ERROR, - /** Non-fatal problem. */ - HS_LOG_WARNING, - /** Internal debug information. */ - HS_LOG_DEBUG -} hs_log_level; - -/** - * @ingroup misc - * @brief libhs error codes. - */ -typedef enum hs_error_code { - /** Memory error. */ - HS_ERROR_MEMORY = -1, - /** Missing resource error. */ - HS_ERROR_NOT_FOUND = -2, - /** Permission denied. */ - HS_ERROR_ACCESS = -3, - /** Input/output error. */ - HS_ERROR_IO = -4, - /** Parse error. */ - HS_ERROR_PARSE = -5, - /** Generic system error. */ - HS_ERROR_SYSTEM = -6 -} hs_error_code; - -typedef void hs_log_handler_func(hs_log_level level, int err, const char *msg, void *udata); - -/** - * @{ - * @name Version Functions - */ - -/** - * @ingroup misc - * @brief Run-time libhs version. - * - * The version is represented as a six-digit decimal value respecting **semantic versioning**: - * MMmmpp (major, minor, patch), e.g. 900 for "0.9.0", 10002 for "1.0.2" or 220023 for "22.0.23". - * - * @return This function returns the run-time version number. - * - * @sa HS_VERSION for the compile-time version. - * @sa hs_version_string() for the version string. - */ -uint32_t hs_version(void); -/** - * @ingroup misc - * @brief Run-time libhs version string. - * - * @return This function returns the run-time version string. - * - * @sa HS_VERSION_STRING for the compile-time version. - * @sa hs_version() for the version number. - */ -const char *hs_version_string(void); - -/** @} */ - -/** - * @{ - * @name Log Functions - */ - -/** - * @ingroup misc - * @brief Default log handler, see hs_log_set_handler() for more information. - */ -void hs_log_default_handler(hs_log_level level, int err, const char *msg, void *udata); -/** - * @ingroup misc - * @brief Change the log handler function. - * - * The default handler prints the message to stderr. It does not print debug messages unless - * the environment variable LIBHS_DEBUG is set. - * - * @param f New log handler, or hs_log_default_handler to restore the default one. - * @param udata Pointer to user-defined data for the handler (use NULL for hs_log_default_handler). - * - * @sa hs_log() - * @sa hs_log_default_handler() is the default log handler. - */ -void hs_log_set_handler(hs_log_handler_func *f, void *udata); -/** - * @ingroup misc - * @brief Call the log callback with a printf-formatted message. - * - * Format a message and call the log callback with it. The default callback prints it to stderr, - * see hs_log_set_handler(). This callback does not print debug messages unless the environment - * variable LIBHS_DEBUG is set. - * - * @param level Log level. - * @param fmt Format string, using printf syntax. - * @param ... - * - * @sa hs_log_set_handler() to use a custom callback function. - */ -void hs_log(hs_log_level level, const char *fmt, ...) _HS_PRINTF_FORMAT(2, 3); - -/** @} */ - -/** - * @{ - * @name Error Functions - */ - -/** - * @ingroup misc - * @brief Mask an error code. - * - * Mask error codes to prevent libhs from calling the log callback (the default one simply prints - * the string to stderr). It does not change the behavior of the function where the error occurs. - * - * For example, if you want to open a device without a missing device message, you can use: - * @code{.c} - * hs_error_mask(HS_ERROR_NOT_FOUND); - * r = hs_port_open(dev, HS_PORT_MODE_RW, &port); - * hs_error_unmask(); - * if (r < 0) - * return r; - * @endcode - * - * The masked codes are kept in a limited stack, you must not forget to unmask codes quickly - * with @ref hs_error_unmask(). - * - * @param err Error code to mask. - * - * @sa hs_error_unmask() - * @sa hs_error_is_masked() - */ -void hs_error_mask(hs_error_code err); -/** - * @ingroup misc - * @brief Unmask the last masked error code. - * - * @sa hs_error_mask() - */ -void hs_error_unmask(void); -/** - * @ingroup misc - * @brief Check whether an error code is masked. - * - * Returns 1 if error code @p err is currently masked, or 0 otherwise. - * - * hs_error() does not call the log handler for masked errors, you only need to use - * this function if you want to bypass hs_error() and call hs_log() directly. - * - * @param err Error code to check. - * - * @sa hs_error_mask() - */ -int hs_error_is_masked(int err); - -/** - * @ingroup misc - * @brief Get the last error message emitted on the current thread. - */ -const char *hs_error_last_message(); - -/** - * @ingroup misc - * @brief Call the log callback with a printf-formatted error message. - * - * Format an error message and call the log callback with it. Pass NULL to @p fmt to use a - * generic error message. The default callback prints it to stderr, see hs_log_set_handler(). - * - * The error code is simply returned as a convenience, so you can use this function like: - * @code{.c} - * // Explicit error message - * int pipe[2], r; - * r = pipe(pipe); - * if (r < 0) - * return hs_error(HS_ERROR_SYSTEM, "pipe() failed: %s", strerror(errno)); - * - * // Generic error message (e.g. "Memory error") - * char *p = malloc(128); - * if (!p) - * return hs_error(HS_ERROR_MEMORY, NULL); - * @endcode - * - * @param err Error code. - * @param fmt Format string, using printf syntax. - * @param ... - * @return This function returns the error code. - * - * @sa hs_error_mask() to mask specific error codes. - * @sa hs_log_set_handler() to use a custom callback function. - */ -int hs_error(hs_error_code err, const char *fmt, ...) _HS_PRINTF_FORMAT(2, 3); - -_HS_END_C - -#endif diff --git a/src/libhs/common_priv.h b/src/libhs/common_priv.h deleted file mode 100644 index cfefa2d0..00000000 --- a/src/libhs/common_priv.h +++ /dev/null @@ -1,23 +0,0 @@ -/* libhs - public domain - Niels Martignène - https://koromix.dev/libhs - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef _HS_COMMON_PRIV_H -#define _HS_COMMON_PRIV_H - -#include "common.h" -#include -#include -#include -#include -#include -#include -#include - -#endif diff --git a/src/libhs/device.c b/src/libhs/device.c deleted file mode 100644 index 4d969924..00000000 --- a/src/libhs/device.c +++ /dev/null @@ -1,129 +0,0 @@ -/* libhs - public domain - Niels Martignène - https://koromix.dev/libhs - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include "common_priv.h" -#ifdef _MSC_VER - #include -#endif -#include "device_priv.h" -#include "monitor.h" -#include "platform.h" - -hs_device *hs_device_ref(hs_device *dev) -{ - assert(dev); - -#ifdef _MSC_VER - InterlockedIncrement((long *)&dev->refcount); -#else - __atomic_fetch_add(&dev->refcount, 1, __ATOMIC_RELAXED); -#endif - return dev; -} - -void hs_device_unref(hs_device *dev) -{ - if (dev) { -#ifdef _MSC_VER - if (InterlockedDecrement((long *)&dev->refcount)) - return; -#else - if (__atomic_fetch_sub(&dev->refcount, 1, __ATOMIC_RELEASE) > 1) - return; - __atomic_thread_fence(__ATOMIC_ACQUIRE); -#endif - - free(dev->key); - free(dev->location); - free(dev->path); - - free(dev->manufacturer_string); - free(dev->product_string); - free(dev->serial_number_string); - } - - free(dev); -} - -void _hs_device_log(const hs_device *dev, const char *verb) -{ - switch (dev->type) { - case HS_DEVICE_TYPE_SERIAL: { - hs_log(HS_LOG_DEBUG, "%s serial device '%s' on iface %u\n" - " - USB VID/PID = %04x:%04x, USB location = %s\n" - " - USB manufacturer = %s, product = %s, S/N = %s", - verb, dev->key, dev->iface_number, dev->vid, dev->pid, dev->location, - dev->manufacturer_string ? dev->manufacturer_string : "(none)", - dev->product_string ? dev->product_string : "(none)", - dev->serial_number_string ? dev->serial_number_string : "(none)"); - } break; - - case HS_DEVICE_TYPE_HID: { - hs_log(HS_LOG_DEBUG, "%s HID device '%s' on iface %u\n" - " - USB VID/PID = %04x:%04x, USB location = %s\n" - " - USB manufacturer = %s, product = %s, S/N = %s\n" - " - HID usage page = 0x%x, HID usage = 0x%x", - verb, dev->key, dev->iface_number, dev->vid, dev->pid, dev->location, - dev->manufacturer_string ? dev->manufacturer_string : "(none)", - dev->product_string ? dev->product_string : "(none)", - dev->serial_number_string ? dev->serial_number_string : "(none)", - dev->u.hid.usage_page, dev->u.hid.usage); - } break; - } -} - -int hs_port_open(hs_device *dev, hs_port_mode mode, hs_port **rport) -{ - assert(dev); - assert(rport); - - if (dev->status != HS_DEVICE_STATUS_ONLINE) - return hs_error(HS_ERROR_NOT_FOUND, "Device '%s' is not connected", dev->path); - -#ifdef __APPLE__ - if (dev->type == HS_DEVICE_TYPE_HID) - return _hs_darwin_open_hid_port(dev, mode, rport); -#endif - - return _hs_open_file_port(dev, mode, rport); -} - -void hs_port_close(hs_port *port) -{ - if (!port) - return; - -#ifdef __APPLE__ - if (port->type == HS_DEVICE_TYPE_HID) { - _hs_darwin_close_hid_port(port); - return; - } -#endif - - _hs_close_file_port(port); -} - -hs_device *hs_port_get_device(const hs_port *port) -{ - assert(port); - return port->dev; -} - -hs_handle hs_port_get_poll_handle(const hs_port *port) -{ - assert(port); - -#ifdef __APPLE__ - if (port->type == HS_DEVICE_TYPE_HID) - return _hs_darwin_get_hid_port_poll_handle(port); -#endif - - return _hs_get_file_port_poll_handle(port); -} diff --git a/src/libhs/device.h b/src/libhs/device.h deleted file mode 100644 index e4f3cd27..00000000 --- a/src/libhs/device.h +++ /dev/null @@ -1,250 +0,0 @@ -/* libhs - public domain - Niels Martignène - https://koromix.dev/libhs - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef HS_DEVICE_H -#define HS_DEVICE_H - -#include "common.h" -#include "htable.h" - -_HS_BEGIN_C - -/** - * @defgroup device Device handling - * @brief Access device information and open device handles. - */ - -/** - * @ingroup device - * @brief Current device status. - * - * The device status can only change when hs_monitor_refresh() is called. - * - * @sa hs_device - */ -typedef enum hs_device_status { - /** Device is connected and ready. */ - HS_DEVICE_STATUS_ONLINE = 1, - /** Device has been disconnected. */ - HS_DEVICE_STATUS_DISCONNECTED -} hs_device_status; - -/** - * @ingroup device - * @brief Device type. - * - * @sa hs_device - * @sa hs_device_type_strings - */ -typedef enum hs_device_type { - /** HID device. */ - HS_DEVICE_TYPE_HID = 1, - /** Serial device. */ - HS_DEVICE_TYPE_SERIAL -} hs_device_type; - -/** - * @ingroup device - * @brief Device type strings - * - * Use hs_device_type_strings[dev->type] to get a string representation: - * - HS_DEVICE_TYPE_HID = "hid" - * - HS_DEVICE_TYPE_SERIAL = "serial" - * - * @sa hs_device_type - */ -static const char *const hs_device_type_strings[] = { - NULL, - "hid", - "serial" -}; - -/** - * @ingroup device - * @brief The hs_device struct - * - * Members omitted from the list below are reserved for internal use. - */ -struct hs_device { - /** @cond */ - unsigned int refcount; - _hs_htable_head hnode; - char *key; - /** @endcond */ - - /** Device type, see @ref hs_device_type. */ - hs_device_type type; - /** Current device status, see @ref hs_device_status. */ - hs_device_status status; - /** - * @brief Device location. - * - * The location is bus-specific: - * - **USB** = "usb-[-]+" (e.g. "usb-2-5-4") - */ - char *location; - /** - * @brief Get the device node path. - * - * This may not always be a real filesystem path, for example on OS X HID devices cannot be - * used through a device node. - */ - char *path; - /** Device vendor identifier. */ - uint16_t vid; - /** Device product identifier. */ - uint16_t pid; - /** Device bcd. */ - uint16_t bcd_device; - /** Device manufacturer string, or NULL if not available. */ - char *manufacturer_string; - /** Device product string, or NULL if not available. */ - char *product_string; - /** Device serial number string, or NULL if not available. */ - char *serial_number_string; - /** Device interface number. */ - uint8_t iface_number; - - /** Match pointer, copied from udata in @ref hs_match_spec. */ - void *match_udata; - - /** Contains type-specific information, see below. */ - union { - /** Only valid when type == HS_DEVICE_TYPE_HID. */ - struct { - /** Primary usage page value read from the HID report descriptor. */ - uint16_t usage_page; - /** Primary usage value read from the HID report descriptor. */ - uint16_t usage; - - /** Maximum input report size calculated from HID report descriptor. */ - size_t max_input_len; - /** Maximum output report size calculated from HID report descriptor. */ - size_t max_output_len; - /** Maximum feature report size calculated from HID report descriptor. */ - size_t max_feature_len; - -#ifdef __linux__ - /** @cond */ - // Needed to work around a bug on old Linux kernels - bool numbered_reports; - /** @endcond */ -#endif - } hid; - } u; -}; - -/** - * @ingroup device - * @brief Device open mode. - * - * @sa hs_port_open() - */ -typedef enum hs_port_mode { - /** Open device for reading. */ - HS_PORT_MODE_READ = 1, - /** Open device for writing. */ - HS_PORT_MODE_WRITE = 2, - /** Open device for read/write operations. */ - HS_PORT_MODE_RW = 3 -} hs_port_mode; - -/** - * @ingroup device - * @typedef hs_port - * @brief Opaque structure representing a device I/O port. - * - */ -struct hs_port; - -/** - * @{ - * @name Resource management - */ - -/** - * @ingroup device - * @brief Increase the device reference count. - * - * This function is thread-safe. - * - * @param dev Device object. - * @return This function returns the device object, for convenience. - */ -hs_device *hs_device_ref(hs_device *dev); -/** - * @ingroup device - * @brief Decrease the device reference count. - * - * When the reference count reaches 0, the device object is freed. This function is thread-safe. - * - * @param dev Device object. - */ -void hs_device_unref(hs_device *dev); - -/** - * @{ - * @name Handle Functions - */ - -/** - * @ingroup device - * @brief Open a device. - * - * The handle object keeps a refcounted reference to the device object, you are free to drop - * your own reference. - * - * @param dev Device object to open. - * @param mode Open device for read / write or both. - * @param[out] rport Device handle, the value is changed only if the function succeeds. - * @return This function returns 0 on success, or a negative @ref hs_error_code value. - */ -int hs_port_open(hs_device *dev, hs_port_mode mode, hs_port **rport); -/** - * @ingroup device - * @brief Close a device, and free all used resources. - * - * @param port Device handle. - */ -void hs_port_close(hs_port *port); - -/** - * @ingroup device - * @brief Get the device object from which this handle was opened. - * - * @param port Device handle. - * @return Device object. - */ -hs_device *hs_port_get_device(const hs_port *port); -/** - * @ingroup device - * @brief Get a pollable device handle. - * - * @ref hs_handle is a typedef to the platform descriptor type: int on POSIX platforms, - * HANDLE on Windows. - * - * You can use this descriptor with select()/poll() on POSIX platforms and the Wait - * (e.g. WaitForSingleObject()) functions on Windows to know when the device input buffer contains - * data. - * - * Note that this descriptor may not be the real device descriptor on some platforms. For - * HID devices on OSX, this is actually a pipe that gets signalled when IOHIDDevice gives - * libhs a report on the background thread. - * - * @param port Device handle. - * @return This function returns a pollable handle. - * - * @sa hs_handle - */ -hs_handle hs_port_get_poll_handle(const hs_port *port); - -_HS_END_C - -#endif diff --git a/src/libhs/device_posix.c b/src/libhs/device_posix.c deleted file mode 100644 index 4165ad25..00000000 --- a/src/libhs/device_posix.c +++ /dev/null @@ -1,162 +0,0 @@ -/* libhs - public domain - Niels Martignène - https://koromix.dev/libhs - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef _WIN32 - -#include "common_priv.h" -#include -#include -#include -#include -#include -#include -#include "device_priv.h" -#include "platform.h" - -int _hs_open_file_port(hs_device *dev, hs_port_mode mode, hs_port **rport) -{ - hs_port *port; -#ifdef __APPLE__ - unsigned int retry = 4; -#endif - int fd_flags; - int r; - - port = (hs_port *)calloc(1, sizeof(*port)); - if (!port) { - r = hs_error(HS_ERROR_MEMORY, NULL); - goto error; - } - port->type = dev->type; - port->u.file.fd = -1; - - port->mode = mode; - port->path = dev->path; - port->dev = hs_device_ref(dev); - - fd_flags = O_CLOEXEC | O_NOCTTY | O_NONBLOCK; - switch (mode) { - case HS_PORT_MODE_READ: { fd_flags |= O_RDONLY; } break; - case HS_PORT_MODE_WRITE: { fd_flags |= O_WRONLY; } break; - case HS_PORT_MODE_RW: { fd_flags |= O_RDWR; } break; - } - -restart: - port->u.file.fd = open(dev->path, fd_flags); - if (port->u.file.fd < 0) { - switch (errno) { - case EINTR: { - goto restart; - } break; - - case EACCES: { - r = hs_error(HS_ERROR_ACCESS, "Permission denied for device '%s'", dev->path); - } break; - case EIO: - case ENXIO: - case ENODEV: { - r = hs_error(HS_ERROR_IO, "I/O error while opening device '%s'", dev->path); - } break; - case ENOENT: - case ENOTDIR: { - r = hs_error(HS_ERROR_NOT_FOUND, "Device '%s' not found", dev->path); - } break; - -#ifdef __APPLE__ - /* On El Capitan (and maybe before), the open fails for some time (around 40 - 50 ms - on my computer) after the device notification. */ - case EBUSY: { - if (retry--) { - usleep(20000); - goto restart; - } - } // fallthrough -#endif - - default: { - r = hs_error(HS_ERROR_SYSTEM, "open('%s') failed: %s", dev->path, strerror(errno)); - } break; - } - goto error; - } - - if (dev->type == HS_DEVICE_TYPE_SERIAL) { - struct termios tio; - int modem_bits; - - r = tcgetattr(port->u.file.fd, &tio); - if (r < 0) { - r = hs_error(HS_ERROR_SYSTEM, "tcgetattr() failed on '%s': %s", dev->path, - strerror(errno)); - goto error; - } - - /* Use raw I/O and sane settings, set DTR by default even on platforms that don't - enforce that. */ - cfmakeraw(&tio); - tio.c_cc[VMIN] = 0; - tio.c_cc[VTIME] = 0; - tio.c_cflag |= CLOCAL | CREAD | HUPCL; - modem_bits = TIOCM_DTR; - - r = tcsetattr(port->u.file.fd, TCSANOW, &tio); - if (r < 0) { - r = hs_error(HS_ERROR_SYSTEM, "tcsetattr() failed on '%s': %s", dev->path, - strerror(errno)); - goto error; - } - r = ioctl(port->u.file.fd, TIOCMBIS, &modem_bits); - if (r < 0) { - r = hs_error(HS_ERROR_SYSTEM, "ioctl(TIOCMBIS, TIOCM_DTR) failed on '%s': %s", - dev->path, strerror(errno)); - goto error; - } - r = tcflush(port->u.file.fd, TCIFLUSH); - if (r < 0) { - r = hs_error(HS_ERROR_SYSTEM, "tcflush(TCIFLUSH) failed on '%s': %s", - dev->path, strerror(errno)); - goto error; - } - } -#ifdef __linux__ - else if (dev->type == HS_DEVICE_TYPE_HID) { - port->u.file.numbered_hid_reports = dev->u.hid.numbered_reports; - } -#endif - - *rport = port; - return 0; - -error: - hs_port_close(port); - return r; -} - -void _hs_close_file_port(hs_port *port) -{ - if (port) { -#ifdef __linux__ - // Only used for hidraw to work around a bug on old kernels - free(port->u.file.read_buf); -#endif - - close(port->u.file.fd); - hs_device_unref(port->dev); - } - - free(port); -} - -hs_handle _hs_get_file_port_poll_handle(const hs_port *port) -{ - return port->u.file.fd; -} - -#endif diff --git a/src/libhs/device_priv.h b/src/libhs/device_priv.h deleted file mode 100644 index 4382c1da..00000000 --- a/src/libhs/device_priv.h +++ /dev/null @@ -1,72 +0,0 @@ -/* libhs - public domain - Niels Martignène - https://koromix.dev/libhs - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef _HS_DEVICE_PRIV_H -#define _HS_DEVICE_PRIV_H - -#include "common_priv.h" -#include "device.h" - -struct hs_port { - hs_device_type type; - const char *path; - hs_port_mode mode; - hs_device *dev; - - union { -#if defined(_WIN32) - struct { - void *h; // HANDLE - - struct _OVERLAPPED *read_ov; - size_t read_buf_size; - uint8_t *read_buf; - uint8_t *read_ptr; - size_t read_len; - int read_status; - - void *write_event; // HANDLE - } handle; -#else - struct { - int fd; - - #ifdef __linux__ - // Used to work around an old kernel 2.6 (pre-2.6.34) hidraw bug - uint8_t *read_buf; - size_t read_buf_size; - bool numbered_hid_reports; - #endif - } file; - - #ifdef __APPLE__ - struct _hs_hid_darwin *hid; - #endif -#endif - } u; -}; - -void _hs_device_log(const hs_device *dev, const char *verb); - -int _hs_open_file_port(hs_device *dev, hs_port_mode mode, hs_port **rport); -void _hs_close_file_port(hs_port *port); -hs_handle _hs_get_file_port_poll_handle(const hs_port *port); - -#if defined(_WIN32) -void _hs_win32_start_async_read(hs_port *port); -void _hs_win32_finalize_async_read(hs_port *port, int timeout); -ssize_t _hs_win32_write_sync(hs_port *port, const uint8_t *buf, size_t size, int timeout); -#elif defined(__APPLE__) -int _hs_darwin_open_hid_port(hs_device *dev, hs_port_mode mode, hs_port **rport); -void _hs_darwin_close_hid_port(hs_port *port); -hs_handle _hs_darwin_get_hid_port_poll_handle(const hs_port *port); -#endif - -#endif diff --git a/src/libhs/device_win32.c b/src/libhs/device_win32.c deleted file mode 100644 index a670de80..00000000 --- a/src/libhs/device_win32.c +++ /dev/null @@ -1,276 +0,0 @@ -/* libhs - public domain - Niels Martignène - https://koromix.dev/libhs - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifdef _WIN32 - -#include "common_priv.h" -#define WIN32_LEAN_AND_MEAN -#include -#include -#include "device_priv.h" -#include "platform.h" - -#define READ_BUFFER_SIZE 16384 - -int _hs_open_file_port(hs_device *dev, hs_port_mode mode, hs_port **rport) -{ - hs_port *port = NULL; - DWORD access; - int r; - - port = (hs_port *)calloc(1, sizeof(*port)); - if (!port) { - r = hs_error(HS_ERROR_MEMORY, NULL); - goto error; - } - port->type = dev->type; - - port->mode = mode; - port->path = dev->path; - port->dev = hs_device_ref(dev); - - access = UINT32_MAX; - switch (mode) { - case HS_PORT_MODE_READ: { access = GENERIC_READ; } break; - case HS_PORT_MODE_WRITE: { access = GENERIC_WRITE; } break; - case HS_PORT_MODE_RW: { access = GENERIC_READ | GENERIC_WRITE; } break; - } - assert(access != UINT32_MAX); - - port->u.handle.h = CreateFileA(dev->path, access, FILE_SHARE_READ | FILE_SHARE_WRITE, - NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); - if (port->u.handle.h == INVALID_HANDLE_VALUE) { - switch (GetLastError()) { - case ERROR_FILE_NOT_FOUND: - case ERROR_PATH_NOT_FOUND: { - r = hs_error(HS_ERROR_NOT_FOUND, "Device '%s' not found", dev->path); - } break; - case ERROR_NOT_ENOUGH_MEMORY: - case ERROR_OUTOFMEMORY: { - r = hs_error(HS_ERROR_MEMORY, NULL); - } break; - case ERROR_ACCESS_DENIED: { - r = hs_error(HS_ERROR_ACCESS, "Permission denied for device '%s'", dev->path); - } break; - - default: { - r = hs_error(HS_ERROR_SYSTEM, "CreateFile('%s') failed: %s", dev->path, - hs_win32_strerror(0)); - } break; - } - goto error; - } - - if (dev->type == HS_DEVICE_TYPE_SERIAL) { - DCB dcb; - COMMTIMEOUTS timeouts; - BOOL success; - - dcb.DCBlength = sizeof(dcb); - success = GetCommState(port->u.handle.h, &dcb); - if (!success) { - r = hs_error(HS_ERROR_SYSTEM, "GetCommState() failed on '%s': %s", port->path, - hs_win32_strerror(0)); - goto error; - } - - /* Sane config, inspired by libserialport, and with DTR pin on by default for - consistency with UNIX platforms. */ - dcb.fBinary = TRUE; - dcb.fAbortOnError = FALSE; - dcb.fErrorChar = FALSE; - dcb.fNull = FALSE; - dcb.fDtrControl = DTR_CONTROL_ENABLE; - dcb.fDsrSensitivity = FALSE; - - /* See SERIAL_TIMEOUTS documentation on MSDN, this basically means "Terminate read request - when there is at least one byte available". You still need a total timeout in that mode - so use 0xFFFFFFFE (using 0xFFFFFFFF for all read timeouts is not allowed). Using - WaitCommEvent() instead would probably be a good idea, I'll look into that later. */ - timeouts.ReadIntervalTimeout = ULONG_MAX; - timeouts.ReadTotalTimeoutMultiplier = ULONG_MAX; - timeouts.ReadTotalTimeoutConstant = ULONG_MAX - 1; - timeouts.WriteTotalTimeoutMultiplier = 0; - timeouts.WriteTotalTimeoutConstant = 5000; - - success = SetCommState(port->u.handle.h, &dcb); - if (!success) { - r = hs_error(HS_ERROR_SYSTEM, "SetCommState() failed on '%s': %s", - port->path, hs_win32_strerror(0)); - goto error; - } - success = SetCommTimeouts(port->u.handle.h, &timeouts); - if (!success) { - r = hs_error(HS_ERROR_SYSTEM, "SetCommTimeouts() failed on '%s': %s", - port->path, hs_win32_strerror(0)); - goto error; - } - success = PurgeComm(port->u.handle.h, PURGE_RXCLEAR); - if (!success) { - r = hs_error(HS_ERROR_SYSTEM, "PurgeComm(PURGE_RXCLEAR) failed on '%s': %s", - port->path, hs_win32_strerror(0)); - goto error; - } - } - - if (mode & HS_PORT_MODE_READ) { - port->u.handle.read_ov = (OVERLAPPED *)calloc(1, sizeof(*port->u.handle.read_ov)); - if (!port->u.handle.read_ov) { - r = hs_error(HS_ERROR_MEMORY, NULL); - goto error; - } - - port->u.handle.read_ov->hEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - if (!port->u.handle.read_ov->hEvent) { - r = hs_error(HS_ERROR_SYSTEM, "CreateEvent() failed: %s", hs_win32_strerror(0)); - goto error; - } - - if (dev->type == HS_DEVICE_TYPE_HID) { - port->u.handle.read_buf_size = dev->u.hid.max_input_len + 1; - } else { - port->u.handle.read_buf_size = READ_BUFFER_SIZE; - } - - if (port->u.handle.read_buf_size) { - port->u.handle.read_buf = (uint8_t *)malloc(port->u.handle.read_buf_size); - if (!port->u.handle.read_buf) { - r = hs_error(HS_ERROR_MEMORY, NULL); - goto error; - } - - _hs_win32_start_async_read(port); - if (port->u.handle.read_status < 0) { - r = port->u.handle.read_status; - goto error; - } - } - } - - if (mode & HS_PORT_MODE_WRITE) { - port->u.handle.write_event = CreateEvent(NULL, TRUE, FALSE, NULL); - if (!port->u.handle.write_event) { - r = hs_error(HS_ERROR_SYSTEM, "CreateEvent() failed: %s", hs_win32_strerror(0)); - goto error; - } - } - - *rport = port; - return 0; - -error: - hs_port_close(port); - return r; -} - -void _hs_close_file_port(hs_port *port) -{ - if (port) { - hs_device_unref(port->dev); - port->dev = NULL; - - if (CancelIoEx(port->u.handle.h, NULL)) - WaitForSingleObject(port->u.handle.read_ov->hEvent, INFINITE); - if (port->u.handle.h) - CloseHandle(port->u.handle.h); - - free(port->u.handle.read_buf); - if (port->u.handle.read_ov && port->u.handle.read_ov->hEvent) - CloseHandle(port->u.handle.read_ov->hEvent); - free(port->u.handle.read_ov); - - if (port->u.handle.write_event) - CloseHandle(port->u.handle.write_event); - } - - free(port); -} - -hs_handle _hs_get_file_port_poll_handle(const hs_port *port) -{ - return port->u.handle.read_ov->hEvent; -} - -// Call only when port->status != 0, otherwise you will leak kernel memory -void _hs_win32_start_async_read(hs_port *port) -{ - DWORD ret; - - ret = (DWORD)ReadFile(port->u.handle.h, port->u.handle.read_buf, - (DWORD)port->u.handle.read_buf_size, NULL, port->u.handle.read_ov); - if (!ret && GetLastError() != ERROR_IO_PENDING) { - CancelIo(port->u.handle.h); - - port->u.handle.read_status = hs_error(HS_ERROR_IO, "I/O error while reading from '%s'", - port->path); - return; - } - - port->u.handle.read_status = 0; -} - -void _hs_win32_finalize_async_read(hs_port *port, int timeout) -{ - DWORD len, ret; - - if (!port->u.handle.read_buf_size) - return; - - if (timeout > 0) - WaitForSingleObject(port->u.handle.read_ov->hEvent, (DWORD)timeout); - ret = (DWORD)GetOverlappedResult(port->u.handle.h, port->u.handle.read_ov, &len, timeout < 0); - if (!ret) { - if (GetLastError() == ERROR_IO_INCOMPLETE) { - port->u.handle.read_status = 0; - return; - } - - port->u.handle.read_status = hs_error(HS_ERROR_IO, "I/O error while reading from '%s'", - port->path); - return; - } - - port->u.handle.read_len = (size_t)len; - port->u.handle.read_ptr = port->u.handle.read_buf; - - port->u.handle.read_status = 1; -} - -ssize_t _hs_win32_write_sync(hs_port *port, const uint8_t *buf, size_t size, int timeout) -{ - OVERLAPPED ov = {0}; - DWORD len; - BOOL success; - - ov.hEvent = port->u.handle.write_event; - success = WriteFile(port->u.handle.h, buf, (DWORD)size, NULL, &ov); - if (!success && GetLastError() != ERROR_IO_PENDING) - return hs_error(HS_ERROR_IO, "I/O error while writing to '%s'", port->path); - - if (timeout > 0) - WaitForSingleObject(ov.hEvent, (DWORD)timeout); - - success = GetOverlappedResult(port->u.handle.h, &ov, &len, timeout < 0); - if (!success) { - if (GetLastError() == ERROR_IO_INCOMPLETE) { - CancelIoEx(port->u.handle.h, &ov); - - success = GetOverlappedResult(port->u.handle.h, &ov, &len, TRUE); - if (!success) - len = 0; - } else { - return hs_error(HS_ERROR_IO, "I/O error while writing to '%s'", port->path); - } - } - - return (ssize_t)len; -} - -#endif diff --git a/src/libhs/doc/Doxyfile b/src/libhs/doc/Doxyfile deleted file mode 100644 index ff5326e1..00000000 --- a/src/libhs/doc/Doxyfile +++ /dev/null @@ -1,2636 +0,0 @@ -# Doxyfile 1.9.2 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the configuration -# file that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# https://www.gnu.org/software/libiconv/ for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = libhs - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = "Cross-platform HID and serial library" - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line -# such as -# /*************** -# as being the beginning of a Javadoc-style comment "banner". If set to NO, the -# Javadoc-style will behave just like regular comments and it will not be -# interpreted by doxygen. -# The default value is: NO. - -JAVADOC_BANNER = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# By default Python docstrings are displayed as preformatted text and doxygen's -# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the -# doxygen's special commands can be used and the contents of the docstring -# documentation blocks is shown as doxygen documentation. -# The default value is: YES. - -PYTHON_DOCSTRING = YES - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:^^" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". Note that you cannot put \n's in the value part of an alias -# to insert newlines (in the resulting output). You can put ^^ in the value part -# of an alias to insert a newline as if a physical newline was in the original -# file. When you need a literal { or } or , in the value part of an alias you -# have to escape them by means of a backslash (\), this can lead to conflicts -# with the commands \{ and \} for these it is advised to use the version @{ and -# @} or use a double escape (\\{ and \\}) - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice -# sources only. Doxygen will then generate output that is more tailored for that -# language. For instance, namespaces will be presented as modules, types will be -# separated into more groups, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_SLICE = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, -# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, -# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: -# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser -# tries to guess whether the code is fixed or free formatted code, this is the -# default for Fortran type files). For instance to make doxygen treat .inc files -# as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. When specifying no_extension you should add -# * to the FILE_PATTERNS. -# -# Note see also the list of default file extension mappings. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See https://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -# to that level are automatically included in the table of contents, even if -# they do not have an id attribute. -# Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 5. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -TOC_INCLUDE_HEADINGS = 5 - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = NO - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = YES - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = YES - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use -# during processing. When set to 0 doxygen will based this on the number of -# cores available in the system. You can set it explicitly to a value larger -# than 0 to get more control over the balance between CPU load and processing -# speed. At this moment only the input processing can be done using multiple -# threads. Since this is still an experimental feature the default is set to 1, -# which effectively disables parallel processing. Please report any issues you -# encounter. Generating dot graphs in parallel is controlled by the -# DOT_NUM_THREADS setting. -# Minimum value: 0, maximum value: 32, default value: 1. - -NUM_PROC_THREADS = 1 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual -# methods of a class will be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIV_VIRTUAL = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = NO - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If this flag is set to YES, the name of an unnamed parameter in a declaration -# will be determined by the corresponding definition. By default unnamed -# parameters remain unnamed in the output. -# The default value is: YES. - -RESOLVE_UNNAMED_PARAMS = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = YES - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = YES - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# declarations. If set to NO, these declarations will be included in the -# documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# With the correct setting of option CASE_SENSE_NAMES doxygen will better be -# able to match the capabilities of the underlying filesystem. In case the -# filesystem is case sensitive (i.e. it supports files in the same directory -# whose names only differ in casing), the option must be set to YES to properly -# deal with such files in case they appear in the input. For filesystems that -# are not case sensitive the option should be be set to NO to properly deal with -# output files written for symbols that only differ in casing, such as for two -# classes, one named CLASS and the other named Class, and to also support -# references to files without having to specify the exact matching casing. On -# Windows (including Cygwin) and MacOS, users should typically set this option -# to NO, whereas on Linux or other Unix flavors it should typically be set to -# YES. -# The default value is: system dependent. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class -# will show which file needs to be included to use the class. -# The default value is: YES. - -SHOW_HEADERFILE = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = NO - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = NO - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = NO - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= NO - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = NO - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = NO - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. See also section "Changing the -# layout of pages" for information. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as documenting some parameters in -# a documented function twice, or documenting parameters that don't exist or -# using markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete -# function parameter documentation. If set to NO, doxygen will accept that some -# parameters have no documentation without warning. -# The default value is: YES. - -WARN_IF_INCOMPLETE_DOC = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong parameter -# documentation, but not about the absence of documentation. If EXTRACT_ALL is -# set to YES then this flag will automatically be disabled. See also -# WARN_IF_INCOMPLETE_DOC -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS -# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but -# at the end of the doxygen process doxygen will return with a non-zero status. -# Possible values are: NO, YES and FAIL_ON_WARNINGS. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = index.md \ - ../monitor.h \ - ../match.h \ - ../device.h \ - ../hid.h \ - ../serial.h \ - ../common.h \ - ../platform.h - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: -# https://www.gnu.org/software/libiconv/) for the list of possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# Note the list of default checked file patterns might differ from the list of -# default file extension mappings. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, -# *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C -# comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, -# *.vhdl, *.ucf, *.qsf and *.ice. - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# entity all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see https://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: -# http://clang.llvm.org/) for more accurate parsing at the cost of reduced -# performance. This can be particularly helpful with template rich C++ code for -# which doxygen's built-in parser lacks the necessary type information. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse_libclang=ON option for CMake. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS -# tag is set to YES then doxygen will add the directory of each input to the -# include path. -# The default value is: YES. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_ADD_INC_PATHS = YES - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -# If clang assisted parsing is enabled you can provide the clang parser with the -# path to the directory containing a file called compile_commands.json. This -# file is the compilation database (see: -# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the -# options used when the source files were built. This is equivalent to -# specifying the -p option to a clang tool, such as clang-check. These options -# will then be passed to the parser. Any options specified with CLANG_OPTIONS -# will be added as well. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse_libclang=ON option for CMake. - -CLANG_DATABASE_PATH = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = NO - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = pages - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a color-wheel, see -# https://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use gray-scales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = YES - -# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML -# documentation will contain a main index with vertical navigation menus that -# are dynamically created via JavaScript. If disabled, the navigation index will -# consists of multiple levels of tabs that are statically embedded in every HTML -# page. Disable this option to support browsers that do not have JavaScript, -# like the Qt help browser. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_MENUS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: -# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To -# create a documentation set, doxygen will generate a Makefile in the HTML -# output directory. Running make will produce the docset in that directory and -# running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy -# genXcode/_index.html for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# on Windows. In the beginning of 2021 Microsoft took the original page, with -# a.o. the download links, offline the HTML help workshop was already many years -# in maintenance mode). You can download the HTML help workshop from the web -# archives at Installation executable (see: -# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo -# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the main .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location (absolute path -# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to -# run qhelpgenerator on the generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = YES - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine tune the look of the index (see "Fine-tuning the output"). As an -# example, the default style sheet generated by doxygen has an example that -# shows how to put an image at the root of the tree instead of the PROJECT_NAME. -# Since the tree basically has the same information as the tab index, you could -# consider setting DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = YES - -# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the -# FULL_SIDEBAR option determines if the side bar is limited to only the treeview -# area (value NO) or if it should extend to the full height of the window (value -# YES). Setting this to YES gives a layout similar to -# https://docs.readthedocs.io with more room for contents, but less room for the -# project logo, title, and description. If either GENERATOR_TREEVIEW or -# DISABLE_INDEX is set to NO, this option has no effect. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FULL_SIDEBAR = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg -# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see -# https://inkscape.org) to generate formulas as SVG images instead of PNGs for -# the HTML output. These images will generally look nicer at scaled resolutions. -# Possible values are: png (the default) and svg (looks nicer but requires the -# pdf2svg or inkscape tool). -# The default value is: png. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FORMULA_FORMAT = png - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANSPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands -# to create new LaTeX commands to be used in formulas as building blocks. See -# the section "Including formulas" for details. - -FORMULA_MACROFILE = - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# https://www.mathjax.org) which uses client side JavaScript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. -# Note that the different versions of MathJax have different requirements with -# regards to the different settings, so it is possible that also other MathJax -# settings have to be changed when switching between the different MathJax -# versions. -# Possible values are: MathJax_2 and MathJax_3. -# The default value is: MathJax_2. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_VERSION = MathJax_2 - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. For more details about the output format see MathJax -# version 2 (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 -# (see: -# http://docs.mathjax.org/en/latest/web/components/output.html). -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility. This is the name for Mathjax version 2, for MathJax version 3 -# this will be translated into chtml), NativeMML (i.e. MathML. Only supported -# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This -# is the name for Mathjax version 3, for MathJax version 2 this will be -# translated into HTML-CSS) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from https://www.mathjax.org before deployment. The default value is: -# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 -# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# for MathJax version 2 (see -# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# For example for MathJax version 3 (see -# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): -# MATHJAX_EXTENSIONS = ams -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , / Open serial connection in given direction\n" - " Supports input, output, both (default)\n" - " --timeout-eof Time before closing after EOF on standard input\n" - " Defaults to %d ms, use -1 to disable\n\n", monitor_timeout_eof); - - fprintf(f, "Serial settings:\n" - " -b, --baudrate Use baudrate for serial port\n" - " Default: %u bauds\n" - " -d, --databits Change number of bits for every character\n" - " Must be one of: 5, 6, 7 or 8\n" - " -p, --stopbits Change number of stop bits for every character\n" - " Must be one of: 1 or 2\n" - " -f, --flow Define flow-control mode\n" - " Must be one of: off, rtscts or xonxoff\n" - " -y, --parity Change parity mode to use for the serial port\n" - " Must be one of: off, even, or odd\n\n" - "These settings are mostly ignored by the USB serial emulation, but you can still\n" - "access them in your embedded code (e.g. the Serial object API on Teensy).\n", - monitor_serial_config.baudrate); -} - -static int redirect_stdout(int *routfd) -{ - int outfd, r; - - outfd = dup(STDOUT_FILENO); - if (outfd < 0) - return ty_error(TY_ERROR_SYSTEM, "dup() failed: %s", strerror(errno)); - - r = dup2(STDERR_FILENO, STDOUT_FILENO); - if (r < 0) - return ty_error(TY_ERROR_SYSTEM, "dup2() failed: %s", strerror(errno)); - - *routfd = outfd; - return 0; -} - -#ifdef _WIN32 - -static unsigned int __stdcall stdin_thread(void *udata) -{ - _HS_UNUSED(udata); - - DWORD len; - BOOL success; - int r; - - while (monitor_input_run) { - WaitForSingleObject(monitor_input_processed, INFINITE); - ResetEvent(monitor_input_processed); - - success = ReadFile(GetStdHandle(STD_INPUT_HANDLE), monitor_input_line, - sizeof(monitor_input_line), &len, NULL); - if (!success) { - r = ty_error(TY_ERROR_IO, "I/O error while reading standard input"); - goto error; - } - if (!len) { - r = 0; - goto error; - } - - monitor_input_ret = (ssize_t)len; - SetEvent(monitor_input_available); - } - - return 0; - -error: - monitor_input_ret = r; - SetEvent(monitor_input_available); - return 0; -} - -static int start_stdin_thread(void) -{ - monitor_input_available = CreateEvent(NULL, TRUE, FALSE, NULL); - if (!monitor_input_available) - return ty_error(TY_ERROR_SYSTEM, "CreateEvent() failed: %s", hs_win32_strerror(0)); - - monitor_input_processed = CreateEvent(NULL, TRUE, TRUE, NULL); - if (!monitor_input_processed) - return ty_error(TY_ERROR_SYSTEM, "CreateEvent() failed: %s", hs_win32_strerror(0)); - - monitor_input_thread = (HANDLE)_beginthreadex(NULL, 0, stdin_thread, NULL, 0, NULL); - if (!monitor_input_thread) - return ty_error(TY_ERROR_SYSTEM, "_beginthreadex() failed: %s", hs_win32_strerror(0)); - - return 0; -} - -static void stop_stdin_thread(void) -{ - if (monitor_input_thread) { - CONSOLE_SCREEN_BUFFER_INFO sb; - INPUT_RECORD ir = {0}; - DWORD written; - - // This is not enough because the background thread may be blocked in ReadFile - monitor_input_run = false; - SetEvent(monitor_input_processed); - - /* We'll soon push VK_RETURN to the console input, which will result in a newline, - so move the cursor up one line to avoid showing it. */ - GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &sb); - if (sb.dwCursorPosition.Y > 0) { - sb.dwCursorPosition.Y--; - SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), sb.dwCursorPosition); - } - - ir.EventType = KEY_EVENT; - ir.Event.KeyEvent.bKeyDown = TRUE; - ir.Event.KeyEvent.dwControlKeyState = 0; - ir.Event.KeyEvent.uChar.AsciiChar = '\r'; - ir.Event.KeyEvent.wRepeatCount = 1; - - // Write a newline to snap the background thread out of the blocking ReadFile call - WriteConsoleInput(GetStdHandle(STD_INPUT_HANDLE), &ir, 1, &written); - - WaitForSingleObject(monitor_input_thread, INFINITE); - CloseHandle(monitor_input_thread); - } - - if (monitor_input_processed) - CloseHandle(monitor_input_processed); - if (monitor_input_available) - CloseHandle(monitor_input_available); -} - -#endif - -static int open_serial_interface(ty_board *board, ty_board_interface **riface) -{ - ty_board_interface *iface; - int r; - - r = ty_board_open_interface(board, TY_BOARD_CAPABILITY_SERIAL, &iface); - if (r < 0) - return r; - if (!r) - return ty_error(TY_ERROR_MODE, "Board '%s' is not available for serial I/O", - ty_board_get_tag(board)); - - if (ty_board_interface_get_device(iface)->type == HS_DEVICE_TYPE_SERIAL) { - r = hs_serial_set_config(ty_board_interface_get_handle(iface), &monitor_serial_config); - if (r < 0) - return (int)r; - } - - *riface = iface; - return 0; -} - -static int fill_descriptor_set(ty_descriptor_set *set, ty_board *board) -{ - ty_board_interface *iface = NULL; - int r; - - ty_descriptor_set_clear(set); - - // Board events / state changes - ty_monitor_get_descriptors(ty_board_get_monitor(board), set, 1); - - r = open_serial_interface(board, &iface); - if (r < 0) - return r; - - if (monitor_directions & DIRECTION_INPUT) - ty_board_interface_get_descriptors(iface, set, 2); -#ifdef _WIN32 - if (monitor_directions & DIRECTION_OUTPUT) { - if (monitor_input_available) { - ty_descriptor_set_add(set, monitor_input_available, 3); - } else { - ty_descriptor_set_add(set, GetStdHandle(STD_INPUT_HANDLE), 3); - } - } -#else - if (monitor_directions & DIRECTION_OUTPUT) - ty_descriptor_set_add(set, STDIN_FILENO, 3); -#endif - - /* ty_board_interface_unref() keeps iface->open_count > 0 so the device file does not - get closed, and we can monitor the descriptor. When the refcount reaches 0, the - device is closed anyway so we don't leak anything. */ - ty_board_interface_unref(iface); - - return 0; -} - -static int loop(ty_board *board, int outfd) -{ - ty_descriptor_set set = {0}; - int timeout; - char buf[BUFFER_SIZE]; - ssize_t r; - -restart: - r = fill_descriptor_set(&set, board); - if (r < 0) - return (int)r; - timeout = -1; - - ty_log(TY_LOG_INFO, "Monitoring '%s'", ty_board_get_tag(board)); - - while (true) { - if (!set.count) - return 0; - - r = ty_poll(&set, timeout); - if (r < 0) - return (int)r; - - switch (r) { - case 0: { - return 0; - } break; - - case 1: { - r = ty_monitor_refresh(ty_board_get_monitor(board)); - if (r < 0) - return (int)r; - - if (!ty_board_has_capability(board, TY_BOARD_CAPABILITY_SERIAL)) { - if (!monitor_reconnect) - return 0; - - ty_log(TY_LOG_INFO, "Waiting for '%s'...", ty_board_get_tag(board)); - r = ty_board_wait_for(board, TY_BOARD_CAPABILITY_SERIAL, -1); - if (r < 0) - return (int)r; - - goto restart; - } - } break; - - case 2: { - r = ty_board_serial_read(board, buf, sizeof(buf), 0); - if (r < 0) { - if (r == TY_ERROR_IO && monitor_reconnect) { - timeout = ERROR_IO_TIMEOUT; - ty_descriptor_set_remove(&set, 2); - ty_descriptor_set_remove(&set, 3); - break; - } - return (int)r; - } - -#ifdef _WIN32 - r = write(outfd, buf, (unsigned int)r); -#else - r = write(outfd, buf, (size_t)r); -#endif - if (r < 0) { - if (errno == EIO) - return ty_error(TY_ERROR_IO, "I/O error on standard output"); - return ty_error(TY_ERROR_IO, "Failed to write to standard output: %s", - strerror(errno)); - } - } break; - - case 3: { -#ifdef _WIN32 - if (monitor_input_available) { - if (monitor_input_ret < 0) - return (int)monitor_input_ret; - - memcpy(buf, monitor_input_line, (size_t)monitor_input_ret); - r = monitor_input_ret; - - ResetEvent(monitor_input_available); - SetEvent(monitor_input_processed); - } else { - r = read(STDIN_FILENO, buf, sizeof(buf)); - } -#else - r = read(STDIN_FILENO, buf, sizeof(buf)); -#endif - if (r < 0) { - if (errno == EIO) - return ty_error(TY_ERROR_IO, "I/O error on standard input"); - return ty_error(TY_ERROR_IO, "Failed to read from standard input: %s", - strerror(errno)); - } - if (!r) { - if (monitor_timeout_eof >= 0) { - /* EOF reached, don't listen to stdin anymore, and start timeout to give some - time for the device to send any data before closing down. */ - timeout = monitor_timeout_eof; - ty_descriptor_set_remove(&set, 1); - ty_descriptor_set_remove(&set, 3); - } - break; - } - -#ifdef _WIN32 - if (monitor_fake_echo) { - r = write(outfd, buf, (unsigned int)r); - if (r < 0) - return (int)r; - } -#endif - - r = ty_board_serial_write(board, buf, (size_t)r); - if (r < 0) { - if (r == TY_ERROR_IO && monitor_reconnect) { - timeout = ERROR_IO_TIMEOUT; - ty_descriptor_set_remove(&set, 2); - ty_descriptor_set_remove(&set, 3); - break; - } - return (int)r; - } - } break; - } - } -} - -int monitor(int argc, char *argv[]) -{ - ty_optline_context optl; - char *opt; - ty_board *board = NULL; - int outfd = -1; - int r; - - ty_optline_init_argv(&optl, argc, argv); - while ((opt = ty_optline_next_option(&optl))) { - if (strcmp(opt, "--help") == 0) { - print_monitor_usage(stdout); - return EXIT_SUCCESS; - } else if (strcmp(opt, "--baudrate") == 0 || strcmp(opt, "-b") == 0) { - char *value = ty_optline_get_value(&optl); - if (!value) { - ty_log(TY_LOG_ERROR, "Option '--baudrate' takes an argument"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - - errno = 0; - monitor_serial_config.baudrate = (uint32_t)strtoul(value, NULL, 10); - if (errno) { - ty_log(TY_LOG_ERROR, "--baudrate requires a number"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - } else if (strcmp(opt, "--databits") == 0 || strcmp(opt, "-d") == 0) { - char *value = ty_optline_get_value(&optl); - if (!value) { - ty_log(TY_LOG_ERROR, "Option '--databits' takes an argument"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - - monitor_serial_config.databits = (unsigned int)strtoul(value, NULL, 10); - if (monitor_serial_config.databits < 5 || monitor_serial_config.databits > 8) { - ty_log(TY_LOG_ERROR, "--databits must be one of: 5, 6, 7 or 8"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - } else if (strcmp(opt, "--stopbits") == 0 || strcmp(opt, "-p") == 0) { - char *value = ty_optline_get_value(&optl); - if (!value) { - ty_log(TY_LOG_ERROR, "Option '--stopbits' takes an argument"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - - monitor_serial_config.stopbits = (unsigned int)strtoul(value, NULL, 10); - if (monitor_serial_config.stopbits < 1 || monitor_serial_config.stopbits > 2) { - ty_log(TY_LOG_ERROR, "--stopbits must be one of: 1 or 2"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - } else if (strcmp(opt, "--direction") == 0 || strcmp(opt, "-D") == 0) { - char *value = ty_optline_get_value(&optl); - if (!value) { - ty_log(TY_LOG_ERROR, "Option '--direction' takes an argument"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - - if (strcmp(value, "input") == 0) { - monitor_directions = DIRECTION_INPUT; - } else if (strcmp(value, "output") == 0) { - monitor_directions = DIRECTION_OUTPUT; - } else if (strcmp(value, "both") == 0) { - monitor_directions = DIRECTION_INPUT | DIRECTION_OUTPUT; - } else { - ty_log(TY_LOG_ERROR, "--direction must be one of: input, output or both"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - } else if (strcmp(opt, "--flow") == 0 || strcmp(opt, "-f") == 0) { - char *value = ty_optline_get_value(&optl); - if (!value) { - ty_log(TY_LOG_ERROR, "Option '--flow' takes an argument"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - - if (strcmp(value, "off") == 0) { - monitor_serial_config.rts = HS_SERIAL_CONFIG_RTS_OFF; - monitor_serial_config.xonxoff = HS_SERIAL_CONFIG_XONXOFF_OFF; - } else if (strcmp(value, "xonxoff") == 0) { - monitor_serial_config.rts = HS_SERIAL_CONFIG_RTS_OFF; - monitor_serial_config.xonxoff = HS_SERIAL_CONFIG_XONXOFF_INOUT; - } else if (strcmp(value, "rtscts") == 0) { - monitor_serial_config.rts = HS_SERIAL_CONFIG_RTS_FLOW; - monitor_serial_config.xonxoff = HS_SERIAL_CONFIG_XONXOFF_OFF; - } else if (strcmp(value, "off") != 0) { - ty_log(TY_LOG_ERROR, "--flow must be one of: off, rtscts or xonxoff"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - } else if (strcmp(opt, "--parity") == 0 || strcmp(opt, "-y") == 0) { - char *value = ty_optline_get_value(&optl); - if (!value) { - ty_log(TY_LOG_ERROR, "Option '--parity' takes an argument"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - - if (strcmp(value, "off") == 0) { - monitor_serial_config.parity = HS_SERIAL_CONFIG_PARITY_OFF; - } else if (strcmp(value, "even") == 0) { - monitor_serial_config.parity = HS_SERIAL_CONFIG_PARITY_EVEN; - } else if (strcmp(value, "odd") == 0) { - monitor_serial_config.parity = HS_SERIAL_CONFIG_PARITY_ODD; - } else if (strcmp(value, "mark") == 0) { - monitor_serial_config.parity = HS_SERIAL_CONFIG_PARITY_MARK; - } else if (strcmp(value, "space") == 0) { - monitor_serial_config.parity = HS_SERIAL_CONFIG_PARITY_SPACE; - } else { - ty_log(TY_LOG_ERROR, "--parity must be one of: off, even, mark or space"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - } else if (strcmp(opt, "--raw") == 0 || strcmp(opt, "-r") == 0) { - monitor_term_flags |= TY_TERMINAL_RAW; - } else if (strcmp(opt, "--reconnect") == 0 || strcmp(opt, "-R") == 0) { - monitor_reconnect = true; - } else if (strcmp(opt, "--silent") == 0 || strcmp(opt, "-s") == 0) { - monitor_term_flags |= TY_TERMINAL_SILENT; - } else if (strcmp(opt, "--timeout-eof") == 0) { - char *value = ty_optline_get_value(&optl); - if (!value) { - ty_log(TY_LOG_ERROR, "Option '--timeout-eof' takes an argument"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - - errno = 0; - monitor_timeout_eof = (int)strtol(value, NULL, 10); - if (errno) { - ty_log(TY_LOG_ERROR, "--timeout requires a number"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - if (monitor_timeout_eof < 0) - monitor_timeout_eof = -1; - } else if (!parse_common_option(&optl, opt)) { - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - } - if (ty_optline_consume_non_option(&optl)) { - ty_log(TY_LOG_ERROR, "No positional argument is allowed"); - print_monitor_usage(stderr); - return EXIT_FAILURE; - } - - if (ty_standard_get_modes(TY_STREAM_INPUT) & TY_DESCRIPTOR_MODE_TERMINAL) { -#ifdef _WIN32 - if (monitor_term_flags & TY_TERMINAL_RAW && !(monitor_term_flags & TY_TERMINAL_SILENT)) { - monitor_term_flags |= TY_TERMINAL_SILENT; - - if (ty_standard_get_modes(TY_STREAM_OUTPUT) & TY_DESCRIPTOR_MODE_TERMINAL) - monitor_fake_echo = true; - } - - /* Unlike POSIX platforms, Windows does not implement the console line editing behavior - * at the tty layer. Instead, ReadFile() takes care of it and blocks until return is hit. - * The problem is that the Wait functions will return the stdin descriptor as soon as - * something is typed but then, ReadFile() will block until return is pressed. - * Overlapped I/O cannot be used because it is not supported on console descriptors. - * - * So the best way I found is to have a background thread handle the blocking ReadFile() - * and pass the lines in a buffer. When a new line is entered, the input_available - * event is set to signal the poll in loop(). I also tried to use an anonymous pipe to - * make it simpler, but the Wait functions do not support them. */ - if (monitor_directions & DIRECTION_OUTPUT && !(monitor_term_flags & TY_TERMINAL_RAW)) { - r = start_stdin_thread(); - if (r < 0) - goto cleanup; - } -#endif - - r = ty_terminal_setup(monitor_term_flags); - if (r < 0) - goto cleanup; - } - - r = redirect_stdout(&outfd); - if (r < 0) - goto cleanup; - - r = get_board(&board); - if (r < 0) - goto cleanup; - - r = loop(board, outfd); - -cleanup: -#ifdef _WIN32 - stop_stdin_thread(); -#endif - ty_board_unref(board); - return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; -} diff --git a/src/tycmd/reset.c b/src/tycmd/reset.c deleted file mode 100644 index 5af17d97..00000000 --- a/src/tycmd/reset.c +++ /dev/null @@ -1,71 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include "../libty/task.h" -#include "main.h" - -static bool reset_bootloader = false; - -static void print_reset_usage(FILE *f) -{ - fprintf(f, "usage: %s reset\n\n", tycmd_executable_name); - - print_common_options(f); - fprintf(f, "\n"); - - fprintf(f, "Reset options:\n" - " -b, --bootloader Switch board to bootloader\n"); -} - -int reset(int argc, char *argv[]) -{ - ty_optline_context optl; - char *opt; - ty_board *board = NULL; - ty_task *task = NULL; - int r; - - ty_optline_init_argv(&optl, argc, argv); - while ((opt = ty_optline_next_option(&optl))) { - if (strcmp(opt, "--help") == 0) { - print_reset_usage(stdout); - return EXIT_SUCCESS; - } else if (strcmp(opt, "-b") == 0 || strcmp(opt, "--bootloader") == 0) { - reset_bootloader = true; - } else if (!parse_common_option(&optl, opt)) { - print_reset_usage(stderr); - return EXIT_FAILURE; - } - } - if (ty_optline_consume_non_option(&optl)) { - ty_log(TY_LOG_ERROR, "No positional argument is allowed"); - print_reset_usage(stderr); - return EXIT_FAILURE; - } - - r = get_board(&board); - if (r < 0) - goto cleanup; - - if (reset_bootloader) { - r = ty_reboot(board, &task); - } else { - r = ty_reset(board, &task); - } - if (r < 0) - goto cleanup; - - r = ty_task_join(task); - -cleanup: - ty_task_unref(task); - ty_board_unref(board); - return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; -} diff --git a/src/tycmd/upload.c b/src/tycmd/upload.c deleted file mode 100644 index eded8ea7..00000000 --- a/src/tycmd/upload.c +++ /dev/null @@ -1,132 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include "../libty/firmware.h" -#include "../libty/task.h" -#include "main.h" - -static int upload_flags = 0; -static const char *upload_firmware_format = NULL; - -static void print_upload_usage(FILE *f) -{ - fprintf(f, "usage: %s upload [options] \n\n", tycmd_executable_name); - - print_common_options(f); - fprintf(f, "\n"); - - fprintf(f, "Upload options:\n" - " -w, --wait Wait for the bootloader instead of rebooting\n\n" - " --nocheck Force upload even if the board is not compatible\n" - " --noreset Do not reset the device once the upload is finished\n" - " --rtc Set RTC if supported: local (default), utc, none\n" - " --delegate Reboot the board and let Teensy Loader do the rest\n\n" - " -f, --format Firmware file format (autodetected by default)\n\n" - "You can pass multiple firmwares, and the first compatible one will be used.\n\n" - "Use '-' to read firmware from stdin, in which case you need to specificy the\n" - "format with -f .\n\n"); - - fprintf(f, "Supported firmware formats: "); - for (unsigned int i = 0; i < ty_firmware_formats_count; i++) - fprintf(f, "%s%s", i ? ", " : "", ty_firmware_formats[i].name); - fprintf(f, ".\n"); -} - -int upload(int argc, char *argv[]) -{ - ty_optline_context optl; - char *opt; - ty_board *board = NULL; - ty_firmware *fws[TY_UPLOAD_MAX_FIRMWARES]; - unsigned int fws_count; - ty_task *task = NULL; - int r; - - ty_optline_init_argv(&optl, argc, argv); - while ((opt = ty_optline_next_option(&optl))) { - if (strcmp(opt, "--help") == 0) { - print_upload_usage(stdout); - return EXIT_SUCCESS; - } else if (strcmp(opt, "--wait") == 0 || strcmp(opt, "-w") == 0) { - upload_flags |= TY_UPLOAD_WAIT; - } else if (strcmp(opt, "--nocheck") == 0) { - upload_flags |= TY_UPLOAD_NOCHECK; - } else if (strcmp(opt, "--noreset") == 0) { - upload_flags |= TY_UPLOAD_NORESET; - } else if (strcmp(opt, "--rtc") == 0) { - const char *value = ty_optline_get_value(&optl); - if (!value) { - ty_log(TY_LOG_ERROR, "Option '--rtc' takes an argument"); - print_upload_usage(stderr); - return EXIT_FAILURE; - } - - if (strcmp(value, "local") == 0) { - upload_flags &= ~TY_UPLOAD_NORTC; - } else if (strcmp(value, "utc") == 0) { - upload_flags &= ~TY_UPLOAD_NORTC; - upload_flags |= TY_UPLOAD_RTC_UTC; - } else if (strcmp(value, "none") == 0) { - upload_flags |= TY_UPLOAD_NORTC; - } else { - ty_log(TY_LOG_ERROR, "--rtc must be one of: local, utc or none"); - print_upload_usage(stderr); - return EXIT_FAILURE; - } - } else if (strcmp(opt, "--delegate") == 0) { - upload_flags |= TY_UPLOAD_DELEGATE; - } else if (strcmp(opt, "--format") == 0 || strcmp(opt, "-f") == 0) { - upload_firmware_format = ty_optline_get_value(&optl); - if (!upload_firmware_format) { - ty_log(TY_LOG_ERROR, "Option '--format' takes an argument"); - print_upload_usage(stderr); - return EXIT_FAILURE; - } - } else if (!parse_common_option(&optl, opt)) { - print_upload_usage(stderr); - return EXIT_FAILURE; - } - } - - fws_count = 0; - while ((opt = ty_optline_consume_non_option(&optl))) { - if (fws_count >= _HS_COUNTOF(fws)) { - ty_log(TY_LOG_WARNING, "Too many firmwares, considering only %zu files", _HS_COUNTOF(fws)); - break; - } - - r = ty_firmware_load_file(opt, !strcmp(opt, "-") ? stdin : NULL, - upload_firmware_format, &fws[fws_count]); - if (!r) - fws_count++; - } - if (!fws_count) { - ty_log(TY_LOG_ERROR, "Missing valid firmware filename"); - print_upload_usage(stderr); - return EXIT_FAILURE; - } - - r = get_board(&board); - if (r < 0) - goto cleanup; - - r = ty_upload(board, fws, fws_count, upload_flags, &task); - for (unsigned int i = 0; i < fws_count; i++) - ty_firmware_unref(fws[i]); - if (r < 0) - goto cleanup; - - r = ty_task_join(task); - -cleanup: - ty_task_unref(task); - ty_board_unref(board); - return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; -} diff --git a/src/tycommander/CMakeLists.txt b/src/tycommander/CMakeLists.txt deleted file mode 100644 index f2072ae9..00000000 --- a/src/tycommander/CMakeLists.txt +++ /dev/null @@ -1,110 +0,0 @@ -# TyTools - public domain -# Niels Martignène -# https://koromix.dev/tytools - -# This software is in the public domain. Where that dedication is not -# recognized, you are granted a perpetual, irrevocable license to copy, -# distribute, and modify this file as you see fit. - -# See the LICENSE file for more details. - -find_package(EasyQt5) - -set(TYCOMMANDER_SOURCES about_dialog.cc - arduino_dialog.cc - arduino_install.cc - board.cc - board.hpp - board_widget.cc - board_widget.hpp - client_handler.cc - client_handler.hpp - database.cc - database.hpp - descriptor_notifier.cc - descriptor_notifier.hpp - enhanced_widgets.cc - enhanced_widgets.hpp - firmware.cc - firmware.hpp - log_dialog.cc - log_dialog.hpp - main.cc - main_window.cc - main_window.hpp - monitor.cc - monitor.hpp - preferences_dialog.cc - preferences_dialog.hpp - selector_dialog.cc - selector_dialog.hpp - session_channel.cc - session_channel.hpp - task.cc - task.hpp - tycommander.cc - tycommander.hpp) -set(TYCOMMANDER_FORMS about_dialog.ui - arduino_dialog.ui - board_widget.ui - log_dialog.ui - main_window.ui - preferences_dialog.ui - selector_dialog.ui) - -set(TYCOMMANDER_ICON_FILE_PREFIX "${CMAKE_SOURCE_DIR}/resources/images/tycommander") -set(TYCOMMANDER_RESOURCES "${CMAKE_SOURCE_DIR}/resources/resources.qrc") -if(CONFIG_VARIANT) - if(EXISTS "${CONFIG_VARIANT_PATH}/tycommander.png") - set(TYCOMMANDER_ICON_FILE_PREFIX "{CONFIG_VARIANT_PATH}/tycommander") - endif() - if(EXISTS "${CONFIG_VARIANT_PATH}/resources.qrc") - set(TYUPLOADER_RESOURCES "${CONFIG_VARIANT_PATH}/resources.qrc") - endif() -endif() - -if(WIN32) - configure_file(tycommander_win32.rc.in tycommander_win32.rc) - list(APPEND TYCOMMANDER_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/tycommander_win32.rc") -elseif(APPLE) - list(APPEND TYCOMMANDER_SOURCES "${TYCOMMANDER_ICON_FILE_PREFIX}.icns") -endif() - -qt5_wrap_ui(TYCOMMANDER_FORMS_HEADERS ${TYCOMMANDER_FORMS}) -qt5_add_resources(TYCOMMANDER_RESOURCES_RCC ${TYCOMMANDER_RESOURCES}) - -add_executable(tycommander WIN32 MACOSX_BUNDLE - ${TYCOMMANDER_SOURCES} ${TYCOMMANDER_FORMS_HEADERS} ${TYCOMMANDER_RESOURCES_RCC}) -set_target_properties(tycommander PROPERTIES AUTOMOC ON - OUTPUT_NAME ${CONFIG_TYCOMMANDER_EXECUTABLE} - MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/tycommander_macos.plist.in") -target_link_libraries(tycommander PRIVATE libhs libty EasyQt5) -# We need these include directories for moc-generated files -target_include_directories(tycommander PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR}) -if(APPLE) - set_source_files_properties("${TYCOMMANDER_ICON_FILE_PREFIX}.icns" PROPERTIES MACOSX_PACKAGE_LOCATION Resources) - get_filename_component(_icon_file_name "${TYCOMMANDER_ICON_FILE_PREFIX}.icns" NAME) - set_target_properties(tycommander PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME ${CONFIG_TYCOMMANDER_NAME} - MACOSX_BUNDLE_ICON_FILE ${_icon_file_name}) -endif() -enable_unity_build(tycommander) - -if(WIN32) - add_executable(tycommanderc tycommanderc.c) - set_target_properties(tycommanderc PROPERTIES OUTPUT_NAME "${CONFIG_TYCOMMANDER_EXECUTABLE}C") - enable_unity_build(tycommanderc) -endif() - -if(WIN32) - install(TARGETS tycommander tycommanderc RUNTIME DESTINATION .) -elseif(APPLE) - install(TARGETS tycommander BUNDLE DESTINATION .) -else() - install(TARGETS tycommander RUNTIME DESTINATION bin) - configure_file(tycommander_linux.desktop.in tycommander_linux.desktop) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tycommander_linux.desktop" DESTINATION share/applications - RENAME tycommander.desktop) -endif() - -set(TYCOMMANDER_ICON_FILE_PREFIX ${TYCOMMANDER_ICON_FILE_PREFIX} PARENT_SCOPE) diff --git a/src/tycommander/about_dialog.cc b/src/tycommander/about_dialog.cc deleted file mode 100644 index 3b6a38d3..00000000 --- a/src/tycommander/about_dialog.cc +++ /dev/null @@ -1,51 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include - -#include "about_dialog.hpp" - -AboutDialog::AboutDialog(QWidget *parent, Qt::WindowFlags f) - : QDialog(parent, f) -{ - setupUi(this); - setWindowTitle(tr("About %1").arg(QApplication::applicationName())); - - connect(closeButton, &QPushButton::clicked, this, &AboutDialog::close); - if (TY_CONFIG_URL_BUGS[0]) { - connect(reportBugButton, &QPushButton::clicked, &AboutDialog::openBugReports); - } else { - reportBugButton->hide(); - } - connect(licenseButton, &QPushButton::clicked, &AboutDialog::openLicense); - - versionLabel->setText(QString("%1\n%2") - .arg(QCoreApplication::applicationName(), - QCoreApplication::applicationVersion())); - if (TY_CONFIG_URL_WEBSITE[0]) - websiteLabel->setText(QString("%1").arg(TY_CONFIG_URL_WEBSITE)); -} - -void AboutDialog::openWebsite() -{ - QDesktopServices::openUrl(QUrl(TY_CONFIG_URL_WEBSITE)); -} - -void AboutDialog::openBugReports() -{ - QDesktopServices::openUrl(QUrl(TY_CONFIG_URL_BUGS)); -} - -void AboutDialog::openLicense() -{ - QDesktopServices::openUrl(QUrl("http://unlicense.org/")); -} diff --git a/src/tycommander/about_dialog.hpp b/src/tycommander/about_dialog.hpp deleted file mode 100644 index 7471a885..00000000 --- a/src/tycommander/about_dialog.hpp +++ /dev/null @@ -1,29 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef ABOUT_HH -#define ABOUT_HH - -#include "../libty/common.h" -#include "ui_about_dialog.h" - -class AboutDialog: public QDialog, private Ui::AboutDialog { - Q_OBJECT - -public: - AboutDialog(QWidget *parent = nullptr, Qt::WindowFlags f = {}); - -public slots: - static void openWebsite(); - static void openBugReports(); - static void openLicense(); -}; - -#endif diff --git a/src/tycommander/about_dialog.ui b/src/tycommander/about_dialog.ui deleted file mode 100644 index 40117a67..00000000 --- a/src/tycommander/about_dialog.ui +++ /dev/null @@ -1,152 +0,0 @@ - - - AboutDialog - - - - 0 - 0 - 480 - 182 - - - - About TyCommander - - - - :/tycommander:/tycommander - - - - 10 - - - QLayout::SetFixedSize - - - - - 10 - - - - - - 0 - 0 - - - - - 128 - 128 - - - - - 128 - 128 - - - - - - - :/tycommander - - - true - - - Qt::AlignHCenter|Qt::AlignTop - - - - - - - - - - 200 - 0 - - - - - 14 - 75 - true - - - - TyCommander - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - - - - - - - - - - - &Report a bug - - - - - - - &License - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - &Close - - - - - - - - - - - - diff --git a/src/tycommander/arduino_dialog.cc b/src/tycommander/arduino_dialog.cc deleted file mode 100644 index e6fb40bb..00000000 --- a/src/tycommander/arduino_dialog.cc +++ /dev/null @@ -1,214 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifdef _WIN32 - #include -#endif -#include -#include -#include -#include - -#include "arduino_dialog.hpp" -#include "tycommander.hpp" - -using namespace std; - -ArduinoDialog::ArduinoDialog(QWidget *parent, Qt::WindowFlags f) - : QDialog(parent, f) -{ - setupUi(this); - - connect(closeButton, &QPushButton::clicked, this, &ArduinoDialog::close); - connect(arduinoPath, &QLineEdit::editingFinished, this, - [=]() { install_.setPath(arduinoPath->text()); }); - connect(browseButton, &QPushButton::clicked, this, &ArduinoDialog::browseForArduino); - connect(integrateButton, &QPushButton::clicked, this, &ArduinoDialog::integrate); - connect(restoreButton, &QPushButton::clicked, this, &ArduinoDialog::restore); - - connect(&install_, &ArduinoInstallation::changed, this, &ArduinoDialog::refresh); - connect(&install_, &ArduinoInstallation::log, this, &ArduinoDialog::addLog); - connect(&install_, &ArduinoInstallation::error, this, &ArduinoDialog::addError); - - refresh(); -} - -void ArduinoDialog::keyPressEvent(QKeyEvent *ev) -{ - // Easy way to disable the "default button" feature of QDialog, without changing each button - if(ev->key() == Qt::Key_Enter || ev->key() == Qt::Key_Return) - return; - - QDialog::keyPressEvent(ev); -} - -void ArduinoDialog::refresh() -{ - statusLabel->setVisible(!install_.path().isEmpty()); - integrateButton->setEnabled(false); - restoreButton->setEnabled(false); - - if (install_.path().isEmpty()) - return; - - const char *color = NULL; - QString text; - - if (install_.isIntegrated()) { - color = "green"; - text = tr("Arduino %1 / Teensyduino %2\nAlready using TyCommander") - .arg(install_.arduinoVersion(), install_.teensyduinoVersion()); - - if (!background_process_) - restoreButton->setEnabled(true); - } else if (install_.isValid()) { - color = "orange"; - text = tr("Arduino %1 / Teensyduino %2\nNot using TyCommander") - .arg(install_.arduinoVersion(), install_.teensyduinoVersion()); - - if (!background_process_) - integrateButton->setEnabled(true); - } else { - color = "red"; - text = tr("Not a valid Arduino/Teensyduino directory"); - } - - QPalette pal; - if (color) - pal.setColor(QPalette::WindowText, color); - statusLabel->setPalette(pal); - statusLabel->setText(text); -} - -void ArduinoDialog::addLog(const QString &msg) -{ - appendMessage(msg); -} - -void ArduinoDialog::addError(const QString &msg) -{ - QTextCharFormat fmt; - fmt.setForeground(QColor("red")); - - appendMessage(msg, fmt); -} - -void ArduinoDialog::browseForArduino() -{ -#ifdef __APPLE__ - auto path = QFileDialog::getOpenFileName(this, tr("Select Arduino application"), "", - tr("Applications (*.app)")); -#else - auto path = QFileDialog::getExistingDirectory(this, tr("Select Arduino directory")); -#endif - if (path.isEmpty()) - return; - path = QDir::toNativeSeparators(path); - - arduinoPath->setText(path); - install_.setPath(path); -} - -void ArduinoDialog::integrate() -{ - if (background_process_) - return; - - logText->clear(); - - if (!install_.integrate()) - executeAsRoot("integrate"); -} - -void ArduinoDialog::restore() -{ - if (background_process_) - return; - - logText->clear(); - - if (!install_.restore()) - executeAsRoot("restore"); -} - -void ArduinoDialog::appendMessage(const QString &msg, const QTextCharFormat &fmt) -{ - auto document = logText->document(); - QTextCursor cursor(document); - - cursor.movePosition(QTextCursor::End); - if (!document->isEmpty()) - cursor.insertBlock(); - cursor.insertText(msg, fmt); -} - -void ArduinoDialog::executeAsRoot(const QString &command) -{ -#ifdef _WIN32 - auto vista = QOperatingSystemVersion(QOperatingSystemVersion::Windows, 6, 0); - - if (QOperatingSystemVersion::current() >= vista) { - installWithUAC(command); - return; - } -#endif - - QTextCharFormat fmt; - fmt.setFontItalic(true); - - appendMessage(""); - appendMessage(tr("Try to restart this command as root with :")); - appendMessage(tr("\"%1\" %2 \"%3\"").arg(QDir::toNativeSeparators(TyCommander::clientFilePath()), - command, install_.absolutePath()), fmt); -} - -#ifdef _WIN32 - -void ArduinoDialog::installWithUAC(const QString &command) -{ - addLog("Trying with elevated rights"); - QCoreApplication::processEvents(QEventLoop::AllEvents | QEventLoop::WaitForMoreEvents, 1000); - - SHELLEXECUTEINFO info = {}; - info.cbSize = sizeof(info); - info.fMask = SEE_MASK_NOCLOSEPROCESS; - info.lpVerb = "runas"; - info.lpFile = "cmd"; - info.nShow = SW_SHOW; - - auto parameters = QString("/C \"\"%1\" %2 \"%3\" & pause\"") - .arg(QDir::toNativeSeparators(TyCommander::clientFilePath()), command, - QDir::toNativeSeparators(install_.absolutePath())).toLocal8Bit(); - info.lpParameters = parameters.constData(); - - BOOL success = ShellExecuteEx(&info); - if (!success) { - addLog("Cannot execute with Administrator rights"); - return; - } - if (!info.hProcess) - return; - - background_process_ = true; - - auto notifier = new QWinEventNotifier(info.hProcess, this); - connect(notifier, &QWinEventNotifier::activated, this, [=](HANDLE h) { - Q_UNUSED(h); - - background_process_ = false; - install_.update(); - - notifier->setEnabled(false); - notifier->deleteLater(); - }); - notifier->setEnabled(true); -} - -#endif diff --git a/src/tycommander/arduino_dialog.hpp b/src/tycommander/arduino_dialog.hpp deleted file mode 100644 index 230b20cf..00000000 --- a/src/tycommander/arduino_dialog.hpp +++ /dev/null @@ -1,47 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef ARDUINO_DIALOG_HH -#define ARDUINO_DIALOG_HH - -#include "arduino_install.hpp" -#include "ui_arduino_dialog.h" - -class ArduinoDialog: public QDialog, private Ui::ArduinoDialog { - Q_OBJECT - - ArduinoInstallation install_; - bool background_process_ = false; - -public: - ArduinoDialog(QWidget *parent = nullptr, Qt::WindowFlags f = {}); - - void keyPressEvent(QKeyEvent *ev) override; - -private slots: - void refresh(); - void addLog(const QString &msg); - void addError(const QString &msg); - - void browseForArduino(); - - void integrate(); - void restore(); - -private: - void appendMessage(const QString &msg, const QTextCharFormat &fmt = QTextCharFormat()); - - void executeAsRoot(const QString &command); -#ifdef _WIN32 - void installWithUAC(const QString &command); -#endif -}; - -#endif diff --git a/src/tycommander/arduino_dialog.ui b/src/tycommander/arduino_dialog.ui deleted file mode 100644 index 0d0bc23b..00000000 --- a/src/tycommander/arduino_dialog.ui +++ /dev/null @@ -1,109 +0,0 @@ - - - ArduinoDialog - - - - 0 - 0 - 494 - 274 - - - - Integrate to Arduino - - - - - - - - Arduino: - - - - - - - Point to your Arduino installation... - - - - - - - &Browse... - - - - - - - - - status - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - true - - - - - - - - - &Integrate - - - - - - - &Restore - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - &Close - - - - - - - - - arduinoPath - browseButton - logText - integrateButton - restoreButton - closeButton - - - - diff --git a/src/tycommander/arduino_install.cc b/src/tycommander/arduino_install.cc deleted file mode 100644 index 5b627fbd..00000000 --- a/src/tycommander/arduino_install.cc +++ /dev/null @@ -1,374 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifdef _WIN32 - #include -#endif -#include -#include -#include -#include - -#include "arduino_install.hpp" -#include "tycommander.hpp" - -using namespace std; - -ArduinoInstallation::ArduinoInstallation(const QString &path) -{ - setPath(path); -} - -void ArduinoInstallation::setPath(const QString &path) -{ - dir_.setPath(path); - update(); -} - -void ArduinoInstallation::update() -{ - updateState(); - emit changed(); -} - -bool ArduinoInstallation::integrate() -{ - if (arduino_legacy_) - return integrateLegacy(); - - emit log(tr("Integrate TyCommander to '%1'").arg(QDir::toNativeSeparators(dir_.path()))); - - auto filename = arduinoPath("hardware/teensy/avr/platform.txt"); - emit log(tr("Rewrite '%1' (to temporary file)").arg(nicePath(filename))); - - QFile src(filename); - QSaveFile dest(filename); - - if (!src.open(QIODevice::ReadOnly | QIODevice::Text)) - return reportFileError(src); - if (!dest.open(QIODevice::WriteOnly | QIODevice::Text)) - return reportFileError(dest); - - QTextStream in(&src), out(&dest); - bool integrated = false; - for (unsigned int i = 1; !in.atEnd(); i++) { - auto line = in.readLine(); - - if (line.contains("TyQt", Qt::CaseInsensitive)) { - emit error(tr("This installation is already patched")); - return false; - } - - if (line.startsWith("tools.teensyloader") || line.contains("teensy_post_compile")) { - emit log(tr(" + Comment out line %1 '%2...'").arg(i).arg(line.left(22))); - out << "#"; - } - out << line << "\n"; - - if (line.startsWith("tools.teensyloader.upload.pattern") && !integrated) { - emit log(tr(" + Integrate TyCommander instructions after line %1").arg(i)); - out << QString("\n## TyQt\n" - "tools.teensyloader.cmd.path=%1\n").arg(QDir::toNativeSeparators(TyCommander::clientFilePath())); - out << "tools.teensyloader.upload.params.quiet=--quiet\n" - "tools.teensyloader.upload.params.verbose=\n" - "recipe.objcopy.tyqt.pattern=\"{compiler.path}{build.toolchain}{build.command.objcopy}\" {compiler.elf2hex.flags} \"{build.path}/{build.project_name}.elf\" \"{build.path}/{build.project_name}.{build.board}.hex\"\n" - "tools.teensyloader.upload.pattern=\"{cmd.path}\" upload --autostart --wait --multi" - " {upload.verbose} \"{build.path}/{build.project_name}.{build.board}.hex\"\n"; - integrated = true; - } - } - if (!integrated) { - emit error(tr("Failed to add TyCommander instructions")); - return false; - } - - if (src.error()) - return reportFileError(src); - src.close(); - - if (dest.error()) - return reportFileError(dest); - if (!dest.flush()) - return reportFileError(dest); - - emit log(tr("Backup '%1' to '%2'").arg(nicePath(filename), nicePath(filename + ".notyqt"))); - if (!safeCopy(filename, filename + ".notyqt")) - return false; - - emit log(tr("Commit changes to '%1'").arg(nicePath(filename))); - if (!dest.commit()) - return reportFileError(dest); - - update(); - return true; -} - -bool ArduinoInstallation::restore() -{ - emit log(tr("Remove TyCommander integration from '%1'").arg(QDir::toNativeSeparators(dir_.path()))); - - QString filename; - if (arduino_legacy_) { - filename = arduinoPath("hardware/teensy/boards.txt"); - } else { - filename = arduinoPath("hardware/teensy/avr/platform.txt"); - } - if (!findMarker(filename, "TyQt")) { - emit error(tr("This installation is not using TyCommander")); - return false; - } - - emit log(tr("Copy '%1' to '%2'").arg(nicePath(filename + ".notyqt"), nicePath(filename))); - if (!safeCopy(filename + ".notyqt", filename)) - return false; - - if (arduino_legacy_) { -#ifdef _WIN32 - emit log(tr("Remove avrdude script '%1'").arg("hardware/tools/tyqt_avrdude.bat")); - QFile::remove(arduinoPath("hardware/tools/tyqt_avrdude.bat")); -#else - emit log(tr("Remove avrdude script '%1'").arg("hardware/tools/tyqt_avrdude.sh")); - QFile::remove(arduinoPath("hardware/tools/tyqt_avrdude.sh")); -#endif - } - - update(); - return true; -} - -bool ArduinoInstallation::integrateLegacy() -{ - emit log(tr("Integrate TyCommander to '%1' (legacy)").arg(QDir::toNativeSeparators(dir_.path()))); - - auto filename = arduinoPath("hardware/teensy/boards.txt"); - emit log(tr("Rewrite '%1' (to temporary file)").arg(nicePath(filename))); - - QFile src(filename); - QSaveFile dest(filename); - - if (!src.open(QIODevice::ReadOnly | QIODevice::Text)) - return reportFileError(src); - if (!dest.open(QIODevice::WriteOnly | QIODevice::Text)) - return reportFileError(dest); - - QTextStream in(&src), out(&dest); - QStringList models; - for (unsigned int i = 1; !in.atEnd(); i++) { - auto line = in.readLine(); - - if (line.contains("TyQt", Qt::CaseInsensitive)) { - emit error(tr("This installation is already patched")); - return false; - } - - if (line.startsWith("teensy") && line.contains("upload.avrdude_wrapper")) { - models.append(line.section('.', 0, 0)); - - emit log(tr(" + Comment out line %1 '%2...'").arg(i).arg(line.left(22))); - out << "#"; - } else if (line.contains("teensy_post_compile")) { - emit log(tr(" + Comment out line %1 '%2...'").arg(i).arg(line.left(22))); - out << "#"; - } - out << line << "\n"; - } - if (models.isEmpty()) { - emit error(tr("Failed to add TyCommander instructions")); - return false; - } - - out << "\n## TyQt (legacy Arduino)\n"; - for (auto &model: models) { - emit log(tr(" + Add TyCommander instructions for '%1'").arg(model)); -#ifdef _WIN32 - out << QString("%1.upload.avrdude_wrapper=tyqt_avrdude.bat\n").arg(model); -#else - out << QString("%1.upload.avrdude_wrapper=tyqt_avrdude.sh\n").arg(model); -#endif - } - - if (src.error()) - return reportFileError(src); - src.close(); - - if (dest.error()) - return reportFileError(dest); - if (!dest.flush()) - return reportFileError(dest); - - if (!writeAvrdudeScript()) - return false; - - emit log(tr("Backup '%1' to '%2'").arg(nicePath(filename), nicePath(filename + ".notyqt"))); - if (!safeCopy(filename, filename + ".notyqt")) - return false; - - emit log(tr("Commit changes to '%1'").arg(nicePath(filename))); - if (!dest.commit()) - return reportFileError(dest); - - update(); - return true; -} - -bool ArduinoInstallation::writeAvrdudeScript() -{ -#ifdef _WIN32 - QFile script(arduinoPath("hardware/tools/tyqt_avrdude.bat")); - emit log(tr("Write avrdude script to '%1'").arg(nicePath(script.fileName()))); - - if (!script.open(QIODevice::WriteOnly | QIODevice::Text)) - return reportFileError(script); - - QTextStream script_out(&script); - script_out << "@echo off\n"; - script_out << QString("\"%1\" avrdude %*\n") - .arg(QDir::toNativeSeparators(QCoreApplication::applicationFilePath())); - - if (script.error()) - return reportFileError(script); - if (!script.flush()) - return reportFileError(script); -#else - QFile script(arduinoPath("hardware/tools/tyqt_avrdude.sh")); - emit log(tr("Write avrdude script to '%1'").arg(nicePath(script.fileName()))); - - if (!script.open(QIODevice::WriteOnly | QIODevice::Text)) - return reportFileError(script); - - QTextStream script_out(&script); - script_out << "#!/bin/sh\n"; - script_out << QString("\"%1\" avrdude \"$@\"\n").arg(QCoreApplication::applicationFilePath()); - - if (script.error()) - return reportFileError(script); - if (!script.flush()) - return reportFileError(script); - script.close(); - - if (!script.setPermissions(QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner | - QFile::ReadGroup | QFile::ExeGroup | QFile::ReadOther | QFile::ExeOther)) - return reportFileError(script); -#endif - - return true; -} - -void ArduinoInstallation::updateState() -{ - valid_ = false; - integrated_ = false; - - arduino_version_ = ""; - arduino_legacy_ = false; - teensyduino_version_ = ""; - - if (dir_.path().isEmpty() || !dir_.exists()) - return; - - arduino_version_ = readVersion(arduinoPath("lib/version.txt")); -#ifdef __APPLE__ - if (arduino_version_.isEmpty()) - arduino_version_ = readVersion(dir_.filePath("Contents/Resources/Java/lib/version.txt")); -#endif - if (arduino_version_.isEmpty()) - return; - arduino_legacy_ = arduino_version_.startsWith("1.0."); - teensyduino_version_ = readVersion(arduinoPath("lib/teensyduino.txt")); - if (teensyduino_version_.isEmpty()) - return; - - valid_ = true; - if (arduino_legacy_) { - integrated_ = findMarker(arduinoPath("hardware/teensy/boards.txt"), "TyQt"); - } else { - integrated_ = findMarker(arduinoPath("hardware/teensy/avr/platform.txt"), "TyQt"); - } -} - -bool ArduinoInstallation::safeCopy(const QString &filename, const QString &new_filename) -{ - QFile src(filename); - QSaveFile dest(new_filename); - - if (!src.open(QIODevice::ReadOnly)) - return reportFileError(src); - if (!dest.open(QIODevice::WriteOnly)) - return reportFileError(dest); - - /* Qt provides no way to do an atomic rename outside of QSaveFile, and no way to - to copy a QFile to a QSaveFile. */ - char buf[8192]; - int64_t len; - while ((len = src.read(buf, sizeof(buf))) > 0) { - if (dest.write(buf, len) < len) - return reportFileError(dest); - } - - if (src.error()) - return reportFileError(src); - - if (!dest.commit()) - return reportFileError(dest); - - return true; -} - -QString ArduinoInstallation::readVersion(const QString &filename) -{ - QFile file(filename); - - if (!file.exists()) - return ""; - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) - return ""; - - return QTextStream(&file).readLine(32); -} - -bool ArduinoInstallation::findMarker(const QString &filename, const QString &marker) -{ - QFile file(filename); - - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) - return false; - - QTextStream in(&file); - while (!in.atEnd()) { - if (in.readLine().contains(marker, Qt::CaseInsensitive)) - return true; - } - - return false; -} - -QString ArduinoInstallation::arduinoPath(const QString &path) const -{ -#ifdef __APPLE__ - if (arduino_legacy_) { - return dir_.filePath("Contents/Resources/Java/" + path); - } else { - return dir_.filePath("Contents/Java/" + path); - } -#else - return dir_.filePath(path); -#endif -} - -QString ArduinoInstallation::nicePath(const QString &path) const -{ - return QDir::toNativeSeparators(dir_.relativeFilePath(path)); -} - -bool ArduinoInstallation::reportFileError(const QFileDevice &dev) -{ - emit error(QString("%1").arg(dev.errorString())); - return false; -} diff --git a/src/tycommander/arduino_install.hpp b/src/tycommander/arduino_install.hpp deleted file mode 100644 index fc071428..00000000 --- a/src/tycommander/arduino_install.hpp +++ /dev/null @@ -1,72 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef ARDUINO_INSTALL_HH -#define ARDUINO_INSTALL_HH - -#include -#include - -class ArduinoInstallation: public QObject { - Q_OBJECT - - QDir dir_; - - bool valid_; - bool integrated_; - - QString arduino_version_; - bool arduino_legacy_; - QString teensyduino_version_; - -public: - ArduinoInstallation(const QString &path = QString()); - - QString path() const { return dir_.path(); } - QString absolutePath() const { return dir_.absolutePath(); } - - bool isValid() const { return valid_; } - bool isIntegrated() const { return integrated_; } - - QString arduinoVersion() const { return arduino_version_; } - bool isArduinoLegacy() const { return arduino_legacy_; } - QString teensyduinoVersion() const { return teensyduino_version_; } - -public slots: - void setPath(const QString &path); - void update(); - - bool integrate(); - bool restore(); - -signals: - void changed(); - - void log(const QString &msg); - void error(const QString &msg); - -private: - bool integrateLegacy(); - bool writeAvrdudeScript(); - bool restoreLegacy(); - - void updateState(); - - bool safeCopy(const QString &filename, const QString &new_filename); - QString readVersion(const QString &filename); - bool findMarker(const QString &filename, const QString &marker); - - QString arduinoPath(const QString &path) const; - QString nicePath(const QString &path) const; - - bool reportFileError(const QFileDevice &file); -}; - -#endif diff --git a/src/tycommander/board.cc b/src/tycommander/board.cc deleted file mode 100644 index 921b55d6..00000000 --- a/src/tycommander/board.cc +++ /dev/null @@ -1,902 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "board.hpp" -#include "../libhs/device.h" -#include "../libhs/serial.h" -#include "../libty/class.h" -#include "database.hpp" -#include "monitor.hpp" - -using namespace std; - -#define MAX_RECENT_FIRMWARES 4 -#define SERIAL_LOG_DELIMITER "\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n" - -Board::Board(ty_board *board, QObject *parent) - : QObject(parent), board_(ty_board_ref(board)) -{ - serial_document_.setDocumentLayout(new QPlainTextDocumentLayout(&serial_document_)); - serial_document_.setUndoRedoEnabled(false); - - /* Doing font changes in Board is ugly, but the whole shared serial document thing - we do is ugly and will need to change eventually. */ - { - QFont font("monospace", 9); - if (!QFontInfo(font).fixedPitch()) { - font.setStyleHint(QFont::Monospace); - if (!QFontInfo(font).fixedPitch()) - font.setStyleHint(QFont::TypeWriter); - } - serial_document_.setDefaultFont(font); - } - - // The monitor will move the serial notifier to a dedicated thread - connect(&serial_notifier_, &DescriptorNotifier::activated, this, &Board::serialReceived, - Qt::DirectConnection); - - error_timer_.setInterval(TY_SHOW_ERROR_TIMEOUT); - error_timer_.setSingleShot(true); - connect(&error_timer_, &QTimer::timeout, this, &Board::updateStatus); -} - -Board::~Board() -{ - ty_board_interface_close(serial_iface_); - ty_board_unref(board_); -} - -void Board::loadSettings(Monitor *monitor) -{ - auto tag = db_.get("tag", "").toString(); - int r = ty_board_set_tag(board_, tag.isEmpty() ? nullptr : tag.toLocal8Bit().constData()); - if (r < 0) - throw bad_alloc(); - - firmware_ = db_.get("firmware", "").toString(); - if (firmware_.isEmpty() || !QFileInfo::exists(firmware_)) - firmware_ = ""; - recent_firmwares_ = db_.get("recentFirmwares", QStringList()).toStringList(); - recent_firmwares_.erase(remove_if(recent_firmwares_.begin(), recent_firmwares_.end(), - [](const QString &filename) { return filename.isEmpty() || !QFileInfo::exists(filename); }), - recent_firmwares_.end()); - if (recent_firmwares_.count() > MAX_RECENT_FIRMWARES) - recent_firmwares_.erase(recent_firmwares_.begin() + MAX_RECENT_FIRMWARES, - recent_firmwares_.end()); - reset_after_ = db_.get("resetAfter", true).toBool(); - serial_codec_name_ = db_.get("serialCodec", "UTF-8").toString(); - serial_codec_ = QTextCodec::codecForName(serial_codec_name_.toUtf8()); - if (!serial_codec_) { - serial_codec_name_ = "UTF-8"; - serial_codec_ = QTextCodec::codecForName("UTF-8"); - } - serial_decoder_.reset(serial_codec_->makeDecoder()); - clear_on_reset_ = db_.get("clearOnReset", false).toBool(); - serial_document_.setMaximumBlockCount(db_.get("scrollBackLimit", 200000).toInt()); - { - bool default_serial; - if (model() != TY_MODEL_GENERIC && monitor) { - default_serial = monitor->serialByDefault(); - } else { - default_serial = false; - } - enable_serial_ = db_.get("enableSerial", default_serial).toBool(); - } - serial_log_size_ = db_.get( - "serialLogLen", - static_cast(monitor ? monitor->serialLogSize() : -1)).toLongLong(); - serial_rate_ = db_.get("serialRate", 115200).toUInt(); - { - int mode = db_.get("rtcMode", 0).toInt(); - if (mode >= 0 && mode <= (int)RTC_IGNORE) - rtc_mode_ = (RtcMode)mode; - } - - /* Even if the user decides to enable persistence for ambiguous identifiers, - we still don't want to cache the board model. */ - if (hasCapability(TY_BOARD_CAPABILITY_UNIQUE)) { - auto model_name = cache_.get("model"); - if (model_name.isValid()) { - auto model = ty_models_find(model_name.toString().toUtf8().constData()); - if (model) - ty_board_set_model(board_, model); - } - } - - updateSerialInterface(); - updateSerialLogState(false); - - updateStatus(); - emit infoChanged(); - emit settingsChanged(); -} - -bool Board::updateSerialInterface() -{ - if (enable_serial_ && hasCapability(TY_BOARD_CAPABILITY_SERIAL)) { - openSerialInterface(); - if (!serial_iface_) { - enable_serial_ = false; - return false; - } - } else { - closeSerialInterface(); - } - - return true; -} - -bool Board::matchesTag(const QString &id) -{ - return ty_board_matches_tag(board_, id.toLocal8Bit().constData()); -} - -uint16_t Board::capabilities() const -{ - return ty_board_get_capabilities(board_); -} - -bool Board::hasCapability(ty_board_capability cap) const -{ - return ty_board_has_capability(board_, cap); -} - -ty_model Board::model() const -{ - return ty_board_get_model(board_); -} - -QString Board::modelName() const -{ - ty_model model = ty_board_get_model(board_); - return ty_models[model].name; -} - -QString Board::tag() const -{ - return ty_board_get_tag(board_); -} - -QString Board::id() const -{ - return ty_board_get_id(board_); -} - -QString Board::location() const -{ - return ty_board_get_location(board_); -} - -QString Board::serialNumber() const -{ - return ty_board_get_serial_number(board_); -} - -QString Board::description() const -{ - return ty_board_get_description(board_); -} - -int Board::secondary() const -{ - return ty_board_get_secondary(board_); -} - -std::vector Board::interfaces() const -{ - std::vector vec; - - ty_board_list_interfaces(board_, [](ty_board_interface *iface, void *udata) { - BoardInterfaceInfo info; - info.name = ty_board_interface_get_name(iface); - info.path = ty_board_interface_get_path(iface); - info.capabilities = ty_board_interface_get_capabilities(iface); - info.number = ty_board_interface_get_interface_number(iface); - info.open = ty_board_interface_get_handle(iface); - - auto vec = reinterpret_cast *>(udata); - vec->push_back(info); - - return 0; - }, &vec); - - return vec; -} - -bool Board::serialIsSerial() const -{ - if (serial_iface_) { - hs_device *dev = ty_board_interface_get_device(serial_iface_); - return dev->type == HS_DEVICE_TYPE_SERIAL; - } else { - return false; - } -} - -void Board::updateStatus() -{ - const char *icon_name = nullptr; - - switch (ty_board_get_status(board_)) { - case TY_BOARD_STATUS_ONLINE: - if (hasCapability(TY_BOARD_CAPABILITY_RUN)) { - status_text_ = status_firmware_.isEmpty() ? tr("(running)") : status_firmware_; - icon_name = serialOpen() ? ":/board_attached" : ":/board_detached"; - } else if (hasCapability(TY_BOARD_CAPABILITY_UPLOAD)) { - status_text_ = tr("(bootloader)"); - icon_name = ":/board_bootloader"; - } else { - status_text_ = tr("(available)"); - icon_name = serialOpen() ? ":/board_attached" : ":/board_detached"; - } - break; - case TY_BOARD_STATUS_MISSING: - case TY_BOARD_STATUS_DROPPED: - status_text_ = tr("(missing)"); - icon_name = ":/board_other"; - break; - } - - if (errorOccured()) { - icon_name = ":/board_error"; - } else if (task_.status() == TY_TASK_STATUS_PENDING) { - icon_name = ":/board_pending"; - } else if (task_.status() == TY_TASK_STATUS_RUNNING) { - icon_name = ":/board_working"; - } - if (status_icon_name_ != icon_name) { - status_icon_name_ = icon_name; - status_icon_ = QIcon(icon_name); - } - - emit statusChanged(); -} - -QStringList Board::makeCapabilityList(uint16_t capabilities) -{ - QStringList list; - - for (unsigned int i = 0; i < TY_BOARD_CAPABILITY_COUNT; i++) { - if (capabilities & (1 << i)) - list.append(ty_board_capability_get_name(static_cast(i))); - } - - return list; -} - -QString Board::makeCapabilityString(uint16_t capabilities, QString empty_str) -{ - QStringList list = makeCapabilityList(capabilities); - - if (list.isEmpty()) { - return empty_str; - } else { - return list.join(", "); - } -} - -TaskInterface Board::upload(const QString &filename) -{ - shared_ptr fw; - if (!filename.isEmpty()) { - fw = Firmware::load(filename); - } else { - if (firmware_.isEmpty()) - return watchTask(make_task(tr("No firmware set for board '%1'").arg(tag()))); - fw = Firmware::load(firmware_); - } - if (!fw) - return watchTask(make_task(ty_error_last_message())); - - return upload({fw}); -} - -TaskInterface Board::upload(const vector> &fws) -{ - int flags = 0; - - flags |= reset_after_ ? 0 : TY_UPLOAD_NORESET; - switch (rtc_mode_) { - case RTC_LOCALTIME: {} break; - case RTC_UTC: { flags |= TY_UPLOAD_RTC_UTC; } break; - case RTC_IGNORE: { flags |= TY_UPLOAD_NORTC; } break; - } - - return upload(fws, flags); -} - -TaskInterface Board::upload(const vector> &fws, int flags) -{ - vector fws2; - ty_task *task; - int r; - - fws2.reserve(fws.size()); - for (auto &fw: fws) - fws2.push_back(fw->firmware()); - - r = ty_upload(board_, &fws2[0], static_cast(fws2.size()), - flags, &task); - if (r < 0) - return watchTask(make_task(ty_error_last_message())); - task->pool = pool_; - - auto task2 = make_task(task); - watchTask(task2); - connect(&task_watcher_, &TaskWatcher::finished, this, - [=](bool success, shared_ptr result) { - if (success) - addUploadedFirmware(static_cast(result.get())); - }); - - return task2; -} - -TaskInterface Board::reset() -{ - ty_task *task; - int r; - - r = ty_reset(board_, &task); - if (r < 0) - return watchTask(make_task(ty_error_last_message())); - task->pool = pool_; - - return watchTask(make_task(task)); -} - -TaskInterface Board::reboot() -{ - ty_task *task; - int r; - - r = ty_reboot(board_, &task); - if (r < 0) - return watchTask(make_task(ty_error_last_message())); - task->pool = pool_; - - return watchTask(make_task(task)); -} - -TaskInterface Board::sendSerial(const QByteArray &buf) -{ - ty_task *task; - int r; - - r = ty_send(board_, buf.data(), buf.size(), &task); - if (r < 0) - return watchTask(make_task(ty_error_last_message())); - task->pool = pool_; - - return watchTask(make_task(task)); -} - -TaskInterface Board::sendSerial(const QString &s) -{ - return sendSerial(serial_codec_->fromUnicode(s)); -} - -TaskInterface Board::sendFile(const QString &filename) -{ - ty_task *task; - int r; - - r = ty_send_file(board_, filename.toLocal8Bit().constData(), &task); - if (r < 0) - return watchTask(make_task(ty_error_last_message())); - task->pool = pool_; - - return watchTask(make_task(task)); -} - -void Board::appendFakeSerialRead(const QString &s) -{ - if (serial_log_file_.isOpen()) { - auto buf = serial_codec_->fromUnicode(s); - QMutexLocker locker(&serial_lock_); - writeToSerialLog(buf.constData(), buf.size()); - locker.unlock(); - } - - QTextCursor cursor(&serial_document_); - cursor.movePosition(QTextCursor::End); - cursor.insertText(s); -} - -void Board::setTag(const QString &tag) -{ - if (tag.isEmpty() && ty_board_get_tag(board_) == ty_board_get_id(board_)) - return; - if (tag == ty_board_get_tag(board_)) - return; - - int r = ty_board_set_tag(board_, tag.isEmpty() ? nullptr : tag.toLocal8Bit().constData()); - if (r < 0) - throw bad_alloc(); - - db_.put("tag", tag); - emit infoChanged(); -} - -void Board::setFirmware(const QString &firmware) -{ - if (firmware == firmware_) - return; - - firmware_ = firmware; - - db_.put("firmware", firmware); - emit settingsChanged(); -} - -void Board::clearRecentFirmwares() -{ - if (recent_firmwares_.isEmpty()) - return; - - recent_firmwares_.clear(); - - db_.remove("recentFirmwares"); - emit settingsChanged(); -} - -void Board::setResetAfter(bool reset_after) -{ - if (reset_after == reset_after_) - return; - - reset_after_ = reset_after; - - db_.put("resetAfter", reset_after); - emit settingsChanged(); -} - -void Board::setSerialRate(unsigned int rate) -{ - if (rate == serial_rate_) - return; - - serial_rate_ = rate; - if (serial_iface_) { - closeSerialInterface(); - if (!openSerialInterface()) - updateStatus(); - } - - db_.put("serialRate", rate); - emit settingsChanged(); -} - -void Board::setSerialCodecName(QString codec_name) -{ - if (codec_name == serial_codec_name_) - return; - - auto codec = QTextCodec::codecForName(codec_name.toUtf8()); - if (!codec) - return; - - serial_codec_name_ = codec_name; - serial_codec_ = codec; - serial_decoder_.reset(serial_codec_->makeDecoder()); - - db_.put("serialCodec", codec_name); - emit settingsChanged(); -} - -void Board::setClearOnReset(bool clear_on_reset) -{ - if (clear_on_reset == clear_on_reset_) - return; - - clear_on_reset_ = clear_on_reset; - - db_.put("clearOnReset", clear_on_reset); - emit settingsChanged(); -} - -void Board::setScrollBackLimit(unsigned int limit) -{ - if (static_cast(limit) == serial_document_.maximumBlockCount()) - return; - - serial_document_.setMaximumBlockCount(static_cast(limit)); - - db_.put("scrollBackLimit", limit); - emit settingsChanged(); -} - -void Board::setEnableSerial(bool enable, bool persist) -{ - if (enable == enable_serial_) - return; - - enable_serial_ = enable; - if (updateSerialInterface() && persist) - db_.put("enableSerial", enable); - - updateStatus(); - emit settingsChanged(); -} - -void Board::setSerialLogSize(ssize_t size) -{ - if (size == serial_log_size_) - return; - - if (size < 0) - size = -1; - serial_log_size_ = size; - updateSerialLogState(false); - - // Remove obsolete setting - db_.remove("serialLogSize"); - - db_.put("serialLogLen", static_cast(size)); - emit settingsChanged(); -} - -void Board::setRtcMode(RtcMode mode) -{ - if (mode == rtc_mode_) - return; - - rtc_mode_ = mode; - - db_.put("rtcMode", static_cast(mode)); - emit settingsChanged(); -} - -TaskInterface Board::startUpload(const QString &filename) -{ - auto task = upload(filename); - task.start(); - return task; -} - -TaskInterface Board::startUpload(const vector> &fws) -{ - auto task = upload(fws); - task.start(); - return task; -} - -TaskInterface Board::startUpload(const vector> &fws, int flags) -{ - auto task = upload(fws, flags); - task.start(); - return task; -} - -TaskInterface Board::startReset() -{ - auto task = reset(); - task.start(); - return task; -} - -TaskInterface Board::startReboot() -{ - auto task = reboot(); - task.start(); - return task; -} - -TaskInterface Board::startSendSerial(const QByteArray &buf) -{ - auto task = sendSerial(buf); - task.start(); - return task; -} - -TaskInterface Board::startSendSerial(const QString &s) -{ - auto task = sendSerial(s); - task.start(); - return task; -} - -TaskInterface Board::startSendFile(const QString &filename) -{ - auto task = sendFile(filename); - task.start(); - return task; -} - -void Board::notifyLog(ty_log_level level, const QString &msg) -{ - Q_UNUSED(msg); - - if (level == TY_LOG_ERROR) { - error_timer_.start(); - updateStatus(); - } -} - -void Board::serialReceived(ty_descriptor desc) -{ - Q_UNUSED(desc); - - QMutexLocker locker(&serial_lock_); - - ty_error_mask(TY_ERROR_MODE); - ty_error_mask(TY_ERROR_IO); - - size_t previous_len = serial_buf_len_; - /* On OSX El Capitan (at least), serial device reads are often partial (512 and 1020 bytes - reads happen pretty often), so try hard to empty the OS buffer. The Qt event loop may not - give us back control before some time, and we want to avoid buffer overruns. */ - for (unsigned int i = 0; i < 4; i++) { - if (serial_buf_len_ == sizeof(serial_buf_)) - break; - - int r = ty_board_serial_read(board_, serial_buf_ + serial_buf_len_, - sizeof(serial_buf_) - serial_buf_len_, 0); - if (r < 0) { - serial_notifier_.clear(); - break; - } - if (!r) - break; - serial_buf_len_ += static_cast(r); - } - - ty_error_unmask(); - ty_error_unmask(); - - if (serial_log_file_.isOpen()) - writeToSerialLog(serial_buf_ + previous_len, serial_buf_len_ - previous_len); - - locker.unlock(); - - if (!previous_len && serial_buf_len_) - QMetaObject::invokeMethod(this, "appendBufferToSerialDocument", Qt::QueuedConnection); -} - -// You need to lock serial_lock_ before you call this -void Board::writeToSerialLog(const char *buf, size_t len) -{ - serial_log_file_.unsetError(); - - if (serial_log_size_ > 0) { - qint64 pos = serial_log_file_.pos(); - - if (pos + len > (size_t)serial_log_size_) { - auto part_len = serial_log_size_ - pos; - serial_log_file_.write(buf, part_len); - serial_log_file_.seek(0); - serial_log_file_.write(buf + part_len, len - part_len); - } else { - serial_log_file_.write(buf, len); - } - - if (!serial_log_file_.atEnd()) { - pos = serial_log_file_.pos(); - - if (pos + sizeof(SERIAL_LOG_DELIMITER) >= (size_t)serial_log_size_) { - serial_log_file_.resize(pos); - serial_log_file_.seek(0); - } else { - serial_log_file_.write(SERIAL_LOG_DELIMITER); - serial_log_file_.seek(pos); - } - } - } - - if (serial_log_file_.error() != QFileDevice::NoError) { - auto error_msg = QString("Closed serial log file after error: %1") - .arg(serial_log_file_.errorString()); - ty_log(TY_LOG_ERROR, "%s", error_msg.toUtf8().constData()); - QMetaObject::invokeMethod(this, "notifyLog", Qt::QueuedConnection, - Q_ARG(ty_log_level, TY_LOG_ERROR), Q_ARG(QString, error_msg)); - - serial_log_file_.close(); - emit settingsChanged(); - } -} - -void Board::appendBufferToSerialDocument() -{ - QMutexLocker locker(&serial_lock_); - auto str = serial_decoder_->toUnicode(serial_buf_, static_cast(serial_buf_len_)); - serial_buf_len_ = 0; - locker.unlock(); - - // Hack to fix extra empty lines when CR and LF are put in separate buffers. - // That's something that will go away with VT-100 support. - if (str.endsWith('\r')) - str.resize(str.size() - 1); - - QTextCursor cursor(&serial_document_); - cursor.movePosition(QTextCursor::End); - cursor.insertText(str); -} - -void Board::notifyFinished(bool success, std::shared_ptr result) -{ - Q_UNUSED(success); - Q_UNUSED(result); - - task_ = TaskInterface(); - task_watcher_.setTask(nullptr); - - updateStatus(); -} - -void Board::refreshBoard() -{ - updateSerialInterface(); - - if (ty_board_get_status(board_) == TY_BOARD_STATUS_DROPPED) { - emit dropped(); - return; - } - - if (clear_on_reset_) { - if (hasCapability(TY_BOARD_CAPABILITY_SERIAL)) { - if (serial_clear_when_available_) { - serial_document_.clear(); - updateSerialLogState(true); - } - serial_clear_when_available_ = false; - } else { - serial_clear_when_available_ = true; - } - } - - ty_model model = this->model(); - // FIXME: Hack to cache Teensy model, move to libty and drop ty_board_set_model() - if (ty_models[model].mcu) - cache_.put("model", ty_models[model].name); - - updateStatus(); - emit infoChanged(); - emit interfacesChanged(); -} - -bool Board::openSerialInterface() -{ - if (serial_iface_) - return true; - - ty_descriptor_set set = {}; - int r; - - r = ty_board_open_interface(board_, TY_BOARD_CAPABILITY_SERIAL, &serial_iface_); - if (r < 0) { - notifyLog(TY_LOG_ERROR, ty_error_last_message()); - return false; - } - if (!r) - return false; - ty_board_interface_get_descriptors(serial_iface_, &set, 1); - serial_notifier_.setDescriptorSet(&set); - - hs_device *dev = ty_board_interface_get_device(serial_iface_); - hs_port *port = ty_board_interface_get_handle(serial_iface_); - - if (dev->type == HS_DEVICE_TYPE_SERIAL) { - hs_serial_config config = {}; - config.baudrate = serial_rate_; - - hs_serial_set_config(port, &config); - } - - return true; -} - -void Board::closeSerialInterface() -{ - if (!serial_iface_) - return; - - serial_notifier_.clear(); - ty_board_interface_close(serial_iface_); - serial_iface_ = nullptr; -} - -void Board::updateSerialLogState(bool new_file) -{ - if (!hasCapability(TY_BOARD_CAPABILITY_UNIQUE)) { - return; - } - - QMutexLocker locker(&serial_lock_); - - if (serial_log_file_.fileName().isEmpty() || new_file) { - serial_log_file_.close(); - serial_log_file_.setFileName(findLogFilename(id(), 4)); - } - - if (serial_log_size_ >= 0) { - if (!serial_log_file_.isOpen()) { - if (!serial_log_file_.open(QIODevice::WriteOnly)) { - ty_log(TY_LOG_ERROR, "Cannot open board log '%s' for writing", - serial_log_file_.fileName().toUtf8().constData()); - } - } - if (serial_log_file_.isOpen() && - serial_log_size_ > 0 && - static_cast(serial_log_file_.size()) > serial_log_size_) - serial_log_file_.resize(serial_log_size_); - } else { - serial_log_file_.close(); - serial_log_file_.remove(); - } -} - -TaskInterface Board::watchTask(TaskInterface task) -{ - task_ = task; - - /* There may be task-specific slots, such as the firmware one from upload(), - disconnect everyone and restore sane connections. */ - task_watcher_.disconnect(); - connect(&task_watcher_, &TaskWatcher::log, this, &Board::notifyLog); - connect(&task_watcher_, &TaskWatcher::pending, this, &Board::updateStatus); - connect(&task_watcher_, &TaskWatcher::started, this, &Board::updateStatus); - connect(&task_watcher_, &TaskWatcher::finished, this, &Board::notifyFinished); - connect(&task_watcher_, &TaskWatcher::progress, this, &Board::progressChanged); - - task_watcher_.setTask(&task_); - - return task_; -} - -void Board::addUploadedFirmware(ty_firmware *fw) -{ - status_firmware_ = fw->name; - - auto filename = fw->filename; - recent_firmwares_.removeAll(filename); - recent_firmwares_.prepend(filename); - if (recent_firmwares_.count() > MAX_RECENT_FIRMWARES) - recent_firmwares_.erase(recent_firmwares_.begin() + MAX_RECENT_FIRMWARES, - recent_firmwares_.end()); - db_.put("recentFirmwares", recent_firmwares_); - - blockSignals(true); - setFirmware(filename); - blockSignals(false); - - updateStatus(); - emit settingsChanged(); -} - -QString Board::findLogFilename(const QString &id, unsigned int max) -{ - QDateTime oldest_mtime; - QString oldest_filename; - - auto dir = serial_log_dir_.isEmpty() ? QDir::tempPath() : serial_log_dir_; - auto prefix = QString("%1/%2-%3").arg(dir, QCoreApplication::applicationName(), id); - for (unsigned int i = 1; i <= max; i++) { - auto filename = QString("%1-%2.txt").arg(prefix).arg(i); - QFileInfo info(filename); - - if (!info.exists()) - return filename; - if (oldest_filename.isEmpty() || info.lastModified() < oldest_mtime) { - oldest_filename = filename; - oldest_mtime = info.lastModified(); - } - } - - return oldest_filename; -} diff --git a/src/tycommander/board.hpp b/src/tycommander/board.hpp deleted file mode 100644 index ae670e53..00000000 --- a/src/tycommander/board.hpp +++ /dev/null @@ -1,224 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef BOARD_HH -#define BOARD_HH - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "../libty/board.h" -#include "database.hpp" -#include "descriptor_notifier.hpp" -#include "firmware.hpp" -#include "../libty/monitor.h" -#include "task.hpp" - -class Monitor; - -struct BoardInterfaceInfo { - QString name; - QString path; - - uint16_t capabilities; - uint8_t number; - bool open; -}; - -enum RtcMode : int { - RTC_LOCALTIME, - RTC_UTC, - RTC_IGNORE -}; - -class Board : public QObject, public std::enable_shared_from_this { - Q_OBJECT - - DatabaseInterface db_; - DatabaseInterface cache_; - - ty_board *board_; - - ty_board_interface *serial_iface_ = nullptr; - DescriptorNotifier serial_notifier_; - QTextCodec *serial_codec_; - std::unique_ptr serial_decoder_; - QMutex serial_lock_; - char serial_buf_[262144]; - size_t serial_buf_len_ = 0; - QTextDocument serial_document_; - QFile serial_log_file_; - bool serial_clear_when_available_ = false; - - QTimer error_timer_; - - QString firmware_; - bool reset_after_; - unsigned int serial_rate_ = 0; - QString serial_codec_name_; - bool clear_on_reset_; - bool enable_serial_; - QString serial_log_dir_; - ssize_t serial_log_size_; - RtcMode rtc_mode_; - - QString status_text_; - QString status_icon_name_; - QIcon status_icon_; - - QString status_firmware_; - QStringList recent_firmwares_; - - ty_pool *pool_ = nullptr; - - TaskInterface task_; - TaskWatcher task_watcher_; - -public: - virtual ~Board(); - - void setDatabase(DatabaseInterface db) { db_ = db; } - DatabaseInterface database() const { return db_; } - void setCache(DatabaseInterface cache) { cache_ = cache; } - DatabaseInterface cache() const { return cache_; } - - ty_board *board() const { return board_; } - - bool matchesTag(const QString &id); - - uint16_t capabilities() const; - bool hasCapability(ty_board_capability cap) const; - - ty_model model() const; - QString modelName() const; - - QString tag() const; - QString id() const; - QString location() const; - QString serialNumber() const; - QString description() const; - int secondary() const; - - std::vector interfaces() const; - - bool errorOccured() const { return error_timer_.remainingTime() > 0; } - - QString statusText() const { return status_text_; } - QIcon statusIcon() const { return status_icon_; } - - QString firmware() const { return firmware_; } - QStringList recentFirmwares() const { return recent_firmwares_; } - bool resetAfter() const { return reset_after_; } - unsigned int serialRate() const { return serial_rate_; } - QString serialCodecName() const { return serial_codec_name_; } - QTextCodec *serialCodec() const { return serial_codec_; } - bool clearOnReset() const { return clear_on_reset_; } - unsigned int scrollBackLimit() const { return serial_document_.maximumBlockCount(); } - bool enableSerial() const { return enable_serial_; } - ssize_t serialLogSize() const { return serial_log_size_; } - QString serialLogFilename() const { return serial_log_file_.fileName(); } - RtcMode rtcMode() const { return rtc_mode_; } - - bool serialOpen() const { return serial_iface_; } - bool serialIsSerial() const; - QTextDocument &serialDocument() { return serial_document_; } - - static QStringList makeCapabilityList(uint16_t capabilities); - static QString makeCapabilityString(uint16_t capabilities, QString empty_str = QString()); - - TaskInterface upload(const QString &filename = QString()); - TaskInterface upload(const std::vector> &fws); - TaskInterface upload(const std::vector> &fws, int flags); - TaskInterface reset(); - TaskInterface reboot(); - TaskInterface sendSerial(const QByteArray &buf); - TaskInterface sendSerial(const QString &s); - TaskInterface sendFile(const QString &filename); - - void appendFakeSerialRead(const QString &s); - - TaskInterface task() const { return task_; } - ty_task_status taskStatus() const { return task_.status(); } - -public slots: - void setTag(const QString &tag); - - void setFirmware(const QString &firmware); - void clearRecentFirmwares(); - void setResetAfter(bool reset_after); - void setSerialRate(unsigned int rate); - void setSerialCodecName(QString codec_name); - void setClearOnReset(bool clear_on_reset); - void setScrollBackLimit(unsigned int limit); - void setEnableSerial(bool enable, bool persist = true); - void setSerialLogSize(ssize_t size); - void setRtcMode(RtcMode mode); - - TaskInterface startUpload(const QString &filename = QString()); - TaskInterface startUpload(const std::vector> &fws); - TaskInterface startUpload(const std::vector> &fws, int flags); - TaskInterface startReset(); - TaskInterface startReboot(); - TaskInterface startSendSerial(const QByteArray &buf); - TaskInterface startSendSerial(const QString &s); - TaskInterface startSendFile(const QString &filename); - - void notifyLog(ty_log_level level, const QString &msg); - -signals: - void infoChanged(); - void settingsChanged(); - void interfacesChanged(); - void statusChanged(); - void progressChanged(); - - void dropped(); - -private slots: - void updateStatus(); - - void serialReceived(ty_descriptor desc); - void appendBufferToSerialDocument(); - - void notifyFinished(bool success, std::shared_ptr result); - -private: - Board(ty_board *board, QObject *parent = nullptr); - void loadSettings(Monitor *monitor); - QString findLogFilename(const QString &id, unsigned int max); - - void setThreadPool(ty_pool *pool) { pool_ = pool; } - - void writeToSerialLog(const char *buf, size_t len); - - void refreshBoard(); - bool updateSerialInterface(); - bool openSerialInterface(); - void closeSerialInterface(); - void updateSerialLogState(bool new_file); - - void addUploadedFirmware(ty_firmware *fw); - - TaskInterface watchTask(TaskInterface task); - - friend class Monitor; -}; - -#endif diff --git a/src/tycommander/board_widget.cc b/src/tycommander/board_widget.cc deleted file mode 100644 index a763fafb..00000000 --- a/src/tycommander/board_widget.cc +++ /dev/null @@ -1,138 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include - -#include "board.hpp" -#include "board_widget.hpp" - -using namespace std; - -BoardWidget::BoardWidget(QWidget *parent) - : QWidget(parent) -{ - setupUi(this); - - QGridLayout *layout = static_cast(this->layout()); - - plusIcon = new QLabel(this); - plusIcon->setMinimumSize(16, 16); - plusIcon->setMaximumSize(16, 16); - plusIcon->setScaledContents(true); - plusIcon->setStyleSheet("QLabel { background-color: red; color: white; border-radius: 8px; }"); - plusIcon->setAlignment(Qt::AlignCenter); - { - QFont font; - font.setPointSize(7); - plusIcon->setFont(font); - } - plusIcon->setVisible(false); - layout->addWidget(plusIcon, 0, 0, Qt::AlignRight | Qt::AlignBottom); -} - -void BoardWidget::setIcon(const QIcon &icon) -{ - boardIcon->setPixmap(icon.pixmap(boardIcon->size())); -} - -void BoardWidget::setStatus(const QString &status) -{ - QFontMetrics metrics(statusLabel->font()); - statusLabel->setText(metrics.elidedText(status, Qt::ElideRight, statusLabel->width())); -} - -void BoardWidget::setProgress(unsigned int progress, unsigned int total) -{ - if (total) { - stackedWidget->setCurrentIndex(1); - - taskProgress->setRange(0, total); - taskProgress->setValue(progress); - } else { - stackedWidget->setCurrentIndex(0); - } -} - -void BoardWidget::setSecondary(int secondary) -{ - if (secondary) { - plusIcon->setText(QString::number(secondary)); - plusIcon->setVisible(true); - } else { - plusIcon->setVisible(false); - } -} - -QRect BoardWidget::tagGeometry() const -{ - auto geometry = tagLabel->geometry(); - geometry.moveTo(tagLabel->mapTo(this, QPoint())); - return geometry; -} - -void BoardItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - auto board = Monitor::boardFromModel(model_, index); - if (!board) - return; - - widget_.resize(option.rect.size()); - - widget_.setIcon(board->statusIcon()); - widget_.setModel(board->modelName()); - widget_.setTag(board->tag()); - widget_.setStatus(board->statusText()); - widget_.setSecondary(board->secondary()); - - auto task = board->task(); - if (task.status() == TY_TASK_STATUS_RUNNING) { - widget_.setProgress(task.progress(), task.progressMaximum()); - } else { - widget_.setProgress(0, 0); - } - - QPalette pal = option.palette; - if (option.state & QStyle::State_Selected) { - pal.setBrush(QPalette::Window, option.palette.brush(QPalette::Highlight)); - pal.setColor(QPalette::WindowText, option.palette.color(QPalette::HighlightedText)); - } else { - pal.setBrush(QPalette::Window, QBrush(QColor(Qt::transparent))); - } - widget_.setPalette(pal); - - painter->save(); - painter->translate(option.rect.topLeft()); - - widget_.render(painter); - - painter->restore(); -} - -QSize BoardItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - Q_UNUSED(option); - Q_UNUSED(index); - - return QSize(widget_.minimumWidth(), widget_.height()); -} - -void BoardItemDelegate::updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - Q_UNUSED(index); - - if (!editor) - return; - - auto geometry = widget_.tagGeometry(); - geometry.moveTopLeft(option.rect.topLeft() + geometry.topLeft()); - editor->setGeometry(geometry); -} diff --git a/src/tycommander/board_widget.hpp b/src/tycommander/board_widget.hpp deleted file mode 100644 index 570d1035..00000000 --- a/src/tycommander/board_widget.hpp +++ /dev/null @@ -1,56 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef BOARD_WIDGET_HH -#define BOARD_WIDGET_HH - -#include - -#include "board.hpp" -#include "monitor.hpp" -#include "ui_board_widget.h" - -class BoardWidget : public QWidget, private Ui::BoardWidget { - Q_OBJECT - - QLabel *plusIcon; - -public: - BoardWidget(QWidget *parent = nullptr); - - void setIcon(const QIcon &icon); - void setModel(const QString &model) { modelLabel->setText(model); } - void setTag(const QString &tag) { tagLabel->setText(tag); } - void setStatus(const QString &status); - void setSecondary(int secondary); - - void setProgress(unsigned int progress, unsigned int total); - - QRect tagGeometry() const; -}; - -class BoardItemDelegate : public QItemDelegate { - Q_OBJECT - - Monitor *model_; - - mutable BoardWidget widget_; - -public: - BoardItemDelegate(Monitor *model) - : QItemDelegate(model), model_(model) {} - - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; - - void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override; -}; - -#endif diff --git a/src/tycommander/board_widget.ui b/src/tycommander/board_widget.ui deleted file mode 100644 index e81bb0f6..00000000 --- a/src/tycommander/board_widget.ui +++ /dev/null @@ -1,206 +0,0 @@ - - - BoardWidget - - - - 0 - 0 - 351 - 54 - - - - - 0 - 0 - - - - - 0 - 54 - - - - - 16777215 - 54 - - - - Form - - - - 4 - - - 5 - - - 4 - - - 5 - - - - - - 0 - 0 - - - - - 36 - 36 - - - - - 36 - 36 - - - - - - - :/board_attached - - - true - - - - - - - 0 - - - QLayout::SetFixedSize - - - - - - 0 - 0 - - - - - 75 - true - - - - tag - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - 0 - 0 - - - - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - model - - - - - - - - 0 - 0 - - - - - 8 - true - - - - status - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 24 - - - true - - - - - - - - - - - - - - - - diff --git a/src/tycommander/client_handler.cc b/src/tycommander/client_handler.cc deleted file mode 100644 index 542d7c26..00000000 --- a/src/tycommander/client_handler.cc +++ /dev/null @@ -1,421 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include - -#ifdef _WIN32 - #define WIN32_LEAN_AND_MEAN - #include -#endif - -#include "board.hpp" -#include "client_handler.hpp" -#include "main_window.hpp" -#include "selector_dialog.hpp" -#include "monitor.hpp" -#include "tycommander.hpp" - -using namespace std; - -const QHash ClientHandler::commands_ = { - {"workdir", &ClientHandler::setWorkingDirectory}, - {"options", &ClientHandler::setOptions}, - {"select", &ClientHandler::selectBoard}, - {"open", &ClientHandler::openMainWindow}, - {"reset", &ClientHandler::reset}, - {"reboot", &ClientHandler::reboot}, - {"upload", &ClientHandler::upload}, - {"attach", &ClientHandler::attach}, - {"detach", &ClientHandler::detach} -}; - -ClientHandler::ClientHandler(unique_ptr peer, QObject *parent) - : QObject(parent), peer_(move(peer)) -{ - connect(peer_.get(), &SessionPeer::closed, this, &ClientHandler::closed); - connect(peer_.get(), &SessionPeer::received, this, &ClientHandler::execute); - -#ifdef _WIN32 - peer_->send({"allowsetforegroundwindow", QString::number(GetCurrentProcessId())}); -#endif -} - -void ClientHandler::execute(const QStringList &arguments) -{ - if (arguments.isEmpty()) { - notifyLog(TY_LOG_ERROR, tr("Command not specified")); - notifyFinished(false); - return; - } - - auto parameters = arguments; - auto cmd_name = parameters.takeFirst(); - - auto cmd_it = commands_.find(cmd_name); - if (cmd_it == commands_.end()) { - notifyLog(TY_LOG_ERROR, tr("Unknown command '%1'").arg(cmd_name)); - notifyFinished(false); - return; - } - - (this->**cmd_it)(parameters); -} - -void ClientHandler::setWorkingDirectory(const QStringList ¶meters) -{ - if (parameters.isEmpty()) { - notifyLog(TY_LOG_ERROR, "Missing argument for 'workdir' command"); - notifyFinished(false); - return; - } - - working_directory_ = parameters[0]; -} - -void ClientHandler::setOptions(const QStringList ¶meters) -{ - for (QString param: parameters) { - bool enable = true; - if (param.startsWith('-')) { - param = param.mid(1); - enable = false; - } - - if (param == "multi") { - multi_ = enable; - } else if (param == "persist") { - persist_ = true; - } else if (param == "delegate") { - delegate_ = true; - } else { - notifyLog(TY_LOG_ERROR, tr("Ignoring unknown option '%1'").arg(param)); - } - } -} - -void ClientHandler::selectBoard(const QStringList &filters) -{ - if (filters.empty()) { - notifyLog(TY_LOG_ERROR, "Missing argument for 'select' command"); - notifyFinished(false); - return; - } - - filters_.append(filters); -} - -void ClientHandler::openMainWindow(const QStringList ¶meters) -{ - Q_UNUSED(parameters); - - auto win = new MainWindow(); - win->setAttribute(Qt::WA_DeleteOnClose, true); - win->show(); - - notifyFinished(true); -} - -void ClientHandler::reset(const QStringList &) -{ - auto boards = selectedBoards(); - if (boards.empty()) - return; - - for (auto &board: boards) { - auto task = board->reset(); - addTask(task); - } - executeTasks(); -} - -void ClientHandler::reboot(const QStringList &) -{ - auto boards = selectedBoards(); - if (boards.empty()) - return; - - for (auto &board: boards) { - auto task = board->reboot(); - addTask(task); - } - executeTasks(); -} - -void ClientHandler::upload(const QStringList &filenames) -{ - auto monitor = tyCommander->monitor(); - - QStringList filenames2; - filenames2.reserve(filenames.count()); - for (auto filename: filenames) { - QFileInfo info(working_directory_, filename); - if (!info.exists()) { - notifyLog(TY_LOG_ERROR, tr("File '%1' does not exist").arg(filename)); - continue; - } - filename = QDir::toNativeSeparators(info.filePath()); - filenames2.append(filename); - } - if (filenames2.isEmpty()) { - notifyFinished(false); - return; - } - - if (!monitor->boardCount()) { - notifyLog(TY_LOG_ERROR, tr("No board available")); - notifyFinished(false); - return; - } - - vector> boards; - if (filters_.isEmpty() && !filenames2.isEmpty()) { - if (filenames2.count() == 1) { - boards = monitor->find([&](Board &board) { - return ty_compare_paths(board.firmware().toLocal8Bit().constData(), - filenames2[0].toLocal8Bit().constData()); - }); - } - - if (boards.empty()) { - notifyLog(TY_LOG_INFO, "Waiting for user selection"); - notifyStarted(); - - auto dialog = new SelectorDialog(); - dialog->setAttribute(Qt::WA_DeleteOnClose); - dialog->setExtendedSelection(multi_); - if (filenames2.count() == 1) { - dialog->setAction(tr("Upload '%1'").arg(QFileInfo(filenames2[0]).fileName())); - dialog->setDescription(tr("Upload '%1' to:") - .arg(QFileInfo(filenames2[0]).fileName())); - } else { - dialog->setAction(tr("Upload firmwares")); - dialog->setDescription(tr("Upload firmwares to:")); - } - - /* This object can be destroyed before the dialog is closed or validated, if the - client disconnects. We want to complete the task even if that happens, so use - QPointer to detect it. */ - QPointer this_ptr = this; - connect(dialog, &SelectorDialog::accepted, [=]() { - if (this_ptr) { - auto tasks = makeUploadTasks(dialog->selectedBoards(), filenames2, delegate_); - for (auto &task: tasks) - addTask(task); - executeTasks(); - } else { - auto tasks = makeUploadTasks(dialog->selectedBoards(), filenames2, delegate_); - for (auto &task: tasks) - task.start(); - } - }); - connect(dialog, &SelectorDialog::rejected, this, [=]() { - notifyLog(TY_LOG_ERROR, "Upload was canceled"); - notifyFinished(false); - }); - - dialog->show(); - dialog->raise(); - dialog->activateWindow(); - - return; - } - } else { - boards = selectedBoards(); - } - if (boards.empty()) - return; - - auto tasks = makeUploadTasks(boards, filenames2, delegate_); - for (auto &task: tasks) - addTask(task); - executeTasks(); -} - -void ClientHandler::attach(const QStringList &) -{ - auto boards = selectedBoards(); - if (boards.empty()) - return; - - bool ret = true; - for (auto &board: boards) { - board->setEnableSerial(true, persist_); - if (board->hasCapability(TY_BOARD_CAPABILITY_SERIAL) && !board->serialOpen()) - ret = false; - } - notifyFinished(ret); -} - -void ClientHandler::detach(const QStringList &) -{ - auto boards = selectedBoards(); - if (boards.empty()) - return; - - for (auto &board: boards) - board->setEnableSerial(false, persist_); - notifyFinished(true); -} - -/* This function is static because it can be called after the client is gone (and the - handler destroyed), such as if the user does not wait for the board selection dialog. - This means we cannot use notify*() methods in there, hence the use of pseudo-tasks - such as FailedTask and so on. */ -vector ClientHandler::makeUploadTasks(const vector> &boards, - const QStringList &filenames, bool delegate) -{ - vector tasks; - - int flags = delegate ? TY_UPLOAD_DELEGATE : 0; - - if (filenames.isEmpty()) { - unsigned int fws_count = 0; - for (auto &board: boards) { - if (!board->firmware().isEmpty()) { - fws_count++; - - auto fw = Firmware::load(board->firmware()); - if (!fw) { - tasks.push_back(make_task(ty_error_last_message())); - continue; - } - - tasks.push_back(board->upload({fw}, flags)); - } - } - if (!fws_count) { - QString msg; - if (boards.size() == 1) { - msg = tr("Board '%1' is not associated to a firmware").arg(boards[0]->tag()); - } else { - msg = tr("No board has an associated firmware"); - } - tasks.push_back(make_task(msg)); - } - } else { - vector> fws; - fws.reserve(filenames.count()); - for (auto &filename: filenames) { - auto fw = Firmware::load(filename); - if (!fw) { - tasks.push_back(make_task(ty_error_last_message())); - continue; - } - fws.push_back(fw); - } - - if (!fws.empty()) { - for (auto &board: boards) - tasks.push_back(board->upload(fws, flags)); - } - } - - return tasks; -} - -vector> ClientHandler::selectedBoards() -{ - auto monitor = tyCommander->monitor(); - - if (!monitor->boardCount()) { - notifyLog(TY_LOG_ERROR, tr("No board available")); - notifyFinished(false); - return {}; - } - - vector> boards; - if (filters_.isEmpty()) { - boards = monitor->boards(); - } else { - auto filters = multi_ ? filters_ : QStringList{filters_.last()}; - boards = monitor->find([&](Board &board) { - for (auto &filter: filters) { - if (board.matchesTag(filter)) - return true; - } - return false; - }); - - if (boards.empty()) { - if (filters_.count() == 1) { - notifyLog(TY_LOG_ERROR, tr("Cannot find any board matching '%1'").arg(filters_[0])); - } else { - notifyLog(TY_LOG_ERROR, tr("Cannot find any matching board")); - } - notifyFinished(false); - return {}; - } - } - - if (!multi_) - boards.resize(1); - return boards; -} - -void ClientHandler::notifyLog(ty_log_level level, const QString &msg) -{ - QString ctx; - if (auto watcher = qobject_cast(sender())) - ctx = watcher->task().name(); - peer_->send({"log", ctx, QString::number(level), msg}); -} - -void ClientHandler::notifyStarted() -{ - peer_->send("start"); -} - -void ClientHandler::notifyFinished(bool success) -{ - finished_tasks_++; - if (!success) - error_count_++; - - if (finished_tasks_ >= tasks_.size()) - peer_->send({"exit", error_count_ ? "1" : "0"}); -} - -void ClientHandler::notifyProgress(const QString &action, unsigned int value, unsigned int max) -{ - if (tasks_.size() > 1) { - if (!value) - notifyLog(TY_LOG_INFO, QString("%1...").arg(action)); - } else { - QString ctx; - if (auto watcher = qobject_cast(sender())) - ctx = watcher->task().name(); - peer_->send({"progress", ctx, action, QString::number(value), QString::number(max)}); - } -} - -void ClientHandler::addTask(TaskInterface task) -{ - tasks_.push_back(task); - - auto watcher = new TaskWatcher(this); - connect(watcher, &TaskWatcher::log, this, &ClientHandler::notifyLog); - connect(watcher, &TaskWatcher::started, this, &ClientHandler::notifyStarted); - connect(watcher, &TaskWatcher::finished, this, &ClientHandler::notifyFinished); - connect(watcher, &TaskWatcher::progress, this, &ClientHandler::notifyProgress); - watcher->setTask(&task); -} - -void ClientHandler::executeTasks() -{ - if (tasks_.empty()) { - notifyFinished(true); - return; - } - - for (auto &task: tasks_) - task.start(); -} diff --git a/src/tycommander/client_handler.hpp b/src/tycommander/client_handler.hpp deleted file mode 100644 index 0ce5e1c4..00000000 --- a/src/tycommander/client_handler.hpp +++ /dev/null @@ -1,76 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef CLIENT_HANDLER_HH -#define CLIENT_HANDLER_HH - -#include - -#include -#include - -#include "session_channel.hpp" -#include "task.hpp" - -class Board; - -class ClientHandler : public QObject { - Q_OBJECT - - static const QHash commands_; - - std::unique_ptr peer_; - - QString working_directory_; - bool multi_ = false; - bool persist_ = false; - bool delegate_ = false; - QStringList filters_; - - std::vector tasks_; - - unsigned int finished_tasks_ = 0; - unsigned int error_count_ = 0; - -public: - ClientHandler(std::unique_ptr peer, QObject *parent = nullptr); - - void execute(const QStringList ¶meters); - -signals: - void closed(SessionPeer::CloseReason reason); - -private: - void setWorkingDirectory(const QStringList ¶meters); - void setOptions(const QStringList ¶meters); - void selectBoard(const QStringList &filters); - void openMainWindow(const QStringList ¶meters); - void reset(const QStringList ¶meters); - void reboot(const QStringList ¶meters); - void upload(const QStringList ¶meters); - void attach(const QStringList ¶meters); - void detach(const QStringList ¶meters); - - static std::vector makeUploadTasks( - const std::vector> &boards, - const QStringList &filenames, bool delegate); - - std::vector> selectedBoards(); - - void notifyLog(ty_log_level level, const QString &msg); - void notifyStarted(); - void notifyFinished(bool success); - void notifyProgress(const QString &action, unsigned int value, unsigned int max); - - void addTask(TaskInterface task); - void executeTasks(); -}; - -#endif diff --git a/src/tycommander/database.cc b/src/tycommander/database.cc deleted file mode 100644 index c1d81dbd..00000000 --- a/src/tycommander/database.cc +++ /dev/null @@ -1,73 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include - -#include "database.hpp" - -using namespace std; - -void SettingsDatabase::put(const QString &key, const QVariant &value) -{ - settings_->setValue(key, value); -} - -void SettingsDatabase::remove(const QString &key) -{ - settings_->remove(key); -} - -QVariant SettingsDatabase::get(const QString &key, const QVariant &default_value) const -{ - return settings_->value(key, default_value); -} - -void SettingsDatabase::clear() -{ - settings_->clear(); -} - -void DatabaseInterface::setGroup(const QString &group) -{ - group_ = group; - if (!group_.endsWith("/")) - group_ += "/"; -} - -void DatabaseInterface::put(const QString &key, const QVariant &value) -{ - if (db_) - db_->put(compositeKey(key), value); -} - -void DatabaseInterface::remove(const QString &key) -{ - if (db_) - db_->remove(compositeKey(key)); -} - -QVariant DatabaseInterface::get(const QString &key, const QVariant &default_value) const -{ - if (db_) - return db_->get(compositeKey(key), default_value); - return default_value; -} - -DatabaseInterface DatabaseInterface::subDatabase(const QString &prefix) const -{ - DatabaseInterface intf(*this); - intf.setGroup(group_ + prefix); - return intf; -} - -QString DatabaseInterface::compositeKey(const QString &key) const -{ - return group_ + key; -} diff --git a/src/tycommander/database.hpp b/src/tycommander/database.hpp deleted file mode 100644 index caf2d697..00000000 --- a/src/tycommander/database.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef DATABASE_HH -#define DATABASE_HH - -#include -#include - -class QSettings; - -class Database { -public: - virtual ~Database() {} - - virtual void put(const QString &key, const QVariant &value) = 0; - virtual void remove(const QString &key) = 0; - virtual QVariant get(const QString &key, const QVariant &default_value = QVariant()) const = 0; - - virtual void clear() = 0; -}; - -class SettingsDatabase : public Database { - QSettings *settings_; - -public: - SettingsDatabase(QSettings *settings = nullptr) - : settings_(settings) {} - - void setSettings(QSettings *settings) { settings_ = settings; } - QSettings *settings() const { return settings_; } - - void put(const QString &key, const QVariant &value) override; - void remove(const QString &key) override; - QVariant get(const QString &key, const QVariant &default_value) const override; - - void clear() override; -}; - -class DatabaseInterface { - Database *db_; - QString group_; - -public: - DatabaseInterface(Database *db = nullptr) - : db_(db) {} - - void setDatabase(Database *db) { db_ = db; } - Database *database() const { return db_; } - - bool isValid() const { return db_; } - - void setGroup(const QString &group); - QString group() const { return group_; } - - void put(const QString &key, const QVariant &value); - void remove(const QString &key); - QVariant get(const QString &key, const QVariant &default_value = QVariant()) const; - - DatabaseInterface subDatabase(const QString &prefix) const; - -private: - QString compositeKey(const QString &key) const; -}; - -#endif diff --git a/src/tycommander/descriptor_notifier.cc b/src/tycommander/descriptor_notifier.cc deleted file mode 100644 index 5ec56a07..00000000 --- a/src/tycommander/descriptor_notifier.cc +++ /dev/null @@ -1,84 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include - -#include "descriptor_notifier.hpp" - -using namespace std; - -DescriptorNotifier::DescriptorNotifier(ty_descriptor desc, QObject *parent) - : QObject(parent) -{ - addDescriptor(desc); -} - -DescriptorNotifier::DescriptorNotifier(ty_descriptor_set *set, QObject *parent) - : QObject(parent) -{ - if (set) - addDescriptorSet(set); -} - -void DescriptorNotifier::addDescriptorSet(ty_descriptor_set *set) -{ - for (unsigned int i = 0; i < set->count; i++) - addDescriptor(set->desc[i]); -} - -void DescriptorNotifier::addDescriptor(ty_descriptor desc) -{ - execute([=]() { -#ifdef _WIN32 - auto notifier = new QWinEventNotifier(desc, this); - connect(notifier, &QWinEventNotifier::activated, this, &DescriptorNotifier::activated); -#else - auto notifier = new QSocketNotifier(desc, QSocketNotifier::Read, this); - connect(notifier, &QSocketNotifier::activated, this, &DescriptorNotifier::activated); -#endif - - notifier->setEnabled(enabled_); - notifiers_.push_back(notifier); - }); -} - -void DescriptorNotifier::setEnabled(bool enable) -{ - execute([=]() { - enabled_ = enable; - for (auto notifier: notifiers_) - notifier->setEnabled(enable); - }); -} - -void DescriptorNotifier::clear() -{ - execute([=]() { - for (auto notifier: notifiers_) - delete notifier; - notifiers_.clear(); - }); -} - -void DescriptorNotifier::execute(function f) -{ - if (thread() != QThread::currentThread()) { - // See descriptor_notifier.hpp for information about std_function_void_void - QMetaObject::invokeMethod(this, "executeAsync", Qt::BlockingQueuedConnection, - Q_ARG(std_function_void_void, f)); - } else { - f(); - } -} - -void DescriptorNotifier::executeAsync(function f) -{ - f(); -} diff --git a/src/tycommander/descriptor_notifier.hpp b/src/tycommander/descriptor_notifier.hpp deleted file mode 100644 index c0c01600..00000000 --- a/src/tycommander/descriptor_notifier.hpp +++ /dev/null @@ -1,73 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef DESCRIPTOR_NOTIFIER_HH -#define DESCRIPTOR_NOTIFIER_HH - -#ifdef _WIN32 - #include -#else - #include -#endif - -#include -#include - -#include "../libty/system.h" - -class DescriptorNotifier : public QObject { - Q_OBJECT - -#ifdef _WIN32 - std::vector notifiers_; -#else - std::vector notifiers_; -#endif - - bool enabled_ = true; - -public: - DescriptorNotifier(QObject *parent = nullptr) - : QObject(parent) {} - DescriptorNotifier(ty_descriptor desc, QObject *parent = nullptr); - DescriptorNotifier(ty_descriptor_set *set, QObject *parent = nullptr); - - void addDescriptorSet(ty_descriptor_set *set); - void addDescriptor(ty_descriptor desc); - - void setDescriptorSet(ty_descriptor_set *set) - { - clear(); - addDescriptorSet(set); - } - void setDescriptor(ty_descriptor desc) - { - clear(); - addDescriptor(desc); - } - - bool isEnabled() const { return enabled_; } - -public slots: - void setEnabled(bool enable); - void clear(); - -signals: - void activated(ty_descriptor desc); - -private: - void execute(std::function f); - /* On Qt 5.2.1, QMetaObject::invokeMethod() fails on templated types - such as std::function. */ - typedef std::function std_function_void_void; - Q_INVOKABLE void executeAsync(std_function_void_void f); -}; - -#endif diff --git a/src/tycommander/enhanced_widgets.cc b/src/tycommander/enhanced_widgets.cc deleted file mode 100644 index 4cf73a75..00000000 --- a/src/tycommander/enhanced_widgets.cc +++ /dev/null @@ -1,244 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "enhanced_widgets.hpp" - -using namespace std; - -// -------------------------------------------------------- -// EnhancedGroupBox -// -------------------------------------------------------- - -void EnhancedGroupBoxStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, - QPainter *p, const QWidget *widget) const -{ - if (pe == QStyle::PE_IndicatorCheckBox) { - auto group_box = qobject_cast(widget); - if (group_box) { - auto arrow = group_box->isChecked() ? QStyle::PE_IndicatorArrowDown - : QStyle::PE_IndicatorArrowRight; - QProxyStyle::drawPrimitive(arrow, opt, p, widget); - return; - } - } - - QProxyStyle::drawPrimitive(pe, opt, p, widget); -} - -EnhancedGroupBox::EnhancedGroupBox(const QString &text, QWidget *parent) - : QGroupBox(text, parent) -{ - setStyle(&style_); - connect(this, &QGroupBox::toggled, this, &EnhancedGroupBox::changeExpanded); -} - -void EnhancedGroupBox::paintEvent(QPaintEvent *) -{ - QStylePainter paint(this); - QStyleOptionGroupBox option; - - initStyleOption(&option); - if (isCheckable() && !isChecked()) - option.subControls &= ~QStyle::SC_GroupBoxFrame; - paint.drawComplexControl(QStyle::CC_GroupBox, option); -} - -void EnhancedGroupBox::setCollapsible(bool collapsible) -{ - if (!collapsible) - setChecked(true); - setCheckable(collapsible); -} - -void EnhancedGroupBox::changeExpanded(bool checked) -{ - if (checked) { - setMaximumHeight(16777215); - } else { - QStyleOptionGroupBox option; - initStyleOption(&option); - auto label_rect = style()->subControlRect(QStyle::CC_GroupBox, &option, - QStyle::SC_GroupBoxLabel, this); - setMaximumHeight(label_rect.bottom()); - } -} - -// -------------------------------------------------------- -// EnhancedLineInput -// -------------------------------------------------------- - -EnhancedLineInput::EnhancedLineInput(QWidget *parent) - : QComboBox(parent) -{ - setFocusPolicy(Qt::StrongFocus); - setInsertPolicy(QComboBox::NoInsert); - setEditable(true); - setMaxCount(10000); - setCompleter(nullptr); - - connect(lineEdit(), &QLineEdit::returnPressed, this, &EnhancedLineInput::commit); -} - -void EnhancedLineInput::appendHistory(const QString &text) -{ - if (text.isEmpty()) - return; - if (count() && text == itemText(count() - 1)) - return; - - if (count() >= maxCount()) { - if (currentIndex() == 0) { - auto text = currentText(); - setCurrentIndex(-1); - setCurrentText(text); - } - removeItem(0); - } - addItem(text); -} - -void EnhancedLineInput::commit() -{ - auto text = currentText(); - appendHistory(text); - setCurrentIndex(-1); - emit textCommitted(text); -} - -void EnhancedLineInput::keyPressEvent(QKeyEvent *ev) -{ - switch (ev->key()) { - case Qt::Key_Up: - moveInHistory(-1); - break; - case Qt::Key_Down: - moveInHistory(1); - break; - - default: - QComboBox::keyPressEvent(ev); - break; - } -} - -void EnhancedLineInput::wheelEvent(QWheelEvent *ev) -{ - if (ev->angleDelta().y() > 0) { - moveInHistory(-1); - } else if (ev->angleDelta().y() < 0) { - moveInHistory(1); - } -} - -void EnhancedLineInput::moveInHistory(int movement) -{ - int current_idx = currentIndex(); - int new_idx = current_idx; - if (movement < 0) { - if (current_idx == -1) { - new_idx = count() + movement; - } else { - new_idx = current_idx + movement; - } - if (new_idx < 0) - new_idx = 0; - } else if (movement > 0) { - if (current_idx == -1) { - new_idx = -1; - } else { - new_idx = current_idx + movement; - if (new_idx >= count()) - new_idx = -1; - } - } - - auto text = currentText(); - setCurrentIndex(new_idx); - if (current_idx == -1) { - appendHistory(text); - } else { - setItemText(current_idx, text); - } -} - -// -------------------------------------------------------- -// EnhancedPlainText -// -------------------------------------------------------- - -EnhancedPlainText::EnhancedPlainText(const QString &text, QWidget *parent) - : QPlainTextEdit(text, parent) -{ - connect(this, &EnhancedPlainText::textChanged, this, &EnhancedPlainText::fixScrollValue); -} - -void EnhancedPlainText::showEvent(QShowEvent *e) -{ - QPlainTextEdit::showEvent(e); - - /* This is a hacky way to call QPlainTextEditPrivate::_q_adjustScrollbars() without - private headers, we need that to work around a Qt bug where the scrollbar is not - updated correctly on text insertions while the widget is hidden. */ - QResizeEvent re(QSize(1, 1), QSize(1, 1)); - resizeEvent(&re); -} - -void EnhancedPlainText::scrollContentsBy(int dx, int dy) -{ - QPlainTextEdit::scrollContentsBy(dx, dy); - updateScrollInfo(); -} - -void EnhancedPlainText::keyPressEvent(QKeyEvent *e) -{ - QPlainTextEdit::keyPressEvent(e); - /* For some reason, neither scrollContentsBy() nor the scrollbar signals are triggered - by keyboard navigation. Is that normal, or a Qt bug? */ - updateScrollInfo(); -} - -void EnhancedPlainText::fixScrollValue() -{ - auto vbar = verticalScrollBar(); - - if (monitor_autoscroll_) { - vbar->setValue(vbar->maximum()); - } else { - /* QPlainTextEdit does a good job of keeping the text steady when we append to the - end... until maximumBlockCount kicks in. We use our own cursor monitor_cursor_, - updated in scrollContentsBy to fix that. */ - vbar->setValue(monitor_cursor_.block().firstLineNumber()); - } -} - -void EnhancedPlainText::updateScrollInfo() -{ - auto vbar = verticalScrollBar(); - auto cursor = cursorForPosition(QPoint(0, 0)); - - monitor_autoscroll_ = vbar->value() >= vbar->maximum() - 1; - - /* Some functions, such as QTextDocument::clear(), really don't like when you delete - a cursor while they run because they keep a copy of the list of cursors which - is not updated by the cursor destructor. */ - if (!monitor_cursor_.isNull() && monitor_cursor_.document() == document()) { - monitor_cursor_.setPosition(cursor.position()); - } else { - monitor_cursor_ = cursor; - } -} diff --git a/src/tycommander/enhanced_widgets.hpp b/src/tycommander/enhanced_widgets.hpp deleted file mode 100644 index c2c42941..00000000 --- a/src/tycommander/enhanced_widgets.hpp +++ /dev/null @@ -1,116 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef ENHANCED_WIDGETS_HH -#define ENHANCED_WIDGETS_HH - -#include -#include -#include -#include -#include - -// -------------------------------------------------------- -// EnhancedGroupBox -// -------------------------------------------------------- - -class EnhancedGroupBoxStyle: public QProxyStyle { -public: - EnhancedGroupBoxStyle(QStyle* style = nullptr) - : QProxyStyle(style) {} - EnhancedGroupBoxStyle(const QString &key) - : QProxyStyle(key) {} - - void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, - const QWidget *widget = nullptr) const override; -}; - -class EnhancedGroupBox: public QGroupBox { - Q_OBJECT - - EnhancedGroupBoxStyle style_; - -public: - EnhancedGroupBox(QWidget *parent = nullptr) - : EnhancedGroupBox(QString(), parent) {} - EnhancedGroupBox(const QString &text, QWidget *parent = nullptr); - - void paintEvent(QPaintEvent *) override; - - bool isCollapsible() const { return QGroupBox::isCheckable(); } - bool isExpanded() const { return isChecked(); } - -public slots: - void setCollapsible(bool collapsible); - void setExpanded(bool expand) { setChecked(expand); } - void expand() { setExpanded(true); } - void collapse() { setExpanded(false); } - -private: - using QGroupBox::setCheckable; - using QGroupBox::isCheckable; - -private slots: - void changeExpanded(bool expand); -}; - -// -------------------------------------------------------- -// EnhancedLineEdit -// -------------------------------------------------------- - -class EnhancedLineInput: public QComboBox { - Q_OBJECT - -public: - EnhancedLineInput(QWidget *parent = nullptr); - -public slots: - void appendHistory(const QString &text); - void commit(); - -signals: - void textCommitted(const QString &text); - -protected: - void keyPressEvent(QKeyEvent *ev) override; - void wheelEvent(QWheelEvent *ev) override; - -private: - void moveInHistory(int movement); -}; - -// -------------------------------------------------------- -// EnhancedPlainText -// -------------------------------------------------------- - -class EnhancedPlainText: public QPlainTextEdit { - Q_OBJECT - - bool monitor_autoscroll_ = true; - QTextCursor monitor_cursor_; - -public: - EnhancedPlainText(QWidget *parent = nullptr) - : EnhancedPlainText(QString(), parent) {} - EnhancedPlainText(const QString &text, QWidget *parent = nullptr); - -protected: - void showEvent(QShowEvent *e) override; - void scrollContentsBy(int dx, int dy) override; - void keyPressEvent(QKeyEvent *e) override; - -private slots: - void fixScrollValue(); - -private: - void updateScrollInfo(); -}; - -#endif diff --git a/src/tycommander/firmware.cc b/src/tycommander/firmware.cc deleted file mode 100644 index f64922bb..00000000 --- a/src/tycommander/firmware.cc +++ /dev/null @@ -1,36 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include "firmware.hpp" - -using namespace std; - -Firmware::~Firmware() -{ - ty_firmware_unref(fw_); -} - -shared_ptr Firmware::load(const QString &filename) -{ - // Work around the private constructor for make_shared() - struct FirmwareSharedEnabler : public Firmware { - FirmwareSharedEnabler(ty_firmware *fw) - : Firmware(fw) {} - }; - - ty_firmware *fw; - int r; - - r = ty_firmware_load_file(filename.toLocal8Bit().constData(), nullptr, nullptr, &fw); - if (r < 0) - return nullptr; - - return make_shared(fw); -} diff --git a/src/tycommander/firmware.hpp b/src/tycommander/firmware.hpp deleted file mode 100644 index 8dff787a..00000000 --- a/src/tycommander/firmware.hpp +++ /dev/null @@ -1,43 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef FIRMWARE_HH -#define FIRMWARE_HH - -#include - -#include - -#include "../libty/firmware.h" - -class Firmware : public std::enable_shared_from_this { - ty_firmware *fw_ = nullptr; - -public: - ~Firmware(); - - Firmware& operator=(const Firmware &other) = delete; - Firmware(const Firmware &other) = delete; - Firmware& operator=(const Firmware &&other) = delete; - Firmware(const Firmware &&other) = delete; - - static std::shared_ptr load(const QString &filename); - - QString filename() const { return fw_->filename; } - QString name() const { return fw_->name; } - - ty_firmware *firmware() const { return fw_; } - -private: - Firmware(ty_firmware *fw) - : fw_(fw) {} -}; - -#endif diff --git a/src/tycommander/log_dialog.cc b/src/tycommander/log_dialog.cc deleted file mode 100644 index 38dd277d..00000000 --- a/src/tycommander/log_dialog.cc +++ /dev/null @@ -1,74 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include - -#include - -#include "log_dialog.hpp" - -using namespace std; - -LogDialog::LogDialog(QWidget *parent, Qt::WindowFlags f) - : QDialog(parent, f) -{ - setupUi(this); - setWindowTitle(tr("%1 Log").arg(QApplication::applicationName())); - - connect(closeButton, &QPushButton::clicked, this, &LogDialog::close); - connect(clearButton, &QPushButton::clicked, this, &LogDialog::clearAll); - connect(errorLogText, &QPlainTextEdit::customContextMenuRequested, this, - &LogDialog::showLogContextMenu); - connect(fullLogText, &QPlainTextEdit::customContextMenuRequested, this, - &LogDialog::showLogContextMenu); -} - -void LogDialog::appendError(const QString &msg, const QString &ctx) -{ - if (!ctx.isEmpty()) { - auto full_msg = QString("[%1] %2").arg(ctx, msg); - errorLogText->appendPlainText(full_msg); - fullLogText->appendPlainText(full_msg); - } else { - errorLogText->appendPlainText(msg); - fullLogText->appendPlainText(msg); - } -} - -void LogDialog::appendDebug(const QString &msg, const QString &ctx) -{ - if (!ctx.isEmpty()) { - auto full_msg = QString("[%1] %2").arg(ctx, msg); - fullLogText->appendPlainText(full_msg); - } else { - fullLogText->appendPlainText(msg); - } -} - -void LogDialog::clearAll() -{ - errorLogText->clear(); - fullLogText->clear(); -} - -void LogDialog::keyPressEvent(QKeyEvent *e) -{ - if (!e->modifiers() && e->key() == Qt::Key_Escape) - close(); -} - -void LogDialog::showLogContextMenu(const QPoint &pos) -{ - auto edit = qobject_cast(sender()); - - unique_ptr menu(edit->createStandardContextMenu()); - menu->addAction(tr("Clear"), edit, SLOT(clear())); - menu->exec(edit->viewport()->mapToGlobal(pos)); -} diff --git a/src/tycommander/log_dialog.hpp b/src/tycommander/log_dialog.hpp deleted file mode 100644 index ffa3842e..00000000 --- a/src/tycommander/log_dialog.hpp +++ /dev/null @@ -1,34 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef LOG_DIALOG_HH -#define LOG_DIALOG_HH - -#include "ui_log_dialog.h" - -class LogDialog: public QDialog, private Ui::LogDialog { - Q_OBJECT - -public: - LogDialog(QWidget *parent = nullptr, Qt::WindowFlags f = {}); - -public slots: - void appendError(const QString &msg, const QString &ctx); - void appendDebug(const QString &msg, const QString &ctx); - void clearAll(); - -private: - void keyPressEvent(QKeyEvent *e); - -private slots: - void showLogContextMenu(const QPoint &pos); -}; - -#endif diff --git a/src/tycommander/log_dialog.ui b/src/tycommander/log_dialog.ui deleted file mode 100644 index 6e0c96b5..00000000 --- a/src/tycommander/log_dialog.ui +++ /dev/null @@ -1,105 +0,0 @@ - - - LogDialog - - - - 0 - 0 - 460 - 220 - - - - TyCommander Log - - - - - - 0 - - - - &Errors - - - - - - Qt::CustomContextMenu - - - QPlainTextEdit::NoWrap - - - true - - - 1000 - - - - - - - - &Full Log - - - - - - Qt::CustomContextMenu - - - QPlainTextEdit::NoWrap - - - true - - - 1000 - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Clear All - - - - - - - &Close - - - - - - - - - - diff --git a/src/tycommander/main.cc b/src/tycommander/main.cc deleted file mode 100644 index e59b599b..00000000 --- a/src/tycommander/main.cc +++ /dev/null @@ -1,161 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifdef _WIN32 - #define WIN32_LEAN_AND_MEAN - #include - #include - #include - #include - #include - #include - #include -#endif - -#include "../libhs/common.h" -#include "../libty/class.h" -#include "tycommander.hpp" -#include "board.hpp" - -#ifdef QT_STATIC - #include - #if defined(_WIN32) - Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) - Q_IMPORT_PLUGIN(QWindowsVistaStylePlugin) - #elif defined(__APPLE__) - Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin) - #endif -#endif - -using namespace std; - -#ifdef _WIN32 - -static void make_minidump(EXCEPTION_POINTERS *ex) -{ - auto MiniDumpWriteDump_ = - reinterpret_cast(GetProcAddress(LoadLibrary("dbghelp"), - "MiniDumpWriteDump")); - auto SHGetFolderPath_ = - reinterpret_cast(GetProcAddress(LoadLibrary("shell32"), - "SHGetFolderPathA")); - if (!MiniDumpWriteDump_ || !SHGetFolderPath_) - return; - - char dmp_path[MAX_PATH + 256]; - { - // Crash dump directory - if (SHGetFolderPath_(0, CSIDL_LOCAL_APPDATA, nullptr, SHGFP_TYPE_CURRENT, dmp_path) != S_OK) - return; - strcat(dmp_path, "\\CrashDumps"); - CreateDirectory(dmp_path, nullptr); - - // Executable name - char module_path[MAX_PATH]; - DWORD module_len = GetModuleFileNameA(GetModuleHandle(nullptr), module_path, - sizeof(module_path)); - if (!module_len) - return; - char *module_name = module_path + module_len; - while (module_name > module_path && module_name[-1] != '\\' && module_name[-1] != '/') - module_name--; - - SYSTEMTIME st; - GetSystemTime(&st); - - size_t path_len = strlen(dmp_path); - snprintf(dmp_path + path_len, sizeof(dmp_path) - path_len, - "\\%s_%4d%02d%02d_%02d%02d%02d.dmp", - module_name, st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); - } - - HANDLE h = CreateFile(dmp_path, GENERIC_WRITE, FILE_SHARE_READ, 0, CREATE_ALWAYS, - FILE_ATTRIBUTE_NORMAL, 0); - if(h == INVALID_HANDLE_VALUE) - return; - - MINIDUMP_EXCEPTION_INFORMATION ex_info; - ex_info.ThreadId = GetCurrentThreadId(); - ex_info.ExceptionPointers = ex; - ex_info.ClientPointers = FALSE; - - MiniDumpWriteDump_(GetCurrentProcess(), GetCurrentProcessId(), h, - MINIDUMP_TYPE(MiniDumpWithIndirectlyReferencedMemory | MiniDumpScanMemory), - ex ? &ex_info : nullptr, nullptr, nullptr); - - CloseHandle(h); -} - -static LONG CALLBACK unhandled_exception_handler(EXCEPTION_POINTERS *ex) -{ - make_minidump(ex); - return EXCEPTION_CONTINUE_SEARCH; -} - -static bool reopen_stream(FILE *fp, const QString &path, const char *mode) -{ - fp = freopen(path.toLocal8Bit().constData(), mode, fp); - if (!fp) - return false; - setvbuf(fp, NULL, _IONBF, 0); - - return true; -} - -static bool open_tycommanderc_bridge() -{ - auto parts = QString(getenv("_TYCOMMANDERC_PIPES")).split(':'); - if (parts.count() != 3) - return false; - _putenv("_TYCOMMANDERC_PIPES="); - -#define REOPEN_STREAM(fp, path, mode) \ - if (!reopen_stream((fp), (path), (mode))) \ - return false; - - REOPEN_STREAM(stdin, parts[0], "r"); - REOPEN_STREAM(stdout, parts[1], "w"); - REOPEN_STREAM(stderr, parts[2], "w"); - -#undef REOPEN_STREAM - - return true; -} - -#endif - -int main(int argc, char *argv[]) -{ -#ifdef _WIN32 - SetUnhandledExceptionFilter(unhandled_exception_handler); -#endif - - qRegisterMetaType("ty_log_level"); - qRegisterMetaType>("std::shared_ptr"); - qRegisterMetaType("ty_descriptor"); - qRegisterMetaType("SessionPeer::CloseReason"); - qRegisterMetaType("uint64_t"); - qRegisterMetaType("RtcMode"); - - QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - - TyCommander app(argc, argv); -#ifdef _WIN32 - app.setClientConsole(open_tycommanderc_bridge()); -#else - app.setClientConsole(ty_standard_get_modes(TY_STREAM_OUTPUT) != TY_DESCRIPTOR_MODE_DEVICE); -#endif - - hs_log_set_handler(ty_libhs_log_handler, NULL); - if (ty_models_load_patch(nullptr) == TY_ERROR_MEMORY) - return 1; - - return app.exec(); -} diff --git a/src/tycommander/main_window.cc b/src/tycommander/main_window.cc deleted file mode 100644 index 9432a447..00000000 --- a/src/tycommander/main_window.cc +++ /dev/null @@ -1,1148 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include -#include -#include -#include -#include - -#include "about_dialog.hpp" -#include "arduino_dialog.hpp" -#include "board.hpp" -#include "board_widget.hpp" -#include "main_window.hpp" -#include "monitor.hpp" -#include "preferences_dialog.hpp" -#include "tycommander.hpp" - -using namespace std; - -QStringList MainWindow::codecs_; -QHash MainWindow::codec_indexes_; - -MainWindow::MainWindow(QWidget *parent) - : QMainWindow(parent), monitor_(tyCommander->monitor()) -{ - setupUi(this); - setWindowTitle(QApplication::applicationName()); - -#ifdef __APPLE__ - /* Workaround for Qt OSX bug https://bugreports.qt.io/browse/QTBUG-34160 - The actions in menuRecentFirmwares are copied to menuRecentFirmwares2 - in updateFirmwareMenus(). */ - menuRecentFirmwares2 = new QMenu(menuRecentFirmwares->title(), this); - menuRecentFirmwares3 = new QMenu(menuRecentFirmwares->title(), this); -#endif - - menuUpload = new QMenu(this); - menuUpload->addAction(actionUploadNew); - menuUpload->addAction(actionDropFirmware); -#ifdef __APPLE__ - menuUpload->addMenu(menuRecentFirmwares2); -#else - menuUpload->addMenu(menuRecentFirmwares); -#endif - - auto uploadButton = qobject_cast(toolBar->widgetForAction(actionUpload)); - if (uploadButton) { - uploadButton->setMenu(menuUpload); - uploadButton->setPopupMode(QToolButton::MenuButtonPopup); - } - - menuBrowseFirmware = new QMenu(this); - - menuBoardContext = new QMenu(this); - menuBoardContext->addAction(actionUpload); - menuBoardContext->addAction(actionUploadNew); - menuBoardContext->addAction(actionDropFirmware); -#ifdef __APPLE__ - menuBoardContext->addMenu(menuRecentFirmwares3); -#else - menuBoardContext->addMenu(menuRecentFirmwares); -#endif - menuBoardContext->addSeparator(); - menuBoardContext->addAction(actionReset); - menuBoardContext->addAction(actionReboot); - menuBoardContext->addSeparator(); - menuBoardContext->addAction(actionEnableSerial); - menuBoardContext->addAction(actionSendFile); - menuBoardContext->addAction(actionClearSerial); - menuBoardContext->addSeparator(); - menuBoardContext->addAction(actionRenameBoard); - - menuEnableSerial = new QMenu(this); - menuEnableSerial->addAction(actionSendFile); - menuEnableSerial->addAction(actionClearSerial); - - auto serialButton = qobject_cast(toolBar->widgetForAction(actionEnableSerial)); - if (serialButton) { - serialButton->setMenu(menuEnableSerial); - serialButton->setPopupMode(QToolButton::MenuButtonPopup); - } - - /* Only stretch the tab widget when resizing the window, I can't manage to replicate - this with the Designer alone. */ - splitter->setStretchFactor(0, 0); - splitter->setStretchFactor(1, 1); - splitter->setCollapsible(1, false); - connect(splitter, &QSplitter::splitterMoved, this, [=](int pos) { - bool collapsed = !pos; - if (collapsed != compact_mode_) - setCompactMode(collapsed); - }); - splitter->setSizes({1, 1}); - - // We want all action shortcuts to remain available when the menu bar is hidden - addActions(menubar->actions()); - - // Actions menu - connect(actionUpload, &QAction::triggered, this, &MainWindow::uploadToSelection); - connect(actionUploadNew, &QAction::triggered, this, &MainWindow::uploadNewToSelection); - connect(actionDropFirmware, &QAction::triggered, this, - &MainWindow::dropAssociationForSelection); - connect(actionReset, &QAction::triggered, this, &MainWindow::resetSelection); - connect(actionReboot, &QAction::triggered, this, &MainWindow::rebootSelection); - connect(actionQuit, &QAction::triggered, tyCommander, &TyCommander::quit); - - // Serial menu - connect(actionEnableSerial, &QAction::triggered, this, - &MainWindow::setEnableSerialForSelection); - connect(actionSendFile, &QAction::triggered, this, &MainWindow::makeSendFileCommand); - connect(actionClearSerial, &QAction::triggered, this, &MainWindow::clearSerialDocument); - - // View menu - connect(actionNewWindow, &QAction::triggered, this, &MainWindow::openCloneWindow); - connect(actionCompactMode, &QAction::triggered, this, &MainWindow::setCompactMode); - connect(actionShowAppLog, &QAction::triggered, tyCommander, &TyCommander::showLogWindow); - - // Tools menu - connect(actionArduinoTool, &QAction::triggered, this, &MainWindow::openArduinoTool); - connect(actionResetApp, &QAction::triggered, tyCommander, &TyCommander::resetMonitor); - connect(actionResetSettingsApp, &QAction::triggered, this, - [=]() { tyCommander->clearSettingsAndResetWithConfirmation(this); }); - connect(actionPreferences, &QAction::triggered, this, &MainWindow::openPreferences); - - // About menu - if (TY_CONFIG_URL_WEBSITE[0]) { - connect(actionWebsite, &QAction::triggered, &AboutDialog::openWebsite); - } else { - actionWebsite->setVisible(false); - } - if (TY_CONFIG_URL_BUGS[0]) { - connect(actionReportBug, &QAction::triggered, &AboutDialog::openBugReports); - } else { - actionReportBug->setVisible(false); - } - - connect(actionAbout, &QAction::triggered, this, &MainWindow::openAboutDialog); - - // Ctrl+Tab board nagivation - connect(new QShortcut(QKeySequence::NextChild, this), - &QShortcut::activated, this, &MainWindow::selectNextBoard); - /* Work around broken QKeySequence::PreviousChild, see (old) Qt bug report at - https://bugreports.qt.io/browse/QTBUG-15746 */ - connect(new QShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_Tab, this), - &QShortcut::activated, this, &MainWindow::selectPreviousBoard); -#ifdef _WIN32 - connect(new QShortcut(Qt::CTRL | Qt::SHIFT | Qt::Key_F6, this), - &QShortcut::activated, this, &MainWindow::selectPreviousBoard); -#endif -#ifdef __APPLE__ - connect(new QShortcut(Qt::CTRL | Qt::Key_BraceLeft, this), - &QShortcut::activated, this, &MainWindow::selectPreviousBoard); -#endif - - // Board list - boardList->setModel(monitor_); - boardList->setItemDelegate(new BoardItemDelegate(monitor_)); - connect(boardList, &QListView::customContextMenuRequested, this, - &MainWindow::openBoardListContextMenu); - connect(boardList->selectionModel(), &QItemSelectionModel::selectionChanged, this, - &MainWindow::selectionChanged); - /* Select board on insertion and removal if nothing is selected. Use Qt::QueuedConnection - for removals to make sure we get the insertion before the removal when a board is - replaced by the user. */ - connect(monitor_, &Monitor::rowsInserted, this, &MainWindow::fixEmptySelection); - connect(monitor_, &Monitor::rowsRemoved, this, &MainWindow::fixEmptySelection, - Qt::QueuedConnection); - /* serialEdit->setFocus() is not called in selectionChanged() if the board list - has the focus to prevent stealing keyboard focus. We need to do it here. */ - connect(boardList, &QListView::clicked, this, &MainWindow::autoFocusBoardWidgets); - // The blue selection frame displayed on OSX looks awful - boardList->setAttribute(Qt::WA_MacShowFocusRect, false); - connect(actionRenameBoard, &QAction::triggered, this, [=]() { - boardList->edit(boardList->currentIndex()); - }); - - // Board dropdown (compact mode) - boardComboBox = new QComboBox(this); - setTabOrder(boardList, boardComboBox); - boardComboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); - boardComboBox->setMinimumContentsLength(12); - boardComboBox->setFocusPolicy(Qt::TabFocus); - boardComboBox->setModel(monitor_); - boardComboBox->setVisible(false); - auto spacer = new QWidget(); - spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - toolBar->addWidget(spacer); -#ifdef __APPLE__ - actionBoardComboBox = nullptr; -#else - actionBoardComboBox = toolBar->addWidget(boardComboBox); -#endif - connect(boardComboBox, static_cast(&QComboBox::activated), - this, [=](int index) { boardList->setCurrentIndex(monitor_->index(index)); }); - - // Task progress bar (compact mode) - statusProgressBar = new QProgressBar(); - statusProgressBar->setTextVisible(false); - statusProgressBar->setFixedWidth(150); - statusbar->addPermanentWidget(statusProgressBar); - statusProgressBar->hide(); - - // Serial tab - connect(tabWidget, &QTabWidget::currentChanged, this, [=]() { - // Focus the serial input widget if we can, but don't be a jerk to keyboard users - if (!tabWidget->hasFocus()) - autoFocusBoardWidgets(); - }); - serialText->setWordWrapMode(QTextOption::NoWrap); - connect(serialText, &QPlainTextEdit::customContextMenuRequested, this, - &MainWindow::openSerialContextMenu); - connect(serialEdit, &EnhancedLineInput::textCommitted, this, &MainWindow::sendToSelectedBoards); - connect(sendButton, &QToolButton::clicked, serialEdit, &EnhancedLineInput::commit); - serialEdit->lineEdit()->setPlaceholderText(tr("Send data...")); - - auto add_eol_action = [=](const QString &title, const QString &eol) { - auto action = new QAction(title, actionSerialEOLGroup); - action->setCheckable(true); - action->setProperty("EOL", eol); - return action; - }; - - menuSerialOptions = new QMenu(this); - menuSerialOptions->addAction(actionSendFile); - menuSerialOptions->addSeparator(); - actionSerialEOLGroup = new QActionGroup(this); - add_eol_action(tr("No line ending"), ""); - add_eol_action(tr("Newline (LF)"), "\n")->setChecked(true); - add_eol_action(tr("Carriage return (CR)"), "\r"); - add_eol_action(tr("Both (CRLF)"), "\r\n"); - menuSerialOptions->addActions(actionSerialEOLGroup->actions()); - menuSerialOptions->addSeparator(); - actionSerialEcho = menuSerialOptions->addAction(tr("Echo")); - actionSerialEcho->setCheckable(true); - sendButton->setMenu(menuSerialOptions); - - // Settings tab - connect(firmwarePath, &QLineEdit::editingFinished, this, &MainWindow::validateAndSetFirmwarePath); - connect(firmwareBrowseButton, &QToolButton::clicked, this, &MainWindow::browseForFirmware); - firmwareBrowseButton->setMenu(menuBrowseFirmware); - connect(resetAfterCheck, &QCheckBox::clicked, this, &MainWindow::setResetAfterForSelection); - connect(rtcComboBox, static_cast(&QComboBox::currentIndexChanged), this, [=](int idx) { - RtcMode mode = (RtcMode)idx; - setRtcModeForSelection(mode); - }); - connect(rateComboBox, &QComboBox::currentTextChanged, this, [=](const QString &str) { - unsigned int rate = str.toUInt(); - setSerialRateForSelection(rate); - }); - connect(codecComboBox, &QComboBox::currentTextChanged, this, &MainWindow::setSerialCodecForSelection); - connect(clearOnResetCheck, &QCheckBox::clicked, this, &MainWindow::setClearOnResetForSelection); - connect(scrollBackLimitSpin, static_cast(&QSpinBox::valueChanged), - this, &MainWindow::setScrollBackLimitForSelection); - connect(logSerialCheck, &QCheckBox::clicked, this, &MainWindow::setLogSerialForSelection); - connect(serialLogSizeSpin, static_cast(&QSpinBox::valueChanged), - this, &MainWindow::setSerialLogSizeForSelection); - - initCodecList(); - for (auto codec: codecs_) - codecComboBox->addItem(codec); - - // Toggle collapsed option groups in Compact Mode - for (auto &object: optionsTab->children()) { - auto group_box = qobject_cast(object); - if (group_box) { - if (!lastOpenOptionBox) - lastOpenOptionBox = group_box; - - /* We set StrongFocus in the Designer to put them in the correct tab position. The - policy is set to StrongFocus when the group is made collapsible in Compact Mode. */ - group_box->setFocusPolicy(Qt::NoFocus); - connect(group_box, &EnhancedGroupBox::clicked, this, [=](bool checked) { - if (checked && group_box != lastOpenOptionBox) { - lastOpenOptionBox->collapse(); - lastOpenOptionBox = group_box; - } - }); - } - } - - // TyCommander errors - connect(tyCommander, &TyCommander::globalError, this, &MainWindow::showErrorMessage); - - if (monitor_->rowCount()) { - boardList->setCurrentIndex(monitor_->index(0, 0)); - } else { - disableBoardWidgets(); - refreshActions(); - updateFirmwareMenus(); - } -} - -bool MainWindow::event(QEvent *ev) -{ - if (ev->type() == QEvent::StatusTip) - return true; - - return QMainWindow::event(ev); -} - -void MainWindow::showErrorMessage(const QString &msg) -{ - statusBar()->showMessage(msg, TY_SHOW_ERROR_TIMEOUT); -} - -void MainWindow::selectNextBoard() -{ - if (!monitor_->rowCount()) - return; - - auto indexes = boardList->selectionModel()->selectedIndexes(); - std::sort(indexes.begin(), indexes.end()); - - QModelIndex new_index; - if (indexes.isEmpty()) { - new_index = monitor_->index(0, 0); - } else if (indexes.count() == 1) { - if (monitor_->rowCount() == 1) - return; - - auto row = indexes.first().row(); - if (row + 1 < monitor_->rowCount()) { - new_index = monitor_->index(row + 1, 0); - } else { - new_index = monitor_->index(0, 0); - } - } else { - new_index = indexes.first(); - } - - if (new_index.isValid()) { - boardList->selectionModel()->select(new_index, QItemSelectionModel::ClearAndSelect); - autoFocusBoardWidgets(); - } -} - -void MainWindow::selectPreviousBoard() -{ - if (!monitor_->rowCount()) - return; - - auto indexes = boardList->selectionModel()->selectedIndexes(); - std::sort(indexes.begin(), indexes.end()); - - QModelIndex new_index; - if (indexes.isEmpty()) { - new_index = monitor_->index(monitor_->rowCount() - 1, 0); - } else if (indexes.count() == 1) { - if (monitor_->rowCount() == 1) - return; - - auto row = indexes.first().row(); - if (row > 0) { - new_index = monitor_->index(row - 1, 0); - } else { - new_index = monitor_->index(monitor_->rowCount() - 1, 0); - } - } else { - new_index = indexes.last(); - } - - if (new_index.isValid()) { - boardList->selectionModel()->select(new_index, QItemSelectionModel::ClearAndSelect); - autoFocusBoardWidgets(); - } -} - -void MainWindow::uploadToSelection() -{ - if (selected_boards_.empty()) - return; - - if (current_board_ && current_board_->firmware().isEmpty()) { - uploadNewToSelection(); - return; - } - - unsigned int fws_count = 0; - for (auto &board: selected_boards_) { - if (!board->secondary() && !board->firmware().isEmpty()) { - fws_count++; - board->startUpload(); - } - } - if (!fws_count) - tyCommander->reportError(tr("No board has a set firmware, try using 'Upload New Firmware'")); -} - -void MainWindow::uploadNewToSelection() -{ - if (selected_boards_.empty()) - return; - - auto filenames = QFileDialog::getOpenFileNames(this, tr("Open Firmwares"), - browseFirmwareDirectory(), - browseFirmwareFilter()); - if (filenames.isEmpty()) - return; - - vector> fws; - fws.reserve(filenames.count()); - for (auto filename: filenames) { - auto fw = Firmware::load(QDir::toNativeSeparators(filename)); - if (!fw) - continue; - - fws.push_back(fw); - } - if (fws.empty()) { - for (auto &board: selected_boards_) - board->notifyLog(TY_LOG_ERROR, ty_error_last_message()); - return; - } - - for (auto &board: selected_boards_) { - if (!board->secondary()) - board->startUpload(fws); - } -} - -void MainWindow::dropAssociationForSelection() -{ - for (auto &board: selected_boards_) - board->setFirmware(""); -} - -void MainWindow::resetSelection() -{ - QSet handled_locations; - - for (auto &board: selected_boards_) { - int count = handled_locations.count(); - handled_locations.insert(board->location()); - - if (handled_locations.count() > count) - board->startReset(); - } -} - -void MainWindow::rebootSelection() -{ - QSet handled_locations; - - for (auto &board: selected_boards_) { - int count = handled_locations.count(); - handled_locations.insert(board->location()); - - if (handled_locations.count() > count) - board->startReboot(); - } -} - -void MainWindow::sendToSelectedBoards(const QString &s) -{ - QString cmd; - QString value; - if (s.startsWith('@')) { - cmd = s.mid(1, s.indexOf(' ', 1) - 1).trimmed(); - value = s.mid(cmd.length() + 1).trimmed(); - } else { - cmd = "send"; - value = s; - } - - QString echo_str; - if (cmd == "send_file") { - echo_str = s + "\n"; - - for (auto &board: selected_boards_) - board->startSendFile(value); - } else if (cmd == "send") { - echo_str = value + - actionSerialEOLGroup->checkedAction()->property("EOL").toString(); - - for (auto &board: selected_boards_) - board->startSendSerial(echo_str); - } else { - ty_log(TY_LOG_ERROR, "Unknown command '%s' (prefix with '@send ' if your string starts with character '@')", - cmd.toUtf8().constData()); - for (auto &board: selected_boards_) - board->notifyLog(TY_LOG_ERROR, ty_error_last_message()); - return; - } - - if (actionSerialEcho->isChecked()) { - for (auto &board: selected_boards_) - board->appendFakeSerialRead(echo_str); - } -} - -void MainWindow::setCompactMode(bool enable) -{ - actionCompactMode->setChecked(enable); - - if (enable == compact_mode_) - return; - compact_mode_ = enable; - - if (enable) { - menubar->setVisible(false); - toolBar->setToolButtonStyle(Qt::ToolButtonIconOnly); - - bool focus = boardList->hasFocus(); - if (actionBoardComboBox) { - tabWidget->setTabPosition(QTabWidget::West); - actionBoardComboBox->setVisible(true); - } else { - tabWidget->setCornerWidget(boardComboBox, Qt::TopRightCorner); - boardComboBox->setVisible(true); - } - - if (current_board_ && current_board_->taskStatus() != TY_TASK_STATUS_READY) - statusProgressBar->show(); - - saved_splitter_pos_ = splitter->sizes().first(); - if (!saved_splitter_pos_) - saved_splitter_pos_ = 1; - - /* Unfortunately, even collapsed the board list still constrains the minimum - width of the splitter. This is the simplest jerk-free way I know to work - around this behaviour. */ - int list_width = boardList->minimumSize().width(); - int splitter_width = splitter->minimumSizeHint().width(); - splitter->setMinimumWidth(splitter_width - list_width); - splitter->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); - - splitter->setSizes({0, 1}); - if (focus) - boardComboBox->setFocus(Qt::OtherFocusReason); - - for (auto &object: optionsTab->children()) { - auto group_box = qobject_cast(object); - if (group_box) { - group_box->setCollapsible(true); - group_box->setExpanded(lastOpenOptionBox == group_box); - } - } - - setContextMenuPolicy(Qt::ActionsContextMenu); - } else { - menubar->setVisible(true); - toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); - - bool focus = boardComboBox->hasFocus(); - if (actionBoardComboBox) { - tabWidget->setTabPosition(QTabWidget::North); - actionBoardComboBox->setVisible(false); - } else { - boardComboBox->setVisible(false); - tabWidget->setCornerWidget(nullptr, Qt::TopRightCorner); - } - - statusProgressBar->hide(); - - /* Remove the splitter layout hack used for compact mode. */ - splitter->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - splitter->setMinimumWidth(0); - - splitter->setSizes({saved_splitter_pos_, 1}); - if (focus) - boardList->setFocus(Qt::OtherFocusReason); - - for (auto &object: optionsTab->children()) { - auto group_box = qobject_cast(object); - if (group_box) - group_box->setCollapsible(false); - } - - setContextMenuPolicy(Qt::NoContextMenu); - } -} - -void MainWindow::openCloneWindow() -{ - auto win = new MainWindow(); - win->setAttribute(Qt::WA_DeleteOnClose); - - win->resize(size()); - win->setCompactMode(compact_mode_); - win->boardList->selectionModel()->select(boardList->selectionModel()->selection(), - QItemSelectionModel::SelectCurrent); - win->tabWidget->setCurrentIndex(tabWidget->currentIndex()); - - win->show(); -} - -void MainWindow::openArduinoTool() -{ - if (!arduino_dialog_) { - arduino_dialog_ = new ArduinoDialog(this); - - /* We don't want to open multiple dialogs (for each main window anyway), hence why - we need to keep the pointer around. Unfortunately QPointer is broken with forward - declarations, so we can't use that + WA_DeleteOnClose. */ - connect(arduino_dialog_, &QDialog::finished, this, [=]() { - arduino_dialog_->deleteLater(); - arduino_dialog_ = nullptr; - }); - } - - arduino_dialog_->show(); -} - -void MainWindow::openPreferences() -{ - PreferencesDialog(this).exec(); -} - -void MainWindow::openAboutDialog() -{ - if (!about_dialog_) { - about_dialog_ = new AboutDialog(this); - - // WA_DeleteOnClose is not enough, see openArduinoTool() for details - connect(about_dialog_, &QDialog::finished, this, [=]() { - about_dialog_->deleteLater(); - about_dialog_ = nullptr; - }); - } - - about_dialog_->show(); -} - -void MainWindow::makeSendFileCommand() -{ - if (selected_boards_.empty()) - return; - - auto filename = QFileDialog::getOpenFileName(this, tr("Send File")); - if (filename.isEmpty()) - return; - - auto cmd = QString("@send_file %1").arg(filename); - serialEdit->setCurrentText(cmd); -} - -void MainWindow::clearSerialDocument() -{ - serialText->clear(); -} - -void MainWindow::initCodecList() -{ - if (!codecs_.isEmpty()) - return; - - auto mibs = QTextCodec::availableMibs(); - - codecs_.reserve(mibs.count()); - for (auto mib: mibs) - codecs_.append(QTextCodec::codecForMib(mib)->name()); - codecs_.sort(Qt::CaseInsensitive); - codecs_.removeDuplicates(); - - codec_indexes_.reserve(codecs_.count()); - int index = 0; - for (auto codec: codecs_) - codec_indexes_.insert(codec, index++); -} - -void MainWindow::fixEmptySelection(const QModelIndex &parent, int start, int end) -{ - Q_UNUSED(parent); - Q_UNUSED(end); - - if (selected_boards_.empty()) { - for (int i = start; i <= end && i < monitor_->rowCount(); i++) { - auto board = monitor_->board(i); - - if (!board->secondary()) { - boardList->setCurrentIndex(monitor_->index(i, 0)); - break; - } - } - } -} - -void MainWindow::enableBoardWidgets() -{ - infoTab->setEnabled(true); - serialTab->setEnabled(true); - actionClearSerial->setEnabled(true); - optionsTab->setEnabled(true); - actionEnableSerial->setEnabled(true); - - QTextDocument *document = ¤t_board_->serialDocument(); - serialText->setDocument(document); - serialText->moveCursor(QTextCursor::End); - serialText->verticalScrollBar()->setValue(serialText->verticalScrollBar()->maximum()); - serialText->setFont(document->defaultFont()); - serialEdit->setFont(document->defaultFont()); - - actionRenameBoard->setEnabled(true); -} - -void MainWindow::disableBoardWidgets() -{ - firmwarePath->clear(); - resetAfterCheck->setChecked(false); - clearOnResetCheck->setChecked(false); - - infoTab->setEnabled(false); - idText->clear(); - statusText->clear(); - modelText->clear(); - locationText->clear(); - serialNumberText->clear(); - descriptionText->clear(); - interfaceTree->clear(); - - serialTab->setEnabled(false); - actionClearSerial->setEnabled(false); - optionsTab->setEnabled(false); - actionEnableSerial->setEnabled(false); - updateSerialLogLink(); - ambiguousBoardLabel->setVisible(false); - - actionRenameBoard->setEnabled(false); -} - -void MainWindow::updateWindowTitle() -{ - if (current_board_) { - setWindowTitle(QString("%1 | %2 | %3").arg(current_board_->tag(), current_board_->modelName(), - QCoreApplication::applicationName())); - } else if (selected_boards_.size() > 0) { - setWindowTitle(tr("%1 boards selected | %2").arg(selected_boards_.size()) - .arg(QCoreApplication::applicationName())); - } else { - setWindowTitle(QCoreApplication::applicationName()); - } -} - -void MainWindow::updateFirmwareMenus() -{ - // Start by restoring sane menus - menuRecentFirmwares->clear(); - menuBrowseFirmware->clear(); - actionDropFirmware->setText(tr("&Drop firmware association")); - actionDropFirmware->setEnabled(!selected_boards_.empty()); - - if (current_board_) { - auto firmware = current_board_->firmware(); - if (!firmware.isEmpty()) { - actionDropFirmware->setText(tr("&Drop association to '%1'") - .arg(QFileInfo(firmware).fileName())); - } else { - actionDropFirmware->setEnabled(false); - } - - for (auto &firmware: current_board_->recentFirmwares()) { - QAction *action; - - action = menuRecentFirmwares->addAction(tr("Upload '%1'").arg(QFileInfo(firmware).fileName())); - connect(action, &QAction::triggered, current_board_, - [=]() { current_board_->startUpload(firmware); }); - action->setEnabled(actionUpload->isEnabled()); - action = menuBrowseFirmware->addAction(tr("Set to '%1'").arg(firmware)); - connect(action, &QAction::triggered, current_board_, - [=]() { current_board_->setFirmware(firmware); }); - } - } - - if (!menuRecentFirmwares->isEmpty()) { - menuRecentFirmwares->setEnabled(true); - menuBrowseFirmware->setEnabled(true); - - if (!actionClearRecentFirmwares) { - actionClearRecentFirmwares = new QAction(tr("&Clear recent firmwares"), this); - } else { - actionClearRecentFirmwares->disconnect(SIGNAL(triggered())); - } - connect(actionClearRecentFirmwares, &QAction::triggered, current_board_, - &Board::clearRecentFirmwares); - - menuRecentFirmwares->addSeparator(); - menuRecentFirmwares->addAction(actionClearRecentFirmwares); - menuBrowseFirmware->addSeparator(); - menuBrowseFirmware->addAction(actionClearRecentFirmwares); - } else { - menuRecentFirmwares->setEnabled(false); - menuBrowseFirmware->setEnabled(false); - } - -#ifdef __APPLE__ - menuRecentFirmwares2->clear(); - menuRecentFirmwares2->addActions(menuRecentFirmwares->actions()); - menuRecentFirmwares2->setEnabled(menuRecentFirmwares->isEnabled()); - - menuRecentFirmwares3->clear(); - menuRecentFirmwares3->addActions(menuRecentFirmwares->actions()); - menuRecentFirmwares3->setEnabled(menuRecentFirmwares->isEnabled()); -#endif -} - -void MainWindow::updateSerialLogLink() -{ - QString log_filename; - if (current_board_ && current_board_->serialLogSize() >= 0) - log_filename = current_board_->serialLogFilename(); - - QFont link_font = serialLogFileLabel->font(); - if (!log_filename.isEmpty()) { - QFileInfo log_info(log_filename); - serialLogDirLabel->setText(QString("%2") - .arg(QUrl::fromLocalFile(log_info.path()).toString(), - QDir::toNativeSeparators(log_info.dir().dirName() + '/'))); - serialLogDirLabel->setToolTip(QDir::toNativeSeparators(log_info.path())); - serialLogFileLabel->setText(QString("%2") - .arg(QUrl::fromLocalFile(log_filename).toString(), - log_info.fileName())); - serialLogFileLabel->setToolTip(QDir::toNativeSeparators(log_filename)); - link_font.setItalic(false); - } else { - serialLogDirLabel->setText(tr("Serial log is not available")); - serialLogDirLabel->setToolTip(""); - serialLogFileLabel->setText(""); - serialLogFileLabel->setToolTip(""); - link_font.setItalic(true); - } - serialLogDirLabel->setFont(link_font); - serialLogFileLabel->setFont(link_font); -} - -QString MainWindow::browseFirmwareDirectory() const -{ - if (selected_boards_.empty()) - return ""; - - /* If only one board is selected, point to its current firmware by default. Otherwise, just - show the directory of the first board's firmware without pre-selecting any file. */ - if (current_board_) { - return current_board_->firmware(); - } else { - return QFileInfo(selected_boards_[0]->firmware()).path(); - } -} - -QString MainWindow::browseFirmwareFilter() const -{ - QString exts; - for (unsigned int i = 0; i < ty_firmware_formats_count; i++) - exts += QString("*%1 ").arg(ty_firmware_formats[i].ext); - exts.chop(1); - - return tr("Binary Files (%1);;All Files (*)").arg(exts); -} - -void MainWindow::selectionChanged(const QItemSelection &newsel, const QItemSelection &previous) -{ - Q_UNUSED(newsel); - Q_UNUSED(previous); - - for (auto &board: selected_boards_) - board->disconnect(this); - serialText->setDocument(nullptr); - selected_boards_.clear(); - current_board_ = nullptr; - - auto indexes = boardList->selectionModel()->selectedIndexes(); - std::sort(indexes.begin(), indexes.end()); - - for (auto &idx: indexes) { - if (idx.column() == 0) - selected_boards_.push_back(Monitor::boardFromModel(monitor_, idx)); - } - - for (auto &board: selected_boards_) { - connect(board.get(), &Board::interfacesChanged, this, &MainWindow::refreshActions); - connect(board.get(), &Board::statusChanged, this, &MainWindow::refreshActions); - } - - if (selected_boards_.size() == 1) { - current_board_ = selected_boards_.front().get(); - boardComboBox->setCurrentIndex(indexes.first().row()); - - connect(current_board_, &Board::infoChanged, this, &MainWindow::refreshInfo); - connect(current_board_, &Board::settingsChanged, this, &MainWindow::refreshSettings); - connect(current_board_, &Board::interfacesChanged, this, &MainWindow::refreshInterfaces); - connect(current_board_, &Board::statusChanged, this, &MainWindow::refreshStatus); - connect(current_board_, &Board::progressChanged, this, &MainWindow::refreshProgress); - - enableBoardWidgets(); - refreshActions(); - refreshInfo(); - refreshSettings(); - refreshInterfaces(); - refreshStatus(); - - /* Focus the serial input widget if we can, but don't be a jerk. Unfortunately - this also prevents proper edit focus when the user clicks a board in the - list, we fix that by handling boardList::clicked() in the constructor. */ - if (!boardList->hasFocus() && !boardComboBox->hasFocus()) - autoFocusBoardWidgets(); - } else { - boardComboBox->setCurrentIndex(-1); - - disableBoardWidgets(); - refreshActions(); - updateWindowTitle(); - updateFirmwareMenus(); - } -} - -void MainWindow::openBoardListContextMenu(const QPoint &pos) -{ - /* Most of the time, the right click changes selection so we can just open a context - menu with the various actions in their current state. In some seemingly random cases, - a context menu can be opened on unselected items, and I don't know enough about the - subtleties of the QAbstractItemView selection system / modes to know if it is normal - or not. As a quick "fix", only show the menu in the "normal" case. */ - if (!boardList->selectionModel()->isSelected(boardList->indexAt(pos))) - return; - - menuBoardContext->exec(boardList->viewport()->mapToGlobal(pos)); -} - -void MainWindow::autoFocusBoardWidgets() -{ - if (tabWidget->currentWidget() == serialTab && serialEdit->isEnabled()) - serialEdit->setFocus(); -} - -void MainWindow::refreshActions() -{ - bool upload = false, reset = false, reboot = false, send = false; - for (auto &board: selected_boards_) { - if (board->taskStatus() == TY_TASK_STATUS_READY) { - upload |= !board->secondary() && (board->hasCapability(TY_BOARD_CAPABILITY_UPLOAD) || - board->hasCapability(TY_BOARD_CAPABILITY_REBOOT)); - reset |= board->hasCapability(TY_BOARD_CAPABILITY_RESET) || - board->hasCapability(TY_BOARD_CAPABILITY_REBOOT); - reboot |= board->hasCapability(TY_BOARD_CAPABILITY_REBOOT); - } - send |= board->serialOpen(); - } - - actionUpload->setEnabled(upload); - actionUploadNew->setEnabled(upload); - actionReset->setEnabled(reset); - actionReboot->setEnabled(reboot); - - actionSendFile->setEnabled(send); - bool focus = !serialEdit->isEnabled() && sendButton->hasFocus(); - serialEdit->setEnabled(send); - if (focus) - serialEdit->setFocus(); -} - -void MainWindow::refreshInfo() -{ - updateWindowTitle(); - - idText->setText(current_board_->id()); - modelText->setText(current_board_->modelName()); - locationText->setText(current_board_->location()); - serialNumberText->setText(current_board_->serialNumber()); - descriptionText->setText(current_board_->description()); - - updateSerialLogLink(); -} - -void MainWindow::refreshSettings() -{ - actionEnableSerial->setChecked(current_board_->enableSerial()); - serialEdit->setEnabled(current_board_->serialOpen()); - - firmwarePath->setText(current_board_->firmware()); - resetAfterCheck->setChecked(current_board_->resetAfter()); - rtcComboBox->setEnabled(current_board_->hasCapability(TY_BOARD_CAPABILITY_RTC)); - rtcComboBox->blockSignals(true); - rtcComboBox->setCurrentIndex((int)current_board_->rtcMode()); - rtcComboBox->blockSignals(false); - rateComboBox->blockSignals(true); - rateComboBox->setCurrentText(QString::number(current_board_->serialRate())); - rateComboBox->blockSignals(false); - codecComboBox->blockSignals(true); - codecComboBox->setCurrentIndex(codec_indexes_.value(current_board_->serialCodecName(), 0)); - codecComboBox->blockSignals(false); - clearOnResetCheck->setChecked(current_board_->clearOnReset()); - scrollBackLimitSpin->blockSignals(true); - scrollBackLimitSpin->setValue(current_board_->scrollBackLimit()); - scrollBackLimitSpin->blockSignals(false); - updateSerialLogLink(); - serialLogSizeSpin->blockSignals(true); - if (current_board_->serialLogSize() >= 0) { - logSerialCheck->setChecked(true); - serialLogSizeSpin->setEnabled(true); - serialLogSizeSpin->setValue(static_cast(current_board_->serialLogSize() / 1000)); - } else { - logSerialCheck->setChecked(false); - serialLogSizeSpin->setEnabled(false); - } - serialLogSizeSpin->blockSignals(false); - - updateFirmwareMenus(); -} - -void MainWindow::refreshInterfaces() -{ - interfaceTree->clear(); - for (auto &iface: current_board_->interfaces()) { - auto item = new QTreeWidgetItem(); - item->setText(0, iface.name); - item->setText(1, iface.path); - - auto tooltip = tr("%1\n+ Location: %2\n+ Interface Number: %3\n+ Capabilities: %4") - .arg(iface.name).arg(iface.path).arg(iface.number) - .arg(Board::makeCapabilityList(iface.capabilities).join(", ")); - item->setToolTip(0, tooltip); - item->setToolTip(1, tooltip); - - interfaceTree->addTopLevelItem(item); - } - - ambiguousBoardLabel->setVisible(!current_board_->hasCapability(TY_BOARD_CAPABILITY_UNIQUE)); -} - -void MainWindow::refreshStatus() -{ - statusText->setText(current_board_->statusText()); - - if (compact_mode_ && current_board_->taskStatus() != TY_TASK_STATUS_READY) { - // Set both to 0 to show busy indicator - statusProgressBar->setValue(0); - statusProgressBar->setMaximum(0); - statusProgressBar->show(); - } else { - statusProgressBar->hide(); - } - - rateComboBox->setEnabled(current_board_->serialIsSerial()); -} - -void MainWindow::refreshProgress() -{ - auto task = current_board_->task(); - statusProgressBar->setMaximum(task.progressMaximum()); - statusProgressBar->setValue(task.progress()); -} - -void MainWindow::openSerialContextMenu(const QPoint &pos) -{ - unique_ptr menu(serialText->createStandardContextMenu()); - menu->addAction(actionClearSerial); - menu->exec(serialText->viewport()->mapToGlobal(pos)); -} - -void MainWindow::validateAndSetFirmwarePath() -{ - if (selected_boards_.empty()) - return; - - QString filename; - if (!firmwarePath->text().isEmpty()) { - filename = QFileInfo(firmwarePath->text()).canonicalFilePath(); - if (filename.isEmpty()) { - tyCommander->reportError(tr("Path '%1' does not exist").arg(firmwarePath->text())); - return; - } - filename = QDir::toNativeSeparators(filename); - } - - for (auto &board: selected_boards_) - board->setFirmware(filename); -} - -void MainWindow::browseForFirmware() -{ - if (selected_boards_.empty()) - return; - - auto filename = QFileDialog::getOpenFileName(this, tr("Open Firmware"), - browseFirmwareDirectory(), - browseFirmwareFilter()); - if (filename.isEmpty()) - return; - filename = QDir::toNativeSeparators(filename); - - for (auto &board: selected_boards_) - board->setFirmware(filename); -} - -void MainWindow::setResetAfterForSelection(bool reset_after) -{ - for (auto &board: selected_boards_) - board->setResetAfter(reset_after); -} - -void MainWindow::setSerialRateForSelection(unsigned int rate) -{ - for (auto &board: selected_boards_) - board->setSerialRate(rate); -} - -void MainWindow::setSerialCodecForSelection(const QString &codec_name) -{ - for (auto &board: selected_boards_) - board->setSerialCodecName(codec_name.toUtf8()); -} - -void MainWindow::setClearOnResetForSelection(bool clear_on_reset) -{ - for (auto &board: selected_boards_) - board->setClearOnReset(clear_on_reset); -} - -void MainWindow::setScrollBackLimitForSelection(int limit) -{ - for (auto &board: selected_boards_) - board->setScrollBackLimit(limit); -} - -void MainWindow::setEnableSerialForSelection(bool enable) -{ - for (auto &board: selected_boards_) - board->setEnableSerial(enable); -} - -void MainWindow::setLogSerialForSelection(bool enable) -{ - int size = enable ? serialLogSizeSpin->value() : -1; - - for (auto &board: selected_boards_) - board->setSerialLogSize(size * 1000); -} - -void MainWindow::setSerialLogSizeForSelection(int size) -{ - for (auto &board: selected_boards_) - board->setSerialLogSize(size * 1000); -} - -void MainWindow::setRtcModeForSelection(RtcMode mode) -{ - for (auto &board: selected_boards_) - board->setRtcMode(mode); -} diff --git a/src/tycommander/main_window.hpp b/src/tycommander/main_window.hpp deleted file mode 100644 index 4dbe6303..00000000 --- a/src/tycommander/main_window.hpp +++ /dev/null @@ -1,141 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef MAIN_WINDOW_HH -#define MAIN_WINDOW_HH - -#include -#include -#include - -#include -#include - -#include "ui_main_window.h" - -class AboutDialog; -class ArduinoDialog; -class Board; -class Monitor; -enum RtcMode : int; - -class MainWindow : public QMainWindow, private Ui::MainWindow { - Q_OBJECT - - static QStringList codecs_; - static QHash codec_indexes_; - - QMenu *menuUpload; - QMenu *menuBrowseFirmware; - QMenu *menuBoardContext; - QMenu *menuEnableSerial; - QAction *actionClearRecentFirmwares = nullptr; - -#ifdef __APPLE__ - // See MainWindow::MainWindow() in main_window.cc for more information about that - QMenu *menuRecentFirmwares2; - QMenu *menuRecentFirmwares3; -#endif - - QMenu *menuSerialOptions; - QAction *actionSerialEcho; - QActionGroup *actionSerialEOLGroup; - - bool compact_mode_ = false; - QComboBox *boardComboBox; - // We need to keep this around to show/hide the board QComboBox - QAction *actionBoardComboBox; - QProgressBar *statusProgressBar; - EnhancedGroupBox *lastOpenOptionBox = nullptr; - int saved_splitter_pos_ = 1; - - Monitor *monitor_; - std::vector> selected_boards_; - Board *current_board_ = nullptr; - - ArduinoDialog *arduino_dialog_ = nullptr; - AboutDialog *about_dialog_ = nullptr; - -public: - MainWindow(QWidget *parent = nullptr); - - bool event(QEvent *ev) override; - - std::vector> selectedBoards() const { return selected_boards_; } - Board *currentBoard() const { return current_board_; } - - bool compactMode() const { return compact_mode_; } - -public slots: - void showErrorMessage(const QString &msg); - - void selectNextBoard(); - void selectPreviousBoard(); - - void uploadToSelection(); - void uploadNewToSelection(); - void dropAssociationForSelection(); - void resetSelection(); - void rebootSelection(); - void sendToSelectedBoards(const QString &s); - - void setCompactMode(bool enable); - - void openCloneWindow(); - void openArduinoTool(); - void openPreferences(); - void openAboutDialog(); - - void makeSendFileCommand(); - void clearSerialDocument(); - -private: - static void initCodecList(); - - void fixEmptySelection(const QModelIndex &parent, int start, int end); - void enableBoardWidgets(); - void disableBoardWidgets(); - void updateWindowTitle(); - void updateFirmwareMenus(); - void updateSerialLogLink(); - - QString browseFirmwareDirectory() const; - QString browseFirmwareFilter() const; - -private slots: - void selectionChanged(const QItemSelection &selected, const QItemSelection &previous); - void openBoardListContextMenu(const QPoint &pos); - - void autoFocusBoardWidgets(); - - void refreshActions(); - void refreshInfo(); - void refreshSettings(); - void refreshInterfaces(); - void refreshStatus(); - void refreshProgress(); - - void openSerialContextMenu(const QPoint &pos); - - void validateAndSetFirmwarePath(); - void browseForFirmware(); - - void setResetAfterForSelection(bool reset_after); - void setSerialRateForSelection(unsigned int rate); - void setSerialCodecForSelection(const QString &codec_name); - void setClearOnResetForSelection(bool clear_on_reset); - void setScrollBackLimitForSelection(int limit); - void setEnableSerialForSelection(bool enable); - void setLogSerialForSelection(bool enable); - void setSerialLogSizeForSelection(int size); - void setRtcModeForSelection(RtcMode mode); -}; - -#endif diff --git a/src/tycommander/main_window.ui b/src/tycommander/main_window.ui deleted file mode 100644 index 007d24fe..00000000 --- a/src/tycommander/main_window.ui +++ /dev/null @@ -1,1133 +0,0 @@ - - - MainWindow - - - - 0 - 0 - 591 - 562 - - - - Qt::NoContextMenu - - - TyCommander - - - - :/tycommander:/tycommander - - - true - - - - - - - Qt::Horizontal - - - - - 180 - 0 - - - - Qt::CustomContextMenu - - - Qt::ScrollBarAlwaysOff - - - QAbstractItemView::ExtendedSelection - - - true - - - - - true - - - 0 - - - Qt::ElideRight - - - - &Information - - - - - - - - true - - - - - - - Identity: - - - - - - - true - - - - - - - Model: - - - - - - - - - - - Location: - - - - - - - Serial Number: - - - - - - - true - - - - - - - true - - - - - - - - - - - true - - - - - - - true - - - - - - - Status: - - - - - - - Description: - - - - - - - - - Interfaces: - - - - - - - - 0 - 1 - - - - - 0 - 40 - - - - 0 - - - false - - - true - - - 100 - - - 100 - - - true - - - - Name - - - - - Path - - - - - - - - - S&erial - - - - - - - 240 - 0 - - - - - 16777215 - 16777215 - - - - Qt::CustomContextMenu - - - false - - - true - - - Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - - - true - - - - - - - Qt::StrongFocus - - - Send - - - QToolButton::MenuButtonPopup - - - - - - - - - - &Options - - - - - - Qt::StrongFocus - - - Upload - - - - - - - - Firmware: - - - - - - - true - - - - - - - Qt::StrongFocus - - - Browse... - - - QToolButton::MenuButtonPopup - - - - - - - - - Reset device after successful upload - - - true - - - - - - - - - RTC: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - Local time - - - - - UTC - - - - - Ignore RTC - - - - - - - - - - - - - Qt::StrongFocus - - - Serial - - - - - - - - Rate: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 110 - - - - - 134 - - - - - 150 - - - - - 200 - - - - - 300 - - - - - 600 - - - - - 1200 - - - - - 1800 - - - - - 2400 - - - - - 4800 - - - - - 9600 - - - - - 19200 - - - - - 38400 - - - - - 57600 - - - - - 115200 - - - - - 230400 - - - - - - - - - - - - Charset: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 160 - 16777215 - - - - - - - - - - - - Clear on reset - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Show: - - - - - - - true - - - lines - - - 10 - - - 500000 - - - 100 - - - - - - - - - Log serial communication - - - - - - - - - - 0 - 0 - - - - Log Directory - - - true - - - - - - - Qt::Horizontal - - - - 0 - 0 - - - - - - - - - 40 - 0 - - - - Log File - - - true - - - - - - - - - - - Log size: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Infinite - - - true - - - kB - - - 0 - - - 999999 - - - 100 - - - - - - - - - - true - - - - Use 0 for infinite log size without wraparound. - - - true - - - - - - - - - - - - - - - 254 - 0 - 0 - - - - - - - - - 254 - 0 - 0 - - - - - - - - - 117 - 117 - 117 - - - - - - - - - 8 - true - - - - ⚠ Serial number is not unique, cannot save settings. - - - true - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - 0 - 0 - 591 - 22 - - - - Qt::PreventContextMenu - - - - &Actions - - - - Upload r&ecent firmware - - - - - - - - - - - - - - - - &Help - - - - - - - - - &View - - - - - - - - - &Tools - - - - - - - - - - - &Serial - - - - - - - - - - - - - - - - - - - 255 - 0 - 0 - - - - - - - - - 255 - 0 - 0 - - - - - - - - - 120 - 120 - 120 - - - - - - - - true - - - - - toolBar - - - false - - - Qt::ToolButtonTextUnderIcon - - - false - - - TopToolBarArea - - - false - - - - - - - - - - - :/upload:/upload - - - &Upload - - - Ctrl+U - - - - - - :/reset:/reset - - - &Reset - - - Ctrl+R - - - - - &Quit - - - Ctrl+Q - - - - - &About - - - - - - :/reboot:/reboot - - - &Bootloader - - - Ctrl+B - - - - - Upload &New Firmware - - - Ctrl+Shift+U - - - - - &Website - - - - - &Report a bug - - - - - true - - - &Compact Mode - - - Compact Mode - - - Ctrl+H - - - - - &New Window - - - Ctrl+N - - - - - &Clear Serial - - - Clear Serial - - - Ctrl+Alt+X - - - - - &Integrate to Arduino - - - - - true - - - - :/monitor:/monitor - - - &Enable Serial - - - Serial - - - Serial - - - Ctrl+S - - - - - &Reset Application - - - - - Reset &Settings && Application - - - Reset Settings & Application - - - - - Show Application &Log - - - Show Application Log - - - - - &Drop firmware association - - - - - &Preferences - - - Preferences - - - - - Ren&ame board - - - Rename board - - - - - Send &File - - - - - - EnhancedPlainText - QPlainTextEdit -
    enhanced_widgets.hpp
    -
    - - EnhancedGroupBox - QGroupBox -
    enhanced_widgets.hpp
    - 1 -
    - - EnhancedLineInput - QComboBox -
    enhanced_widgets.hpp
    -
    -
    - - boardList - tabWidget - idText - modelText - serialNumberText - locationText - statusText - descriptionText - interfaceTree - serialText - serialEdit - sendButton - groupBox - firmwarePath - firmwareBrowseButton - resetAfterCheck - groupBox_2 - codecComboBox - clearOnResetCheck - scrollBackLimitSpin - serialLogSizeSpin - - - - - - -
    diff --git a/src/tycommander/monitor.cc b/src/tycommander/monitor.cc deleted file mode 100644 index 9eae3cf9..00000000 --- a/src/tycommander/monitor.cc +++ /dev/null @@ -1,515 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include - -#include "board.hpp" -#include "database.hpp" -#include "descriptor_notifier.hpp" -#include "monitor.hpp" -#include "../libhs/platform.h" -#include "../libty/task.h" - -using namespace std; - -Monitor::Monitor(QObject *parent) - : QAbstractListModel(parent) -{ - int r = ty_pool_new(&pool_); - if (r < 0) - throw bad_alloc(); - - loadSettings(); -} - -Monitor::~Monitor() -{ - stop(); - - ty_pool_free(pool_); - ty_monitor_free(monitor_); -} - -void Monitor::loadSettings() -{ - auto max_tasks = db_.get("maxTasks").toUInt(); - if (!max_tasks) { -#ifdef _WIN32 - if (hs_win32_version() >= HS_WIN32_VERSION_10) { - /* Windows 10 is much faster to load drivers and make the device available, we - can probably afford that. */ - max_tasks = 2; - } else { - max_tasks = 1; - } -#else - max_tasks = 4; -#endif - } - ty_pool_set_max_threads(pool_, max_tasks); - ignore_generic_ = db_.get("ignoreGeneric", false).toBool(); - ignore_secondary_ = db_.get("ignoreSecondary", false).toBool(); - default_serial_ = db_.get("serialByDefault", true).toBool(); - serial_log_size_ = db_.get("serialLogLen", 20000000ll).toLongLong(); - serial_log_dir_ = db_.get("serialLogDir", "").toString(); - - emit settingsChanged(); - - if (started_) { - stop(); - start(); - } -} - -void Monitor::setMaxTasks(unsigned int max_tasks) -{ - if (max_tasks == ty_pool_get_max_threads(pool_)) - return; - - ty_pool_set_max_threads(pool_, max_tasks); - - db_.put("maxTasks", max_tasks); - emit settingsChanged(); -} - -void Monitor::setIgnoreGeneric(bool ignore_generic) -{ - if (ignore_generic == ignore_generic_) - return; - - ignore_generic_ = ignore_generic; - - if (ignore_generic) { - for (size_t i = 0; i < boards_.size(); i++) { - auto &board = boards_[i]; - if (board->model() == TY_MODEL_GENERIC) { - beginRemoveRows(QModelIndex(), static_cast(i), static_cast(i)); - boards_.erase(boards_.begin() + static_cast(i)); - endRemoveRows(); - i--; - } - } - } else { - ty_monitor_list(monitor_, handleEvent, this); - } - - db_.put("ignoreGeneric", ignore_generic); - emit settingsChanged(); -} - - - -void Monitor::setIgnoreSecondary(bool ignore_secondary) -{ - if (ignore_secondary == ignore_secondary_) - return; - - ignore_secondary_ = ignore_secondary; - - if (ignore_secondary) { - for (size_t i = 0; i < boards_.size(); i++) { - auto &board = boards_[i]; - if (board->secondary()) { - beginRemoveRows(QModelIndex(), static_cast(i), static_cast(i)); - boards_.erase(boards_.begin() + static_cast(i)); - endRemoveRows(); - i--; - } - } - } else { - ty_monitor_list(monitor_, handleEvent, this); - } - - db_.put("ignoreSecondary", ignore_secondary); - emit settingsChanged(); -} - -unsigned int Monitor::maxTasks() const -{ - return ty_pool_get_max_threads(pool_); -} - -void Monitor::setSerialByDefault(bool default_serial) -{ - if (default_serial == default_serial_) - return; - - default_serial_ = default_serial; - - for (auto &board: boards_) { - auto db = board->database(); - - if (!db.get("enableSerial").isValid()) { - board->setEnableSerial(default_serial); - db.remove("enableSerial"); - } - } - - db_.put("serialByDefault", default_serial); - emit settingsChanged(); -} - -void Monitor::setSerialLogSize(ssize_t default_size) -{ - if (default_size == serial_log_size_) - return; - - if (default_size < 0) - default_size = -1; - serial_log_size_ = default_size; - - for (auto &board: boards_) { - auto db = board->database(); - - if (!db.get("serialLogLen").isValid()) { - board->setSerialLogSize(default_size); - board->updateSerialLogState(false); - db.remove("serialLogLen"); - } - } - - // Remove obsolete setting - db_.remove("serialLogSize"); - - db_.put("serialLogLen", static_cast(default_size)); - emit settingsChanged(); -} - -void Monitor::setSerialLogDir(const QString &dir) -{ - if (dir == serial_log_dir_) - return; - - serial_log_dir_ = dir; - - for (auto &board: boards_) { - board->serial_log_dir_ = dir; - board->updateSerialLogState(true); - emit board->settingsChanged(); - } - - db_.put("serialLogDir", dir); - emit settingsChanged(); -} - -bool Monitor::start() -{ - if (started_) - return true; - - int r; - - if (!monitor_) { - ty_monitor *monitor; - - r = ty_monitor_new(&monitor); - if (r < 0) - return false; - unique_ptr monitor_ptr(monitor, ty_monitor_free); - - r = ty_monitor_register_callback(monitor, handleEvent, this); - if (r < 0) - return false; - - ty_descriptor_set set = {}; - ty_monitor_get_descriptors(monitor, &set, 1); - monitor_notifier_.setDescriptorSet(&set); - connect(&monitor_notifier_, &DescriptorNotifier::activated, this, &Monitor::refresh); - - monitor_ = monitor_ptr.release(); - } - - serial_thread_.start(); - - r = ty_monitor_start(monitor_); - if (r < 0) - return false; - monitor_notifier_.setEnabled(true); - - started_ = true; - return true; -} - -void Monitor::stop() -{ - if (!started_) - return; - - serial_thread_.quit(); - serial_thread_.wait(); - - if (!boards_.empty()) { - beginRemoveRows(QModelIndex(), 0, static_cast(boards_.size()) - 1); - boards_.clear(); - endRemoveRows(); - } - - monitor_notifier_.setEnabled(false); - ty_monitor_stop(monitor_); - - started_ = false; -} - -vector> Monitor::boards() -{ - return boards_; -} - -shared_ptr Monitor::board(unsigned int i) -{ - if (i >= boards_.size()) - return nullptr; - - return boards_[i]; -} - -unsigned int Monitor::boardCount() const -{ - return static_cast(boards_.size()); -} - -shared_ptr Monitor::boardFromModel(const QAbstractItemModel *model, - const QModelIndex &index) -{ - auto board = model->data(index, Monitor::ROLE_BOARD).value(); - return board ? board->shared_from_this() : nullptr; -} - -vector> Monitor::find(function filter) -{ - auto boards = boards_; - - vector> matches; - matches.reserve(boards_.size()); - for (auto &board: boards_) { - if (filter(*board)) - matches.push_back(board); - } - - return matches; -} - -int Monitor::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return static_cast(boards_.size()); -} - -int Monitor::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return COLUMN_COUNT; -} - -QVariant Monitor::headerData(int section, Qt::Orientation orientation, int role) const -{ - if (orientation == Qt::Vertical || role != Qt::DisplayRole) - return QVariant(); - - switch (section) { - case COLUMN_BOARD: - return tr("Board"); - case COLUMN_STATUS: - return tr("Status"); - case COLUMN_IDENTITY: - return tr("Identity"); - case COLUMN_LOCATION: - return tr("Location"); - case COLUMN_SERIAL_NUMBER: - return tr("Serial Number"); - case COLUMN_DESCRIPTION: - return tr("Description"); - } - - return QVariant(); -} - -QVariant Monitor::data(const QModelIndex &index, int role) const -{ - if (!index.isValid() || index.row() >= static_cast(boards_.size())) - return QVariant(); - - auto board = boards_[index.row()]; - if (role == ROLE_BOARD) - return QVariant::fromValue(board.get()); - - if (index.column() == 0) { - switch (role) { - case Qt::ToolTipRole: - return tr("%1\n+ Location: %2\n+ Serial Number: %3\n+ Status: %4\n+ Capabilities: %5") - .arg(board->modelName()) - .arg(board->location()) - .arg(board->serialNumber()) - .arg(board->statusText()) - .arg(Board::makeCapabilityString(board->capabilities(), tr("(none)"))); - case Qt::DecorationRole: - return board->statusIcon(); - case Qt::EditRole: - return board->tag(); - } - } - - if (role == Qt::DisplayRole) { - switch (index.column()) { - case COLUMN_BOARD: - return board->tag(); - case COLUMN_MODEL: - return board->modelName(); - case COLUMN_STATUS: - return board->statusText(); - case COLUMN_IDENTITY: - return board->id(); - case COLUMN_LOCATION: - return board->location(); - case COLUMN_SERIAL_NUMBER: - return board->serialNumber(); - case COLUMN_DESCRIPTION: - return board->description(); - } - } - - return QVariant(); -} - -Qt::ItemFlags Monitor::flags(const QModelIndex &index) const -{ - Q_UNUSED(index); - return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled; -} - -bool Monitor::setData(const QModelIndex &index, const QVariant &value, int role) -{ - if (role != Qt::EditRole || !index.isValid() || index.row() >= static_cast(boards_.size())) - return false; - - auto board = boards_[index.row()]; - board->setTag(value.toString()); - - return true; -} - -void Monitor::refresh(ty_descriptor desc) -{ - Q_UNUSED(desc); - ty_monitor_refresh(monitor_); -} - -int Monitor::handleEvent(ty_board *board, ty_monitor_event event, void *udata) -{ - auto self = static_cast(udata); - - switch (event) { - case TY_MONITOR_EVENT_ADDED: - self->handleAddedEvent(board); - break; - - case TY_MONITOR_EVENT_CHANGED: - case TY_MONITOR_EVENT_DISAPPEARED: - case TY_MONITOR_EVENT_DROPPED: - self->handleChangedEvent(board); - break; - } - - return 0; -} - -Monitor::iterator Monitor::findBoardIterator(ty_board *board) -{ - return find_if(boards_.begin(), boards_.end(), - [=](std::shared_ptr &ptr) { return ptr->board() == board; }); -} - -void Monitor::handleAddedEvent(ty_board *board) -{ - if (ignore_generic_ && ty_board_get_model(board) == TY_MODEL_GENERIC) - return; - if (ignore_secondary_ && ty_board_get_secondary(board)) - return; - - if (findBoardIterator(board) != boards_.end()) - return; - - // Work around the private constructor for make_shared() - struct BoardSharedEnabler : public Board { - BoardSharedEnabler(ty_board *board) - : Board(board) {} - }; - auto board_wrapper_ptr = make_shared(board); - auto board_wrapper = board_wrapper_ptr.get(); - - if (board_wrapper->hasCapability(TY_BOARD_CAPABILITY_UNIQUE)) - configureBoardDatabase(*board_wrapper); - board_wrapper->serial_log_dir_ = serial_log_dir_; - board_wrapper->loadSettings(this); - - board_wrapper->setThreadPool(pool_); - board_wrapper->serial_notifier_.moveToThread(&serial_thread_); - - connect(board_wrapper, &Board::infoChanged, this, [=]() { - refreshBoardItem(findBoardIterator(board)); - }); - // Don't capture board_wrapper_ptr, this should be obvious but I made the mistake once - connect(board_wrapper, &Board::interfacesChanged, this, [=]() { - if (db_.isValid() && !board_wrapper->database().isValid() && - board_wrapper->hasCapability(TY_BOARD_CAPABILITY_UNIQUE)) { - configureBoardDatabase(*board_wrapper); - board_wrapper->loadSettings(this); - } - refreshBoardItem(findBoardIterator(board)); - }); - connect(board_wrapper, &Board::statusChanged, this, [=]() { - refreshBoardItem(findBoardIterator(board)); - }); - connect(board_wrapper, &Board::progressChanged, this, [=]() { - refreshBoardItem(findBoardIterator(board)); - }); - connect(board_wrapper, &Board::dropped, this, [=]() { - removeBoardItem(findBoardIterator(board)); - }); - - auto insert_it = std::find_if(boards_.begin(), boards_.end(), - [&](const std::shared_ptr &it) { return board_wrapper->id() < it->id(); }); - - beginInsertRows(QModelIndex(), insert_it - boards_.begin(), insert_it - boards_.begin()); - boards_.insert(insert_it, board_wrapper_ptr); - endInsertRows(); - - emit boardAdded(board_wrapper); -} - -void Monitor::handleChangedEvent(ty_board *board) -{ - auto it = findBoardIterator(board); - if (it == boards_.end()) - return; - auto ptr = *it; - - ptr->refreshBoard(); -} - -void Monitor::refreshBoardItem(iterator it) -{ - auto index = createIndex(it - boards_.begin(), 0); - dataChanged(index, index); -} - -void Monitor::removeBoardItem(iterator it) -{ - beginRemoveRows(QModelIndex(), it - boards_.begin(), it - boards_.begin()); - boards_.erase(it); - endRemoveRows(); -} - -void Monitor::configureBoardDatabase(Board &board) -{ - board.setDatabase(db_.subDatabase(board.id())); - board.setCache(cache_.subDatabase(board.id())); -} diff --git a/src/tycommander/monitor.hpp b/src/tycommander/monitor.hpp deleted file mode 100644 index f35eb73f..00000000 --- a/src/tycommander/monitor.hpp +++ /dev/null @@ -1,147 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef MONITOR_HH -#define MONITOR_HH - -#include -#include - -#include -#include - -#include "database.hpp" -#include "descriptor_notifier.hpp" -#include "../libty/monitor.h" - -class Board; -struct ty_board; -struct ty_pool; - -class Monitor : public QAbstractListModel { - Q_OBJECT - - DatabaseInterface db_; - DatabaseInterface cache_; - - bool started_ = false; - ty_monitor *monitor_ = nullptr; - DescriptorNotifier monitor_notifier_; - - ty_pool *pool_; - QThread serial_thread_; - - bool ignore_generic_; - bool ignore_secondary_; - - bool default_serial_; - ssize_t serial_log_size_; - QString serial_log_dir_; - - std::vector> boards_; - -public: - typedef decltype(boards_)::iterator iterator; - typedef decltype(boards_)::const_iterator const_iterator; - - enum Column { - COLUMN_BOARD, - COLUMN_MODEL, - COLUMN_STATUS, - COLUMN_IDENTITY, - COLUMN_LOCATION, - COLUMN_SERIAL_NUMBER, - COLUMN_DESCRIPTION, - - COLUMN_COUNT - }; - - enum CustomRole { - ROLE_BOARD = Qt::UserRole + 1 - }; - - Monitor(QObject *parent = nullptr); - virtual ~Monitor(); - - void setDatabase(DatabaseInterface db) { db_ = db; } - DatabaseInterface database() const { return db_; } - void setCache(DatabaseInterface cache) { cache_ = cache; } - DatabaseInterface cache() const { return cache_; } - void loadSettings(); - - unsigned int maxTasks() const; - bool ignoreGeneric() const { return ignore_generic_; } - bool ignoreSecondary() const {return ignore_secondary_; } - - bool serialByDefault() const { return default_serial_; } - ssize_t serialLogSize() const { return serial_log_size_; } - QString serialLogDir() const { return serial_log_dir_; } - - bool start(); - void stop(); - - ty_monitor *monitor() const { return monitor_; } - - iterator begin() { return boards_.begin(); } - iterator end() { return boards_.end(); } - const_iterator cbegin() const { return boards_.cbegin(); } - const_iterator cend() const { return boards_.cend(); } - - std::vector> boards(); - std::shared_ptr board(unsigned int i); - unsigned int boardCount() const; - - static std::shared_ptr boardFromModel(const QAbstractItemModel *model, - const QModelIndex &index); - static std::shared_ptr boardFromModel(const QAbstractItemModel *model, int index) - { - return boardFromModel(model, model->index(index, 0)); - } - - std::vector> find(std::function filter); - - int rowCount(const QModelIndex &parent = QModelIndex()) const override; - int columnCount(const QModelIndex &parent = QModelIndex()) const override; - - QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - Qt::ItemFlags flags(const QModelIndex &index) const override; - bool setData(const QModelIndex &index, const QVariant &value, int role) override; - -public slots: - void setMaxTasks(unsigned int max_tasks); - void setIgnoreGeneric(bool ignore_generic); - void setIgnoreSecondary(bool ignore_secondary); - void setSerialByDefault(bool default_serial); - void setSerialLogSize(ssize_t default_size); - void setSerialLogDir(const QString &dir); - -signals: - void settingsChanged(); - - void boardAdded(Board *board); - -private slots: - void refresh(ty_descriptor desc); - -private: - iterator findBoardIterator(ty_board *board); - - static int handleEvent(ty_board *board, ty_monitor_event event, void *udata); - void handleAddedEvent(ty_board *board); - void handleChangedEvent(ty_board *board); - - void refreshBoardItem(iterator it); - void removeBoardItem(iterator it); - - void configureBoardDatabase(Board &board); -}; - -#endif diff --git a/src/tycommander/preferences_dialog.cc b/src/tycommander/preferences_dialog.cc deleted file mode 100644 index b31c40ec..00000000 --- a/src/tycommander/preferences_dialog.cc +++ /dev/null @@ -1,110 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include -#include - -#include "preferences_dialog.hpp" -#include "tycommander.hpp" - -using namespace std; - -PreferencesDialog::PreferencesDialog(QWidget *parent) - : QDialog(parent) -{ - setupUi(this); - setWindowTitle(tr("%1 Preferences").arg(QApplication::applicationName())); - - connect(buttonBox, &QDialogButtonBox::accepted, this, &PreferencesDialog::accept); - connect(buttonBox, &QDialogButtonBox::rejected, this, &PreferencesDialog::reject); - connect(buttonBox->button(QDialogButtonBox::Apply), &QAbstractButton::clicked, this, - &PreferencesDialog::apply); - connect(buttonBox->button(QDialogButtonBox::Reset), &QAbstractButton::clicked, - this, &PreferencesDialog::reset); - - connect(logSerialCheck, &QCheckBox::clicked, this, &PreferencesDialog::toggleSerialLog); - connect(serialLogDirButton, &QToolButton::clicked, this, - &PreferencesDialog::browseForSerialLogDir); - - refresh(); -} - -void PreferencesDialog::done(int result) -{ - QDialog::done(result); - if (result) - apply(); -} - -void PreferencesDialog::apply() -{ - tyCommander->setShowTrayIcon(showTrayIconCheck->isChecked()); - tyCommander->setHideOnStartup(hideOnStartupCheck->isChecked()); - - auto monitor = tyCommander->monitor(); - monitor->setIgnoreGeneric(ignoreGenericCheck->isChecked()); - monitor->setSerialByDefault(serialByDefaultCheck->isChecked()); - monitor->setSerialLogDir(serialLogDir->text()); - if (logSerialCheck->isChecked()) { - monitor->setSerialLogSize(serialLogSizeDefaultSpin->value() * 1000); - } else { - monitor->setSerialLogSize(-1); - } - monitor->setMaxTasks(maxTasksSpin->value()); -} - -void PreferencesDialog::reset() -{ - tyCommander->clearSettingsAndResetWithConfirmation(this); - refresh(); -} - -void PreferencesDialog::refresh() -{ - showTrayIconCheck->setEnabled(QSystemTrayIcon::isSystemTrayAvailable()); - showTrayIconCheck->setChecked(tyCommander->showTrayIcon()); -#ifndef __APPLE__ - if (!showTrayIconCheck->isChecked()) - hideOnStartupCheck->setEnabled(false); - connect(showTrayIconCheck, &QCheckBox::toggled, hideOnStartupCheck, &QCheckBox::setEnabled); -#endif - hideOnStartupCheck->setChecked(tyCommander->hideOnStartup()); - - auto monitor = tyCommander->monitor(); - ignoreGenericCheck->setChecked(monitor->ignoreGeneric()); - serialByDefaultCheck->setChecked(monitor->serialByDefault()); - serialLogDir->setText(monitor->serialLogDir()); - if (monitor->serialLogSize() >= 0) { - logSerialCheck->setChecked(true); - serialLogSizeDefaultSpin->setEnabled(true); - serialLogSizeDefaultSpin->setValue(static_cast(monitor->serialLogSize() / 1000)); - } else { - logSerialCheck->setChecked(false); - serialLogSizeDefaultSpin->setEnabled(false); - } - maxTasksSpin->setValue(monitor->maxTasks()); -} - -void PreferencesDialog::toggleSerialLog(bool enable) -{ - serialLogSizeDefaultSpin->setEnabled(enable); -} - -void PreferencesDialog::browseForSerialLogDir() -{ - auto dir = QFileDialog::getExistingDirectory(this); - if (dir.isEmpty()) - return; - - dir = QDir::toNativeSeparators(dir); - serialLogDir->setText(dir); -} diff --git a/src/tycommander/preferences_dialog.hpp b/src/tycommander/preferences_dialog.hpp deleted file mode 100644 index 9685f192..00000000 --- a/src/tycommander/preferences_dialog.hpp +++ /dev/null @@ -1,33 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef PREFERENCES_DIALOG_HH -#define PREFERENCES_DIALOG_HH - -#include "ui_preferences_dialog.h" - -class PreferencesDialog: public QDialog, private Ui::PreferencesDialog { -public: - PreferencesDialog(QWidget *parent = nullptr); - -public slots: - void done(int result) override; - void apply(); - void reset(); - -private: - void refresh(); - -private slots: - void toggleSerialLog(bool enable); - void browseForSerialLogDir(); -}; - -#endif diff --git a/src/tycommander/preferences_dialog.ui b/src/tycommander/preferences_dialog.ui deleted file mode 100644 index 20fbf2c0..00000000 --- a/src/tycommander/preferences_dialog.ui +++ /dev/null @@ -1,251 +0,0 @@ - - - PreferencesDialog - - - - 0 - 0 - 426 - 444 - - - - TyCommander Preferences - - - - :/tycommander:/tycommander - - - - - - Interface Tweaks - - - - - - Show Tray Icon - - - - - - - Hide application on startup - - - - - - - - - - Board options - - - - - - Ignore generic boards - - - - - - - Enable serial connection by default - - - - - - - - - Log directory: - - - - - - - (Defaults to temporary directory if empty) - - - - - - - ... - - - - - - - - - Log serial communication by default - - - - - - - - - Default log size: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Infinite - - - true - - - kB - - - 0 - - - 999999 - - - 100 - - - 20000 - - - - - - - - - - true - - - - Use 0 for infinite log size without wraparound. - - - true - - - - - - - - - - Hardware compatibility - - - - - - - - Maximum number of parallel tasks: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 1 - - - 32 - - - - - - - - - - true - - - - <html><head/><body><p>Reduce this setting if you experience hardware problems, such as USB/hub failures with parallel uploads.</p></body></html> - - - true - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset - - - - - - - - - - - diff --git a/src/tycommander/selector_dialog.cc b/src/tycommander/selector_dialog.cc deleted file mode 100644 index f57777d1..00000000 --- a/src/tycommander/selector_dialog.cc +++ /dev/null @@ -1,139 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include - -#include "board.hpp" -#include "monitor.hpp" -#include "selector_dialog.hpp" -#include "tycommander.hpp" - -using namespace std; - -class SelectorDialogModel: public QIdentityProxyModel { -public: - SelectorDialogModel(QObject *parent = nullptr) - : QIdentityProxyModel(parent) {} - - int columnCount(const QModelIndex &parent) const override; - QVariant data(const QModelIndex &index, int role) const override; - Qt::ItemFlags flags(const QModelIndex &index) const override; -}; - -class SelectorDialogItemDelegate: public QItemDelegate { -public: - SelectorDialogItemDelegate(QObject *parent = nullptr) - : QItemDelegate(parent) {} - - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; -}; - -int SelectorDialogModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return 3; -} - -QVariant SelectorDialogModel::data(const QModelIndex &index, int role) const -{ - if (index.column() == Monitor::COLUMN_BOARD) { - switch (role) { - case Qt::TextAlignmentRole: - return QVariant(Qt::AlignLeft | Qt::AlignVCenter); - } - } else if (index.column() == Monitor::COLUMN_MODEL) { - switch (role) { - case Qt::TextAlignmentRole: - return QVariant(Qt::AlignLeft | Qt::AlignVCenter); - } - } else if (index.column() == Monitor::COLUMN_STATUS) { - switch (role) { - case Qt::TextAlignmentRole: - return QVariant(Qt::AlignRight | Qt::AlignVCenter); - case Qt::ForegroundRole: - return QBrush(Qt::darkGray); - } - } - - return QIdentityProxyModel::data(index, role); -} - -Qt::ItemFlags SelectorDialogModel::flags(const QModelIndex &index) const -{ - auto board = QIdentityProxyModel::data(index, Monitor::ROLE_BOARD).value(); - return board->secondary() ? Qt::ItemFlags() : QIdentityProxyModel::flags(index); -} - -QSize SelectorDialogItemDelegate::sizeHint(const QStyleOptionViewItem &option, - const QModelIndex &index) const -{ - auto size = QItemDelegate::sizeHint(option, index); - size.setHeight(24); - return size; -} - -SelectorDialog::SelectorDialog(QWidget *parent) - : QDialog(parent), monitor_(tyCommander->monitor()) -{ - setupUi(this); - - connect(buttonBox, &QDialogButtonBox::accepted, this, &SelectorDialog::accept); - connect(buttonBox, &QDialogButtonBox::rejected, this, &SelectorDialog::reject); - connect(tree, &QTreeView::doubleClicked, this, &SelectorDialog::accept); - - monitor_model_ = new SelectorDialogModel(this); - monitor_model_->setSourceModel(monitor_); - tree->setModel(monitor_model_); - tree->setItemDelegate(new SelectorDialogItemDelegate(tree)); - connect(tree->selectionModel(), &QItemSelectionModel::selectionChanged, this, - &SelectorDialog::updateSelection); - tree->header()->setStretchLastSection(false); - tree->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); - tree->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents); - tree->header()->setSectionResizeMode(2, QHeaderView::Stretch); - - auto first_board = Monitor::boardFromModel(monitor_model_, 0); - if (first_board) { - tree->setCurrentIndex(monitor_->index(0, 0)); - } else { - buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); - } -} - -void SelectorDialog::setExtendedSelection(bool extended) -{ - tree->setSelectionMode(extended - ? QAbstractItemView::ExtendedSelection - : QAbstractItemView::SingleSelection); -} - -void SelectorDialog::setAction(const QString &action) -{ - action_ = action; - setWindowTitle(QString("%1 | %2").arg(action, QCoreApplication::applicationName())); -} - -void SelectorDialog::updateSelection() -{ - selected_boards_.clear(); - - auto indexes = tree->selectionModel()->selectedIndexes(); - std::sort(indexes.begin(), indexes.end()); - - for (auto &idx: indexes) { - if (idx.column() == 0) - selected_boards_.push_back(Monitor::boardFromModel(monitor_model_, idx)); - } - buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!selected_boards_.empty()); - - emit selectionChanged(); -} diff --git a/src/tycommander/selector_dialog.hpp b/src/tycommander/selector_dialog.hpp deleted file mode 100644 index 90ce0d5f..00000000 --- a/src/tycommander/selector_dialog.hpp +++ /dev/null @@ -1,54 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef SELECTOR_DIALOG_HH -#define SELECTOR_DIALOG_HH - -#include -#include - -#include "ui_selector_dialog.h" - -class Board; -class Monitor; -class SelectorDialogModel; - -class SelectorDialog : public QDialog, private Ui::SelectorDialog { - Q_OBJECT - - Monitor *monitor_; - SelectorDialogModel *monitor_model_; - QString action_; - - std::vector> selected_boards_; - -public: - SelectorDialog(QWidget *parent = nullptr); - - void setExtendedSelection(bool extended); - bool setExtendedSelection() const - { return tree->selectionMode() == QAbstractItemView::ExtendedSelection; } - - void setAction(const QString &action); - QString action() const { return action_; } - - void setDescription(const QString &desc) { descriptionLabel->setText(desc); } - QString description() const { return descriptionLabel->text(); } - - std::vector> selectedBoards() const { return selected_boards_; } - -protected slots: - void updateSelection(); - -signals: - void selectionChanged(); -}; - -#endif diff --git a/src/tycommander/selector_dialog.ui b/src/tycommander/selector_dialog.ui deleted file mode 100644 index 430da92b..00000000 --- a/src/tycommander/selector_dialog.ui +++ /dev/null @@ -1,63 +0,0 @@ - - - SelectorDialog - - - - 0 - 0 - 420 - 180 - - - - - :/tycommander:/tycommander - - - - - - selection - - - - - - - 0 - - - false - - - true - - - true - - - false - - - true - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - - diff --git a/src/tycommander/session_channel.cc b/src/tycommander/session_channel.cc deleted file mode 100644 index bc46f42e..00000000 --- a/src/tycommander/session_channel.cc +++ /dev/null @@ -1,276 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include - -#ifdef _WIN32 - #define WIN32_LEAN_AND_MEAN - #include -#else - #include -#endif - -#include "session_channel.hpp" - -#ifdef _WIN32 -typedef BOOL WINAPI ProcessIdToSessionId_func(DWORD dwProcessId, DWORD *pSessionId); - -static ProcessIdToSessionId_func *ProcessIdToSessionId_ = - reinterpret_cast(GetProcAddress(GetModuleHandle("kernel32.dll"), - "ProcessIdToSessionId")); -#endif - -using namespace std; - -SessionChannel::SessionChannel(const QString &id, QObject *parent) - : QObject(parent) -{ - if (!id.isEmpty()) - init(id); -} - -SessionChannel::~SessionChannel() -{ - close(); - unlock(); -} - -void SessionChannel::init(const QString &id) -{ - close(); - unlock(); - - if (!id.isEmpty()) { - id_ = id; - } else { - id_ = QCoreApplication::applicationName(); - } -} - -#ifdef _WIN32 - -bool SessionChannel::lock() -{ - if (id_.isEmpty()) - return false; - - if (!mutex_) { - QString mutexName = QString("Local\\") + id_; - - mutex_ = CreateMutexW(NULL, FALSE, reinterpret_cast(mutexName.utf16())); - locked_ = mutex_ && (GetLastError() == ERROR_SUCCESS); - } - - return locked_; -} - -void SessionChannel::unlock() -{ - if (mutex_) - CloseHandle(mutex_); - mutex_ = nullptr; - - locked_ = false; -} - -QString SessionChannel::makeSocketName() const -{ - QString socketName = id_; - - if (ProcessIdToSessionId_) { - DWORD session = 0; - ProcessIdToSessionId_(GetCurrentProcessId(), &session); - - socketName += '-' + QString::number(session); - } - - return socketName; -} - -#else - -bool SessionChannel::lock() -{ - if (id_.isEmpty()) - return false; - - if (!lock_) { - QString lockName = QString("%1/%2-%3.lock").arg(QDir::tempPath(), id_, QString::number(getuid())); - - lock_ = unique_ptr(new QLockFile(lockName)); - lock_->setStaleLockTime(0); - - locked_ = lock_->tryLock(5); - } - - return locked_; -} - -void SessionChannel::unlock() -{ - if (lock_ && locked_) - lock_->unlock(); - lock_ = nullptr; - - locked_ = false; -} - -QString SessionChannel::makeSocketName() const -{ - return QString("%1-%2").arg(id_, QString::number(getuid())); -} - -#endif - -bool SessionChannel::listen() -{ - if (!lock()) - return false; - if (server_ && server_->isListening()) - return true; - - auto socket_name = makeSocketName(); - - QLocalServer::removeServer(socket_name); - - if (!server_) { - server_ = unique_ptr(new QLocalServer()); - connect(server_.get(), &QLocalServer::newConnection, this, &SessionChannel::newConnection); - } - server_->setSocketOptions(QLocalServer::UserAccessOption); - - return server_->listen(socket_name); -} - -unique_ptr SessionChannel::nextPendingConnection() -{ - auto socket = server_->nextPendingConnection(); - if (!socket) - return nullptr; - return SessionPeer::wrapSocket(socket); -} - -void SessionChannel::close() -{ - server_.reset(); -} - -unique_ptr SessionChannel::connectToServer() -{ - if (id_.isEmpty()) - return nullptr; - if (locked_) - return nullptr; - - return SessionPeer::connectTo(makeSocketName()); -} - -unique_ptr SessionPeer::wrapSocket(QLocalSocket *socket) -{ - if (!socket) - return nullptr; - - return unique_ptr(new SessionPeer(socket)); -} - -unique_ptr SessionPeer::connectTo(const QString &name) -{ - auto socket = unique_ptr(new QLocalSocket()); - - socket->connectToServer(name); - if (!socket->waitForConnected(1000)) - return nullptr; - - return unique_ptr(new SessionPeer(socket.release())); -} - -SessionPeer::SessionPeer(QLocalSocket *socket) - : socket_(socket) -{ - socket_->setParent(nullptr); - - QObject::connect(socket, &QLocalSocket::readyRead, this, &SessionPeer::dataReceived); - QObject::connect(socket, &QLocalSocket::disconnected, this, [=]() { - close(RemoteClose); - }); -#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) - QObject::connect(socket, &QLocalSocket::errorOccurred, this, [=]() { -#else - QObject::connect(socket, static_cast(&QLocalSocket::error), this, [=]() { -#endif - close(Error); - }); -} - -SessionPeer::~SessionPeer() -{ - close(); -} - -void SessionPeer::close() -{ - close(LocalClose); -} - -void SessionPeer::send(const QStringList &arguments) -{ - if (socket_->state() != QLocalSocket::ConnectedState) - return; - - QByteArray buf; - QDataStream stream(&buf, QIODevice::WriteOnly); - stream << arguments; - - uint32_t length = buf.size(); - socket_->write(reinterpret_cast(&length), sizeof(length)); - socket_->write(buf); -} - -void SessionPeer::dataReceived() -{ - if (socket_->state() != QLocalSocket::ConnectedState) - return; - - while (true) { - // Get the length first (first 8 bytes) - if (!expected_length_) { - if (socket_->bytesAvailable() < static_cast(sizeof(expected_length_))) - break; - - qint64 read = socket_->read(reinterpret_cast(&expected_length_), sizeof(expected_length_)); - if (read < static_cast(sizeof(expected_length_))) { - close(Error); - break; - } - } - // Easier to let Qt/OS handle the buffer, I won't use very big messages anyway - if (socket_->bytesAvailable() < expected_length_) - break; - - auto buf = socket_->read(static_cast(expected_length_)); - expected_length_ = 0; - - QDataStream stream(buf); - QStringList arguments; - stream >> arguments; - emit received(arguments); - } -} - -void SessionPeer::close(CloseReason reason) -{ - if (!isConnected()) - return; - - socket_->close(); - emit closed(reason); -} diff --git a/src/tycommander/session_channel.hpp b/src/tycommander/session_channel.hpp deleted file mode 100644 index f06357df..00000000 --- a/src/tycommander/session_channel.hpp +++ /dev/null @@ -1,98 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef SESSION_CHANNEL_HH -#define SESSION_CHANNEL_HH - -#include -#include -#include - -#include - -class SessionPeer : public QObject { - Q_OBJECT - - std::unique_ptr socket_; - uint32_t expected_length_ = 0; - -public: - enum CloseReason { - LocalClose, - RemoteClose, - Error - }; - - static std::unique_ptr wrapSocket(QLocalSocket *socket); - static std::unique_ptr connectTo(const QString &name); - ~SessionPeer(); - - void close(); - - bool isConnected() const { return socket_->state() == QLocalSocket::ConnectedState; } - - void send(const QStringList &arguments); - void send(const QString &argument) { send(QStringList(argument)); } - void send(const char *argument) { send(QStringList(argument)); } - -signals: - void received(const QStringList &arguments); - void closed(SessionPeer::CloseReason reason); - -private: - SessionPeer(QLocalSocket *socket); - void close(CloseReason reason); - -private slots: - void dataReceived(); -}; - -class SessionChannel : public QObject { - Q_OBJECT - -#ifdef _WIN32 - void *mutex_ = nullptr; // HANDLE -#else - std::unique_ptr lock_; -#endif - - QString id_; - bool locked_ = false; - - std::unique_ptr server_; - -public: - SessionChannel(const QString &id, QObject *parent = nullptr); - SessionChannel(QObject *parent = nullptr) - : SessionChannel(QString(), parent) {} - virtual ~SessionChannel(); - - void init(const QString &id = QString()); - - QString identifier() const { return id_; } - - bool lock(); - void unlock(); - bool isLocked() const { return locked_; } - - bool listen(); - std::unique_ptr nextPendingConnection(); - void close(); - - std::unique_ptr connectToServer(); - -signals: - void newConnection(); - -private: - QString makeSocketName() const; -}; - -#endif diff --git a/src/tycommander/task.cc b/src/tycommander/task.cc deleted file mode 100644 index 4d52c622..00000000 --- a/src/tycommander/task.cc +++ /dev/null @@ -1,299 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include - -#include "task.hpp" - -using namespace std; - -void Task::reportLog(ty_log_level level, const QString &msg) -{ - QMutexLocker locker(&listeners_lock_); - for (auto &l: listeners_) - l->notifyLog(level, msg); -} - -void Task::reportPending() -{ - status_ = TY_TASK_STATUS_PENDING; - - QMutexLocker locker(&listeners_lock_); - for (auto &l: listeners_) - l->notifyPending(); -} - -void Task::reportStarted() -{ - status_ = TY_TASK_STATUS_RUNNING; - - QMutexLocker locker(&listeners_lock_); - for (auto &l: listeners_) - l->notifyStarted(); -} - -void Task::reportFinished(bool success, shared_ptr result) -{ - status_ = TY_TASK_STATUS_FINISHED; - success_ = success; - result_ = result; - QMutexLocker locker(&listeners_lock_); - for (auto &l: listeners_) - l->notifyFinished(success, result); -} - -void Task::reportProgress(const QString &action, uint64_t value, uint64_t max) -{ - progress_ = value; - progress_max_ = max; - - QMutexLocker locker(&listeners_lock_); - for (auto &l: listeners_) - l->notifyProgress(action, value, max); -} - -void Task::addListener(TaskListener *listener) -{ - QMutexLocker locker(&listeners_lock_); - listeners_.push_back(listener); -} - -void Task::removeListener(TaskListener *listener) -{ - QMutexLocker locker(&listeners_lock_); - - auto it = find(listeners_.begin(), listeners_.end(), listener); - if (it != listeners_.end()) - listeners_.erase(it); -} - -TyTask::TyTask(ty_task *task) - : task_(task) -{ - name_ = task->name; - - task->user_callback = [](const ty_message_data *msg, void *udata) { - auto task = static_cast(udata); - task->notifyMessage(msg); - }; - task->user_callback_udata = this; -} - -TyTask::~TyTask() -{ - ty_task_unref(task_); -} - -bool TyTask::start() -{ - if (status() == TY_TASK_STATUS_READY) - ty_task_start(task_); - - return status() >= TY_TASK_STATUS_PENDING; -} - -void TyTask::notifyMessage(const ty_message_data *msg) -{ - /* The task is doing something, we don't need to keep it alive anymore... it'll keep this - object alive instead. */ - if (task_ && msg->type == TY_MESSAGE_STATUS) { - task_->user_cleanup = [](void *ptr) { - auto task_ptr = static_cast *>(ptr); - delete task_ptr; - }; - task_->user_cleanup_udata = new shared_ptr(shared_from_this()); - - ty_task_unref(task_); - task_ = NULL; - } - - switch (msg->type) { - case TY_MESSAGE_LOG: - notifyLog(msg); - break; - case TY_MESSAGE_STATUS: - notifyStatus(msg); - break; - case TY_MESSAGE_PROGRESS: - notifyProgress(msg); - break; - } -} - -void TyTask::notifyLog(const ty_message_data *msg) -{ - reportLog(msg->u.log.level, msg->u.log.msg); -} - -void TyTask::notifyStatus(const ty_message_data *msg) -{ - switch (msg->u.task.status) { - case TY_TASK_STATUS_PENDING: - reportPending(); - break; - case TY_TASK_STATUS_RUNNING: - reportStarted(); - break; - case TY_TASK_STATUS_FINISHED: { - void *result = msg->task->result; - void (*result_cleanup_func)(void *result) = msg->task->result_cleanup; - msg->task->result_cleanup = NULL; - - if (!result_cleanup_func) - result_cleanup_func = [](void *result) { Q_UNUSED(result); }; - reportFinished(msg->task->ret >= 0, shared_ptr(result, result_cleanup_func)); - - break; - } - - default: - break; - } -} - -void TyTask::notifyProgress(const ty_message_data *msg) -{ - reportProgress(msg->u.progress.action, msg->u.progress.value, msg->u.progress.max); -} - -bool ImmediateTask::start() -{ - if (status() >= TY_TASK_STATUS_PENDING) - return true; - - reportStarted(); - bool ret = f_(); - reportFinished(ret, nullptr); - - return true; -} - -bool FailedTask::start() -{ - if (status() >= TY_TASK_STATUS_PENDING) - return true; - - if (!msg_.isEmpty()) { - ty_log(TY_LOG_ERROR, "%s", msg_.toUtf8().constData()); - reportLog(TY_LOG_ERROR, msg_); - } - reportFinished(false, nullptr); - - return true; -} - -TaskInterface::TaskInterface(std::shared_ptr task) - : task_(task) -{ -} - -bool TaskInterface::start() -{ - return task_->start(); -} - -QString TaskInterface::name() const -{ - return task_->name(); -} - -ty_task_status TaskInterface::status() const -{ - return task_->status(); -} - -uint64_t TaskInterface::progress() const -{ - return task_->progress(); -} - -uint64_t TaskInterface::progressMaximum() const -{ - return task_->progressMaximum(); -} - -bool TaskInterface::success() const -{ - return task_->success(); -} - -shared_ptr TaskInterface::result() const -{ - return task_->result(); -} - -TaskListener::~TaskListener() -{ - task_->removeListener(this); -} - -void TaskListener::setTask(TaskInterface *task) -{ - task_->removeListener(this); - - if (task) { - task_ = task->task_; - task_->addListener(this); - } else { - task_ = make_shared(); - } -} - -void TaskListener::notifyLog(ty_log_level level, const QString &msg) -{ - Q_UNUSED(level); - Q_UNUSED(msg); -} - -void TaskListener::notifyPending() -{ -} - -void TaskListener::notifyStarted() -{ -} - -void TaskListener::notifyFinished(bool success, shared_ptr result) -{ - Q_UNUSED(success); - Q_UNUSED(result); -} - -void TaskListener::notifyProgress(const QString &action, uint64_t value, uint64_t max) -{ - Q_UNUSED(action); - Q_UNUSED(value); - Q_UNUSED(max); -} - -void TaskWatcher::notifyLog(ty_log_level level, const QString &msg) -{ - emit log(level, msg); -} - -void TaskWatcher::notifyPending() -{ - emit pending(); -} - -void TaskWatcher::notifyStarted() -{ - emit started(); -} - -void TaskWatcher::notifyFinished(bool success, shared_ptr result) -{ - emit finished(success, result); -} - -void TaskWatcher::notifyProgress(const QString &action, uint64_t value, uint64_t max) -{ - emit progress(action, value, max); -} diff --git a/src/tycommander/task.hpp b/src/tycommander/task.hpp deleted file mode 100644 index 1cabb7ff..00000000 --- a/src/tycommander/task.hpp +++ /dev/null @@ -1,168 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef TASK_HH -#define TASK_HH - -#include -#include -#include - -#include -#include -#include - -#include "../libty/task.h" - -class Task : public std::enable_shared_from_this { - ty_task_status status_ = TY_TASK_STATUS_READY; - uint64_t progress_ = 0, progress_max_ = 0; - bool success_ = false; - std::shared_ptr result_; - - QMutex listeners_lock_{QMutex::Recursive}; - std::vector listeners_; - -protected: - QString name_; - -public: - Task() {} - virtual ~Task() {} - - Task& operator=(const Task &other) = delete; - Task(const Task &other) = delete; - Task& operator=(const Task &&other) = delete; - Task(const Task &&other) = delete; - - virtual bool start() = 0; - - QString name() const { return name_; } - ty_task_status status() const { return status_; } - uint64_t progress() const { return progress_; } - uint64_t progressMaximum() const { return progress_max_; } - bool success() const { return success_; } - std::shared_ptr result() const { return result_; } - - void reportLog(ty_log_level level, const QString &msg); - void reportPending(); - void reportStarted(); - void reportFinished(bool success, std::shared_ptr result); - void reportProgress(const QString &action, uint64_t value, uint64_t max); - - void addListener(TaskListener *listener); - void removeListener(TaskListener *listener); -}; - -class TyTask : public Task { - ty_task *task_; - -public: - TyTask(ty_task *task); - ~TyTask() override; - - bool start() override; - -private: - void notifyMessage(const ty_message_data *msg); - void notifyLog(const ty_message_data *msg); - void notifyStatus(const ty_message_data *msg); - void notifyProgress(const ty_message_data *msg); -}; - -class ImmediateTask : public Task { - std::function f_; - -public: - ImmediateTask(std::function f) - : f_(f) {} - - bool start() override; -}; - -class FailedTask : public Task { - QString msg_; - -public: - FailedTask(const QString &msg = QString()) - : msg_(msg) {} - - bool start() override; -}; - -class TaskInterface { - std::shared_ptr task_; - -public: - TaskInterface(std::shared_ptr task = std::make_shared()); - - bool start(); - - QString name() const; - ty_task_status status() const; - uint64_t progress() const; - uint64_t progressMaximum() const; - bool success() const; - std::shared_ptr result() const; - - friend class TaskListener; -}; - -template -TaskInterface make_task(Args&&... args) -{ - return TaskInterface(std::make_shared(args...)); -} - -class TaskListener { - std::shared_ptr task_ = std::make_shared(); - -public: - TaskListener() {} - TaskListener(TaskInterface *task) - : task_(task->task_) {} - virtual ~TaskListener(); - - void setTask(TaskInterface *task); - TaskInterface task() const { return TaskInterface(task_); } - -protected: - virtual void notifyLog(ty_log_level level, const QString &msg); - virtual void notifyPending(); - virtual void notifyStarted(); - virtual void notifyFinished(bool success, std::shared_ptr result); - virtual void notifyProgress(const QString &action, uint64_t value, uint64_t max); - - friend class Task; -}; - -class TaskWatcher : public QObject, public TaskListener { - Q_OBJECT - -public: - TaskWatcher(QObject *parent = nullptr) - : QObject(parent) {} - -signals: - void log(ty_log_level level, const QString &msg); - void pending(); - void started(); - void finished(bool success, std::shared_ptr result); - void progress(const QString &action, uint64_t value, uint64_t max); - -protected: - void notifyLog(ty_log_level level, const QString &msg) override; - void notifyPending() override; - void notifyStarted() override; - void notifyFinished(bool success, std::shared_ptr result) override; - void notifyProgress(const QString &action, uint64_t value, uint64_t max) override; -}; - -#endif diff --git a/src/tycommander/tycommander.cc b/src/tycommander/tycommander.cc deleted file mode 100644 index 0ab39fbd..00000000 --- a/src/tycommander/tycommander.cc +++ /dev/null @@ -1,668 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _WIN32 - #define WIN32_LEAN_AND_MEAN - #include -#endif - -#include "arduino_install.hpp" -#include "client_handler.hpp" -#include "../libty/common.h" -#include "log_dialog.hpp" -#include "main_window.hpp" -#include "../libty/optline.h" -#include "task.hpp" -#include "tycommander.hpp" - -struct ClientCommand { - const char *name; - - int (TyCommander::*f)(int argc, char *argv[]); - - const char *arg; - const char *description; -}; - -static const ClientCommand commands[] = { - {"run", &TyCommander::runMainInstance, NULL, NULL}, - {"open", &TyCommander::executeRemoteCommand, NULL, QT_TR_NOOP("Open a new window (default)")}, - {"reset", &TyCommander::executeRemoteCommand, NULL, QT_TR_NOOP("Reset board")}, - {"reboot", &TyCommander::executeRemoteCommand, NULL, QT_TR_NOOP("Reboot board")}, - {"upload", &TyCommander::executeRemoteCommand, QT_TR_NOOP("[]"), QT_TR_NOOP("Upload current or new firmware")}, - {"attach", &TyCommander::executeRemoteCommand, NULL, QT_TR_NOOP("Attach serial monitor")}, - {"detach", &TyCommander::executeRemoteCommand, NULL, QT_TR_NOOP("Detach serial monitor")}, - {"integrate", &TyCommander::integrateArduino, NULL, NULL}, - {"restore", &TyCommander::integrateArduino, NULL, NULL}, - // Hidden command for Arduino 1.0.6 integration - {"avrdude", &TyCommander::fakeAvrdudeUpload, NULL, NULL}, - {0} -}; - -using namespace std; - -TyCommander::TyCommander(int &argc, char *argv[]) - : QApplication(argc, argv), argc_(argc), argv_(argv) -{ - setOrganizationName("TyTools"); - setApplicationName(TY_CONFIG_TYCOMMANDER_NAME); - setApplicationVersion(ty_version_string()); - - // This can be triggered from multiple threads, but Qt can queue signals appropriately - ty_message_redirect([](const ty_message_data *msg, void *) { - ty_message_default_handler(msg, nullptr); - - if (msg->type == TY_MESSAGE_LOG) { - if (msg->u.log.level <= TY_LOG_WARNING) { - tyCommander->reportError(msg->u.log.msg, msg->ctx); - } else { - tyCommander->reportDebug(msg->u.log.msg, msg->ctx); - } - } - }, nullptr); - - initDatabase("tyqt", tycommander_db_); - setDatabase(&tycommander_db_); - loadSettings(); - - action_visible_ = new QAction(tr("&Visible"), this); - action_visible_->setCheckable(true); - action_visible_->setChecked(true); - - action_quit_ = new QAction(tr("&Quit"), this); - - tray_menu_.addAction(action_visible_); - tray_menu_.addSeparator(); - tray_menu_.addAction(action_quit_); - - tray_icon_.setIcon(QIcon(":/tycommander")); - tray_icon_.setContextMenu(&tray_menu_); - - connect(&tray_icon_, &QSystemTrayIcon::activated, this, &TyCommander::trayActivated); - connect(action_visible_, &QAction::toggled, this, &TyCommander::setVisible); - connect(action_quit_, &QAction::triggered, this, &TyCommander::quit); - - channel_.init(); -} - -TyCommander::~TyCommander() -{ - ty_message_redirect(ty_message_default_handler, nullptr); -} - -QString TyCommander::clientFilePath() -{ -#ifdef _WIN32 - return applicationDirPath() + "/" TY_CONFIG_TYCOMMANDER_EXECUTABLE "C.exe"; -#else - return applicationFilePath(); -#endif -} - -void TyCommander::loadSettings() -{ - /* FIXME: Fix (most likely) broken behavior of hideOnStartup with - Cmd+H on OSX when my MacBook is repaired. */ -#ifdef __APPLE__ - show_tray_icon_ = db_.get("UI/showTrayIcon", false).toBool(); - hide_on_startup_ = db_.get("UI/hideOnStartup", false).toBool(); -#else - show_tray_icon_ = db_.get("UI/showTrayIcon", true).toBool(); - hide_on_startup_ = show_tray_icon_ && db_.get("UI/hideOnStartup", false).toBool(); -#endif - - emit settingsChanged(); -} - -int TyCommander::exec() -{ - return tyCommander->run(tyCommander->argc_, tyCommander->argv_); -} - -void TyCommander::showLogWindow() -{ - log_dialog_->show(); -} - -void TyCommander::reportError(const QString &msg, const QString &ctx) -{ - emit globalError(msg, ctx); -} - -void TyCommander::reportDebug(const QString &msg, const QString &ctx) -{ - emit globalDebug(msg, ctx); -} - -void TyCommander::setVisible(bool visible) -{ - if (visible) { - for (auto widget: topLevelWidgets()) { - if (widget->inherits("MainWindow")) { - widget->move(widget->property("position").toPoint()); - widget->show(); - } - } - } else { - for (auto widget: topLevelWidgets()) { - if (widget->inherits("MainWindow")) { - widget->setProperty("position", widget->pos()); - widget->hide(); - } - } - } - - action_visible_->setChecked(visible); -} - -void TyCommander::setShowTrayIcon(bool show_tray_icon) -{ - show_tray_icon_ = show_tray_icon; - tray_icon_.setVisible(show_tray_icon); - - db_.put("UI/showTrayIcon", show_tray_icon); - emit settingsChanged(); -} - -void TyCommander::setHideOnStartup(bool hide_on_startup) -{ - hide_on_startup_ = hide_on_startup; - - db_.put("UI/hideOnStartup", hide_on_startup); - emit settingsChanged(); -} - -int TyCommander::run(int argc, char *argv[]) -{ - if (argc >= 2) { - if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "help") == 0) { - showClientMessage(helpText()); - return EXIT_SUCCESS; - } - if (strcmp(argv[1], "--version") == 0) { - showClientMessage(QString("%1 %2").arg(applicationName(), applicationVersion())); - return EXIT_SUCCESS; - } - - if (argv[1][0] != '-') { - swap(argv[0], argv[1]); - command_ = argv[0]; - argc--; - argv++; - } - } - -#ifdef _WIN32 - // TyCommanderC should not launch TyCommander, it's only a console interface - if (command_.isEmpty() && client_console_) { - showClientMessage(helpText()); - return EXIT_SUCCESS; - } -#endif - - if (command_.isEmpty()) { - if (channel_.lock()) { - command_ = "run"; - } else { - command_ = "open"; - } - } - - for (auto cmd = commands; cmd->name; cmd++) { - if (command_ == cmd->name) - return (this->*(cmd->f))(argc, argv); - } - - showClientError(tr("Unknown command '%1'\n%2").arg(command_, helpText())); - return EXIT_FAILURE; -} - -int TyCommander::runMainInstance(int argc, char *argv[]) -{ - ty_optline_context optl; - char *opt; - - ty_optline_init_argv(&optl, argc, argv); - while ((opt = ty_optline_next_option(&optl))) { - QString opt2 = opt; - if (opt2 == "--help") { - showClientMessage(helpText()); - return EXIT_SUCCESS; - } else if (opt2 == "--quiet" || opt2 == "-q") { - ty_config_verbosity--; - } else { - showClientError(tr("Unknown option '%1'\n%2").arg(opt2, helpText())); - return EXIT_FAILURE; - } - } - - if (!channel_.lock()) { - showClientError(tr("Cannot start main instance, lock file in place")); - return EXIT_FAILURE; - } - - connect(&channel_, &SessionChannel::newConnection, this, &TyCommander::acceptClient); - - initDatabase("boards", monitor_db_); - monitor_.setDatabase(&monitor_db_); - initCache("boards", monitor_cache_); - monitor_.setCache(&monitor_cache_); - monitor_.loadSettings(); - - log_dialog_ = unique_ptr(new LogDialog()); - log_dialog_->setAttribute(Qt::WA_QuitOnClose, false); - log_dialog_->setWindowIcon(QIcon(":/tycommander")); - connect(this, &TyCommander::globalError, log_dialog_.get(), &LogDialog::appendError); - connect(this, &TyCommander::globalDebug, log_dialog_.get(), &LogDialog::appendDebug); - - if (show_tray_icon_) - tray_icon_.show(); - action_visible_->setChecked(!hide_on_startup_); - auto win = new MainWindow(); - win->setAttribute(Qt::WA_DeleteOnClose); - if (!hide_on_startup_) - win->show(); - - /* Some environments (such as KDE Plasma) keep the application running when a tray - icon/status notifier exists, and we don't want that. Not sure I get why that - happens because quitWhenLastClosed is true, but this works. */ - connect(this, &TyCommander::lastWindowClosed, this, &TyCommander::quit); - - if (!monitor_.start()) { - showClientError(ty_error_last_message()); - return EXIT_FAILURE; - } - - if (!channel_.listen()) - reportError(tr("Failed to start session channel, single-instance mode won't work")); - - return QApplication::exec(); -} - -int TyCommander::executeRemoteCommand(int argc, char *argv[]) -{ - ty_optline_context optl; - char *opt; - bool autostart = false; - QStringList options; - QStringList filters; - QString usbtype; - - ty_optline_init_argv(&optl, argc, argv); - while ((opt = ty_optline_next_option(&optl))) { - QString opt2 = opt; - if (opt2 == "--help") { - showClientMessage(helpText()); - return EXIT_SUCCESS; - } else if (opt2 == "--quiet" || opt2 == "-q") { - ty_config_verbosity--; - } else if (opt2 == "--autostart") { - autostart = true; - } else if (opt2 == "--wait" || opt2 == "-w") { - wait_ = true; - } else if (opt2 == "--multi" || opt2 == "-m") { - options.append("multi"); - } else if (opt2 == "--persist" || opt2 == "-p") { - options.append("persist"); - } else if (opt2 == "--delegate") { - options.append("delegate"); - } else if (opt2 == "--board" || opt2 == "-B") { - char *value = ty_optline_get_value(&optl); - if (!value) { - showClientError(tr("Option '--board' takes an argument\n%1").arg(helpText())); - return EXIT_FAILURE; - } - - filters.append(value); - } else if (opt2 == "--usbtype") { - /* Hidden option to improve the Arduino integration. Basically, if mode is set and - does not contain "_SERIAL", --board is ignored. This way the IDE serial port - selection is ignored when uploading to a non-serial board. */ - char *value = ty_optline_get_value(&optl); - if (!value) { - showClientError(tr("Option '--usbtype' takes an argument\n%1").arg(helpText())); - return EXIT_FAILURE; - } - - usbtype = value; - } else { - showClientError(tr("Unknown option '%1'\n%2").arg(opt2, helpText())); - return EXIT_FAILURE; - } - } - - auto client = channel_.connectToServer(); - if (!client) { - if (autostart) { - if (!QProcess::startDetached(applicationFilePath(), {"-qqq"})) { - showClientError(tr("Failed to start TyCommander main instance")); - return EXIT_FAILURE; - } - - QElapsedTimer timer; - timer.start(); - while (!client && timer.elapsed() < 3000) { - QThread::msleep(20); - client = channel_.connectToServer(); - } - } - - if (!client) { - showClientError(tr("Cannot connect to main instance")); - return EXIT_FAILURE; - } - } - - connect(client.get(), &SessionPeer::received, this, &TyCommander::processServerAnswer); - - // Hack for Arduino integration, see option loop above - if (!usbtype.isEmpty() && !usbtype.contains("_SERIAL")) - filters.clear(); - - client->send({"workdir", QDir::currentPath()}); - if (options.count()) - client->send(QStringList{"options"} + options); - if (!filters.isEmpty()) - client->send(QStringList{"select"} + filters); - QStringList command_arglist = {command_}; - while ((opt = ty_optline_consume_non_option(&optl))) - command_arglist.append(opt); - client->send(command_arglist); - - connect(client.get(), &SessionPeer::closed, this, [=](SessionPeer::CloseReason reason) { - if (reason != SessionPeer::LocalClose) { - showClientError(tr("Main instance closed the connection")); - exit(1); - } - }); - - return QApplication::exec(); -} - -int TyCommander::integrateArduino(int argc, char *argv[]) -{ - if (argc < 2) { - showClientError(helpText()); - return EXIT_FAILURE; - } - - ArduinoInstallation install(argv[1]); - - connect(&install, &ArduinoInstallation::log, [](const QString &msg) { - printf("%s\n", msg.toLocal8Bit().constData()); - fflush(stdout); - }); - connect(&install, &ArduinoInstallation::error, [](const QString &msg) { - fprintf(stderr, "%s\n", msg.toLocal8Bit().constData()); - }); - - if (command_ == "integrate") { - return install.integrate() ? EXIT_SUCCESS : EXIT_FAILURE; - } else { - return install.restore() ? EXIT_SUCCESS : EXIT_FAILURE; - } -} - -int TyCommander::fakeAvrdudeUpload(int argc, char *argv[]) -{ - ty_optline_context optl; - char *opt; - QString upload; - bool verbose = false; - - ty_optline_init_argv(&optl, argc, argv); - while ((opt = ty_optline_next_option(&optl))) { - QString opt2 = opt; - if (opt2 == "-U") { - upload = ty_optline_get_value(&optl); - } else if (opt2 == "-v") { - verbose = true; - /* Ignore most switches, we need to get the value of the ones taking an argument - or they will treated as concatenated single-character switches. */ - } else if (opt2 == "-p" || opt2 == "-b" || opt2 == "-B" || opt2 == "-c" || opt2 == "-C" || - opt2 == "-E" || opt2 == "-i" || opt2 == "-P" || opt2 == "-x") { - ty_optline_get_value(&optl); - } - } - - /* The only avrdude operation we support is -Uflash:w:filename[:format] (format is ignored) - and of course filename can contain colons (the Windows drive separator, for example). */ - auto op_parts = QString(upload).split(":"); - if (op_parts.count() < 3 || op_parts.takeFirst() != "flash" || op_parts.takeFirst() != "w") { - showClientError(tr("Invalid '-U' upload string '%1'").arg(upload)); - return EXIT_FAILURE; - } - if (op_parts.count() > 1) - op_parts.removeLast(); - upload = op_parts.join(':'); - - /* I could factorize sendRemoteCommand() but I like to keep the whole fakeAvrdudeUpload() - thing isolated. Ugly, but non-invasive. */ - command_ = "upload"; - const char *fake_argv[8]; - int fake_argc = 0; - fake_argv[fake_argc++] = argv[0]; - fake_argv[fake_argc++] = "--autostart"; - fake_argv[fake_argc++] = "--wait"; - fake_argv[fake_argc++] = "--multi"; - if (!verbose) - fake_argv[fake_argc++] = "--quiet"; - auto filename = upload.toLocal8Bit(); - fake_argv[fake_argc++] = filename.constData(); - - return executeRemoteCommand(fake_argc, const_cast(fake_argv)); -} - -void TyCommander::resetMonitor() -{ - monitor_cache_.clear(); - monitor_.loadSettings(); -} - -void TyCommander::clearSettingsAndReset() -{ - tycommander_db_.clear(); - loadSettings(); - - monitor_db_.clear(); - monitor_cache_.clear(); - monitor_.loadSettings(); -} - -void TyCommander::clearSettingsAndResetWithConfirmation(QWidget *parent) -{ - QMessageBox msgbox(parent); - - msgbox.setIcon(QMessageBox::Warning); - msgbox.setWindowTitle(tr("Reset Settings & Application")); - msgbox.setText(tr("Reset will erase all your settings, including individual board settings and tags.")); - auto reset = msgbox.addButton(tr("Reset"), QMessageBox::AcceptRole); - msgbox.addButton(QMessageBox::Cancel); - msgbox.setDefaultButton(QMessageBox::Cancel); - - msgbox.exec(); - if (msgbox.clickedButton() != reset) - return; - - tyCommander->clearSettingsAndReset(); -} - -void TyCommander::initDatabase(const QString &name, SettingsDatabase &db) -{ - auto settings = new QSettings(QSettings::IniFormat, QSettings::UserScope, - organizationName(), name, this); - settings->setIniCodec(QTextCodec::codecForName("UTF-8")); - db.setSettings(settings); -} - -void TyCommander::initCache(const QString &name, SettingsDatabase &cache) -{ - /* QStandardPaths adds organizationName()/applicationName() to the generic OS cache path, - but we put our files in organizationName() to share them with tycmd. On Windows, Qt uses - AppData/Local/organizationName()/applicationName()/cache so we need to special case that. */ -#ifdef _WIN32 - auto path = QString("%1/../%2.ini") - .arg(QStandardPaths::writableLocation(QStandardPaths::DataLocation), name); -#else - auto path = QString("%1/../%2.ini") - .arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation), name); -#endif - auto settings = new QSettings(path, QSettings::IniFormat, this); - settings->setIniCodec(QTextCodec::codecForName("UTF-8")); - cache.setSettings(settings); -} - -QString TyCommander::helpText() -{ - QString help = tr("usage: %1 [options]\n\n" - "General options:\n" - " --help Show help message\n" - " --version Display version information\n" - " -q, --quiet Disable output, use -qqq to silence errors\n\n" - "Client options:\n" - " --autostart Start main instance if it is not available\n" - " -w, --wait Wait until full completion\n\n" - " -B, --board Work with board instead of first detected\n" - " -m, --multi Select all matching boards (first match by default)\n" - " -p, --persist Save new board settings (e.g. command attach)\n" - " --delegate Reboot the board and let Teensy Loader do the rest\n\n" - "Commands:\n").arg(QFileInfo(QApplication::applicationFilePath()).fileName()); - - for (auto cmd = commands; cmd->name; cmd++) { - if (!cmd->description) - continue; - - QString name = cmd->name; - if (cmd->arg) - name += QString(" %1").arg(tr(cmd->arg)); - help += QString(" %1 %2\n").arg(name, -24).arg(tr(cmd->description)); - } - help.chop(1); - - return help; -} - -void TyCommander::showClientMessage(const QString &msg) -{ - if (client_console_) { - printf("%s\n", msg.toLocal8Bit().constData()); - } else { - QMessageBox::information(nullptr, QApplication::applicationName(), msg); - } -} - -void TyCommander::showClientError(const QString &msg) -{ - if (client_console_) { - fprintf(stderr, "%s\n", msg.toLocal8Bit().constData()); - } else { - QMessageBox::critical(nullptr, tr("%1 (error)").arg(QApplication::applicationName()), msg); - } -} - -void TyCommander::trayActivated(QSystemTrayIcon::ActivationReason reason) -{ -#ifndef __APPLE__ - if (reason == QSystemTrayIcon::Trigger) - setVisible(!visible()); -#else - Q_UNUSED(reason); -#endif -} - -void TyCommander::acceptClient() -{ - auto peer = channel_.nextPendingConnection(); - auto client = new ClientHandler(move(peer), this); - connect(client, &ClientHandler::closed, client, &ClientHandler::deleteLater); -} - -void TyCommander::processServerAnswer(const QStringList &arguments) -{ - QStringList parameters = arguments; - QString cmd; - - if (!arguments.count()) - goto error; - cmd = parameters.takeFirst(); - - if (cmd == "log") { - if (parameters.count() < 2) - goto error; - - ty_message_data msg = {}; - QByteArray ctx_buf; - if (!parameters[0].isEmpty()) { - ctx_buf = parameters[0].toLocal8Bit(); - msg.ctx = ctx_buf.constData(); - } - msg.type = TY_MESSAGE_LOG; - msg.u.log.level = static_cast(QString(parameters[1]).toInt()); - QByteArray msg_buf = parameters[2].toLocal8Bit(); - msg.u.log.msg = msg_buf.constData(); - - ty_message(&msg); - } else if (cmd == "progress") { - if (parameters.count() < 3) - goto error; - - ty_message_data msg = {}; - QByteArray ctx_buf; - if (!parameters[0].isEmpty()) { - ctx_buf = parameters[0].toLocal8Bit(); - msg.ctx = ctx_buf.constData(); - } - msg.type = TY_MESSAGE_PROGRESS; - QByteArray action_buf = parameters[1].toLocal8Bit(); - msg.u.progress.action = action_buf.constData(); - msg.u.progress.value = parameters[2].toULongLong(); - msg.u.progress.max = parameters[3].toULongLong(); - - ty_message(&msg); - } else if (cmd == "start") { - if (!wait_) - exit(0); - } else if (cmd == "exit") { - exit(parameters.value(0, "0").toInt()); -#ifdef _WIN32 - } else if (cmd == "allowsetforegroundwindow") { - if (parameters.count() < 1) - goto error; - - /* The server may show a window for some commands, such as the board dialog. Executables - launched from an application with focus can pop on top, so this instance can probably - do it but the TyCommander main instance cannot unless we call - AllowSetForegroundWindow(). It also works if this instance is run through tyqtc - (to provide console I/O) because tyqtc calls AllowSetForegroundWindow() for this - process too. - - We could use GetNamedPipeServerProcessId() instead of sending the PID through the - channel, but it is not available on XP. */ - AllowSetForegroundWindow(parameters[0].toUInt()); -#endif - } else { - goto error; - } - - return; - -error: - showClientError(tr("Received incorrect data from main instance")); - exit(1); -} diff --git a/src/tycommander/tycommander.hpp b/src/tycommander/tycommander.hpp deleted file mode 100644 index 3600f12f..00000000 --- a/src/tycommander/tycommander.hpp +++ /dev/null @@ -1,130 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef TYCOMMANDER_HH -#define TYCOMMANDER_HH - -#include -#include -#include -#include - -#include - -#include "database.hpp" -#include "monitor.hpp" -#include "session_channel.hpp" - -class LogDialog; -class MainWindow; -class SelectorDialog; - -#define tyCommander (TyCommander::instance()) - -class TyCommander : public QApplication { - Q_OBJECT - - int argc_; - char **argv_; - QString command_; - bool wait_ = false; - - SessionChannel channel_; - - Monitor monitor_; - - SettingsDatabase tycommander_db_; - SettingsDatabase monitor_db_; - SettingsDatabase monitor_cache_; - - DatabaseInterface db_; - - QAction *action_visible_; - QAction *action_quit_; - QSystemTrayIcon tray_icon_; - QMenu tray_menu_; - -#ifdef _WIN32 - bool client_console_ = false; -#else - bool client_console_ = true; -#endif - - bool show_tray_icon_; - bool hide_on_startup_; - - std::unique_ptr log_dialog_; - -public: - TyCommander(int &argc, char *argv[]); - virtual ~TyCommander(); - - static QString clientFilePath(); - - void setDatabase(DatabaseInterface db) { db_ = db; } - DatabaseInterface database() const { return db_; } - void loadSettings(); - - static int exec(); - - static TyCommander *instance() { return static_cast(QCoreApplication::instance()); } - Monitor *monitor() { return &monitor_; } - - bool visible() const { return action_visible_->isChecked(); } - - void setClientConsole(bool console) { client_console_ = console; } - bool clientConsole() const { return client_console_; } - - bool showTrayIcon() const { return show_tray_icon_; } - bool hideOnStartup() const { return hide_on_startup_; } - - int run(int argc, char *argv[]); - int runMainInstance(int argc, char *argv[]); - int executeRemoteCommand(int argc, char *argv[]); - int integrateArduino(int argc, char *argv[]); - int fakeAvrdudeUpload(int argc, char *argv[]); - - void resetMonitor(); - void clearSettingsAndReset(); - void clearSettingsAndResetWithConfirmation(QWidget *parent = nullptr); - -public slots: - void showLogWindow(); - - void reportError(const QString &msg, const QString &ctx = QString()); - void reportDebug(const QString &msg, const QString &ctx = QString()); - - void setShowTrayIcon(bool show_tray_icon); - void setHideOnStartup(bool hide_on_startup); - - void setVisible(bool visible); - -signals: - void settingsChanged(); - - void globalError(const QString &msg, const QString &ctx); - void globalDebug(const QString &msg, const QString &ctx); - -private: - void initDatabase(const QString &name, SettingsDatabase &db); - void initCache(const QString &name, SettingsDatabase &cache); - - QString helpText(); - void showClientMessage(const QString &msg); - void showClientError(const QString &msg); - -private slots: - void trayActivated(QSystemTrayIcon::ActivationReason reason); - - void acceptClient(); - void processServerAnswer(const QStringList &arguments); -}; - -#endif diff --git a/src/tycommander/tycommander_linux.desktop.in b/src/tycommander/tycommander_linux.desktop.in deleted file mode 100644 index 67913317..00000000 --- a/src/tycommander/tycommander_linux.desktop.in +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Version=@VERSION@ -Name=@CONFIG_TYCOMMANDER_NAME@ -Comment=GUI tool to manage Teensy devices -TryExec=@CONFIG_TYCOMMANDER_EXECUTABLE@ -Icon=tycommander -Exec=@CONFIG_TYCOMMANDER_EXECUTABLE@ -Terminal=false -Type=Application -Categories=Development; diff --git a/src/tycommander/tycommander_macos.plist.in b/src/tycommander/tycommander_macos.plist.in deleted file mode 100644 index 3c47f62b..00000000 --- a/src/tycommander/tycommander_macos.plist.in +++ /dev/null @@ -1,40 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${MACOSX_BUNDLE_EXECUTABLE_NAME} - CFBundleGetInfoString - ${MACOSX_BUNDLE_INFO_STRING} - CFBundleIconFile - ${MACOSX_BUNDLE_ICON_FILE} - CFBundleIdentifier - ${MACOSX_BUNDLE_GUI_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleLongVersionString - ${MACOSX_BUNDLE_LONG_VERSION_STRING} - CFBundleName - ${MACOSX_BUNDLE_BUNDLE_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - ${MACOSX_BUNDLE_SHORT_VERSION_STRING} - CFBundleSignature - ???? - CFBundleVersion - ${MACOSX_BUNDLE_BUNDLE_VERSION} - CSResourcesFileMapped - - NSHumanReadableCopyright - ${MACOSX_BUNDLE_COPYRIGHT} - NSPrincipalClass - NSApplication - NSHighResolutionCapable - True - NSRequiresAquaSystemAppearance - - - diff --git a/src/tycommander/tycommander_win32.manifest b/src/tycommander/tycommander_win32.manifest deleted file mode 100644 index 57a646d3..00000000 --- a/src/tycommander/tycommander_win32.manifest +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/tycommander/tycommander_win32.rc.in b/src/tycommander/tycommander_win32.rc.in deleted file mode 100644 index 751d9130..00000000 --- a/src/tycommander/tycommander_win32.rc.in +++ /dev/null @@ -1,6 +0,0 @@ -/* For some reason, including winuser.h breaks MSVC rc.exe when using an XP - PlatformToolset (e.g. v140_xp) with a cryptic error message. */ - -// CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST -1 24 "tycommander_win32.manifest" -IDR_MAINFRAME ICON "@TYCOMMANDER_ICON_FILE_PREFIX@.ico" diff --git a/src/tycommander/tycommanderc.c b/src/tycommander/tycommanderc.c deleted file mode 100644 index b1392b10..00000000 --- a/src/tycommander/tycommanderc.c +++ /dev/null @@ -1,190 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#define WIN32_LEAN_AND_MEAN -#include -#include -#include -#include -#define _CRT_RAND_S -#include -#include - -struct echo_context { - HANDLE pipe; - - HANDLE in; - HANDLE out; -}; - -#define UNUSED(arg) ((void)(arg)) -#define COUNTOF(a) (sizeof(a) / sizeof(*(a))) - -static DWORD WINAPI echo_thread(void *udata) -{ - struct echo_context *ctx = udata; - BOOL success; - - success = ConnectNamedPipe(ctx->pipe, NULL); - if (!success) - return 0; - - while (true) { - uint8_t buf[1024]; - DWORD len; - - success = ReadFile(ctx->in, buf, sizeof(buf), &len, NULL); - if (!success) - return 0; - - success = WriteFile(ctx->out, buf, len, &len, NULL); - if (!success) - return 0; - } - - return 0; -} - -typedef enum echo_direction { - ECHO_IN, - ECHO_OUT -} echo_direction; - -static inline bool handle_is_valid(HANDLE h) -{ - return h && h != INVALID_HANDLE_VALUE; -} - -/* If this function succeeds, resources will be leaked when the thread ends but it - is supposed to run until the end anyway. */ -static bool start_echo_thread(HANDLE desc, echo_direction dir, char *path, size_t path_size) -{ - struct echo_context *ctx; - HANDLE thread; - - ctx = calloc(1, sizeof(*ctx)); - if (!ctx) - goto error; - - for (unsigned int i = 0; i < 8 && !handle_is_valid(ctx->pipe); i++) { - unsigned int rnd; - - rand_s(&rnd); - snprintf(path, path_size, "\\\\.\\pipe\\tycommanderc-pipe-%04x", rnd); - - ctx->pipe = CreateNamedPipe(path, PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE, - PIPE_TYPE_BYTE | PIPE_READMODE_BYTE, 1, 512, 512, 0, NULL); - } - if (!handle_is_valid(ctx->pipe)) - goto error; - - switch (dir) { - case ECHO_IN: { - ctx->in = desc; - ctx->out = ctx->pipe; - } break; - - case ECHO_OUT: { - ctx->in = ctx->pipe; - ctx->out = desc; - } break; - } - - thread = CreateThread(NULL, 0, echo_thread, ctx, 0, NULL); - if (!thread) - goto error; - CloseHandle(thread); - - return true; - -error: - if (ctx && handle_is_valid(ctx->pipe)) - CloseHandle(ctx->pipe); - free(ctx); - return false; -} - -static bool setup_pipes(void) -{ - char paths[3][256], env[1024]; - -#define START_ECHO_THREAD(n, nstd, dir) \ - do { \ - bool ret = start_echo_thread(GetStdHandle(nstd), (dir), paths[n], sizeof(paths[n])); \ - if (!ret) \ - return false; \ - } while (false) - - /* You cannot use asynchronous I/O or the Wait functions for console I/O on Windows, - do not ask me why but that is sad. It is possible for Named Pipes though. */ - START_ECHO_THREAD(0, STD_INPUT_HANDLE, ECHO_IN); - START_ECHO_THREAD(1, STD_OUTPUT_HANDLE, ECHO_OUT); - START_ECHO_THREAD(2, STD_ERROR_HANDLE, ECHO_OUT); - -#undef START_ECHO_THREAD - - snprintf(env, sizeof(env), "_TYCOMMANDERC_PIPES=%s:%s:%s", paths[0], paths[1], paths[2]); - _putenv(env); - - return true; -} - -static bool execute_tycommander(LPSTR cmdline, const STARTUPINFO *si, DWORD *rret) -{ - char path[MAX_PATH + 1], *ptr; - PROCESS_INFORMATION proc; - BOOL success; - - GetModuleFileName(NULL, path, sizeof(path)); - path[MAX_PATH] = 0; - ptr = strrchr(path, '\\'); - if (!ptr) - return false; - strncpy(ptr, "\\tycommander.exe", (size_t)(path + sizeof(path) - ptr)); - path[MAX_PATH] = 0; - - success = CreateProcess(path, cmdline, NULL, NULL, TRUE, 0, NULL, NULL, (STARTUPINFO *)si, &proc); - if (!success) - return false; - CloseHandle(proc.hThread); - - AllowSetForegroundWindow(GetProcessId(proc.hProcess)); - - WaitForSingleObject(proc.hProcess, INFINITE); - if (rret) - GetExitCodeProcess(proc.hProcess, rret); - CloseHandle(proc.hProcess); - - return true; -} - -int main(void) -{ - STARTUPINFO si; - DWORD ret; - - si.cb = sizeof(si); - GetStartupInfo(&si); - - if (!setup_pipes()) - goto error; - if (!execute_tycommander(GetCommandLine(), &si, &ret)) - goto error; - - // Small delay to avoid dropping unread output/error data - Sleep(50); - - return (int)ret; - -error: - // No kidding - fprintf(stderr, "TyCommanderC failed\n"); - return 2; -} diff --git a/src/tyuploader/CMakeLists.txt b/src/tyuploader/CMakeLists.txt deleted file mode 100644 index ae30ec11..00000000 --- a/src/tyuploader/CMakeLists.txt +++ /dev/null @@ -1,82 +0,0 @@ -# TyTools - public domain -# Niels Martignène -# https://koromix.dev/tytools - -# This software is in the public domain. Where that dedication is not -# recognized, you are granted a perpetual, irrevocable license to copy, -# distribute, and modify this file as you see fit. - -# See the LICENSE file for more details. - -find_package(EasyQt5) - -set(TYUPLOADER_SOURCES ../tycommander/board.cc - ../tycommander/board.hpp - ../tycommander/database.cc - ../tycommander/database.hpp - ../tycommander/descriptor_notifier.cc - ../tycommander/descriptor_notifier.hpp - ../tycommander/firmware.cc - ../tycommander/firmware.hpp - ../tycommander/log_dialog.cc - ../tycommander/log_dialog.hpp - ../tycommander/monitor.cc - ../tycommander/monitor.hpp - ../tycommander/task.cc - ../tycommander/task.hpp - tyuploader.cc - tyuploader.hpp - uploader_window.cc - uploader_window.hpp) -set(TYUPLOADER_FORMS ../tycommander/log_dialog.ui - uploader_window.ui) - -set(TYUPLOADER_ICON_FILE_PREFIX "${CMAKE_SOURCE_DIR}/resources/images/tyuploader") -set(TYUPLOADER_RESOURCES "${CMAKE_SOURCE_DIR}/resources/resources.qrc") -if(CONFIG_VARIANT) - if(EXISTS "${CONFIG_VARIANT_PATH}/tyuploader.png") - set(TYUPLOADER_ICON_FILE_PREFIX "${CONFIG_VARIANT_PATH}/tyuploader") - endif() - if(EXISTS "${CONFIG_VARIANT_PATH}/resources.qrc") - set(TYUPLOADER_RESOURCES "${CONFIG_VARIANT_PATH}/resources.qrc") - endif() -endif() - -if(WIN32) - configure_file(tyuploader_win32.rc.in tyuploader_win32.rc) - list(APPEND TYUPLOADER_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/tyuploader_win32.rc") -elseif(APPLE) - list(APPEND TYUPLOADER_SOURCES "${TYUPLOADER_ICON_FILE_PREFIX}.icns") -endif() - -qt5_wrap_ui(TYUPLOADER_FORMS_HEADERS ${TYUPLOADER_FORMS}) -qt5_add_resources(TYUPLOADER_RESOURCES_RCC ${TYUPLOADER_RESOURCES}) - -add_executable(tyuploader WIN32 MACOSX_BUNDLE - ${TYUPLOADER_SOURCES} ${TYUPLOADER_FORMS_HEADERS} ${TYUPLOADER_RESOURCES_RCC}) -set_target_properties(tyuploader PROPERTIES AUTOMOC ON - OUTPUT_NAME ${CONFIG_TYUPLOADER_EXECUTABLE} - MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/tyuploader_macos.plist.in") -target_link_libraries(tyuploader PRIVATE libhs libty EasyQt5) -# We need these include directories for moc-generated files -target_include_directories(tyuploader PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_BINARY_DIR}) -if(APPLE) - set_source_files_properties("${TYUPLOADER_ICON_FILE_PREFIX}.icns" PROPERTIES MACOSX_PACKAGE_LOCATION Resources) - get_filename_component(_icon_file_name "${TYUPLOADER_ICON_FILE_PREFIX}.icns" NAME) - set_target_properties(tyuploader PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME ${CONFIG_TYUPLOADER_NAME} - MACOSX_BUNDLE_ICON_FILE ${_icon_file_name}) -endif() -enable_unity_build(tyuploader) - -if(WIN32) - install(TARGETS tyuploader RUNTIME DESTINATION .) -elseif(APPLE) - install(TARGETS tyuploader BUNDLE DESTINATION .) -else() - install(TARGETS tyuploader RUNTIME DESTINATION bin) - configure_file(tyuploader_linux.desktop.in tyuploader_linux.desktop) - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/tyuploader_linux.desktop" DESTINATION share/applications RENAME tyuploader.desktop) -endif() - -set(TYUPLOADER_ICON_FILE_PREFIX ${TYUPLOADER_ICON_FILE_PREFIX} PARENT_SCOPE) diff --git a/src/tyuploader/tyuploader.cc b/src/tyuploader/tyuploader.cc deleted file mode 100644 index ab63b6bf..00000000 --- a/src/tyuploader/tyuploader.cc +++ /dev/null @@ -1,118 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include - -#include "../libhs/common.h" -#include "../libty/common.h" -#include "../libty/class.h" -#include "../tycommander/log_dialog.hpp" -#include "../tycommander/monitor.hpp" -#include "tyuploader.hpp" -#include "uploader_window.hpp" - -#ifdef QT_STATIC - #include - #if defined(_WIN32) - Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin) - Q_IMPORT_PLUGIN(QWindowsVistaStylePlugin) - #elif defined(__APPLE__) - Q_IMPORT_PLUGIN(QCocoaIntegrationPlugin) - #endif -#endif - -using namespace std; - -TyUploader::TyUploader(int &argc, char *argv[]) - : QApplication(argc, argv) -{ - setOrganizationName("ty"); - setApplicationName(TY_CONFIG_TYUPLOADER_NAME); - setApplicationVersion(ty_version_string()); - - ty_message_redirect([](const ty_message_data *msg, void *) { - ty_message_default_handler(msg, nullptr); - - if (msg->type == TY_MESSAGE_LOG) { - if (msg->u.log.level <= TY_LOG_WARNING) { - tyUploader->reportError(msg->u.log.msg, msg->ctx); - } else { - tyUploader->reportDebug(msg->u.log.msg, msg->ctx); - } - } - }, nullptr); - - log_dialog_ = unique_ptr(new LogDialog()); - log_dialog_->setAttribute(Qt::WA_QuitOnClose, false); - log_dialog_->setWindowIcon(QIcon(":/tyuploader")); - connect(this, &TyUploader::globalError, log_dialog_.get(), &LogDialog::appendError); - connect(this, &TyUploader::globalDebug, log_dialog_.get(), &LogDialog::appendDebug); -} - -TyUploader::~TyUploader() -{ - ty_message_redirect(ty_message_default_handler, nullptr); -} - -void TyUploader::showLogWindow() -{ - log_dialog_->show(); -} - -void TyUploader::reportError(const QString &msg, const QString &ctx) -{ - emit globalError(msg, ctx); -} - -void TyUploader::reportDebug(const QString &msg, const QString &ctx) -{ - emit globalDebug(msg, ctx); -} - -int TyUploader::exec() -{ - return tyUploader->run(); -} - -int TyUploader::run() -{ - monitor_.reset(new Monitor()); - monitor_->setIgnoreGeneric(true); - monitor_->setIgnoreSecondary(true); - monitor_->setSerialByDefault(false); - monitor_->setSerialLogSize(0); - if (!monitor_->start()) { - QMessageBox::critical(nullptr, tr("%1 (error)").arg(applicationName()), - ty_error_last_message()); - return EXIT_FAILURE; - } - - UploaderWindow win; - win.show(); - - return QApplication::exec(); -} - -int main(int argc, char *argv[]) -{ - hs_log_set_handler(ty_libhs_log_handler, NULL); - - qRegisterMetaType("ty_log_level"); - qRegisterMetaType>("std::shared_ptr"); - qRegisterMetaType("ty_descriptor"); - qRegisterMetaType("uint64_t"); - - QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - - TyUploader app(argc, argv); - return app.exec(); -} diff --git a/src/tyuploader/tyuploader.hpp b/src/tyuploader/tyuploader.hpp deleted file mode 100644 index f5ac1b7e..00000000 --- a/src/tyuploader/tyuploader.hpp +++ /dev/null @@ -1,51 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef TYUPLOADER_HH -#define TYUPLOADER_HH - -#include - -#include - -#define tyUploader (TyUploader::instance()) - -class LogDialog; -class Monitor; - -class TyUploader: public QApplication { - Q_OBJECT - - std::unique_ptr monitor_; - std::unique_ptr log_dialog_; - -public: - TyUploader(int &argc, char *argv[]); - virtual ~TyUploader(); - - static int exec(); - - static TyUploader *instance() { return qobject_cast(QCoreApplication::instance()); } - Monitor *monitor() { return monitor_.get(); } - - int run(); - -public slots: - void showLogWindow(); - - void reportError(const QString &msg, const QString &ctx = QString()); - void reportDebug(const QString &msg, const QString &ctx = QString()); - -signals: - void globalError(const QString &msg, const QString &ctx); - void globalDebug(const QString &msg, const QString &ctx); -}; - -#endif diff --git a/src/tyuploader/tyuploader_linux.desktop.in b/src/tyuploader/tyuploader_linux.desktop.in deleted file mode 100644 index 1d8b4665..00000000 --- a/src/tyuploader/tyuploader_linux.desktop.in +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Version=@VERSION@ -Name=@CONFIG_TYUPLOADER_NAME@ -Comment=GUI tool to flash Teensy devices -TryExec=@CONFIG_TYUPLOADER_EXECUTABLE@ -Icon=tyuploader -Exec=@CONFIG_TYUPLOADER_EXECUTABLE@ -Terminal=false -Type=Application -Categories=Development; diff --git a/src/tyuploader/tyuploader_macos.plist.in b/src/tyuploader/tyuploader_macos.plist.in deleted file mode 100644 index 3c47f62b..00000000 --- a/src/tyuploader/tyuploader_macos.plist.in +++ /dev/null @@ -1,40 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${MACOSX_BUNDLE_EXECUTABLE_NAME} - CFBundleGetInfoString - ${MACOSX_BUNDLE_INFO_STRING} - CFBundleIconFile - ${MACOSX_BUNDLE_ICON_FILE} - CFBundleIdentifier - ${MACOSX_BUNDLE_GUI_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleLongVersionString - ${MACOSX_BUNDLE_LONG_VERSION_STRING} - CFBundleName - ${MACOSX_BUNDLE_BUNDLE_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - ${MACOSX_BUNDLE_SHORT_VERSION_STRING} - CFBundleSignature - ???? - CFBundleVersion - ${MACOSX_BUNDLE_BUNDLE_VERSION} - CSResourcesFileMapped - - NSHumanReadableCopyright - ${MACOSX_BUNDLE_COPYRIGHT} - NSPrincipalClass - NSApplication - NSHighResolutionCapable - True - NSRequiresAquaSystemAppearance - - - diff --git a/src/tyuploader/tyuploader_win32.manifest b/src/tyuploader/tyuploader_win32.manifest deleted file mode 100644 index 57a646d3..00000000 --- a/src/tyuploader/tyuploader_win32.manifest +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/src/tyuploader/tyuploader_win32.rc.in b/src/tyuploader/tyuploader_win32.rc.in deleted file mode 100644 index 2193aeed..00000000 --- a/src/tyuploader/tyuploader_win32.rc.in +++ /dev/null @@ -1,6 +0,0 @@ -/* For some reason, including winuser.h breaks MSVC rc.exe when using an XP - PlatformToolset (e.g. v140_xp) with a cryptic error message. */ - -// CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST -1 24 "tyuploader_win32.manifest" -IDR_MAINFRAME ICON "@TYUPLOADER_ICON_FILE_PREFIX@.ico" diff --git a/src/tyuploader/uploader_window.cc b/src/tyuploader/uploader_window.cc deleted file mode 100644 index d53da7aa..00000000 --- a/src/tyuploader/uploader_window.cc +++ /dev/null @@ -1,183 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include -#include - -#include "../tycommander/board.hpp" -#include "../tycommander/monitor.hpp" -#include "../tycommander/task.hpp" -#include "tyuploader.hpp" -#include "uploader_window.hpp" - -using namespace std; - -QVariant UploaderWindowModelFilter::data(const QModelIndex &index, int role) const -{ - if (index.column() == Monitor::COLUMN_BOARD && role == Qt::DisplayRole) { - auto board = Monitor::boardFromModel(this, index); - return QString("%1 %2").arg(board->description()).arg(board->serialNumber()); - } - - return QIdentityProxyModel::data(index, role); -} - -UploaderWindow::UploaderWindow(QWidget *parent) - : QMainWindow(parent), monitor_(tyUploader->monitor()) -{ - setupUi(this); - setWindowTitle(QApplication::applicationName()); - - if (QFile::exists(":/logo")) - logoLabel->setPixmap(QPixmap(":/logo")); - resize(0, 0); - - connect(actionUpload, &QAction::triggered, this, &UploaderWindow::uploadNewToCurrent); - connect(actionReset, &QAction::triggered, this, &UploaderWindow::resetCurrent); - connect(actionQuit, &QAction::triggered, this, &TyUploader::quit); - - connect(actionOpenLog, &QAction::triggered, tyUploader, &TyUploader::showLogWindow); - if (TY_CONFIG_URL_WEBSITE[0]) { - connect(actionWebsite, &QAction::triggered, this, &UploaderWindow::openWebsite); - } else { - actionWebsite->setVisible(false); - } - if (TY_CONFIG_URL_BUGS[0]) { - connect(actionReportBug, &QAction::triggered, this, &UploaderWindow::openBugReports); - } else { - actionReportBug->setVisible(false); - } - - connect(boardComboBox, static_cast(&QComboBox::currentIndexChanged), - this, &UploaderWindow::currentChanged); - monitor_model_.setSourceModel(monitor_); - boardComboBox->setModel(&monitor_model_); - connect(uploadButton, &QToolButton::clicked, this, &UploaderWindow::uploadNewToCurrent); - connect(resetButton, &QToolButton::clicked, this, &UploaderWindow::resetCurrent); - - // Error messages - connect(tyUploader, &TyUploader::globalError, this, &UploaderWindow::showErrorMessage); - - if (!current_board_) - changeCurrentBoard(nullptr); -} - -bool UploaderWindow::event(QEvent *ev) -{ - if (ev->type() == QEvent::StatusTip) - return true; - - return QMainWindow::event(ev); -} - -void UploaderWindow::showErrorMessage(const QString &msg) -{ - statusBar()->showMessage(msg, TY_SHOW_ERROR_TIMEOUT); -} - -void UploaderWindow::uploadNewToCurrent() -{ - if (!current_board_) - return; - - auto filename = QFileDialog::getOpenFileName(this, tr("Select a firmware for this device"), - current_board_->firmware(), browseFirmwareFilter()); - if (filename.isEmpty()) - return; - - current_board_->startUpload(filename); -} - -void UploaderWindow::resetCurrent() -{ - if (!current_board_) - return; - - current_board_->startReset(); -} - -void UploaderWindow::openWebsite() -{ - QDesktopServices::openUrl(QUrl(TY_CONFIG_URL_WEBSITE)); -} - -void UploaderWindow::openBugReports() -{ - QDesktopServices::openUrl(QUrl(TY_CONFIG_URL_BUGS)); -} - -void UploaderWindow::changeCurrentBoard(Board *board) -{ - if (current_board_) { - current_board_->disconnect(this); - current_board_ = nullptr; - } - - if (board) { - current_board_ = board->shared_from_this(); - - connect(board, &Board::interfacesChanged, this, &UploaderWindow::refreshActions); - connect(board, &Board::statusChanged, this, &UploaderWindow::refreshActions); - connect(board, &Board::statusChanged, this, &UploaderWindow::refreshProgress); - connect(board, &Board::progressChanged, this, &UploaderWindow::refreshProgress); - } - - refreshActions(); -} - -void UploaderWindow::refreshActions() -{ - bool upload = false, reset = false; - - if (current_board_) { - if (current_board_->taskStatus() == TY_TASK_STATUS_READY) { - upload = current_board_->hasCapability(TY_BOARD_CAPABILITY_UPLOAD) || - current_board_->hasCapability(TY_BOARD_CAPABILITY_REBOOT); - reset = current_board_->hasCapability(TY_BOARD_CAPABILITY_RESET) || - current_board_->hasCapability(TY_BOARD_CAPABILITY_REBOOT); - } - } else { - stackedWidget->setCurrentIndex(0); - } - - uploadButton->setEnabled(upload); - actionUpload->setEnabled(upload); - resetButton->setEnabled(reset); - actionReset->setEnabled(reset); -} - -void UploaderWindow::refreshProgress() -{ - auto task = current_board_->task(); - - if (task.status() == TY_TASK_STATUS_PENDING || task.status() == TY_TASK_STATUS_RUNNING) { - stackedWidget->setCurrentIndex(1); - taskProgress->setRange(0, task.progressMaximum()); - taskProgress->setValue(task.progress()); - } else { - stackedWidget->setCurrentIndex(0); - } -} - -QString UploaderWindow::browseFirmwareFilter() const -{ - QString exts; - for (unsigned int i = 0; i < ty_firmware_formats_count; i++) - exts += QString("*%1 ").arg(ty_firmware_formats[i].ext); - exts.chop(1); - - return tr("Binary Files (%1);;All Files (*)").arg(exts); -} - -void UploaderWindow::currentChanged(int index) -{ - changeCurrentBoard(Monitor::boardFromModel(&monitor_model_, index).get()); -} diff --git a/src/tyuploader/uploader_window.hpp b/src/tyuploader/uploader_window.hpp deleted file mode 100644 index c9972d94..00000000 --- a/src/tyuploader/uploader_window.hpp +++ /dev/null @@ -1,68 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef uploader_window_HH -#define uploader_window_HH - -#include -#include - -#include - -#include "../libty/common.h" -#include "ui_uploader_window.h" - -class Board; -class Monitor; - -class UploaderWindowModelFilter: public QIdentityProxyModel { - Q_OBJECT - -public: - UploaderWindowModelFilter(QObject *parent = nullptr) - : QIdentityProxyModel(parent) {} - - QVariant data(const QModelIndex &index, int role) const override; -}; - -class UploaderWindow : public QMainWindow, private Ui::UploaderWindow { - Q_OBJECT - - Monitor *monitor_; - UploaderWindowModelFilter monitor_model_; - - std::shared_ptr current_board_; - -public: - UploaderWindow(QWidget *parent = nullptr); - - bool event(QEvent *ev) override; - -public slots: - void showErrorMessage(const QString &msg); - - void uploadNewToCurrent(); - void resetCurrent(); - - void openWebsite(); - void openBugReports(); - -private: - void changeCurrentBoard(Board *board); - void refreshActions(); - void refreshProgress(); - - QString browseFirmwareFilter() const; - -private slots: - void currentChanged(int index); -}; - -#endif diff --git a/src/tyuploader/uploader_window.ui b/src/tyuploader/uploader_window.ui deleted file mode 100644 index b2d0b35d..00000000 --- a/src/tyuploader/uploader_window.ui +++ /dev/null @@ -1,311 +0,0 @@ - - - UploaderWindow - - - - 0 - 0 - 429 - 158 - - - - TyUploader - - - - :/tyuploader:/tyuploader - - - - - - - QComboBox::AdjustToMinimumContentsLengthWithIcon - - - 14 - - - - - - - - - - 64 - 60 - - - - - 64 - 60 - - - - Upload - - - - :/upload:/upload - - - - 32 - 32 - - - - Qt::ToolButtonTextUnderIcon - - - - - - - - 64 - 60 - - - - - 64 - 60 - - - - Reset - - - - :/reset:/reset - - - - 32 - 32 - - - - Qt::ToolButtonTextUnderIcon - - - - - - - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 120 - 60 - - - - - 16777215 - 60 - - - - 24 - - - false - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - 0 - 0 - 429 - 20 - - - - - &Actions - - - - - - - - - &Help - - - - - - - - - - - - - - - - - 255 - 0 - 0 - - - - - - - - - 255 - 0 - 0 - - - - - - - - - 120 - 120 - 120 - - - - - - - - true - - - - - &Upload - - - Ctrl+U - - - - - &Reset - - - Ctrl+R - - - - - &Quit - - - Ctrl+Q - - - - - &Website - - - - - Open &Log - - - - - &Report a bug - - - Report a bug - - - - - - - - diff --git a/tests/libty/CMakeLists.txt b/tests/libty/CMakeLists.txt deleted file mode 100644 index 311951e0..00000000 --- a/tests/libty/CMakeLists.txt +++ /dev/null @@ -1,14 +0,0 @@ -# TyTools - public domain -# Niels Martignène -# https://koromix.dev/tytools - -# This software is in the public domain. Where that dedication is not -# recognized, you are granted a perpetual, irrevocable license to copy, -# distribute, and modify this file as you see fit. - -# See the LICENSE file for more details. - -add_executable(test_libty test_libty.c - test_optline.c) -target_link_libraries(test_libty libhs libty) -add_test(NAME libty COMMAND test_libty) diff --git a/tests/libty/test_libty.c b/tests/libty/test_libty.c deleted file mode 100644 index 341e34f0..00000000 --- a/tests/libty/test_libty.c +++ /dev/null @@ -1,81 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include -#include "test_libty.h" - -void test_optline(void); - -static char current_file[1024]; -static char current_fn[256]; - -static unsigned int current_fails, current_total; -static unsigned int cases_failures, cases_total; - -static void conclude_current_test() -{ - if (!current_total) - return; - - if (current_fails) { - printf(" [%u of %u assertions failed]\n", current_fails, current_total); - cases_failures++; - } - cases_total++; - - current_fails = 0; - current_total = 0; -} - -void report_test(bool pred, const char *file, unsigned int line, const char *fn, - const char *pred_fmt, ...) -{ - if (strncmp(fn, current_fn, sizeof(current_fn)) != 0) { - conclude_current_test(); - - if (strncmp(file, current_file, sizeof(current_file)) != 0) { - printf("Tests from '%s'\n", file); - - strncpy(current_file, file, sizeof(current_file)); - current_file[sizeof(current_file) - 1] = 0; - } - - printf(" Test case '%s'\n", fn); - strncpy(current_fn, fn, sizeof(current_fn)); - current_fn[sizeof(current_fn) - 1] = 0; - } - - if (!pred) { - va_list va; - - printf(" - Failed assertion "); - va_start(va, pred_fmt); - vprintf(pred_fmt, va); - va_end(va); - printf("\n %s:%u in '%s'\n", file, line, fn); - - current_fails++; - } - current_total++; -} - -int main(void) -{ - test_optline(); - - conclude_current_test(); - if (cases_failures) { - printf("\nFailed %u of %u test case(s)\n", cases_failures, cases_total); - return 1; - } else { - printf("\nSuccessfully passed %u test case(s)\n", cases_total); - return 0; - } -} diff --git a/tests/libty/test_libty.h b/tests/libty/test_libty.h deleted file mode 100644 index bafddec4..00000000 --- a/tests/libty/test_libty.h +++ /dev/null @@ -1,35 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#ifndef TEST_LIBTY_H -#define TEST_LIBTY_H - -#include "../../src/libty/common.h" - -_HS_BEGIN_C - -#define ASSERT(pred) \ - report_test((pred), __FILE__, __LINE__, __func__, "'%s'", #pred) -#define ASSERT_STR_EQUAL(s1, s2) \ - do { \ - const char *a = (s1), *b = (s2); \ - if (!a) \ - a = "(none)"; \ - if (!b) \ - b = "(none)"; \ - report_test(strcmp(a, b) == 0, __FILE__, __LINE__, __func__, "'%s' == '%s'", a, b); \ - } while (0) - -void report_test(bool pred, const char *file, unsigned int line, const char *fn, - const char *pred_fmt, ...) _HS_PRINTF_FORMAT(5, 6); - -_HS_END_C - -#endif diff --git a/tests/libty/test_optline.c b/tests/libty/test_optline.c deleted file mode 100644 index 10cda846..00000000 --- a/tests/libty/test_optline.c +++ /dev/null @@ -1,293 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include "test_libty.h" -#include "../../src/libty/optline.h" - -static void test_optline_empty(void) -{ - { - ty_optline_context ctx; - ty_optline_init(&ctx, NULL, 0); - - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } -} - -static void test_optline_short(void) -{ - { - char *args[] = {"-f"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-f"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *args[] = {"-foo", "-b"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-f"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-o"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-o"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-b"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } -} - -static void test_optline_long(void) -{ - { - char *args[] = {"--foobar"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "--foobar"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *args[] = {"--foo", "--bar"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "--foo"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "--bar"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } -} - -static void test_optline_mixed(void) -{ - { - char *args[] = {"--foo", "-bar"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "--foo"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-b"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-a"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-r"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *args[] = {"-foo", "--bar", "-FOO"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-f"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-o"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-o"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "--bar"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-F"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-O"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-O"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } -} - -static void test_optline_value(void) -{ - { - char *args[] = {"-f", "bar"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-f"); - ASSERT_STR_EQUAL(ty_optline_get_value(&ctx), "bar"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *args[] = {"-fbar"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-f"); - ASSERT_STR_EQUAL(ty_optline_get_value(&ctx), "bar"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *args[] = {"--foo=bar"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "--foo"); - ASSERT_STR_EQUAL(ty_optline_get_value(&ctx), "bar"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *args[] = {"--foo", "bar"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "--foo"); - ASSERT_STR_EQUAL(ty_optline_get_value(&ctx), "bar"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *args[] = {"bar", "--foo"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "--foo"); - ASSERT(!ty_optline_get_value(&ctx)); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "bar"); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } -} - -static void test_optline_positional(void) -{ - { - char *args[] = {"foo", "bar"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "foo"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "bar"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *args[] = {"foo", "--foobar", "bar"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ty_optline_next_option(&ctx); - ty_optline_next_option(&ctx); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "foo"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "bar"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *args[] = {"foobar", "--", "foo", "--bar"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ty_optline_next_option(&ctx); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "foobar"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "foo"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "--bar"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *args[] = {"foo", "FOO", "foobar", "--", "bar", "BAR", "barfoo", "BARFOO"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ty_optline_next_option(&ctx); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "foo"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "FOO"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "foobar"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "bar"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "BAR"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "barfoo"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "BARFOO"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } -} - -static void test_optline_complex(void) -{ - { - char *args[] = {"--foo1", "bar", "fooBAR", "-foo2", "--foo3=BAR", "-fbar", - "--", "FOOBAR", "--", "--FOOBAR"}; - ty_optline_context ctx; - ty_optline_init(&ctx, args, _HS_COUNTOF(args)); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "--foo1"); - ASSERT_STR_EQUAL(ty_optline_get_value(&ctx), "bar"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-f"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-o"); - ASSERT(!ty_optline_get_value(&ctx)); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-o"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-2"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "--foo3"); - ASSERT_STR_EQUAL(ty_optline_get_value(&ctx), "BAR"); - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "-f"); - ASSERT_STR_EQUAL(ty_optline_get_value(&ctx), "bar"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "fooBAR"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "FOOBAR"); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "--"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT_STR_EQUAL(ty_optline_consume_non_option(&ctx), "--FOOBAR"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } -} - -static void test_optline_argv(void) -{ - { - ty_optline_context ctx; - ty_optline_init_argv(&ctx, 0, NULL); - - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *argv[] = {"foo"}; - ty_optline_context ctx; - ty_optline_init_argv(&ctx, _HS_COUNTOF(argv), argv); - - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } - - { - char *argv[] = {"foo", "--bar"}; - ty_optline_context ctx; - ty_optline_init_argv(&ctx, _HS_COUNTOF(argv), argv); - - ASSERT_STR_EQUAL(ty_optline_next_option(&ctx), "--bar"); - ASSERT(!ty_optline_next_option(&ctx)); - ASSERT(!ty_optline_consume_non_option(&ctx)); - } -} - -void test_optline(void) -{ - test_optline_empty(); - test_optline_short(); - test_optline_long(); - test_optline_mixed(); - test_optline_value(); - test_optline_positional(); - test_optline_complex(); - test_optline_argv(); -} diff --git a/variants/README.md b/variants/README.md deleted file mode 100644 index aca324c9..00000000 --- a/variants/README.md +++ /dev/null @@ -1,2 +0,0 @@ -Configure the project with CMake as usual but with `-DCONFIG_VARIANT=` (e.g. morningstar) as an -extra switch. diff --git a/variants/canchecked/resources.qrc b/variants/canchecked/resources.qrc deleted file mode 100644 index 102da8e0..00000000 --- a/variants/canchecked/resources.qrc +++ /dev/null @@ -1,19 +0,0 @@ - - - tyuploader.png - - ../../resources/images/board_attached.png - ../../resources/images/board_detached.png - ../../resources/images/board_bootloader.png - ../../resources/images/board_other.png - ../../resources/images/board_pending.png - ../../resources/images/board_working.png - ../../resources/images/board_error.png - ../../resources/images/reset.png - ../../resources/images/upload.png - ../../resources/images/reboot.png - ../../resources/images/monitor.png - - tyuploader_logo.png - - diff --git a/variants/canchecked/tyuploader.icns b/variants/canchecked/tyuploader.icns deleted file mode 100644 index 83349b1d8840aaca1e00cd01bb30dff57b137f3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41857 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�wgMu@uwP={VHl^@R|E@5^z>MU|fG_rDojHrrl zS_}j=swQ-Nu(exdE1!QFDEM^jEUoRSpb^*-f!cVJ(vc|zC^e@=7WtHq%_@k6H<}5z zbRFDL;PusE+v2sHX9&XPovhER6vBemH8)W$%9><10O@?=n-#1H4dSABXZ%QU2P%)h z`80FQ2(nzkBJX8ZjcB5{e``!uJ@8suVS;#a5sOHKs$jqSDJC}00wm#yc2O&s!bWYL5vR>cS+DXsJjsT#);K zZ_u%Mza&v3aY~e-ll?@(xO%ie+JbVfCbgDqHEX3gzRXW4{&w#WzXydB4U(e4Dr8fC zyQ4sSjk9r|_;87lu=75_$Cj`&f8cB%@;Za5nM3h^SD^9tcd_zphdVl%lj?oU6JO)N z-$1oq&X?^tYFt^=?gUu~EH#kJARC&ukH%YpUnhcEGm`vvbM0_y9LPf^*>bXTz|@uc zrPg&on%Fyfhxg3+9J~2P+&E_#({5{_cn - - tyuploader.png - - ../../resources/images/board_attached.png - ../../resources/images/board_detached.png - ../../resources/images/board_bootloader.png - ../../resources/images/board_other.png - ../../resources/images/board_pending.png - ../../resources/images/board_working.png - ../../resources/images/board_error.png - ../../resources/images/reset.png - ../../resources/images/upload.png - ../../resources/images/reboot.png - ../../resources/images/monitor.png - - tyuploader_logo.png - - diff --git a/variants/datalooper/tyuploader.icns b/variants/datalooper/tyuploader.icns deleted file mode 100644 index d4060222e14f8ebddf84c76e6e7c005fec90b7ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 148287 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 =*~m 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 n-%(j^`Ld*}OS%`9OY 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 PF$}5jdA|42S)=(sqDnbm diff --git a/variants/datalooper/tyuploader.png b/variants/datalooper/tyuploader.png deleted file mode 100644 index d670f78be8e6e4aa5bf7a5263a5ff40293788165..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77208 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 b*Uf(beUpM#q6k*(00000NkvXXu0mjfq!dE2 diff --git a/variants/datalooper/tyuploader_logo.png b/variants/datalooper/tyuploader_logo.png deleted file mode 100644 index 7102f52c1f841b53e92da4eed40271c82b360fa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11150 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 diff --git a/variants/datalooper/variant.cmake b/variants/datalooper/variant.cmake deleted file mode 100644 index 4cbfc2cf..00000000 --- a/variants/datalooper/variant.cmake +++ /dev/null @@ -1,10 +0,0 @@ -set(CONFIG_PACKAGE_NAME "DataLooper Updater" CACHE STRING "") -set(CONFIG_PACKAGE_FILENAME "DataLooperUpdater" CACHE STRING "") - -set(CONFIG_TYCMD_BUILD OFF CACHE BOOL "") -set(CONFIG_TYCOMMANDER_BUILD OFF CACHE BOOL "") -set(CONFIG_TYUPLOADER_EXECUTABLE "DataLooper Updater" CACHE STRING "") -set(CONFIG_TYUPLOADER_NAME "DataLooper Updater" CACHE STRING "") - -set(CONFIG_URL_WEBSITE "http://datalooperpedal.com/" CACHE STRING "") -set(CONFIG_URL_BUGS "" CACHE STRING "") diff --git a/variants/morningstar/class_default.c b/variants/morningstar/class_default.c deleted file mode 100644 index a000464c..00000000 --- a/variants/morningstar/class_default.c +++ /dev/null @@ -1,57 +0,0 @@ -/* TyTools - public domain - Niels Martignène - https://koromix.dev/tytools - - This software is in the public domain. Where that dedication is not - recognized, you are granted a perpetual, irrevocable license to copy, - distribute, and modify this file as you see fit. - - See the LICENSE file for more details. */ - -#include "../../src/libty/common_priv.h" -#include "../../src/libty/class_priv.h" -#include "../../src/libhs/device.h" - -extern const struct _ty_class_vtable _ty_teensy_class_vtable; -extern const struct _ty_class_vtable _ty_generic_class_vtable; - -static const hs_match_spec default_match_specs[] = { - HS_MATCH_VID_PID(0x16C0, 0x0485, (void *)&_ty_teensy_class_vtable), // USB MIDI - HS_MATCH_VID_PID(0x16C0, 0x0478, (void *)&_ty_teensy_class_vtable), // Halfkay - HS_MATCH_VID_PID(0x331b, 0x01, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x02, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x03, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x04, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x05, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x06, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x07, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x08, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x09, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x0A, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x0B, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x0C, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x0D, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x0E, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x0F, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x10, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x11, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x12, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x13, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x14, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x15, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x16, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x17, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x18, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x19, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x1A, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x1B, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x1C, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x1D, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x1E, (void *)&_ty_teensy_class_vtable), - HS_MATCH_VID_PID(0x331b, 0x1F, (void *)&_ty_teensy_class_vtable), - - HS_MATCH_TYPE(HS_DEVICE_TYPE_SERIAL, (void *)&_ty_generic_class_vtable) -}; - -const hs_match_spec *_ty_class_match_specs = default_match_specs; -unsigned int _ty_class_match_specs_count = TY_COUNTOF(default_match_specs); diff --git a/variants/morningstar/resources.qrc b/variants/morningstar/resources.qrc deleted file mode 100644 index 102da8e0..00000000 --- a/variants/morningstar/resources.qrc +++ /dev/null @@ -1,19 +0,0 @@ - - - tyuploader.png - - ../../resources/images/board_attached.png - ../../resources/images/board_detached.png - ../../resources/images/board_bootloader.png - ../../resources/images/board_other.png - ../../resources/images/board_pending.png - ../../resources/images/board_working.png - ../../resources/images/board_error.png - ../../resources/images/reset.png - ../../resources/images/upload.png - ../../resources/images/reboot.png - ../../resources/images/monitor.png - - tyuploader_logo.png - - diff --git a/variants/morningstar/tyuploader.icns b/variants/morningstar/tyuploader.icns deleted file mode 100644 index 1e582da0a314b5a91f2d2d6352554c25cd3ccf41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180194 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 diff --git a/variants/morningstar/tyuploader.png b/variants/morningstar/tyuploader.png deleted file mode 100644 index 818bf79fcf671caeea1bbc416a4c6bda3621d179..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21940 zcmb@uhd-8o`v!j5>n?jWY}vU*(XhA5PLUC1HmFp#+sG(oMUw2%pzO2|iK2{%q>v;< zMl#Cy9rx$^{9eC*;OBYu^gOxmYrL=XeV)g89LIUZnwuJ~W8J_?5X3rTBRxxkpsA<+ zVP?d?Y?rJ#i@z9M_8RIDYt;W_KPyVczp(fi+2S{B+|)lbM0$n*{*lSoc)vc=5ECtF zJ&l-@b`wE}5XO4i)_(mHpDtMQxPN4v4wT-j7%pPT%VAOGd~l*qd^0JA(c^7P9W7g~*u9UkiOC@GX9=r=z38+R92i%Gt=omiJ!Y`pMeD;?9O0Cj_={-~MbJ zD{DZNd%KX`V_#3nM)HBWDK-OMf`NHDu*^t_)W}XESs$)&yAm*18~nuj;K84Rb)inD z7N>`gva+%sJ78@+M_RXT_coI5j~_o|H}CR2(%s!{bl^Y=^)Cm9Thza7ZEqYqcFf4m zF5PdB(5u(4S1l+CrMJ5K`i$1CTh~1>uy6nV{niH#=#P$$THD!~@bdEF`m|kLUFYT} z56jBP+&N;Kij&QiqT(zTFsN;V77eY>gNgk1O!bf7in2nwI=j0!rQW*rsk5cU!zeg7 zcq2D{baizxetTkH->$9A#F3>{Rj;2pb4FT5CicwPvm2F_ zl`Cvh-xwPkKkB^i@I)2YVpdXIylwp^HS<>TK4mxlY=TD5!_`o)jo&HA+1kxQH%5EcSuS}S=rfb(3F%M z-GB7xQAZ04i^{mTwg^$(sQh33RdT!+nWeReVLl;Uz48jTH$PHu+}N3o6HwCA?LzVR zB2ImJd}r=Q&*iu)SB%Zf;?G7a=pQ(GRNU3w-6|kpS5tGd6>iGG+1c64)YNp}(W4{k zCr?hg<1}|jjVhuFSh30z$ZUN4T~XE2($Y90r3{gDp}4r1t5k=cN2FfLuF@mXDcbuQ2K7jVKY#pKUshgjxltoX z4NF$lx7mtvcri%hS9t<~Nit4pd7uAMcfM_L*hXbYG^Qbf|M#2B)n=S-QYh!V~cjg)L2nrgr3+?f< zw6Z#T-@QFEXLWUT{17iKD~Dd$;<118le-Ocb&py+IX}r5FRbZ!t}RU|zog`f&rtHS zz=f;1xw+D^vUg|y{Os*T*hZLT?h$Mt@1yIY;Ss5H8&}$W;g<@MV|rip$&WX11)nA- zCR)0>X5$T4h|0)s-`p<6#}~C;SF}2DVnP>L%3NQ+DVbl-# zVi!K8ATD0f_2R{`n#-5jyuWwkNJvRV`)Gat@$;w5mMu|lvor^%Cq7h|V>4NWg@vgK zMBOpOnIriu?CpzpUHCOHj?8sdP|atkL$Pi-DPZB(l_Ofm_5}aEw$;8yt8RI=H6ke~ zNqDS1OL&+2+fDXI*rl}=Rj_JS>)6UKUGLuMlIsN@J$mH( zYhdT&z=cygvf4E({bs)C<{8F^L?1(?S@ZZ-B#w`bb5Kx*i_4|JDZoEBx*ERNpCR<{~n&oRBKLOF?!vg_e$P z{B??)=gyrwKVzS|KX80@DcRMWB68s=HyHM3}G zX}^DIx*U&knu%*5M>%^Xl2|z;iWdEjBD}3^Z6CQTFV2X&x20(t7#J`!N*K7gZCP3V z-99(;Ji@T6tLx@gr`k#&9BpmKKVi2TE4#nVM=ci-NH~NX?u&<6 z=oGRfS$Vwo{_fD#rLksd9c;fFAuE49U$?e;E2*etXn23#(}esh!b2Gxcoukld1d8z za&mI$1|^pltHPnnGYXd4G_(r`gJ(xxUO6nGprGE~*qE0W5kV)ki*1^H!^Vv=5)zTP ztIx=fC4uu39|ZSYVqst&kk@$G*m%?>AmFdv?%hvBg@lCib8^Ct5UaYUPb+QSeLhY{ zN9Pv`PjDy>{Ljx)os~n)rRfr{0k+y=E#QNbf^E6pV{anXaonW#l^*`pFe*-0tsV3av(Ey=HZs-e&#O2AC6}njkN;Mu$Q|?= zdZIyeo<^4L$3>qycka)E>Zt*>H)K+#N*F#~iZXlt-~-1$*j``Sup36g&l8;1mXpdp16KYJs7r6A9NC$6*+`=)H* z-8<#YcVhT9(ejoY$g}X$@P(O~nIDbO?3$j=&Sf9k+s!`r^$FwkI8VNc2 zzHNoU+3BI@%=B71FJ8V(x_-TP%stkuN(l8+COZFa{Csb89czcu-JKnnj+0 z!jG@>t9Y*?oKFroefB*a}`q16&d#dN|f%kwZ%=E6+H0am1)?RmaUz3-Y?*|q%tA6;tbHFu4<~k>gVOJU%&EGk1Z(Q`udows{;0GqqCFK;0{JcMrH;=BMpdd z-3Aq-`EPG-?m+9K2zV0B#Y1E;^v{k;O%4r}TAG^vGQ=)CuzB<5NLoU8zmroI@N;%Y zg?sxubOLYXTfgKt@kMDJu3pBbD7IOc{J6m6?d^@D=|~gPws-H{^Tbl^$8A2Lqov*P z+fU}`gfNf z`;O1PiDcofUY%}amyn8HVj&a^9UU`wcz@pa`0-;ldk2RLdGr<(vBr)LpOU=15gS}V zQcBaOI3j!W)vH&D*RS*6NK2D1t*H3NDY>{by?My}{xZ^R>3M+2&l^=wNyx}7tJ4tS zJ>A`Ucxr_JTXhKu2?)GyabBM6j@I^u2A5kUC6lQr*2$GB_oZowVUH6h^7r4|VSy%X z@X^_^)R7kgJlW({v)5f+XFdVCJ;jfafdOL z)-P9ds?8|AdpA8jCFLU5vX&bC-!NZa-zYR>lOM`m+3q0gau6JX$kCMm9y@_D(QRcq zmCIjlpJ%5eAJL#xRQ#Tfii%1=zZ?u4kVID9Hk>-1GeXdp>7^7)wh}=V~MypcOUv@Zm!*s%v+o^(yJ$={1Jd z@~1R(j3=tAs?IIVwkmQm6F#ZY(M-I2e5S&?&!5oXEYTJVjjGUEbNSkmm)f0wzdoRDu#3JasztR8R;Jv!NsC@~NEJ=R`?T*5rM z(qDDlFefJ`|Ni~eR}T_XQw`3Jz1=U24k8~^K*157u$Y)HU%v1}t=l+H20C7`j*X2i zj*BDh)zkUc+|`xzrmgK5jg}wwu&ukhd(P^80P+fbef_LwlVxRP6BHV{Qw)rZvO~$j zy);~{~^Crtdhp zfq{wXY=EZQ+YIARPcCHb^6I|rFW+i1SK!0tKtW7B+_8Q8rz)?WyJo9rY(?(p7g@f46{klG3Q=(XZQ8tDbddp;Zc-W=F4D?84$V$L?dV0F@=g*%f%_&@wuC|VT zev7NTayGtvMS(#Yp{p4uPM$<#yDrO)P{@AzGy@rHysKcZ%R_IFRXHeQ{nQwWwoOfG zDGJ0<(eE6`5sp-q2jrD8hhYlINef!q;=X-_Nflz*a{_@Jo3^z|t&uCg6aXi<;Jwo2i z>D!Z*R1&(ot($Rf*H$%B zUHzrCuKw(OkX3Z$%A5T5N9{#5eux*On@&96OJ?eX7}^wZCMG6ybXyx1-?Su(djd-y zEiNe;yYz2Gr|B_q>(;F&IB$T0<5Pi(zpCTo~XN+yth!mV4I0Ug9i2}Wq^j(K~V zp@U^>SY$$qsdQ;#t-@zE9kI2sv0tz{!RAv>p{bBUM-R4RHSNush`4yf#N;HEGQ#Oi zz<5#b1v{1VLv7&{O;6~$h zbwsK^KlRr|P|r<#P>!5QG>8}4&%I?|+O9KSjmn-}jyd#SoLAbWek%3o6l?2`pZjM_ zgLX|zK*T1bZkfqlBlIzzE?0c>#~tT>SeNZ8-m-(CrCgqS%o1+i z+=~s!!_Oa0){+M^I^5sOmz|fVizGBP4PdqIi?2>xAJ0&w=euIizMrt9N{2NYr}!C1 z`lW{+qccgw)|A|`MJ$eQ=*t%!5K!q;U%yK1D0+WcABjLNIWcjjvD~$l$Mx7TvX!P) zNQlO-t27y@NlD>1>mQQAzS@-^iwy#OS&eWn^9z4^h$kCRB?Cp4G~SuV*+c2l(#g#0lrRK~c?J zyEZrzQXo>ODMW}~K?}bt#Dh)&17W30Q!SS2TJUSIZtdBVCr@%xQ~BHqDJC5sKG^08 zbJGo=t29FEaV-@JW6V>T2FpG?s7_BqKT-|S)g6NXjy?di`3}xx}m@*p0&!CYm zNo&!tF*B#lH1Ru;e)W}!yE)3qDJn{V$+;%NydO;m5{tR1>G}o^PBcp@&JB^z@7a{3 zN73?RFE09>)5xlG>#y`oJ11rxj-JPNY1TE8hW6alXZ15aKG_2U_K~74)QVV8P#}jw zU~NvJE%$s^_yBd}eP?|=p==t7HV8XqBdQ&XGewKq?d9c(kB*IrlQ_F`beVu+Z;wCq z|2<$qp`BiwIa>AY+c(Kmr%t7v6uVtsowgw#3pNvrV1BcHE@oqG#yf;LxVRx%D|N#lpiwx`D!X`rrJ?Gw072HZO*RMAan6^b+8KdCf9wNzV z4G1)>YbuJ0&zC1!raakL;Xn0Zbi2oY{yZ9WI-kDo?+-a>FFFF##^6g^K76=w>GEYx z#%KXSL5sE3mHkEgZfx7c&_|0pX=7z|_@c7rqk_ke)A#Jz13r_(x!&+m$jYw$H?~~_ z9nQ(fgrs)`9l9m9nFS@wvn4@vq#2EHcS{Si^5vsQek5l}^<$wLu(dV1N*YHvXY z8eG}1J=c4%HqV@r_3&@<_2lHkAg3?cHd&z2P&xXNwCn6QQUhg;O8Q|>ntGWY;2cBv2mN?zLY+GylZxDE}udnB5BsX1HgR!_RRp=6SFSq z(4j--3%@=Y`UM2c>(hkv|A?27mQK@jea+LhMakUB$&5!-ShKg+~zQ2g&W~PgYkycY% zTwuG+8I>jo+3?(Ce^2n}>y%p-6k(YiJKlfj?6d&U$f#`GW-|TrL0uurjW~(r!f*q_ z-yioL+`fC4)j38K8MFN1!-FBqi)B)*)8dOuOP**n0^&AoXRR1XcAc7R9AH*i?|QsG?Hqet3kVh7Re0> z95ggEU&qId@r-bC=mAN0@BR?8cq*aumDL9f=qCs}J^buXQ%F~?T&XtDY9zGl>wlz3m5A=#kRLR*tfAj@hzF}$R zkb2?Fmy^OcR!AH;?wYmU9*>VI-Uv0+FJ z{ZBep7Yiv$%0^`~hZe?T@mM*og(v&+<-Pn6`!dlOr^#?#Z6A9FZthicGn2E=wFeIr z6%LgWqfDV>C8Zqj$)xkAPjlW#cGfE-AVZy`QrbKBaW6ijKUjQ78w7-S!%!L>(|T$v zcIVL}LFf9ceHm&NIoa9u3=E5z&GEu=&^F$?;$ftTP8V_6KRP2h*sRa<1-eKQzM#cP|naKgx z$XyWvA+()NOqj4D=Qi)TYkT!GQg~8zH# z<#~VK;j)NbpXy*x#7{+S5eQma4?8-ZlCuEtEY7%k_3GxWAs1BGBz!;eO?$G}<6!?+%3U-lL1!=I1B-_2mxU*JBBxh46q5u`%zq){sC{4rt;# zFPfVdl4G!zHYU)WPl1>h2rJC9zobU9VtR_EWsl%ar#3fe|M>Fv_e(lJu=42wu_Z-I-w z6s4l0>mqz6K0V=Yzw?j%e_08t1<^p{SXx_4oIQK?8Fb3?-2Z6hWo0+)fu0ex#-wvm zDrN1-%a;arrAKJ~OMV`_fL7a(Wo=v>r~!-aT^yGZ%gL0p8%IO`1;!|yd zB{UeKku)WR5U&A*Rg+w8bIvE354JTm64&pa?w48$ zxasUt5)(NE1q4XwJYrJ&_>Q1c^@cgY0qh;Vlnx%PE1ZE%;xYZtpFhW`RqJT;Rc9To zdm}S`-Hf&3&}$V4;q5g^Zn5+vyb4A0l0iYZZmfd zVVAB{g&<+o+uc2J^vDrPB4gs|i9V%tI79TV9XWYY;Z2%S#M_LW5n)V;?*Q7mIy=WV z^YG+LpJxEH@pL(MEdLIaM0{=bcf000kS6=V|AC-D(*8O;tc`TjNQp4AG&dK4{<~Y@=M*7O7LOmZJGNXWA=EaK)$S{9+-!D*f{JB$INAW=S;fLHH z(q)>Zu^(hrZhybs+o`>-u98%Y1qqK_TF(OcEgRv#j_V%p5Qu$V(5R20eY!+ye`TPj z?`XTBywf2ZnCI)SU#7sM0_H<;_;@1H*9T-Z-=;zWk1-H&b9ac=Z|KthhXbO{encWP z1*-L(`Jzvf@VQi3sRC2U-K;(SmO-pkMdu}8Z@GZuP!c%2WUyaFCZ)y2aa6JhC`~|X zC?C&q+sXb)&ezW7IXu~6Vb6WwJc*O{F*P^m*q^0w3oD@?a(M6Fy`HbH$@u>Hae%bR z$EL{i)^{BIq-`qiqC+FSBLe<44?&_0=>1Q&BhK?jEKK~!T11jTa z{bzASMKiUftB1iZwm?=FXe7&zv30;a@%hDz{P?ISMuSv3(DOR{TkSjlbMjf zapuB>BG7b+AFE->qT+2Nsq2~>Q`FVaZff+s9su^!*bg}k0kzxD+P;eYtI z#4ZHM8Gf_~nx(x+DA!&O`G;%)tN`s z;gQ;M@Zdq%*7*Mhj*X2aLyE?3;HR4r0(wHiU=IG%a}dBBy$brxquN<4vK`ba);ln8 zqPsRYFitvpo!~Zl$whWCF|n4Oo)i%Gk@K1O^4FmuEhK|RV!2@Xs*t(~h%vzQ@32j! zrrLP_-+|_)rxRepnaaI?|0?Hb&GQH*D(=$p>kPHE!_a;hAdZ=J_jw#Y&K=+U4w?AC=m{DVW8*sZD2ecM&%V1d0?qUrWeq7cY*MG)zic49K#8ss;j4GvgYiVY1sWt zdOHeC0-tdB(*yhBNCIREcBwf6f|pl+>(;HbGS7>P<*A1!hi3@dfd%*f|Z>8{Sf<7zi=rE^Rj|8S3`TyPmBGT&g>C=~=xuJ2OQdH1> zIi>@zUAy)j=>=gGNq%9ChKu)BMh4^AYNDj1}(DPbDSoz>0(?@_X>&Br+RE7qeG;)Gwhl+}Cea^NSYEHj4q*(*G z88>g?>^uzJ7Pb-UwIF+Nd=Et9`5ncb%4?BdWPoCUBW;1_YXJwXoEEx52FO#*zbzBQobL27j4I zk%N?30F+Hp%34iX1qG5O)50%ayhun+=B6g-h|n$Dx2I5vY$YX5np(sC`>&uF=wi7H z1h{ffeyj%e=n-jI;5bABFN#W;yc{~oONrMAe7Uf+l)P=*HXVVf*eh2gu}#@!pCk5@ zK-0iRCtkB~``*2GA1d5EyYh{hbsKD!kw2s4TV>DOCqUX#{e7jh*Pe1sbmY)A__gDJ zEzh5a&CbrQ{;7jEM3hPn8yjmM36-gX#L)?S zs3ZiVJU>@@S}BjQP9rm1LM|S57LYW9)GRG8ALqk8r}=O6x>L*N&zV^I)x|X~Zthp$ zkKwlB>{Q39v zur8HeSzZnT@l8#dpaXQtQ=T8I6`;Cw!OX=O6$w$z>IYONr?V{g4fB+Eej2zzR{ckg8cga>#JW;&|bl#7e2=ECOeh=_$kfFAbh&VM)* z|4-08ticHzBaeRAY*ZEeG?k)wsGA*hzl0cNglKJz{VmQM`VNrlvEPi?x$!OrXCp{L z>ew-P@POb7vgAM|vW7jY&1OwdM5<~U8Q$f$=ngc>BP3)B5=38s>t%gCh3aw!NzP2S zDuqmo?eoQv1}tY1l92(&>H!p7L<31uS{sC~jEc%Nsv)99X=4vL(+}rqN(at;4VaaUtIFHA7l6ho{xMv^Muy?`FhdNlNYLH&n|GPxme$`m-8Utr3YBr4 zbA1v2HOg+i><3qio;MaD3FP8?87j}Uv8q%cWdE5~;k{_aZu(2Kk?pP?9!6M&W1gO| zVA=)-GPXKCH3BFC^OvtH5H;*ZGrJTNCsJv|@}*y?v$yK_!GSSeyQkC|54rUeFY2_k zmIr6u;I4b%zL<6OR#w{#_xxhDgFHza92~}*4JT8*s*uD3`qOL*o$uiKp++O5ClH!4 zTFB+6c!#E14^mQdA3QLFcB*ouo`@6`3z(lUrd}6yXKEc`xP4bPVdHb=c@B@WXO#^& z?5@F(d@(XIn_gcFzBy_pfH{(rky#JF#@ZTRnCw3w;%?3QBdq2HnaVI7q0eao^s_{@ z&6MoDMC~N04J4^+03+N~1?cOZKYy-rtc4>|R06w(`k=yYT_dJzk<8E~@$?-$7arj3 zDHJbtMK@cdn5(k9Tt|TReO+iMwRm7hMAGQML2rmYjW#e?oA=1by@L-jhb06!q5z?C z=owBxDuQ|ncTLXSk`hU90RJuh{s&HVZ;{CxnZwNi46J~}*KOQEa;_}Zj$ouxu()M0 z5(oB+EE3|#0Bb`3LvKZg0|zd0(&wZOU1a0;fJq**1W9mPBnmxs%QMqO-Um6_-P5yk zVY7%Q;07y4)-%Bm_VrT_Z1$&dc3 zdn#kBWO(3nDl2)!nM)kQ0XYl=gsF*?ni^4m5u*r)eJc;LBShy(6nhuqA?~c&?o<|M6Iqi%ToQOpz9;ZTF0iB zg1-D-vZP}q4Sg2vK$pV{EOD*3xA&-owgeQZDBxa0G+l-QbvMY)w5W7KqfBB&fP*N& z8`cZ$kuGIwWi2KkOxxJlq;6GIY&HsSF+X^)=zn!qLgTV=@|I4NZiaxOb(D6QdI(zT zzd&s%jj<-gq$42g&Wy__866ae$B3DgQ5rXtBNwI@fmgd zfK zj*)@kB7cTLJro@tH&@qTc>xZ8m;!wN&Upfuaz6<^3$YwBeggU`#tmwDpohj`lN-lZ zFwj!S2gr!h;i3}8E$N4j9LzNT&0wmkGd`9Tx&mDYYvl^Nim=8SJ{ ztfwg|C@kDT_5ED^ud_>}%Bo2)lgG*WBthQWtQnF~yF9x$@zYEAsXNid7(+gzW6XFt z_8Wvm_8GVf4rD0S!w{r`X&nBMI~?_Yxb~c%5I~1>X`niI^fkROQ#*w^6FJ59>Dm$2en-N zfndY0L4}OKja$PKgNhl<%fXQ#vxA`zezv>77R_iv1e`hKFtmlzuBYtQ#<3Wv01FwF zaE8Z^S?I;NKZdy1R}w>qvstQukDb}r*rqV=z$H#{u?>g46nchC>B6D^@#LdSE})^W zfQ-q+q!jYUBfuaH`BL<%3@N!jev90dz^AjRb&KxQ+Rj}Q2 zbEY#%m`{h5qX4}~&a&17=DDCFxBo;mCiU?S zL809X_>sxa%j=x4UA(uWxA(eRd*;fA2Y)6X4t8Nra>^P-Ld}HM^LAzdsF&{8MH>oc zZBW6V85tWtH;U-HJ_Mxbfxahec>@@dB89`%BKr~qKyhMzC?qRpu_3@LCnOJsSwAU^ zqBNODNL(8-(_GO*zFhg9wX*te>Q!qin`pS6|NMlY5{X;kyE{>BM|1bi9d#okquWPq zeMMq4!3_4-g=%8=PDO;ep@BiF-V({g1vs8V?X=7;E@kQ{XbB5vL2>$=4++_&QrpGE z2M-Xe;PTqC_p_%@sSZNsbrPo9+BBozz7wT;dB_{hbTtPVDGOE$*FGV_QsHAYr0eYhRxe|_3}nNQ*G z$GVS?&&dU2B#)Uz;yubpZ1cz`zHbYmI*Rp!Heu{Y{u`&&MT|B;w4Q~;fdjA2tbwh* zMJ2j@v|MJEf&x~T{cWNDja*#$tP`4$_TYi{JOqv`7)IB1^z<}+k9d(X1k4%ZEC9YS z2ZcqPC&2^Ja_#!{g;^MQ9x<)o#4!czQ<#I&!-+%b(uC_hpr@gHf0ZnSsW{H(UN!7X%8;bke3>jH@`Q<-| z)HD`?;QEIDaqY$pe{Z;a{kaZOLlL7J_rO;C->=buV&4kBChxnaF6nT0JDtb7!Z!u* z@$cD8OK63o_+N^Ry@SceC!f+kcHU+1`_^`&7p5Y!ZOY0@;shaqHiHqj_`<-@(B0?+ zx{P;lQXks4kK{&AP$I#>tcSYJSoQuxmY4-aPY=MN79^L|<;HA+_!8efW(Di$jl{&x zEAKz2+9+zlT0936a1l>Ctd;!V;8G>;K!$8IaeFiJ+u`-p>F2{d+l5`sEjw3?*1G?^C*nv8@XT zEhSwX1Acf~OiF#i#E4U-^oe*Q9$<)|?c1voU@C3nAPA*%qpx{kd{^s8=dZhLkFx~B z24SJ3q%@B2rAgv43t^ZNLJip-IDaD1U!b^!XQ<&K+hzPH4zqCLPNjD3N~cPzK*sl= zQfe6+k5jvxQ&$iO1`zUqj%UG6$Hz2ap=>E|g8KadIT&5Dg@e!vf{@XPa_OB3*HVG> z$?HZ`n6qEccN<(A%8Z28KKt6B8>lkvWRkdL?_=XwJ9E$qELSm0c>DhSm&G*1Pz^BX zV~h}dg#5w~+g}}PPlN580>^0N;Nx>_%2=xrs!0Li$$$RWfbC`4Wp+|yDHdvhot@o# z==V~ZIzen|8vBj;mi)Vq9xX{lIqUtRb1>o2Wn*FSzm=I8G6us)nl?W52YxBoUuw`a z$|bP}^S=6TZ{fkYgJgEYk{ZH$nGAlcWnk$dH-nKLkFc;Xzp(I{EQ}`=%mn2q!fPC? zLoDX09!cH(C|yo{^yi=z-3Rm5CP5JE@2>)#oL7Pgns%8U0tC(VtquVWj*eG9&=d8X z@R9h!9{B?Pub8=oLt+jTl#wd=Rz}B1XBd=O35qx>mmUh^b7%;6IY%dX#&L~N0443u z;o2?-if)r72+o5J4*PLn*$J58IV}clWGn{jkv*TiX>HxjCny+ugMkqF0^XDglMLsl z1{G)B$(Mqt%{IXA-wgG@>ipVTp$axaOAjJBm7k){YO?z{2Nu+nCSn%m4e01q!H0%) z1cw7`xkdT;`MTQL+B>D|`Ro~FrKKm-LzexFsnIM*P+|acvw_ce@r%VXt~U#6%5%UQ zy$(SME~7@P3NHEVWdC*(BO|qIxR1t^li&8ytj;?Ots=KxNAq!{nudsp`TI8jgSdy# z#-}P?uReTf@5Vrsh+>>PPfeVM(DH>QeG&Wa9F?Ma1n&PQhccF%Sl+f3lZu^8EJ{iBoKp^At9>^$f=>tO_SHZ zcum8Ax@!X$SJJhcH!s^V6C%d|FL*X>$|%LGRHME9%IU`h`{rHNjUzMXVQJ=3<|MRQ z)(dOw1HH2wt&duuLpslOCJ|I|z+~Dj+{TPTi zsz^HxbLy8zwTc;vI9NL5k6NnB9&nt&O^TpUz;$*)?qNl@@=PGgQ-|gf)pa}uG=K6X zixNSEpZ(gx32)ep2E2o{Y7_B?sEKJAlO%MgQu~A8gmsf4wAl8Vn1BzN4g}zw8T;YN z?qW-+OF44u>Cr!j(T_#jv+s(G^(d~<-9=|4#u>Nb2A!zo_-dtsp+QCMHhKrHS9 zgEa@eZtPJ_%?bW!Zl@R3L~P8{XV1<;O0c0?8~E`!g9^baR*)Kt9Wk-k_vwPA$tEWG zty_QT?AzDY1g+C$9-qlY6jRNk7vbd0;%#2xZl!L^L8Qm+DALlHF?cS|NGuv5dcKZ~ zBm=Gd8znWyjB;+5IlcKQP+#GJg9k%lcnfJeMo{7_p#fB9XCFBLU{qc6E3c0aOE^(= zymx&Q<})y1L02J24AD8%h1|l7*STTfJohGl&4L&HW0>olf+Z2N?g1UEe2X`cvUO$@>`@Pp45grPat{6R6+1n0DG=srp?U-ibs%&b|SiCDZ0KPD_Q z`voy-B6j-8kV7t8LW~D&sSKb%DpXJQTf=Zh`LLdtzDadf&ClOIXklSnic7LI{@^WR zyx}Xlm)lUvg;!QqltyTXkdd)5Lm-@wK6uz4lPU+dB~{{~l*+fB64VH)IRL#U`l^5u zt+Fs7(U0se15eps)H01PvuWbR#M(3Z1y?aq!ynvxkCQM5C51@UX*+@fh4Fkga zLSG+(eiPhEj(hP0^dgiKLJK=rby<$up#> z7%f3lEwRK&1l4-gD7AT|);)9egnXT7GjwxkyJ}-}N;r_=Dm6 z>vfHy9ifRgZ~ohd2B+uoxu4Y57GrN}d7$M|6%N~M=I0*^!d$A+HDT82k<^!@MoowZ z&kSWc9lesVs3q!cMFHW8QLH3*7yKmpz!pw}e03kAaexgqs zqrda(Nu+_RDyyo3deeia25QRAek{nB;p5xUvJ9vJ0;cd+Uo9Qi+k zK*G}EgPc%h!Q5Y(|NZ-{i$EbC7U}Q+p6X9b?zstL%xWCn25ww$_-rgdmY_PwDJJkE zToSXxrKYR&KpNXL{icUf;N;o>xkj9W@Zbd&%*K$a!O!pC)$E^~UpI;wg{!C(7uI8Q zl*4?Lj4C3AiL1L{q~5_%IR#*)=H~96w`@*n7#$gTw^K~)%j<`OA;-6Y#>7yd4kzA& z0YhEwt%QUjJw53g^V$SVBUZ~81bW*1$5<;KjiZd@pV`${>gj_cD}pO8&WTH9iGKjM;QP9P$-nsXxY;X z3kz{nyKW?54~+FagkfqEMmbv(m|4w_p_}0I?kgSsOLaL?U(k|%;|3;LJvgy4x$tAH zR^#g{xb)YF`1sez$VeW%>0t74e0+QXH254iHgsqx?Pov}Vx@Z(;NNXV?a0MSaXnl{O-oCF0LG+UTP<7leb{-`Ub&0gE~ssn5jTopyj3DX+MTpFYxUR z^6mOJ)M!b@VwzoDT7mZ51KbetoyBJKEn-#82!RjWoYuPTl=B(ZpFJF9Q~2QPh!(& z_xXVfXAz1Y+esbaM#00g5A|DJ-U&NnwwkEu^Bp20M^x7b<`PXOC0hWM=en`9FR3_e zt^dhF_Lg>a_Mtk}FbOUfo$LXL$^@FP+4lX1w4REXs#|97D(EN>bM<(+P5j(p_M)Cs zMGjTFOK$z(TdTJe;Q#8ORGIzWZZrKQ?MM8h>xVaaEbXZ#487$-(3+nUn!K> zx}cn_xtQ#oH1(VjL}z+h z8XcNLk|ajD;N_WSUyRevLBtF_efDhQHYT2-9}VTjDGwe@(OlFy{THRB4OxnVwVt(i zaL^1dCCUlGG}c#Km+6r6bt$F=BI|1pQ{#7de!JofM(zPKQT^V`3`ZDXiZ6QjIpFxy zoSb1vq%#i57V-pGi{GCH1|0Xmcj$mA7+gshNI)uYI?5F*ffk`wVDusVODDZj-%V;h z^(J|p$6#xzJrA<5A=jTWYId)u3$L^>0dXyereQ@Z$2<;Gr6S9Uhf+r;2Oj;VJbSj{ zZU`uc@*ZtYq~3u}1BBn#1_l4FU5Q3BxsBG+cGoobcgrVY&S^^++M5ISP`dCr@WF2w z#tfv1)(&JH>76?t*@}(^6Bjh5u+ubQ9=jNAyW+bta`Ia)c{x2_^o5$fO zm}_L$%$JgsT=@wF_GJPqD@O=js_PP@C>F5I&6xiRZqCjYiKH#nyVK+K7w>IoE-EZs z#W2q#8>umk`UN2>--P4k2)M&m+JTxnhTBi@tIK*8O~=`7}=o&21{!l3P&Iq z>g#X*cIMGqv9;`Gye)*2wcdN~(}ls#gHFLcU`PFbK&lZWH3}qR(Nk*xmNh=%#VQ{l zEjv+HR{;|#_|D*+s;U&wlZ|+1!dT6dC&I0-UXAO^;v9|@+NRdl-KU;8u36yfeuGf% zGhH|2jW-}<0}BGkdg1g_L2D}u1*FD3dfV`wLTg!GMaS9QwIpX5)L1qJl+`5z={GjqNbuU7gkg>w$Y@(l7ovY-26z7)x93* zr1vp9weumGgh~`T4eARWcw<~`f3+&sP4s^Hv|{Sx<70p3%r<`a^$lLWm@s+W)~14Y z2suGT*_oM~Y!!{^lG0t55{&ol3z|Xb8S=8~$5`HxKqpF1CzolEmqS&i@TBfv(#w5^ zPUC`47CQs;y$a?f2&jq}DkPulz3*@n?`EJnj-Jq$2}4xqG2?L4bu(&T~eL zc(ntYY|5oTWbf;6?yU)+(mn+uM#|77mri)7Y(V@Mp?UkaC0V8flZo-pX`27N4QB8~ zx%|Pc*XzDcOe{yEN=3eCYD#?gP&GVE@tq&dY0HA(S*!$D0_x=0NO^pgT zWwV&9?CXOMdWEaY%06u7j-0>N1g~_q8g(5gz+~nQy zmLB<+aS1R0or7J}|5o$JB*wV<1vYQq4|<20N$4g<1Y)5;-@(*OnCpiD$dz|YGxvOm zr@rvUEYhUl3&yGpI67(E-Nz=;>mNsh`|9o6^~3ezPzdv&Pa%l6VUT;JzWl^Dn5ci} z!IG7_jlhO!D^9p)EgO6@J$=6a!-th*ot$ZCcM_N?zp_c@9Q%FSv-c@lO;DBF(%Q)PAD?4tsVgTlFgzI`5nsu0j z@%P^eL2w+e;kvsRw8{&4_#TXG&y1K5^_H&_!1z_>U~)=Fn#bVv=qv>`pH`~j^2{0d zg3|{bL6Ch}Z7n8NRV}DtSCFulTV141XCKjh15FjRVt0jx22LI){@So8=0_UCDJP zccs_1U?zoj)z2o2(;ui)qJSrOU~OwP-;DP(LGqbyT=Z&)q_bF2 z7{ik({u=Q6IChl*iD=6^zUB0vRy2(U>A{IlBO;-xhJHBmBR+n#^Wi1${cH?rYFcFi7IL`r}Z zyW;c}+WdD^d+4o(TiAjm{+lOS$;cn-uJKIT? zLSle$F}bLShbtfnMn4a^buLkmaiU%`AVmk)9UBqfU6;djGUPC6(vK;0M|HaIjIy$L zeoHetT8hC!##_$xquL#2Q*FfIRPu|sNaII|-u<{K6bfCf#epr4L9t8Dxe@oiO1On! rjKby7SyigCjQ9U7i`4icef?kC`Y(>Z+sg0DjnC|msNkN!OQrt+x=Btl diff --git a/variants/morningstar/tyuploader_logo.png b/variants/morningstar/tyuploader_logo.png deleted file mode 100644 index 4f615b6f9d6efb76220d62adbf37bcd89ebae3e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9147 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